From dd2033ace0ccbb711406114777dc97a34c996bdc Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Thu, 11 Oct 2001 22:05:36 +0000 Subject: [PATCH] Preliminary avatar gallery support git-svn-id: file:///svn/phpbb/trunk@1173 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/admin/admin_board.php | 1 + phpBB/admin/admin_users.php | 136 ++- phpBB/db/mssql_schema.sql | 6 +- phpBB/db/mysql_schema.sql | 1 + phpBB/db/postgres_schema.sql | 3 +- phpBB/develop/convert_avatars.php | 51 + phpBB/includes/constants.php | 7 +- phpBB/language/lang_english/lang_main.php | 7 +- phpBB/profile.php | 877 +++++++++++------- .../subSilver/admin/admin_config_body.tpl | 4 + .../templates/subSilver/profile_add_body.tpl | 5 - .../subSilver/profile_avatar_gallery.tpl | 37 + phpBB/viewtopic.php | 17 +- 13 files changed, 741 insertions(+), 411 deletions(-) create mode 100644 phpBB/develop/convert_avatars.php create mode 100644 phpBB/templates/subSilver/profile_avatar_gallery.tpl diff --git a/phpBB/admin/admin_board.php b/phpBB/admin/admin_board.php index 5c70130d0e..e89e6aeb84 100644 --- a/phpBB/admin/admin_board.php +++ b/phpBB/admin/admin_board.php @@ -153,6 +153,7 @@ $template->assign_vars(array( "AVATAR_MAX_HEIGHT" => $new['avatar_max_height'], "AVATAR_MAX_WIDTH" => $new['avatar_max_width'], "AVATAR_PATH" => $new['avatar_path'], + "AVATAR_GALLERY_PATH" => $new['avatar_gallery_path'], "SMILIES_PATH" => $new['smilies_path'], "INBOX_PRIVMSGS" => $new['max_inbox_privmsgs'], "SENTBOX_PRIVMSGS" => $new['max_sentbox_privmsgs'], diff --git a/phpBB/admin/admin_users.php b/phpBB/admin/admin_users.php index ec01a8ed6a..54bc94c77d 100644 --- a/phpBB/admin/admin_users.php +++ b/phpBB/admin/admin_users.php @@ -34,6 +34,8 @@ if($setmodules == 1) $phpbb_root_path = "./../"; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); +include($phpbb_root_path . 'includes/bbcode.'.$phpEx); +include($phpbb_root_path . 'includes/post.'.$phpEx); // @@ -138,45 +140,46 @@ if ( isset($HTTP_GET_VARS['submit']) ) { // // Let's find out a little about them... // - $userdata = get_userdata_from_id($HTTP_GET_VARS[POST_USERS_URL]); + $this_userdata = get_userdata_from_id($HTTP_GET_VARS[POST_USERS_URL]); // // Now parse and display it as a template // - $user_id = $userdata['user_id']; - $username = $userdata['username']; - $email = $userdata['user_email']; + $user_id = $this_userdata['user_id']; + $username = $this_userdata['username']; + $email = $this_userdata['user_email']; $password = ""; $password_confirm = ""; - $icq = $userdata['user_icq']; - $aim = $userdata['user_aim']; - $msn = $userdata['user_msnm']; - $yim = $userdata['user_yim']; + $icq = $this_userdata['user_icq']; + $aim = $this_userdata['user_aim']; + $msn = $this_userdata['user_msnm']; + $yim = $this_userdata['user_yim']; - $website = $userdata['user_website']; - $location = $userdata['user_from']; - $occupation = $userdata['user_occ']; - $interests = $userdata['user_interests']; - $signature = $userdata['user_sig']; + $website = $this_userdata['user_website']; + $location = $this_userdata['user_from']; + $occupation = $this_userdata['user_occ']; + $interests = $this_userdata['user_interests']; + $signature = $this_userdata['user_sig']; - $viewemail = $userdata['user_viewemail']; - $notifypm = $userdata['user_notify_pm']; - $attachsig = $userdata['user_attachsig']; - $allowhtml = $userdata['user_allowhtml']; - $allowbbcode = $userdata['user_allowbbcode']; - $allowsmilies = $userdata['user_allowsmile']; - $allowviewonline = $userdata['user_allow_viewonline']; + $viewemail = $this_userdata['user_viewemail']; + $notifypm = $this_userdata['user_notify_pm']; + $attachsig = $this_userdata['user_attachsig']; + $allowhtml = $this_userdata['user_allowhtml']; + $allowbbcode = $this_userdata['user_allowbbcode']; + $allowsmilies = $this_userdata['user_allowsmile']; + $allowviewonline = $this_userdata['user_allow_viewonline']; - $user_avatar = $userdata['user_avatar']; - $user_style = $userdata['user_style']; - $user_lang = $userdata['user_lang']; - $user_timezone = $userdata['user_timezone']; - $user_dateformat = $userdata['user_dateformat']; + $user_avatar = $this_userdata['user_avatar']; + $user_avatar_type = $this_userdata['user_avatar_type']; + $user_style = $this_userdata['user_style']; + $user_lang = $this_userdata['user_lang']; + $user_timezone = $this_userdata['user_timezone']; + $user_dateformat = $this_userdata['user_dateformat']; - $user_status = $userdata['user_active']; - $user_allowavatar = $userdata['user_allowavatar']; - $user_allowpm = $userdata['user_allow_pm']; + $user_status = $this_userdata['user_active']; + $user_allowavatar = $this_userdata['user_allowavatar']; + $user_allowpm = $this_userdata['user_allow_pm']; $COPPA = false; @@ -185,18 +188,30 @@ if ( isset($HTTP_GET_VARS['submit']) ) { $smilies_status = ($board_config['allow_smilies']) ? $lang['ON'] : $lang['OFF']; $s_hidden_fields = ''; - $s_hidden_fields .= ''; + $s_hidden_fields .= ''; - if( $user_avatar != "" ) + if( $user_avatar_type ) { - $avatar = (strstr($user_avatar, 'http') && $board_config['allow_avatar_remote']) ? "

" : "
\"\"
"; - $s_hidden_fields .= ''; + switch( $user_avatar_type ) + { + case USER_AVATAR_UPLOAD: + $avatar = "\"\""; + break; + case USER_AVATAR_REMOTE: + $avatar = "\"\""; + break; + case USER_AVATAR_GALLERY: + $avatar = "\"\""; + break; + } } else { $avatar = ""; } + $signature = preg_replace("/\:[0-9a-z\:]*?\]/si", "]", $signature); + $template->set_filenames(array( "body" => "admin/user_edit_body.tpl") ); @@ -333,26 +348,24 @@ else if($HTTP_POST_VARS[submit] && $HTTP_POST_VARS['user_id']) validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature); - $viewemail = (isset($HTTP_POST_VARS['viewemail'])) ? $HTTP_POST_VARS['viewemail'] : 0; + $viewemail = (isset($HTTP_POST_VARS['viewemail'])) ? intval($HTTP_POST_VARS['viewemail']) : 0; $allowviewonline = (isset($HTTP_POST_VARS['hideonline'])) ? ( ($HTTP_POST_VARS['hideonline']) ? 0 : 1 ) : 1; - $notifypm = (isset($HTTP_POST_VARS['notifypm'])) ? $HTTP_POST_VARS['notifypm'] : 1; - $attachsig = (isset($HTTP_POST_VARS['attachsig'])) ? $HTTP_POST_VARS['attachsig'] : 0; + $notifypm = (isset($HTTP_POST_VARS['notifypm'])) ? intval($HTTP_POST_VARS['notifypm']) : 1; + $attachsig = (isset($HTTP_POST_VARS['attachsig'])) ? intval($HTTP_POST_VARS['attachsig']) : 0; - $allowhtml = (isset($HTTP_POST_VARS['allowhtml'])) ? $HTTP_POST_VARS['allowhtml'] : $board_config['allow_html']; - $allowbbcode = (isset($HTTP_POST_VARS['allowbbcode'])) ? $HTTP_POST_VARS['allowbbcode'] : $board_config['allow_bbcode']; - $allowsmilies = (isset($HTTP_POST_VARS['allowsmilies'])) ? $HTTP_POST_VARS['allowsmilies'] : $board_config['allow_smilies']; + $allowhtml = (isset($HTTP_POST_VARS['allowhtml'])) ? intval($HTTP_POST_VARS['allowhtml']) : $board_config['allow_html']; + $allowbbcode = (isset($HTTP_POST_VARS['allowbbcode'])) ? intval($HTTP_POST_VARS['allowbbcode']) : $board_config['allow_bbcode']; + $allowsmilies = (isset($HTTP_POST_VARS['allowsmilies'])) ? intval($HTTP_POST_VARS['allowsmilies']) : $board_config['allow_smilies']; - $user_style = ($HTTP_POST_VARS['style']) ? $HTTP_POST_VARS['style'] : $board_config['default_style']; + $user_style = ($HTTP_POST_VARS['style']) ? intval($HTTP_POST_VARS['style']) : $board_config['default_style']; $user_lang = ($HTTP_POST_VARS['language']) ? $HTTP_POST_VARS['language'] : $board_config['default_lang']; - $user_timezone = (isset($HTTP_POST_VARS['timezone'])) ? $HTTP_POST_VARS['timezone'] : $board_config['board_timezone']; + $user_timezone = (isset($HTTP_POST_VARS['timezone'])) ? doubleval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone']; $user_template = ($HTTP_POST_VARS['template']) ? $HTTP_POST_VARS['template'] : $board_config['board_template']; $user_dateformat = ($HTTP_POST_VARS['dateformat']) ? trim($HTTP_POST_VARS['dateformat']) : $board_config['default_dateformat']; - $user_avatar = ( isset($HTTP_POST_VARS['user_avatar']) ) ? $HTTP_POST_VARS['user_avatar'] : ""; - - $user_status = (!empty($HTTP_POST_VARS['user_status'])) ? $HTTP_POST_VARS['user_status'] : 0; - $user_allowpm = (!empty($HTTP_POST_VARS['user_allowpm'])) ? $HTTP_POST_VARS['usr_allowpm'] : 0; - $user_allowavatar = (!empty($HTTP_POST_VARS['usr_allowavatar'])) ? $HTTP_POST_VARS['user_allowavatar'] : 0; + $user_status = (!empty($HTTP_POST_VARS['user_status'])) ? intval($HTTP_POST_VARS['user_status']) : 0; + $user_allowpm = (!empty($HTTP_POST_VARS['user_allowpm'])) ? intval($HTTP_POST_VARS['user_allowpm']) : 0; + $user_allowavatar = (!empty($HTTP_POST_VARS['usr_allowavatar'])) ? intval($HTTP_POST_VARS['user_allowavatar']) : 0; if(isset($HTTP_POST_VARS['submit'])) { @@ -379,17 +392,40 @@ else if($HTTP_POST_VARS[submit] && $HTTP_POST_VARS['user_id']) $error = TRUE; $error_msg = $lang['Password_mismatch']; } + else if(!$password && $password_confirm) + { + $error = TRUE; + $error_msg = $lang['Password_mismatch']; + } + + if( $signature != "" ) + { + if( strlen($signature) > $board_config['max_sig_chars'] ) + { + $error = TRUE; + if(isset($error_msg)) + { + $error_msg .= "
"; + } + $error_msg .= $lang['Signature_too_long']; + } + else + { + $signature_bbcode_uid = ( $allowbbcode ) ? make_bbcode_uid() : ""; + $signature = prepare_message($signature, $allowhtml, $allowbbcode, $allowsmilies, $signature_bbcode_uid); + } + } if( isset($HTTP_POST_VARS['avatardel']) ) { - if( !eregi("http", $user_avatar) ) + if( $user_avatar_type == USER_AVATAR_UPLOAD ) { - if(file_exists("./../" . $board_config['avatar_path'] . "/" . $user_avatar)) + if( file_exists("./../" . $board_config['avatar_path'] . "/" . $user_avatar) ) { @unlink("./../" . $board_config['avatar_path'] . "/" . $user_avatar); } } - $avatar_sql = ", user_avatar = ''"; + $avatar_sql = ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE; } if(!$error) @@ -457,8 +493,8 @@ else if($HTTP_POST_VARS[submit] && $HTTP_POST_VARS['user_id']) } else { - $sql = "UPDATE " . USERS_TABLE . " - SET " . $username_sql . $passwd_sql . "user_email = '$email', user_icq = '$icq', user_website = '$website', user_occ = '$occupation', user_from = '$location', user_interests = '$interests', user_sig = '$signature', user_viewemail = $viewemail, user_aim = '$aim', user_yim = '$yim', user_msnm = '$msn', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_allow_pm = $user_allowpm user_notify_pm = $notifypm, user_lang = '$user_lang', user_style = $user_style, user_timezone = $user_timezone, user_dateformat = '$user_dateformat', user_active = $user_status, user_actkey = '$user_actkey'" . $avatar_sql . " + echo $sql = "UPDATE " . USERS_TABLE . " + SET " . $username_sql . $passwd_sql . "user_email = '$email', user_icq = '$icq', user_website = '$website', user_occ = '$occupation', user_from = '$location', user_interests = '$interests', user_sig = '$signature', user_viewemail = $viewemail, user_aim = '$aim', user_yim = '$yim', user_msnm = '$msn', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_lang = '$user_lang', user_style = $user_style, user_timezone = $user_timezone, user_dateformat = '$user_dateformat', user_active = $user_status, user_actkey = '$user_actkey'" . $avatar_sql . " WHERE user_id = $user_id"; if($result = $db->sql_query($sql)) { diff --git a/phpBB/db/mssql_schema.sql b/phpBB/db/mssql_schema.sql index e0e4fdcb0d..8cc34abcdb 100644 --- a/phpBB/db/mssql_schema.sql +++ b/phpBB/db/mssql_schema.sql @@ -433,7 +433,8 @@ CREATE TABLE [phpbb_users] ( [user_notify_pm] [smallint] NOT NULL , [user_regdate] [int] NOT NULL , [user_rank] [int] NULL , - [user_avatar] [varchar] (100) NULL , + [user_avatar] [varchar] (100) NULL , + [user_avatar_type] [smallint] NOT NULL, [user_email] [varchar] (25) NULL , [user_icq] [varchar] (15) NULL , [user_website] [varchar] (50) NULL , @@ -652,7 +653,8 @@ ALTER TABLE [phpbb_users] WITH NOCHECK ADD CONSTRAINT [DF_phpbb_users_user_allow_pm] DEFAULT (1) FOR [user_allow_pm], CONSTRAINT [DF_phpbb_users_user_allow_viewonline] DEFAULT (1) FOR [user_allow_viewonline], CONSTRAINT [DF_phpbb_users_user_notify] DEFAULT (1) FOR [user_notify], - CONSTRAINT [DF_phpbb_users_user_notify_pm] DEFAULT (1) FOR [user_notify_pm] + CONSTRAINT [DF_phpbb_users_user_notify_pm] DEFAULT (1) FOR [user_notify_pm], + CONSTRAINT [DF_phpbb_users_user_avatar_type] DEFAULT (0) FOR [user_avatar_type] GO CREATE INDEX [IX_phpbb_auth_access] ON [phpbb_auth_access]([group_id], [forum_id]) ON [PRIMARY] diff --git a/phpBB/db/mysql_schema.sql b/phpBB/db/mysql_schema.sql index 6cba16d5d0..9efe409650 100644 --- a/phpBB/db/mysql_schema.sql +++ b/phpBB/db/mysql_schema.sql @@ -471,6 +471,7 @@ CREATE TABLE phpbb_users ( user_regdate int(11) DEFAULT '0' NOT NULL, user_rank int(11) DEFAULT '0', user_avatar varchar(100), + user_avatar_type tinyint(4) DEFAULT '0' NOT NULL, user_email varchar(255), user_icq varchar(15), user_website varchar(100), diff --git a/phpBB/db/postgres_schema.sql b/phpBB/db/postgres_schema.sql index 17e5237494..f91f01d1c7 100644 --- a/phpBB/db/postgres_schema.sql +++ b/phpBB/db/postgres_schema.sql @@ -448,7 +448,8 @@ CREATE TABLE phpbb_users ( user_allowavatar int2 DEFAULT '1' NOT NULL, user_allow_viewonline int2 DEFAULT '1' NOT NULL, user_rank int4 DEFAULT '0', - user_avatar varchar(100), + user_avatar varchar(100), + user_avatar_type int2 DEFAULT '0' NOT NULL, user_level int4 DEFAULT '1', user_lang varchar(255), user_timezone int4 DEFAULT '0' NOT NULL, diff --git a/phpBB/develop/convert_avatars.php b/phpBB/develop/convert_avatars.php new file mode 100644 index 0000000000..f6069a1e4a --- /dev/null +++ b/phpBB/develop/convert_avatars.php @@ -0,0 +1,51 @@ +sql_query($sql) ) +{ + die("Couldn't alter users table"); +} + +$sql = "SELECT user_id, user_avatar + FROM " . USERS_TABLE; +if( $result = $db->sql_query($sql) ) +{ + $rowset = $db->sql_fetchrowset($result); + + for($i = 0; $i < count($rowset); $i++) + { + if( ereg("^http", $rowset[$i]['user_avatar'])) + { + $sql_type = USER_AVATAR_REMOTE; + } + else if( $rowset[$i]['user_avatar'] != "" ) + { + $sql_type = USER_AVATAR_UPLOAD; + } + else + { + $sql_type = USER_AVATAR_NONE; + } + + $sql = "UPDATE " . USERS_TABLE . " + SET user_avatar_type = $sql_type + WHERE user_id = " . $rowset[$i]['user_id']; + if( !$result = $db->sql_query($sql) ) + { + die("Couldn't update users table- " . $i); + } + } +} + +echo "

COMPLETE
"; + +?> diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 14b86d640f..d2a59fc801 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -36,11 +36,16 @@ define(USER, 0); define(ADMIN, 1); -// User Activation +// User related define(USER_ACTIVATION_NONE, 0); define(USER_ACTIVATION_SELF, 1); define(USER_ACTIVATION_ADMIN, 2); +define(USER_AVATAR_NONE, 0); +define(USER_AVATAR_UPLOAD, 1); +define(USER_AVATAR_REMOTE, 2); +define(USER_AVATAR_GALLERY, 3); + // Forum state define(FORUM_UNLOCKED, 0); diff --git a/phpBB/language/lang_english/lang_main.php b/phpBB/language/lang_english/lang_main.php index 95791eb9e8..0f6a37321c 100644 --- a/phpBB/language/lang_english/lang_main.php +++ b/phpBB/language/lang_english/lang_main.php @@ -408,6 +408,7 @@ $lang['Registration_info'] = "Registration Information"; $lang['Profile_info'] = "Profile Information"; $lang['Profile_info_warn'] = "This information will be publicly viewable"; $lang['Avatar_panel'] = "Avatar control panel"; +$lang['Avatar_gallery'] = "Avatar gallery"; $lang['Website'] = "Website"; $lang['From'] = "From"; @@ -471,7 +472,11 @@ $lang['Link_remote_Avatar'] = "Link to off-site Avatar"; $lang['Link_remote_Avatar_explain'] = "Enter the URL of the location containing the Avatar image you wish to link to."; $lang['Avatar_URL'] = "URL of Avatar Image"; $lang['Select_from_gallery'] = "Select Avatar from gallery"; -$lang['Avatar_gallery'] = "Show gallery"; +$lang['View_avatar_gallery'] = "Show gallery"; + +$lang['Select_avatar'] = "Select avatar"; +$lang['Return_profile'] = "Cancel avatar"; +$lang['Select_category'] = "Select category"; $lang['Delete_Image'] = "Delete Image"; $lang['Current_Image'] = "Current Image"; diff --git a/phpBB/profile.php b/phpBB/profile.php index 0eaf73ccc7..29627ec6d7 100644 --- a/phpBB/profile.php +++ b/phpBB/profile.php @@ -271,13 +271,24 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) $email_img = ""; } - if( $profiledata['user_avatar'] != "" && $profiledata['user_id'] != ANONYMOUS ) + if( $profiledata['user_avatar_type'] ) { - $avatar_img = (eregi("http", $profiledata['user_avatar']) && $board_config['allow_avatar_remote']) ? "" : "\"\"";; + switch( $profiledata['user_avatar_type'] ) + { + case USER_AVATAR_UPLOAD: + $avatar_img = "\"\""; + break; + case USER_AVATAR_REMOTE: + $avatar_img = "\"\""; + break; + case USER_AVATAR_GALLERY: + $avatar_img = "\"\""; + break; + } } else { - $avatar_img = " "; + $avatar_img = ""; } $poster_rank = ""; @@ -405,7 +416,7 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) if( !$userdata['session_logged_in'] && $mode == "editprofile" ) { - header(append_sid("Location: login.$phpEx?forward_page=$PHP_SELF&mode=editprofile")); + header(append_sid("Location: login.$phpEx?forward_page=profile.$phpEx&mode=editprofile")); } $page_title = ($mode == "editprofile") ? $lang['Edit_profile'] : $lang['Register']; @@ -450,7 +461,7 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) include($phpbb_root_path . 'includes/page_tail.'.$phpEx); } } - else if( isset($HTTP_POST_VARS['submit']) || $mode == "register" ) + else if( isset($HTTP_POST_VARS['submit']) || isset($HTTP_POST_VARS['avatargallery']) || isset($HTTP_POST_VARS['submitavatar']) || isset($HTTP_POST_VARS['cancelavatar']) || $mode == "register" ) { if( $mode == "editprofile" ) { @@ -492,19 +503,23 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) $user_style = ( isset($HTTP_POST_VARS['style']) ) ? intval($HTTP_POST_VARS['style']) : $board_config['default_style']; $user_lang = ($HTTP_POST_VARS['language']) ? $HTTP_POST_VARS['language'] : $board_config['default_lang']; - $user_timezone = (isset($HTTP_POST_VARS['timezone'])) ? intval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone']; + $user_timezone = (isset($HTTP_POST_VARS['timezone'])) ? doubleval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone']; $user_dateformat = ($HTTP_POST_VARS['dateformat']) ? trim($HTTP_POST_VARS['dateformat']) : $board_config['default_dateformat']; + $user_avatar_local = ( isset($HTTP_POST_VARS['avatarselect']) && !empty($HTTP_POST_VARS['submitavatar']) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset($HTTP_POST_VARS['avatarlocal']) ) ? $HTTP_POST_VARS['avatarlocal'] : "" ); + $user_avatar_remoteurl = (!empty($HTTP_POST_VARS['avatarremoteurl'])) ? $HTTP_POST_VARS['avatarremoteurl'] : ""; $user_avatar_url = (!empty($HTTP_POST_VARS['avatarurl'])) ? $HTTP_POST_VARS['avatarurl'] : ""; $user_avatar_loc = ($HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : ""; $user_avatar_name = (!empty($HTTP_POST_FILES['avatar']['name'])) ? $HTTP_POST_FILES['avatar']['name'] : ""; $user_avatar_size = (!empty($HTTP_POST_FILES['avatar']['size'])) ? $HTTP_POST_FILES['avatar']['size'] : 0; - $user_avatar_type = (!empty($HTTP_POST_FILES['avatar']['type'])) ? $HTTP_POST_FILES['avatar']['type'] : ""; + $user_avatar_filetype = (!empty($HTTP_POST_FILES['avatar']['type'])) ? $HTTP_POST_FILES['avatar']['type'] : ""; + $user_avatar = (empty($user_avatar_loc) && $mode == "editprofile") ? $userdata['user_avatar'] : ""; + $user_avatar_type = (empty($user_avatar_loc) && $mode == "editprofile") ? $userdata['user_avatar_type'] : ""; } - if(isset($HTTP_POST_VARS['submit'])) + if( isset($HTTP_POST_VARS['submit']) ) { $error = FALSE; @@ -667,13 +682,13 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) } $avatar_sql = ""; - if($board_config['allow_avatar_upload'] && !$error) + if( $board_config['allow_avatar_upload'] && !$error ) { // // Only allow one type of upload, either a // filename or a URL // - if(!empty($user_avatar_loc) && !empty($user_avatar_url)) + if( !empty($user_avatar_loc) && !empty($user_avatar_url) ) { $error = TRUE; if(isset($error_msg)) @@ -685,29 +700,124 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) if( isset($HTTP_POST_VARS['avatardel']) && $mode == "editprofile" ) { - if(file_exists("./".$board_config['avatar_path']."/".$userdata['user_avatar'])) + if( @file_exists("./" . $board_config['avatar_path'] . "/" . $userdata['user_avatar']) ) { - @unlink("./".$board_config['avatar_path']."/".$userdata['user_avatar']); - $avatar_sql = ", user_avatar = ''"; + @unlink("./" . $board_config['avatar_path'] . "/" . $userdata['user_avatar']); + } + $avatar_sql = ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE; + } + else if( $user_avatar_loc != "" && $board_config['allow_avatar_upload'] ) + { + if(file_exists($user_avatar_loc) && ereg(".jpg$|.gif$|.png$", $user_avatar_name)) + { + if($user_avatar_size <= $board_config['avatar_filesize'] && $avatar_size > 0) + { + $error_type = false; + + // + // Opera appends the image name after the type, not big, not clever! + // + preg_match("'image\/[x\-]*([a-z]+)'", $user_avatar_filetype, $user_avatar_filetype); + $user_avatar_filetype = $user_avatar_filetype[1]; + + switch($user_avatar_filetype) + { + case "jpeg": + case "pjpeg": + $imgtype = '.jpg'; + break; + case "gif": + $imgtype = '.gif'; + break; + case "png": + $imgtype = '.png'; + break; + default: + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; + break; + } + + if(!$error) + { + list($width, $height) = @getimagesize($user_avatar_loc); + + if( $width <= $board_config['avatar_max_width'] && + $height <= $board_config['avatar_max_height'] ) + { + $user_id = ($mode == "register") ? $new_user_id : $userdata['user_id']; + + $avatar_filename = $user_id . $imgtype; + + if($mode == "editprofile") + { + if(file_exists("./" . $board_config['avatar_path'] . "/" . $user_id)) + { + @unlink("./" . $board_config['avatar_path'] . "/" . $user_id); + } + } + @copy($user_avatar_loc, "./" . $board_config['avatar_path'] . "/$avatar_filename"); + + $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD; + } + else + { + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_imagesize'] : $lang['Avatar_imagesize']; + } + } + } + else + { + $error = true; + $error_filesize = $lang['Avatar_filesize'] . " " . round($board_config['avatar_filesize'] / 1024) . " " . $lang['kB']; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $error_filesize : $error_filesize; + } + } + else + { + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; } } - else if( $user_avatar_loc != "" ) + else if( !empty($user_avatar_url) && $board_config['allow_avatar_upload'] ) { - if($board_config['allow_avatar_upload']) + // + // First check what port we should connect + // to, look for a :[xxxx]/ or, if that doesn't + // exist assume port 80 (http) + // + preg_match("/^(http:\/\/)?([a-z0-9\.]+)\:?([0-9]*)\/(.*)$/", $user_avatar_url, $url_ary); + + if( !empty($url_ary[4]) ) { - if(file_exists($user_avatar_loc) && ereg(".jpg$|.gif$|.png$", $user_avatar_name)) + $port = (!empty($url_ary[3])) ? $url_ary[3] : 80; + + $fsock = @fsockopen($url_ary[2], $port, $errno, $errstr); + if($fsock) { - if($user_avatar_size <= $board_config['avatar_filesize'] && $avatar_size > 0) + $base_get = "/" . $url_ary[4]; + + // + // Uses HTTP 1.1, could use HTTP 1.0 ... + // + @fputs($fsock, "GET $base_get HTTP/1.1\r\n"); + @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n"); + @fputs($fsock, "Connection: close\r\n\r\n"); + + unset($avatar_data); + while(!@feof($fsock)) { - $error_type = false; + $avatar_data .= @fread($fsock, $board_config['avatar_filesize']); + } + @fclose($fsock); - // - // Opera appends the image name after the type, not big, not clever! - // - preg_match("'image\/[x\-]*([a-z]+)'", $user_avatar_type, $user_avatar_type); - $user_avatar_type = $user_avatar_type[1]; + if(preg_match("/Content-Length\: ([0-9]+)[^\/]+Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $avatar_data, $file_data)) + { + $file_size = $file_data[1]; + $file_type = $file_data[2]; - switch($user_avatar_type) + switch($file_type) { case "jpeg": case "pjpeg": @@ -725,181 +835,80 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) break; } - if(!$error) + if(!$error && $file_size > 0 && $file_size < $board_config['avatar_filesize']) { - list($width, $height) = @getimagesize($user_avatar_loc); + $avatar_data = substr($avatar_data, strlen($avatar_data) - $file_size, $file_size); - if( $width <= $board_config['avatar_max_width'] && - $height <= $board_config['avatar_max_height'] ) + $tmp_filename = tempnam ("/tmp", $userdata['user_id'] . "-"); + $fptr = @fopen($tmp_filename, "wb"); + $bytes_written = @fwrite($fptr, $avatar_data, $file_size); + @fclose($fptr); + + if($bytes_written == $file_size) { - $user_id = ($mode == "register") ? $new_user_id : $userdata['user_id']; + list($width, $height) = @getimagesize($tmp_filename); - $avatar_filename = $user_id . $imgtype; - - if($mode == "editprofile") + if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] ) { - if(file_exists("./" . $board_config['avatar_path'] . "/" . $user_id)) + $user_id = ($mode == "register") ? $new_user_id : $userdata['user_id']; + + $avatar_filename = $user_id . $imgtype; + + if($mode == "editprofile") { - @unlink("./" . $board_config['avatar_path'] . "/" . $user_id); - } - } - @copy($user_avatar_loc, "./" . $board_config['avatar_path'] . "/$avatar_filename"); - - $avatar_sql = ", user_avatar = '$avatar_filename'"; - } - else - { - $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_imagesize'] : $lang['Avatar_imagesize']; - } - } - } - else - { - $error = true; - $error_filesize = $lang['Avatar_filesize'] . " " . round($board_config['avatar_filesize'] / 1024) . " " . $lang['kB']; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $error_filesize : $error_filesize; - } - } - else - { - $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; - } - } // if ... allow_avatar_upload - } - else if(!empty($user_avatar_url)) - { - if($board_config['allow_avatar_upload']) - { - // - // First check what port we should connect - // to, look for a :[xxxx]/ or, if that doesn't - // exist assume port 80 (http) - // - preg_match("/^(http:\/\/)?([a-z0-9\.]+)\:?([0-9]*)\/(.*)$/", $user_avatar_url, $url_ary); - - if( !empty($url_ary[4]) ) - { - $port = (!empty($url_ary[3])) ? $url_ary[3] : 80; - - $fsock = @fsockopen($url_ary[2], $port, $errno, $errstr); - if($fsock) - { - $base_get = "/" . $url_ary[4]; - - // - // Uses HTTP 1.1, could use HTTP 1.0 ... - // - @fputs($fsock, "GET $base_get HTTP/1.1\r\n"); - @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n"); - @fputs($fsock, "Connection: close\r\n\r\n"); - - unset($avatar_data); - while(!@feof($fsock)) - { - $avatar_data .= @fread($fsock, $board_config['avatar_filesize']); - } - @fclose($fsock); - - if(preg_match("/Content-Length\: ([0-9]+)[^\/]+Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $avatar_data, $file_data)) - { - $file_size = $file_data[1]; - $file_type = $file_data[2]; - - switch($file_type) - { - case "jpeg": - case "pjpeg": - $imgtype = '.jpg'; - break; - case "gif": - $imgtype = '.gif'; - break; - case "png": - $imgtype = '.png'; - break; - default: - $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; - break; - } - - if(!$error && $file_size > 0 && $file_size < $board_config['avatar_filesize']) - { - $avatar_data = substr($avatar_data, strlen($avatar_data) - $file_size, $file_size); - - $tmp_filename = tempnam ("/tmp", $userdata['user_id'] . "-"); - $fptr = @fopen($tmp_filename, "wb"); - $bytes_written = @fwrite($fptr, $avatar_data, $file_size); - @fclose($fptr); - - if($bytes_written == $file_size) - { - list($width, $height) = @getimagesize($tmp_filename); - - if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] ) - { - $user_id = ($mode == "register") ? $new_user_id : $userdata['user_id']; - - $avatar_filename = $user_id . $imgtype; - - if($mode == "editprofile") + if(file_exists("./" . $board_config['avatar_path'] . "/" . $user_id)) { - if(file_exists("./" . $board_config['avatar_path'] . "/" . $user_id)) - { - @unlink("./" . $board_config['avatar_path'] . "/" . $user_id); - } + @unlink("./" . $board_config['avatar_path'] . "/" . $user_id); } - @copy($tmp_filename, "./" . $board_config['avatar_path'] . "/$avatar_filename"); - @unlink($tmp_filename); + } + @copy($tmp_filename, "./" . $board_config['avatar_path'] . "/$avatar_filename"); + @unlink($tmp_filename); - $avatar_sql = ", user_avatar = '$avatar_filename'"; - } - else - { - // - // Image too large - // - @unlink($tmp_filename); - $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_imagesize'] : $lang['Avatar_imagesize']; - } + $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD; } else { // - // Error writing file + // Image too large // @unlink($tmp_filename); - message_die(GENERAL_ERROR, "Could not write avatar file to local storage. Please contact the board administrator with this message", "", __LINE__, __FILE__); + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Avatar_imagesize'] : $lang['Avatar_imagesize']; } } - } - else - { - // - // No data - // - $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['File_no_data'] : $lang['File_no_data']; + else + { + // + // Error writing file + // + @unlink($tmp_filename); + message_die(GENERAL_ERROR, "Could not write avatar file to local storage. Please contact the board administrator with this message", "", __LINE__, __FILE__); + } } } else { // - // No connection + // No data // $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['No_connection_URL'] : $lang['No_connection_URL']; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['File_no_data'] : $lang['File_no_data']; } } else { + // + // No connection + // $error = true; - $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Incomplete_URL'] : $lang['Incomplete_URL']; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['No_connection_URL'] : $lang['No_connection_URL']; } - } // if ... allow_avatar_upload + } + else + { + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
" . $lang['Incomplete_URL'] : $lang['Incomplete_URL']; + } } else if( !empty($user_avatar_name) ) { @@ -909,7 +918,7 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) } } - if($board_config['allow_avatar_remote'] && !$error) + if( $board_config['allow_avatar_remote'] && !$error ) { if($user_avatar_remoteurl != "" && $avatar_sql == "") { @@ -917,7 +926,15 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) { $user_avatar_remoteurl = "http://" . $user_avatar_remoteurl; } - $avatar_sql = ", user_avatar = '$user_avatar_remoteurl'"; + $avatar_sql = ", user_avatar = '$user_avatar_remoteurl', user_avatar_type = " . USER_AVATAR_REMOTE; + } + } + + if( $board_config['allow_avatar_local'] && !$error ) + { + if( $user_avatar_local != "" && $avatar_sql == "" ) + { + $avatar_sql = ", user_avatar = '$user_avatar_local', user_avatar_type = " . USER_AVATAR_GALLERY; } } @@ -1169,7 +1186,7 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) $user_dateformat = stripslashes($user_dateformat); } - else if($mode == "editprofile") + else if( $mode == "editprofile" && !isset($HTTP_POST_VARS['avatargallery']) && !isset($HTTP_POST_VARS['submitavatar']) && !isset($HTTP_POST_VARS['cancelavatar']) ) { $user_id = $userdata['user_id']; $username = $userdata['username']; @@ -1199,207 +1216,371 @@ if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) ) $allowviewonline = $userdata['user_allow_viewonline']; $user_avatar = $userdata['user_avatar']; + $user_avatar_type = $userdata['user_avatar_type']; $user_style = $userdata['user_style']; $user_lang = $userdata['user_lang']; $user_timezone = $userdata['user_timezone']; $user_dateformat = $userdata['user_dateformat']; } - if( !isset($coppa) ) + if( isset($HTTP_POST_VARS['avatargallery']) ) { - $coppa = FALSE; - } + if($mode == "editprofile") + { + if( $user_id != $userdata['user_id'] ) + { + $error = TRUE; + $error_msg = $lang['Wrong_Profile']; + } + } - if( !isset($user_template) ) - { - $selected_template = $board_config['system_template']; - } + if( !$error ) + { + include($phpbb_root_path . 'includes/page_header.'.$phpEx); - $html_status = ($userdata['user_allowhtml']) ? $lang['ON'] : $lang['OFF']; - $bbcode_status = ($userdata['user_allowbbcode']) ? $lang['ON'] : $lang['OFF']; - $smilies_status = ($userdata['user_allowsmile']) ? $lang['ON'] : $lang['OFF']; + $template->set_filenames(array( + "body" => "profile_avatar_gallery.tpl", + "jumpbox" => "jumpbox.tpl") + ); - $signature = preg_replace("/\:[0-9a-z\:]*?\]/si", "]", $signature); + $jumpbox = make_jumpbox(); + $template->assign_vars(array( + "L_GO" => $lang['Go'], + "L_JUMP_TO" => $lang['Jump_to'], + "L_SELECT_FORUM" => $lang['Select_forum'], - if($user_avatar != "") - { - $avatar_img = (eregi("^http", $user_avatar) && $board_config['allow_avatar_remote']) ? "" : "\"\""; + "S_JUMPBOX_LIST" => $jumpbox, + "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) + ); + $template->assign_var_from_handle("JUMPBOX", "jumpbox"); + + $dir = @opendir($board_config['avatar_gallery_path']); + + $avatar_images = array(); + while( $file = @readdir($dir) ) + { + if( @filetype($file) == "dir" && !preg_match("/\.\.|\./", $file) ) + { + $sub_dir = @opendir($board_config['avatar_gallery_path'] . "/" . $file); + + $avatar_row_count = 0; + $avatar_col_count = 0; + while( $sub_file = @readdir($sub_dir) ) + { + if( preg_match("/(\.gif$|\.png$|\.jpg)$/is", $sub_file) ) + { + $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . "/" . $sub_file; + + $avatar_col_count++; + if( $avatar_col_count == 5 ) + { + $avatar_row_count++; + $avatar_col_count = 0; + } + } + } + } + else + { + + } + } + + @closedir($dir); + + if( isset($HTTP_POST_VARS['avatarcategory']) ) + { + $category = $HTTP_POST_VARS['avatarcategory']; + } + else + { + list($category, ) = each($avatar_images); + } + @reset($avatar_images); + + $s_categories = ""; + while( list($key) = each($avatar_images) ) + { + $selected = ( $key == $category ) ? "selected=\"selected\"" : ""; + if( count($avatar_images[$key]) ) + { + $s_categories .= ''; + } + } + + $s_colspan = 0; + for($i = 0; $i < count($avatar_images[$category]); $i++) + { + $template->assign_block_vars("avatar_row", array()); + + $s_colspan = max($s_colspan, count($avatar_images[$category][$i])); + + for($j = 0; $j < count($avatar_images[$category][$i]); $j++) + { + $template->assign_block_vars("avatar_row.avatar_column", array( + "AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . "/" . $avatar_images[$category][$i][$j]) + ); + + $template->assign_block_vars("avatar_row.avatar_option_column", array( + "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j]) + ); + } + } + + $s_hidden_fields = ''; + $s_hidden_vars = ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + $s_hidden_vars .= ''; + + $template->assign_vars(array( + "L_AVATAR_GALLERY" => $lang['Avatar_gallery'], + "L_SELECT_AVATAR" => $lang['Select_avatar'], + "L_RETURN_PROFILE" => $lang['Return_profile'], + "L_CATEGORY" => $lang['Select_category'], + + "S_OPTIONS_CATEGORIES" => $s_categories, + "S_COLSPAN" => $s_colspan, + "S_PROFILE_ACTION" => append_sid("profile.$phpEx?mode=$mode"), + "S_HIDDEN_FIELDS" => $s_hidden_vars) + ); + + } } else { - $avatar_img = ""; - } + if( !isset($coppa) ) + { + $coppa = FALSE; + } - $s_hidden_fields = ''; - if( $mode == "editprofile" ) - { - $s_hidden_fields .= ''; - // - // Send the users current email address. If they change it, and account activation is turned on - // the user account will be disabled and the user will have to reactivate their account. - // - $s_hidden_fields .= ''; - } + if( !isset($user_template) ) + { + $selected_template = $board_config['system_template']; + } - include($phpbb_root_path . 'includes/page_header.'.$phpEx); + $html_status = ($userdata['user_allowhtml']) ? $lang['ON'] : $lang['OFF']; + $bbcode_status = ($userdata['user_allowbbcode']) ? $lang['ON'] : $lang['OFF']; + $smilies_status = ($userdata['user_allowsmile']) ? $lang['ON'] : $lang['OFF']; + + $signature = preg_replace("/\:[0-9a-z\:]*?\]/si", "]", $signature); + + if( $user_avatar_type ) + { + switch( $user_avatar_type ) + { + case USER_AVATAR_UPLOAD: + $avatar_img = "\"\""; + break; + case USER_AVATAR_REMOTE: + $avatar_img = "\"\""; + break; + case USER_AVATAR_GALLERY: + $avatar_img = "\"\""; + break; + } + } + else + { + $avatar_img = ""; + } + + $s_hidden_fields = ''; + if( $mode == "editprofile" ) + { + $s_hidden_fields .= ''; + // + // Send the users current email address. If they change it, and account activation is turned on + // the user account will be disabled and the user will have to reactivate their account. + // + $s_hidden_fields .= ''; + } + + if( !empty($user_avatar_local) ) + { + $s_hidden_fields .= ''; + } + + include($phpbb_root_path . 'includes/page_header.'.$phpEx); + + if( $error ) + { + $template->set_filenames(array( + "reg_header" => "error_body.tpl") + ); + $template->assign_vars(array( + "ERROR_MESSAGE" => $error_msg) + ); + $template->pparse("reg_header"); + } - if( $error ) - { $template->set_filenames(array( - "reg_header" => "error_body.tpl") + "body" => "profile_add_body.tpl", + "jumpbox" => "jumpbox.tpl") ); + + $jumpbox = make_jumpbox(); $template->assign_vars(array( - "ERROR_MESSAGE" => $error_msg) + "L_GO" => $lang['Go'], + "L_JUMP_TO" => $lang['Jump_to'], + "L_SELECT_FORUM" => $lang['Select_forum'], + + "S_JUMPBOX_LIST" => $jumpbox, + "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) ); - $template->pparse("reg_header"); - } + $template->assign_var_from_handle("JUMPBOX", "jumpbox"); - $template->set_filenames(array( - "body" => "profile_add_body.tpl", - "jumpbox" => "jumpbox.tpl") - ); - - $jumpbox = make_jumpbox(); - $template->assign_vars(array( - "L_GO" => $lang['Go'], - "L_JUMP_TO" => $lang['Jump_to'], - "L_SELECT_FORUM" => $lang['Select_forum'], - - "S_JUMPBOX_LIST" => $jumpbox, - "S_JUMPBOX_ACTION" => append_sid("viewforum.$phpEx")) - ); - $template->assign_var_from_handle("JUMPBOX", "jumpbox"); - - if( $mode == "editprofile" ) - { - $template->assign_block_vars("edit_profile", array()); - } - - $template->assign_vars(array( - "USERNAME" => $username, - "EMAIL" => $email, - "YIM" => $yim, - "ICQ" => $icq, - "MSN" => $msn, - "AIM" => $aim, - "OCCUPATION" => $occupation, - "INTERESTS" => $interests, - "LOCATION" => $location, - "WEBSITE" => $website, - "SIGNATURE" => str_replace("
", "\n", $signature), - "VIEW_EMAIL_YES" => ($viewemail) ? "checked=\"checked\"" : "", - "VIEW_EMAIL_NO" => (!$viewemail) ? "checked=\"checked\"" : "", - "HIDE_USER_YES" => (!$allowviewonline) ? "checked=\"checked\"" : "", - "HIDE_USER_NO" => ($allowviewonline) ? "checked=\"checked\"" : "", - "NOTIFY_PM_YES" => ($notifypm) ? "checked=\"checked\"" : "", - "NOTIFY_PM_NO" => (!$notifypm) ? "checked=\"checked\"" : "", - "ALWAYS_ADD_SIGNATURE_YES" => ($attachsig) ? "checked=\"checked\"" : "", - "ALWAYS_ADD_SIGNATURE_NO" => (!$attachsig) ? "checked=\"checked\"" : "", - "NOTIFY_REPLY_YES" => ($notifyreply) ? "checked=\"checked\"" : "", - "NOTIFY_REPLY_NO" => (!$notifyreply) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_BBCODE_YES" => ($allowbbcode) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_BBCODE_NO" => (!$allowbbcode) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_HTML_YES" => ($allowhtml) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_HTML_NO" => (!$allowhtml) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_SMILIES_YES" => ($allowsmilies) ? "checked=\"checked\"" : "", - "ALWAYS_ALLOW_SMILIES_NO" => (!$allowsmilies) ? "checked=\"checked\"" : "", - "ALLOW_AVATAR" => $board_config['allow_avatar_upload'], - "AVATAR" => $avatar_img, - "AVATAR_SIZE" => $board_config['avatar_filesize'], - "LANGUAGE_SELECT" => language_select($user_lang, 'language'), - "STYLE_SELECT" => style_select($user_style, 'style'), - "TIMEZONE_SELECT" => tz_select($user_timezone, 'timezone'), - "DATE_FORMAT" => $user_dateformat, - "HTML_STATUS" => $html_status, - "BBCODE_STATUS" => $bbcode_status, - "SMILIES_STATUS" => $smilies_status, - - "L_CURRENT_PASSWORD" => $lang['Current_password'], - "L_NEW_PASSWORD" => ( $mode == "register" ) ? $lang['Password'] : $lang['New_password'], - "L_CONFIRM_PASSWORD" => $lang['Confirm_password'], - "L_PASSWORD_IF_CHANGED" => ($mode == "editprofile") ? $lang['password_if_changed'] : "", - "L_PASSWORD_CONFIRM_IF_CHANGED" => ($mode == "editprofile") ? $lang['password_confirm_if_changed'] : "", - "L_SUBMIT" => $lang['Submit'], - "L_RESET" => $lang['Reset'], - "L_ICQ_NUMBER" => $lang['ICQ'], - "L_MESSENGER" => $lang['MSNM'], - "L_YAHOO" => $lang['YIM'], - "L_WEBSITE" => $lang['Website'], - "L_AIM" => $lang['AIM'], - "L_LOCATION" => $lang['From'], - "L_OCCUPATION" => $lang['Occupation'], - "L_BOARD_LANGUAGE" => $lang['Board_lang'], - "L_BOARD_STYLE" => $lang['Board_style'], - "L_TIMEZONE" => $lang['Timezone'], - "L_DATE_FORMAT" => $lang['Date_format'], - "L_DATE_FORMAT_EXPLAIN" => $lang['Date_format_explain'], - "L_YES" => $lang['Yes'], - "L_NO" => $lang['No'], - "L_INTERESTS" => $lang['Interests'], - "L_ALWAYS_ALLOW_SMILIES" => $lang['Always_smile'], - "L_ALWAYS_ALLOW_BBCODE" => $lang['Always_bbcode'], - "L_ALWAYS_ALLOW_HTML" => $lang['Always_html'], - "L_HIDE_USER" => $lang['Hide_user'], - "L_ALWAYS_ADD_SIGNATURE" => $lang['Always_add_sig'], - - "L_AVATAR_PANEL" => $lang['Avatar_panel'], - "L_AVATAR_EXPLAIN" => $lang['Avatar_explain'], - "L_UPLOAD_AVATAR_FILE" => $lang['Upload_Avatar_file'], - "L_UPLOAD_AVATAR_URL" => $lang['Upload_Avatar_URL'], - "L_UPLOAD_AVATAR_URL_EXPLAIN" => $lang['Upload_Avatar_URL_explain'], - "L_AVATAR_GALLERY" => $lang['Select_from_gallery'], - "L_SHOW_GALLERY" => $lang['Avatar_gallery'], - "L_LINK_REMOTE_AVATAR" => $lang['Link_remote_Avatar'], - "L_LINK_REMOTE_AVATAR_EXPLAIN" => $lang['Link_remote_Avatar_explain'], - "L_DELETE_AVATAR" => $lang['Delete_Image'], - "L_CURRENT_IMAGE" => $lang['Current_Image'], - - "L_SIGNATURE" => $lang['Signature'], - "L_SIGNATURE_EXPLAIN" => $lang['Signature_explain'], - "L_NOTIFY_ON_REPLY" => $lang['Always_notify'], - "L_NOTIFY_ON_REPLY_EXPLAIN" => $lang['Always_notify_explain'], - "L_NOTIFY_ON_PRIVMSG" => $lang['Notify_on_privmsg'], - "L_PREFERENCES" => $lang['Preferences'], - "L_PUBLIC_VIEW_EMAIL" => $lang['Public_view_email'], - "L_ITEMS_REQUIRED" => $lang['Items_required'], - "L_REGISTRATION_INFO" => $lang['Registration_info'], - "L_PROFILE_INFO" => $lang['Profile_info'], - "L_PROFILE_INFO_NOTICE" => $lang['Profile_info_warn'], - "L_EMAIL_ADDRESS" => $lang['Email_address'], - - "L_HTML_IS" => $lang['HTML'] . " " . $lang['is'], - "L_BBCODE_IS" => $lang['BBCode'] . " " . $lang['is'], - "L_SMILIES_ARE" => $lang['Smilies'] . " " . $lang['are'], - - "S_ALLOW_AVATAR_UPLOAD" => $board_config['allow_avatar_upload'], - "S_ALLOW_AVATAR_LOCAL" => $board_config['allow_avatar_local'], - "S_ALLOW_AVATAR_REMOTE" => $board_config['allow_avatar_remote'], - "S_HIDDEN_FIELDS" => $s_hidden_fields, - "S_PROFILE_ACTION" => append_sid("profile.$phpEx")) - ); - - // - // This is another cheat using the block_var capability - // of the templates to 'fake' an IF...ELSE...ENDIF solution - // it works well :) - // - if( $board_config['allow_avatar_upload'] || $board_config['allow_avatar_local'] || $board_config['allow_avatar_remote'] ) - { - $template->assign_block_vars("avatarblock", array() ); - - if($board_config['allow_avatar_upload']) + if( $mode == "editprofile" ) { - $template->assign_block_vars("avatarblock.avatarupload", array() ); - } - if($board_config['allow_avatar_remote']) - { - $template->assign_block_vars("avatarblock.avatarremote", array() ); - } - if($board_config['allow_avatar_local']) - { - $template->assign_block_vars("avatarblock.avatargallery", array() ); + $template->assign_block_vars("edit_profile", array()); } + $template->assign_vars(array( + "USERNAME" => $username, + "EMAIL" => $email, + "YIM" => $yim, + "ICQ" => $icq, + "MSN" => $msn, + "AIM" => $aim, + "OCCUPATION" => $occupation, + "INTERESTS" => $interests, + "LOCATION" => $location, + "WEBSITE" => $website, + "SIGNATURE" => str_replace("
", "\n", $signature), + "VIEW_EMAIL_YES" => ($viewemail) ? "checked=\"checked\"" : "", + "VIEW_EMAIL_NO" => (!$viewemail) ? "checked=\"checked\"" : "", + "HIDE_USER_YES" => (!$allowviewonline) ? "checked=\"checked\"" : "", + "HIDE_USER_NO" => ($allowviewonline) ? "checked=\"checked\"" : "", + "NOTIFY_PM_YES" => ($notifypm) ? "checked=\"checked\"" : "", + "NOTIFY_PM_NO" => (!$notifypm) ? "checked=\"checked\"" : "", + "ALWAYS_ADD_SIGNATURE_YES" => ($attachsig) ? "checked=\"checked\"" : "", + "ALWAYS_ADD_SIGNATURE_NO" => (!$attachsig) ? "checked=\"checked\"" : "", + "NOTIFY_REPLY_YES" => ($notifyreply) ? "checked=\"checked\"" : "", + "NOTIFY_REPLY_NO" => (!$notifyreply) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_BBCODE_YES" => ($allowbbcode) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_BBCODE_NO" => (!$allowbbcode) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_HTML_YES" => ($allowhtml) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_HTML_NO" => (!$allowhtml) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_SMILIES_YES" => ($allowsmilies) ? "checked=\"checked\"" : "", + "ALWAYS_ALLOW_SMILIES_NO" => (!$allowsmilies) ? "checked=\"checked\"" : "", + "ALLOW_AVATAR" => $board_config['allow_avatar_upload'], + "AVATAR" => $avatar_img, + "AVATAR_SIZE" => $board_config['avatar_filesize'], + "LANGUAGE_SELECT" => language_select($user_lang, 'language'), + "STYLE_SELECT" => style_select($user_style, 'style'), + "TIMEZONE_SELECT" => tz_select($user_timezone, 'timezone'), + "DATE_FORMAT" => $user_dateformat, + "HTML_STATUS" => $html_status, + "BBCODE_STATUS" => $bbcode_status, + "SMILIES_STATUS" => $smilies_status, + + "L_CURRENT_PASSWORD" => $lang['Current_password'], + "L_NEW_PASSWORD" => ( $mode == "register" ) ? $lang['Password'] : $lang['New_password'], + "L_CONFIRM_PASSWORD" => $lang['Confirm_password'], + "L_PASSWORD_IF_CHANGED" => ($mode == "editprofile") ? $lang['password_if_changed'] : "", + "L_PASSWORD_CONFIRM_IF_CHANGED" => ($mode == "editprofile") ? $lang['password_confirm_if_changed'] : "", + "L_SUBMIT" => $lang['Submit'], + "L_RESET" => $lang['Reset'], + "L_ICQ_NUMBER" => $lang['ICQ'], + "L_MESSENGER" => $lang['MSNM'], + "L_YAHOO" => $lang['YIM'], + "L_WEBSITE" => $lang['Website'], + "L_AIM" => $lang['AIM'], + "L_LOCATION" => $lang['From'], + "L_OCCUPATION" => $lang['Occupation'], + "L_BOARD_LANGUAGE" => $lang['Board_lang'], + "L_BOARD_STYLE" => $lang['Board_style'], + "L_TIMEZONE" => $lang['Timezone'], + "L_DATE_FORMAT" => $lang['Date_format'], + "L_DATE_FORMAT_EXPLAIN" => $lang['Date_format_explain'], + "L_YES" => $lang['Yes'], + "L_NO" => $lang['No'], + "L_INTERESTS" => $lang['Interests'], + "L_ALWAYS_ALLOW_SMILIES" => $lang['Always_smile'], + "L_ALWAYS_ALLOW_BBCODE" => $lang['Always_bbcode'], + "L_ALWAYS_ALLOW_HTML" => $lang['Always_html'], + "L_HIDE_USER" => $lang['Hide_user'], + "L_ALWAYS_ADD_SIGNATURE" => $lang['Always_add_sig'], + + "L_AVATAR_PANEL" => $lang['Avatar_panel'], + "L_AVATAR_EXPLAIN" => $lang['Avatar_explain'], + "L_UPLOAD_AVATAR_FILE" => $lang['Upload_Avatar_file'], + "L_UPLOAD_AVATAR_URL" => $lang['Upload_Avatar_URL'], + "L_UPLOAD_AVATAR_URL_EXPLAIN" => $lang['Upload_Avatar_URL_explain'], + "L_AVATAR_GALLERY" => $lang['Select_from_gallery'], + "L_SHOW_GALLERY" => $lang['View_avatar_gallery'], + "L_LINK_REMOTE_AVATAR" => $lang['Link_remote_Avatar'], + "L_LINK_REMOTE_AVATAR_EXPLAIN" => $lang['Link_remote_Avatar_explain'], + "L_DELETE_AVATAR" => $lang['Delete_Image'], + "L_CURRENT_IMAGE" => $lang['Current_Image'], + + "L_SIGNATURE" => $lang['Signature'], + "L_SIGNATURE_EXPLAIN" => $lang['Signature_explain'], + "L_NOTIFY_ON_REPLY" => $lang['Always_notify'], + "L_NOTIFY_ON_REPLY_EXPLAIN" => $lang['Always_notify_explain'], + "L_NOTIFY_ON_PRIVMSG" => $lang['Notify_on_privmsg'], + "L_PREFERENCES" => $lang['Preferences'], + "L_PUBLIC_VIEW_EMAIL" => $lang['Public_view_email'], + "L_ITEMS_REQUIRED" => $lang['Items_required'], + "L_REGISTRATION_INFO" => $lang['Registration_info'], + "L_PROFILE_INFO" => $lang['Profile_info'], + "L_PROFILE_INFO_NOTICE" => $lang['Profile_info_warn'], + "L_EMAIL_ADDRESS" => $lang['Email_address'], + + "L_HTML_IS" => $lang['HTML'] . " " . $lang['is'], + "L_BBCODE_IS" => $lang['BBCode'] . " " . $lang['is'], + "L_SMILIES_ARE" => $lang['Smilies'] . " " . $lang['are'], + + "S_ALLOW_AVATAR_UPLOAD" => $board_config['allow_avatar_upload'], + "S_ALLOW_AVATAR_LOCAL" => $board_config['allow_avatar_local'], + "S_ALLOW_AVATAR_REMOTE" => $board_config['allow_avatar_remote'], + "S_HIDDEN_FIELDS" => $s_hidden_fields, + "S_PROFILE_ACTION" => append_sid("profile.$phpEx")) + ); + + // + // This is another cheat using the block_var capability + // of the templates to 'fake' an IF...ELSE...ENDIF solution + // it works well :) + // + if( $board_config['allow_avatar_upload'] || $board_config['allow_avatar_local'] || $board_config['allow_avatar_remote'] ) + { + $template->assign_block_vars("avatarblock", array() ); + + if($board_config['allow_avatar_upload']) + { + $template->assign_block_vars("avatarblock.avatarupload", array() ); + } + if($board_config['allow_avatar_remote']) + { + $template->assign_block_vars("avatarblock.avatarremote", array() ); + } + if($board_config['allow_avatar_local']) + { + $template->assign_block_vars("avatarblock.avatargallery", array() ); + } + + } } $template->pparse("body"); diff --git a/phpBB/templates/subSilver/admin/admin_config_body.tpl b/phpBB/templates/subSilver/admin/admin_config_body.tpl index bb7ecb2c33..f26ceb2884 100644 --- a/phpBB/templates/subSilver/admin/admin_config_body.tpl +++ b/phpBB/templates/subSilver/admin/admin_config_body.tpl @@ -123,6 +123,10 @@ Avatar Storage Path
Path under your phpBB root dir, e.g. images/avatars + + Avatar Gallery Path
Path under your phpBB root dir for pre-loaded images, e.g. images/avatars/gallery + + Email Settings diff --git a/phpBB/templates/subSilver/profile_add_body.tpl b/phpBB/templates/subSilver/profile_add_body.tpl index c07cd0b97e..9393c5e9fa 100644 --- a/phpBB/templates/subSilver/profile_add_body.tpl +++ b/phpBB/templates/subSilver/profile_add_body.tpl @@ -268,8 +268,3 @@ - - - - - \ No newline at end of file diff --git a/phpBB/templates/subSilver/profile_avatar_gallery.tpl b/phpBB/templates/subSilver/profile_avatar_gallery.tpl new file mode 100644 index 0000000000..b8f8fd9c8d --- /dev/null +++ b/phpBB/templates/subSilver/profile_avatar_gallery.tpl @@ -0,0 +1,37 @@ + +
+ + + + +
{SITENAME} {L_INDEX}
+ + + + + + + + + + + + + + + + + + + + + + + + +
{L_AVATAR_GALLERY}
{L_CATEGORY}:  
{S_HIDDEN_FIELDS} + +    + +
+
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 7fd23c2f95..c216289a76 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -381,7 +381,7 @@ $select_post_order .= ""; // // Go ahead and pull all data for this topic // -$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, p.*, pt.post_text, pt.post_subject +$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, p.*, pt.post_text, pt.post_subject FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt WHERE p.topic_id = $topic_id AND p.poster_id = u.user_id @@ -665,9 +665,20 @@ for($i = 0; $i < $total_posts; $i++) $poster_joined = ($postrow[$i]['user_id'] != ANONYMOUS) ? $lang['Joined'] . ": " . create_date($board_config['default_dateformat'], $postrow[$i]['user_regdate'], $board_config['board_timezone']) : ""; - if($postrow[$i]['user_avatar'] != "" && $poster_id != ANONYMOUS) + if( $postrow[$i]['user_avatar_type'] && $poster_id != ANONYMOUS ) { - $poster_avatar = (eregi("http", $postrow[$i]['user_avatar']) && $board_config['allow_avatar_remote']) ? "

" : "
\"\"
"; + switch( $postrow[$i]['user_avatar_type'] ) + { + case USER_AVATAR_UPLOAD: + $poster_avatar = "\"\""; + break; + case USER_AVATAR_REMOTE: + $poster_avatar = "\"\""; + break; + case USER_AVATAR_GALLERY: + $poster_avatar = "\"\""; + break; + } } else {