/Upload/usercp.php
PHP | 1886 lines | 1620 code | 202 blank | 64 comment | 386 complexity | 59144a3973516328c03b47975fa0ae8a MD5 | raw file
- <?php
- /**
- * MyBB 1.6
- * Copyright 2010 MyBB Group, All Rights Reserved
- *
- * Website: http://mybb.com
- * License: http://mybb.com/about/license
- *
- * $Id$
- */
- define("IN_MYBB", 1);
- define('THIS_SCRIPT', 'usercp.php');
- $templatelist = "usercp,usercp_nav,usercp_profile,usercp_changename,usercp_email,usercp_password,usercp_subscriptions_thread,forumbit_depth2_forum_lastpost,usercp_forumsubscriptions_forum";
- $templatelist .= ",usercp_usergroups_memberof_usergroup,usercp_usergroups_memberof,usercp_usergroups_joinable_usergroup,usercp_usergroups_joinable,usercp_usergroups";
- $templatelist .= ",usercp_nav_messenger,usercp_nav_changename,usercp_nav_profile,usercp_nav_misc,usercp_usergroups_leader_usergroup,usercp_usergroups_leader,usercp_currentavatar,usercp_reputation";
- $templatelist .= ",usercp_attachments_attachment,usercp_attachments,usercp_profile_away,usercp_profile_customfield,usercp_profile_profilefields,usercp_profile_customtitle,usercp_forumsubscriptions_none";
- $templatelist .= ",usercp_forumsubscriptions,usercp_subscriptions_none,usercp_subscriptions,usercp_options_pms_from_buddys,usercp_options_tppselect,usercp_options_pppselect,usercp_options";
- $templatelist .= ",usercp_nav_editsignature,usercp_referrals,usercp_notepad,usercp_latest_threads_threads,forumdisplay_thread_gotounread,usercp_latest_threads,usercp_subscriptions_remove";
- $templatelist .= ",usercp_editsig_suspended,usercp_editsig,usercp_avatar_gallery_avatar,usercp_avatar_gallery_blankblock,usercp_avatar_gallery_noavatars,usercp_avatar_gallery,usercp_avatar_current";
- $templatelist .= ",usercp_avatar,usercp_editlists_userusercp_editlists,usercp_drafts_draft,usercp_drafts_none,usercp_drafts_submit,usercp_drafts,usercp_usergroups_joingroup,usercp_attachments_none";
- $templatelist .= ",usercp_warnings_warning,usercp_warnings,usercp_latest_subscribed_threads,usercp_latest_subscribed,usercp_nav_messenger_tracking,multipage_prevpage,multipage_start,multipage_end";
- $templatelist .= ",multipage_nextpage,multipage,multipage_page_current,codebuttons,smilieinsert_getmore,smilieinsert";
- require_once "./global.php";
- require_once MYBB_ROOT."inc/functions_post.php";
- require_once MYBB_ROOT."inc/functions_user.php";
- require_once MYBB_ROOT."inc/class_parser.php";
- $parser = new postParser;
- // Load global language phrases
- $lang->load("usercp");
- if($mybb->user['uid'] == 0 || $mybb->usergroup['canusercp'] == 0)
- {
- error_no_permission();
- }
- if(!$mybb->user['pmfolders'])
- {
- $mybb->user['pmfolders'] = "1**".$lang->folder_inbox."$%%$2**".$lang->folder_sent_items."$%%$3**".$lang->folder_drafts."$%%$4**".$lang->folder_trash;
- $db->update_query("users", array('pmfolders' => $mybb->user['pmfolders']), "uid='".$mybb->user['uid']."'");
- }
- $errors = '';
- if(!isset($mybb->input['action']))
- {
- $mybb->input['action'] = '';
- }
- $collapse_options = array('usercppms', 'usercpprofile', 'usercpmisc');
- foreach($collapse_options as $option)
- {
- if(!isset($collapsedimg[$option]))
- {
- $collapsedimg[$option] = '';
- }
- if(!isset($collapsed[$option.'_e']))
- {
- $collapsed[$option.'_e'] = '';
- }
- }
- usercp_menu();
- $plugins->run_hooks("usercp_start");
- if($mybb->input['action'] == "do_editsig" && $mybb->request_method == "post")
- {
- $parser_options = array(
- 'allow_html' => $mybb->settings['sightml'],
- 'filter_badwords' => 1,
- 'allow_mycode' => $mybb->settings['sigmycode'],
- 'allow_smilies' => $mybb->settings['sigsmilies'],
- 'allow_imgcode' => $mybb->settings['sigimgcode'],
- "filter_badwords" => 1
- );
- $parsed_sig = $parser->parse_message($mybb->input['signature'], $parser_options);
- if((($mybb->settings['sigimgcode'] == 0 && $mybb->settings['sigsmilies'] != 1) &&
- substr_count($parsed_sig, "<img") > 0) ||
- (($mybb->settings['sigimgcode'] == 1 || $mybb->settings['sigsmilies'] == 1) &&
- substr_count($parsed_sig, "<img") > $mybb->settings['maxsigimages'])
- )
- {
- if($mybb->settings['sigimgcode'] == 1)
- {
- $imgsallowed = $mybb->settings['maxsigimages'];
- }
- else
- {
- $imgsallowed = 0;
- }
- $lang->too_many_sig_images2 = $lang->sprintf($lang->too_many_sig_images2, $imgsallowed);
- $error = inline_error($lang->too_many_sig_images." ".$lang->too_many_sig_images2);
- $mybb->input['preview'] = 1;
- }
- else if($mybb->settings['siglength'] > 0)
- {
- if($mybb->settings['sigcountmycode'] == 0)
- {
- $parsed_sig = $parser->text_parse_message($mybb->input['signature']);
- }
- else
- {
- $parsed_sig = $mybb->input['signature'];
- }
- $parsed_sig = preg_replace("#\s#", "", $parsed_sig);
- $sig_length = my_strlen($parsed_sig);
- if($sig_length > $mybb->settings['siglength'])
- {
- $lang->sig_too_long = $lang->sprintf($lang->sig_too_long, $mybb->settings['siglength']);
- if($sig_length - $mybb->settings['siglength'] > 1)
- {
- $lang->sig_too_long .= $lang->sprintf($lang->sig_remove_chars_plural, $sig_length-$mybb->settings['siglength']);
- }
- else
- {
- $lang->sig_too_long .= $lang->sig_remove_chars_singular;
- }
- $error = inline_error($lang->sig_too_long);
- }
- }
- if($error || $mybb->input['preview'])
- {
- $mybb->input['action'] = "editsig";
- }
- }
- // Make navigation
- add_breadcrumb($lang->nav_usercp, "usercp.php");
- switch($mybb->input['action'])
- {
- case "profile":
- case "do_profile":
- add_breadcrumb($lang->ucp_nav_profile);
- break;
- case "options":
- case "do_options":
- add_breadcrumb($lang->nav_options);
- break;
- case "email":
- case "do_email":
- add_breadcrumb($lang->nav_email);
- break;
- case "password":
- case "do_password":
- add_breadcrumb($lang->nav_password);
- break;
- case "changename":
- case "do_changename":
- add_breadcrumb($lang->nav_changename);
- break;
- case "subscriptions":
- add_breadcrumb($lang->ucp_nav_subscribed_threads);
- break;
- case "forumsubscriptions":
- add_breadcrumb($lang->ucp_nav_forum_subscriptions);
- break;
- case "editsig":
- case "do_editsig":
- add_breadcrumb($lang->nav_editsig);
- break;
- case "avatar":
- case "do_avatar":
- add_breadcrumb($lang->nav_avatar);
- break;
- case "notepad":
- case "do_notepad":
- add_breadcrumb($lang->ucp_nav_notepad);
- break;
- case "editlists":
- case "do_editlists":
- add_breadcrumb($lang->ucp_nav_editlists);
- break;
- case "drafts":
- add_breadcrumb($lang->ucp_nav_drafts);
- break;
- case "usergroups":
- add_breadcrumb($lang->ucp_nav_usergroups);
- break;
- case "attachments":
- add_breadcrumb($lang->ucp_nav_attachments);
- break;
- }
- if($mybb->input['action'] == "do_profile" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_profile_start");
- if($mybb->input['away'] == 1 && $mybb->settings['allowaway'] != 0)
- {
- $awaydate = TIME_NOW;
- if($mybb->input['awayday'])
- {
- // If the user has indicated that they will return on a specific day, but not month or year, assume it is current month and year
- if(!$mybb->input['awaymonth'])
- {
- $mybb->input['awaymonth'] = my_date('n', $awaydate);
- }
- if(!$mybb->input['awayyear'])
- {
- $mybb->input['awayyear'] = my_date('Y', $awaydate);
- }
- $return_month = intval(substr($mybb->input['awaymonth'], 0, 2));
- $return_day = intval(substr($mybb->input['awayday'], 0, 2));
- $return_year = min(intval($mybb->input['awayyear']), 9999);
- // Check if return date is after the away date.
- $returntimestamp = gmmktime(0, 0, 0, $return_month, $return_day, $return_year);
- $awaytimestamp = gmmktime(0, 0, 0, my_date('n', $awaydate), my_date('j', $awaydate), my_date('Y', $awaydate));
- if($return_year < my_date('Y', $awaydate) || ($returntimestamp < $awaytimestamp && $return_year == my_date('Y', $awaydate)))
- {
- error($lang->error_usercp_return_date_past);
- }
- $returndate = "{$return_day}-{$return_month}-{$return_year}";
- }
- else
- {
- $returndate = "";
- }
- $away = array(
- "away" => 1,
- "date" => $awaydate,
- "returndate" => $returndate,
- "awayreason" => $mybb->input['awayreason']
- );
- }
- else
- {
- $away = array(
- "away" => 0,
- "date" => '',
- "returndate" => '',
- "awayreason" => ''
- );
- }
- $bday = array(
- "day" => $mybb->input['bday1'],
- "month" => $mybb->input['bday2'],
- "year" => $mybb->input['bday3']
- );
- // Set up user handler.
- require_once "inc/datahandlers/user.php";
- $userhandler = new UserDataHandler("update");
- $user = array(
- "uid" => $mybb->user['uid'],
- "postnum" => $mybb->user['postnum'],
- "website" => $mybb->input['website'],
- "icq" => intval($mybb->input['icq']),
- "aim" => $mybb->input['aim'],
- "yahoo" => $mybb->input['yahoo'],
- "msn" => $mybb->input['msn'],
- "birthday" => $bday,
- "birthdayprivacy" => $mybb->input['birthdayprivacy'],
- "away" => $away,
- "profile_fields" => $mybb->input['profile_fields']
- );
- if($mybb->usergroup['cancustomtitle'] == 1)
- {
- if($mybb->input['usertitle'] != '')
- {
- $user['usertitle'] = $mybb->input['usertitle'];
- }
- else if($mybb->input['reverttitle'])
- {
- $user['usertitle'] = '';
- }
- }
- $userhandler->set_data($user);
- if(!$userhandler->validate_user())
- {
- $errors = $userhandler->get_friendly_errors();
- // Set allowed value otherwise select options disappear
- if(in_array($lang->userdata_invalid_birthday_privacy, $errors))
- {
- $mybb->input['birthdayprivacy'] = 'none';
- }
- $errors = inline_error($errors);
- $mybb->input['action'] = "profile";
- }
- else
- {
- $userhandler->update_user();
- $plugins->run_hooks("usercp_do_profile_end");
- redirect("usercp.php", $lang->redirect_profileupdated);
- }
- }
- if($mybb->input['action'] == "profile")
- {
- if($errors)
- {
- $user = $mybb->input;
- $bday = array();
- $bday[0] = $mybb->input['bday1'];
- $bday[1] = $mybb->input['bday2'];
- $bday[2] = intval($mybb->input['bday3']);
- }
- else
- {
- $user = $mybb->user;
- $bday = explode("-", $user['birthday']);
- }
- $plugins->run_hooks("usercp_profile_start");
- $bdaysel = '';
- for($i = 1; $i <= 31; ++$i)
- {
- if($bday[0] == $i)
- {
- $bdaydaysel .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
- }
- else
- {
- $bdaydaysel .= "<option value=\"$i\">$i</option>\n";
- }
- }
- $bdaymonthsel[$bday[1]] = 'selected="selected"';
- $bdayprivacysel = '';
- if($user['birthdayprivacy'] == 'all' || !$user['birthdayprivacy'])
- {
- $bdayprivacysel .= "<option value=\"all\" selected=\"selected\">{$lang->birthdayprivacyall}</option>\n";
- $bdayprivacysel .= "<option value=\"none\">{$lang->birthdayprivacynone}</option>\n";
- $bdayprivacysel .= "<option value=\"age\">{$lang->birthdayprivacyage}</option>";
- }
- else if($user['birthdayprivacy'] == 'none')
- {
- $bdayprivacysel .= "<option value=\"all\">{$lang->birthdayprivacyall}</option>\n";
- $bdayprivacysel .= "<option value=\"none\" selected=\"selected\">{$lang->birthdayprivacynone}</option>\n";
- $bdayprivacysel .= "<option value=\"age\">{$lang->birthdayprivacyage}</option>";
- }
- else if($user['birthdayprivacy'] == 'age')
- {
- $bdayprivacysel .= "<option value=\"all\">{$lang->birthdayprivacyall}</option>\n";
- $bdayprivacysel .= "<option value=\"none\">{$lang->birthdayprivacynone}</option>\n";
- $bdayprivacysel .= "<option value=\"age\" selected=\"selected\">{$lang->birthdayprivacyage}</option>";
- }
- if($user['website'] == "" || $user['website'] == "http://")
- {
- $user['website'] = "http://";
- }
- else
- {
- $user['website'] = htmlspecialchars_uni($user['website']);
- }
- if($user['icq'] != "0")
- {
- $user['icq'] = intval($user['icq']);
- }
- if($user['icq'] == 0)
- {
- $user['icq'] = "";
- }
- if($errors)
- {
- $user['msn'] = htmlspecialchars_uni($user['msn']);
- $user['aim'] = htmlspecialchars_uni($user['aim']);
- $user['yahoo'] = htmlspecialchars_uni($user['yahoo']);
- }
- if($mybb->settings['allowaway'] != 0)
- {
- if($errors)
- {
- if($user['away'] == 1)
- {
- $awaycheck[1] = "checked=\"checked\"";
- }
- else
- {
- $awaycheck[0] = "checked=\"checked\"";
- }
- $returndate = array();
- $returndate[0] = $mybb->input['awayday'];
- $returndate[1] = $mybb->input['awaymonth'];
- $returndate[2] = intval($mybb->input['awayyear']);
- $user['awayreason'] = htmlspecialchars_uni($mybb->input['awayreason']);
- }
- else
- {
- $user['awayreason'] = htmlspecialchars_uni($user['awayreason']);
- if($mybb->user['away'] == 1)
- {
- $awaydate = my_date($mybb->settings['dateformat'], $mybb->user['awaydate']);
- $awaycheck[1] = "checked=\"checked\"";
- $awaynotice = $lang->sprintf($lang->away_notice_away, $awaydate);
- }
- else
- {
- $awaynotice = $lang->away_notice;
- $awaycheck[0] = "checked=\"checked\"";
- }
- $returndate = explode("-", $mybb->user['returndate']);
- }
- $returndatesel = '';
- for($i = 1; $i <= 31; ++$i)
- {
- if($returndate[0] == $i)
- {
- $returndatesel .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
- }
- else
- {
- $returndatesel .= "<option value=\"$i\">$i</option>\n";
- }
- }
- $returndatemonthsel[$returndate[1]] = "selected";
- eval("\$awaysection = \"".$templates->get("usercp_profile_away")."\";");
- }
- // Custom profile fields baby!
- $altbg = "trow1";
- $requiredfields = '';
- $customfields = '';
- $query = $db->simple_select("profilefields", "*", "editable=1", array('order_by' => 'disporder'));
- while($profilefield = $db->fetch_array($query))
- {
- // Does this field have a minimum post count?
- if($profilefield['postnum'] && $profilefield['postnum'] > $mybb->user['postnum'])
- {
- continue;
- }
- $profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
- $profilefield['name'] = htmlspecialchars_uni($profilefield['name']);
- $profilefield['description'] = htmlspecialchars_uni($profilefield['description']);
- $thing = explode("\n", $profilefield['type'], "2");
- $type = $thing[0];
- $options = $thing[1];
- $field = "fid{$profilefield['fid']}";
- $select = '';
- if($errors)
- {
- $userfield = $mybb->input['profile_fields'][$field];
- }
- else
- {
- $userfield = $user[$field];
- }
- if($type == "multiselect")
- {
- if($errors)
- {
- $useropts = $userfield;
- }
- else
- {
- $useropts = explode("\n", $userfield);
- }
- if(is_array($useropts))
- {
- foreach($useropts as $key => $val)
- {
- $val = htmlspecialchars_uni($val);
- $seloptions[$val] = $val;
- }
- }
- $expoptions = explode("\n", $options);
- if(is_array($expoptions))
- {
- foreach($expoptions as $key => $val)
- {
- $val = trim($val);
- $val = str_replace("\n", "\\n", $val);
- $sel = "";
- if($val == $seloptions[$val])
- {
- $sel = " selected=\"selected\"";
- }
- $select .= "<option value=\"$val\"$sel>$val</option>\n";
- }
- if(!$profilefield['length'])
- {
- $profilefield['length'] = 3;
- }
- $code = "<select name=\"profile_fields[$field][]\" size=\"{$profilefield['length']}\" multiple=\"multiple\">$select</select>";
- }
- }
- elseif($type == "select")
- {
- $expoptions = explode("\n", $options);
- if(is_array($expoptions))
- {
- foreach($expoptions as $key => $val)
- {
- $val = trim($val);
- $val = str_replace("\n", "\\n", $val);
- $sel = "";
- if($val == htmlspecialchars_uni($userfield))
- {
- $sel = " selected=\"selected\"";
- }
- $select .= "<option value=\"$val\"$sel>$val</option>";
- }
- if(!$profilefield['length'])
- {
- $profilefield['length'] = 1;
- }
- $code = "<select name=\"profile_fields[$field]\" size=\"{$profilefield['length']}\">$select</select>";
- }
- }
- elseif($type == "radio")
- {
- $expoptions = explode("\n", $options);
- if(is_array($expoptions))
- {
- foreach($expoptions as $key => $val)
- {
- $checked = "";
- if($val == $userfield)
- {
- $checked = " checked=\"checked\"";
- }
- $code .= "<input type=\"radio\" class=\"radio\" name=\"profile_fields[$field]\" value=\"$val\"$checked /> <span class=\"smalltext\">$val</span><br />";
- }
- }
- }
- elseif($type == "checkbox")
- {
- if($errors)
- {
- $useropts = $userfield;
- }
- else
- {
- $useropts = explode("\n", $userfield);
- }
- if(is_array($useropts))
- {
- foreach($useropts as $key => $val)
- {
- $seloptions[$val] = $val;
- }
- }
- $expoptions = explode("\n", $options);
- if(is_array($expoptions))
- {
- foreach($expoptions as $key => $val)
- {
- $checked = "";
- if($val == $seloptions[$val])
- {
- $checked = " checked=\"checked\"";
- }
- $code .= "<input type=\"checkbox\" class=\"checkbox\" name=\"profile_fields[$field][]\" value=\"$val\"$checked /> <span class=\"smalltext\">$val</span><br />";
- }
- }
- }
- elseif($type == "textarea")
- {
- $value = htmlspecialchars_uni($userfield);
- $code = "<textarea name=\"profile_fields[$field]\" rows=\"6\" cols=\"30\" style=\"width: 95%\">$value</textarea>";
- }
- else
- {
- $value = htmlspecialchars_uni($userfield);
- $maxlength = "";
- if($profilefield['maxlength'] > 0)
- {
- $maxlength = " maxlength=\"{$profilefield['maxlength']}\"";
- }
- $code = "<input type=\"text\" name=\"profile_fields[$field]\" class=\"textbox\" size=\"{$profilefield['length']}\"{$maxlength} value=\"$value\" />";
- }
- if($profilefield['required'] == 1)
- {
- eval("\$requiredfields .= \"".$templates->get("usercp_profile_customfield")."\";");
- }
- else
- {
- eval("\$customfields .= \"".$templates->get("usercp_profile_customfield")."\";");
- }
- $altbg = alt_trow();
- $code = "";
- $select = "";
- $val = "";
- $options = "";
- $expoptions = "";
- $useropts = "";
- $seloptions = "";
- }
- if($customfields)
- {
- eval("\$customfields = \"".$templates->get("usercp_profile_profilefields")."\";");
- }
- if($mybb->usergroup['cancustomtitle'] == 1)
- {
- if($mybb->usergroup['usertitle'] == "")
- {
- $defaulttitle = '';
- $usertitles = $cache->read('usertitles');
- foreach($usertitles as $title)
- {
- if($title['posts'] <= $mybb->user['postnum'])
- {
- $defaulttitle = htmlspecialchars_uni($title['title']);
- break;
- }
- }
- }
- else
- {
- $defaulttitle = htmlspecialchars_uni($mybb->usergroup['usertitle']);
- }
- if(trim($user['usertitle']) == '')
- {
- $lang->current_custom_usertitle = '';
- }
- else
- {
- if($errors)
- {
- $newtitle = htmlspecialchars_uni($user['usertitle']);
- $user['usertitle'] = $mybb->user['usertitle'];
- }
- }
- eval("\$customtitle = \"".$templates->get("usercp_profile_customtitle")."\";");
- }
- else
- {
- $customtitle = "";
- }
- $plugins->run_hooks("usercp_profile_end");
- eval("\$editprofile = \"".$templates->get("usercp_profile")."\";");
- output_page($editprofile);
- }
- if($mybb->input['action'] == "do_options" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_options_start");
- // Set up user handler.
- require_once MYBB_ROOT."inc/datahandlers/user.php";
- $userhandler = new UserDataHandler("update");
- $user = array(
- "uid" => $mybb->user['uid'],
- "style" => intval($mybb->input['style']),
- "dateformat" => intval($mybb->input['dateformat']),
- "timeformat" => intval($mybb->input['timeformat']),
- "timezone" => $db->escape_string($mybb->input['timezoneoffset']),
- "language" => $mybb->input['language']
- );
- $user['options'] = array(
- "allownotices" => $mybb->input['allownotices'],
- "hideemail" => $mybb->input['hideemail'],
- "subscriptionmethod" => $mybb->input['subscriptionmethod'],
- "invisible" => $mybb->input['invisible'],
- "dstcorrection" => $mybb->input['dstcorrection'],
- "threadmode" => $mybb->input['threadmode'],
- "showsigs" => $mybb->input['showsigs'],
- "showavatars" => $mybb->input['showavatars'],
- "showquickreply" => $mybb->input['showquickreply'],
- "receivepms" => $mybb->input['receivepms'],
- "pmnotice" => $mybb->input['pmnotice'],
- "receivefrombuddy" => $mybb->input['receivefrombuddy'],
- "daysprune" => $mybb->input['daysprune'],
- "showcodebuttons" => intval($mybb->input['showcodebuttons']),
- "pmnotify" => $mybb->input['pmnotify'],
- "showredirect" => $mybb->input['showredirect'],
- "classicpostbit" => $mybb->input['classicpostbit']
- );
- if($mybb->settings['usertppoptions'])
- {
- $user['options']['tpp'] = intval($mybb->input['tpp']);
- }
- if($mybb->settings['userpppoptions'])
- {
- $user['options']['ppp'] = intval($mybb->input['ppp']);
- }
- $userhandler->set_data($user);
- if(!$userhandler->validate_user())
- {
- $errors = $userhandler->get_friendly_errors();
- $errors = inline_error($errors);
- $mybb->input['action'] = "options";
- }
- else
- {
- $userhandler->update_user();
- $plugins->run_hooks("usercp_do_options_end");
- redirect("usercp.php", $lang->redirect_optionsupdated);
- }
- }
- if($mybb->input['action'] == "options")
- {
- $plugins->run_hooks("usercp_options_start");
- if($errors != '')
- {
- $user = $mybb->input;
- }
- else
- {
- $user = $mybb->user;
- }
- $languages = $lang->get_languages();
- $langoptions = '';
- foreach($languages as $lname => $language)
- {
- $sel = "";
- if($user['language'] == $lname)
- {
- $sel = " selected=\"selected\"";
- }
- $langoptions .= "<option value=\"$lname\"$sel>".htmlspecialchars_uni($language)."</option>\n";
- }
- // Lets work out which options the user has selected and check the boxes
- if($user['allownotices'] == 1)
- {
- $allownoticescheck = "checked=\"checked\"";
- }
- else
- {
- $allownoticescheck = "";
- }
- if($user['invisible'] == 1)
- {
- $invisiblecheck = "checked=\"checked\"";
- }
- else
- {
- $invisiblecheck = "";
- }
- if($user['hideemail'] == 1)
- {
- $hideemailcheck = "checked=\"checked\"";
- }
- else
- {
- $hideemailcheck = "";
- }
- if($user['subscriptionmethod'] == 1)
- {
- $no_email_subscribe_selected = "selected=\"selected\"";
- }
- else if($user['subscriptionmethod'] == 2)
- {
- $instant_email_subscribe_selected = "selected=\"selected\"";
- }
- else
- {
- $no_subscribe_selected = "selected=\"selected\"";
- }
- if($user['showsigs'] == 1)
- {
- $showsigscheck = "checked=\"checked\"";
- }
- else
- {
- $showsigscheck = "";
- }
- if($user['showavatars'] == 1)
- {
- $showavatarscheck = "checked=\"checked\"";
- }
- else
- {
- $showavatarscheck = "";
- }
- if($user['showquickreply'] == 1)
- {
- $showquickreplycheck = "checked=\"checked\"";
- }
- else
- {
- $showquickreplycheck = "";
- }
- if($user['receivepms'] == 1)
- {
- $receivepmscheck = "checked=\"checked\"";
- }
- else
- {
- $receivepmscheck = "";
- }
- if($user['receivefrombuddy'] == 1)
- {
- $receivefrombuddycheck = "checked=\"checked\"";
- }
- else
- {
- $receivefrombuddycheck = "";
- }
- if($user['pmnotice'] == 1 || $user['pmnotice'] == 2)
- {
- $pmnoticecheck = " checked=\"checked\"";
- }
- else
- {
- $pmnoticecheck = "";
- }
- if($user['dstcorrection'] == 2)
- {
- $dst_auto_selected = "selected=\"selected\"";
- }
- else if($user['dstcorrection'] == 1)
- {
- $dst_enabled_selected = "selected=\"selected\"";
- }
- else
- {
- $dst_disabled_selected = "selected=\"selected\"";
- }
- if($user['showcodebuttons'] == 1)
- {
- $showcodebuttonscheck = "checked=\"checked\"";
- }
- else
- {
- $showcodebuttonscheck = "";
- }
- if($user['showredirect'] != 0)
- {
- $showredirectcheck = "checked=\"checked\"";
- }
- else
- {
- $showredirectcheck = "";
- }
- if($user['pmnotify'] != 0)
- {
- $pmnotifycheck = "checked=\"checked\"";
- }
- else
- {
- $pmnotifycheck = '';
- }
- if($user['threadmode'] != "threaded" && $user['threadmode'] != "linear")
- {
- $user['threadmode'] = ''; // Leave blank to show default
- }
- if($user['classicpostbit'] != 0)
- {
- $classicpostbitcheck = "checked=\"checked\"";
- }
- else
- {
- $classicpostbitcheck = '';
- }
- $date_format_options = "<option value=\"0\">{$lang->use_default}</option>";
- foreach($date_formats as $key => $format)
- {
- if($user['dateformat'] == $key)
- {
- $date_format_options .= "<option value=\"$key\" selected=\"selected\">".my_date($format, TIME_NOW, "", 0)."</option>";
- }
- else
- {
- $date_format_options .= "<option value=\"$key\">".my_date($format, TIME_NOW, "", 0)."</option>";
- }
- }
- $time_format_options = "<option value=\"0\">{$lang->use_default}</option>";
- foreach($time_formats as $key => $format)
- {
- if($user['timeformat'] == $key)
- {
- $time_format_options .= "<option value=\"$key\" selected=\"selected\">".my_date($format, TIME_NOW, "", 0)."</option>";
- }
- else
- {
- $time_format_options .= "<option value=\"$key\">".my_date($format, TIME_NOW, "", 0)."</option>";
- }
- }
- $tzselect = build_timezone_select("timezoneoffset", $mybb->user['timezone'], true);
- if($mybb->settings['allowbuddyonly'] == 1)
- {
- eval("\$pms_from_buddys = \"".$templates->get("usercp_options_pms_from_buddys")."\";");
- }
- $threadview[$user['threadmode']] = 'selected="selected"';
- $daysprunesel[$user['daysprune']] = 'selected="selected"';
- $stylelist = build_theme_select("style", $user['style']);
- if($mybb->settings['usertppoptions'])
- {
- $explodedtpp = explode(",", $mybb->settings['usertppoptions']);
- $tppoptions = '';
- if(is_array($explodedtpp))
- {
- foreach($explodedtpp as $key => $val)
- {
- $val = trim($val);
- $selected = "";
- if($user['tpp'] == $val)
- {
- $selected = "selected=\"selected\"";
- }
- $tppoptions .= "<option value=\"$val\" $selected>".$lang->sprintf($lang->tpp_option, $val)."</option>\n";
- }
- }
- eval("\$tppselect = \"".$templates->get("usercp_options_tppselect")."\";");
- }
- if($mybb->settings['userpppoptions'])
- {
- $explodedppp = explode(",", $mybb->settings['userpppoptions']);
- $pppoptions = '';
- if(is_array($explodedppp))
- {
- foreach($explodedppp as $key => $val)
- {
- $val = trim($val);
- $selected = "";
- if($user['ppp'] == $val)
- {
- $selected = "selected=\"selected\"";
- }
- $pppoptions .= "<option value=\"$val\" $selected>".$lang->sprintf($lang->ppp_option, $val)."</option>\n";
- }
- }
- eval("\$pppselect = \"".$templates->get("usercp_options_pppselect")."\";");
- }
- $plugins->run_hooks("usercp_options_end");
- eval("\$editprofile = \"".$templates->get("usercp_options")."\";");
- output_page($editprofile);
- }
- if($mybb->input['action'] == "do_email" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $errors = array();
- $plugins->run_hooks("usercp_do_email_start");
- if(validate_password_from_uid($mybb->user['uid'], $mybb->input['password']) == false)
- {
- $errors[] = $lang->error_invalidpassword;
- }
- else
- {
- // Set up user handler.
- require_once "inc/datahandlers/user.php";
- $userhandler = new UserDataHandler("update");
- $user = array(
- "uid" => $mybb->user['uid'],
- "email" => $mybb->input['email'],
- "email2" => $mybb->input['email2']
- );
- $userhandler->set_data($user);
- if(!$userhandler->validate_user())
- {
- $errors = $userhandler->get_friendly_errors();
- }
- else
- {
- if($mybb->user['usergroup'] != "5" && $mybb->usergroup['cancp'] != 1)
- {
- $activationcode = random_str();
- $now = TIME_NOW;
- $db->delete_query("awaitingactivation", "uid='".$mybb->user['uid']."'");
- $newactivation = array(
- "uid" => $mybb->user['uid'],
- "dateline" => TIME_NOW,
- "code" => $activationcode,
- "type" => "e",
- "oldgroup" => $mybb->user['usergroup'],
- "misc" => $db->escape_string($mybb->input['email'])
- );
- $db->insert_query("awaitingactivation", $newactivation);
- $username = $mybb->user['username'];
- $uid = $mybb->user['uid'];
- $lang->emailsubject_changeemail = $lang->sprintf($lang->emailsubject_changeemail, $mybb->settings['bbname']);
- $lang->email_changeemail = $lang->sprintf($lang->email_changeemail, $mybb->user['username'], $mybb->settings['bbname'], $mybb->user['email'], $mybb->input['email'], $mybb->settings['bburl'], $activationcode, $mybb->user['username'], $mybb->user['uid']);
- my_mail($mybb->input['email'], $lang->emailsubject_changeemail, $lang->email_changeemail);
- $plugins->run_hooks("usercp_do_email_verify");
- error($lang->redirect_changeemail_activation);
- }
- else
- {
- $userhandler->update_user();
- $plugins->run_hooks("usercp_do_email_changed");
- redirect("usercp.php", $lang->redirect_emailupdated);
- }
- }
- }
- if(count($errors) > 0)
- {
- $mybb->input['action'] = "email";
- $errors = inline_error($errors);
- }
- }
- if($mybb->input['action'] == "email")
- {
- // Coming back to this page after one or more errors were experienced, show fields the user previously entered (with the exception of the password)
- if($errors)
- {
- $email = htmlspecialchars_uni($mybb->input['email']);
- $email2 = htmlspecialchars_uni($mybb->input['email2']);
- }
- else
- {
- $email = $email2 = '';
- }
- $plugins->run_hooks("usercp_email");
- eval("\$changemail = \"".$templates->get("usercp_email")."\";");
- output_page($changemail);
- }
- if($mybb->input['action'] == "do_password" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $errors = array();
- $plugins->run_hooks("usercp_do_password_start");
- if(validate_password_from_uid($mybb->user['uid'], $mybb->input['oldpassword']) == false)
- {
- $errors[] = $lang->error_invalidpassword;
- }
- else
- {
- // Set up user handler.
- require_once "inc/datahandlers/user.php";
- $userhandler = new UserDataHandler("update");
- $user = array(
- "uid" => $mybb->user['uid'],
- "password" => $mybb->input['password'],
- "password2" => $mybb->input['password2']
- );
- $userhandler->set_data($user);
- if(!$userhandler->validate_user())
- {
- $errors = $userhandler->get_friendly_errors();
- }
- else
- {
- $userhandler->update_user();
- my_setcookie("mybbuser", $mybb->user['uid']."_".$userhandler->data['loginkey']);
- $plugins->run_hooks("usercp_do_password_end");
- redirect("usercp.php", $lang->redirect_passwordupdated);
- }
- }
- if(count($errors) > 0)
- {
- $mybb->input['action'] = "password";
- $errors = inline_error($errors);
- }
- }
- if($mybb->input['action'] == "password")
- {
- $plugins->run_hooks("usercp_password");
- eval("\$editpassword = \"".$templates->get("usercp_password")."\";");
- output_page($editpassword);
- }
- if($mybb->input['action'] == "do_changename" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_changename_start");
- if($mybb->usergroup['canchangename'] != 1)
- {
- error_no_permission();
- }
- if(validate_password_from_uid($mybb->user['uid'], $mybb->input['password']) == false)
- {
- $errors[] = $lang->error_invalidpassword;
- }
- else
- {
- // Set up user handler.
- require_once "inc/datahandlers/user.php";
- $userhandler = new UserDataHandler("update");
- $user = array(
- "uid" => $mybb->user['uid'],
- "username" => $mybb->input['username']
- );
- $userhandler->set_data($user);
- if(!$userhandler->validate_user())
- {
- $errors = $userhandler->get_friendly_errors();
- }
- else
- {
- $userhandler->update_user();
- $plugins->run_hooks("usercp_do_changename_end");
- redirect("usercp.php", $lang->redirect_namechanged);
- }
- }
- if(count($errors) > 0)
- {
- $errors = inline_error($errors);
- $mybb->input['action'] = "changename";
- }
- }
- if($mybb->input['action'] == "changename")
- {
- $plugins->run_hooks("usercp_changename_start");
- if($mybb->usergroup['canchangename'] != 1)
- {
- error_no_permission();
- }
- $plugins->run_hooks("usercp_changename_end");
- eval("\$changename = \"".$templates->get("usercp_changename")."\";");
- output_page($changename);
- }
- if($mybb->input['action'] == "do_subscriptions")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_subscriptions_start");
- if(!is_array($mybb->input['check']))
- {
- error($lang->no_subscriptions_selected);
- }
- // Clean input - only accept integers thanks!
- $mybb->input['check'] = array_map('intval', $mybb->input['check']);
- $tids = implode(",", $mybb->input['check']);
- // Deleting these subscriptions?
- if($mybb->input['do'] == "delete")
- {
- $db->delete_query("threadsubscriptions", "tid IN ($tids) AND uid='{$mybb->user['uid']}'");
- }
- // Changing subscription type
- else
- {
- if($mybb->input['do'] == "no_notification")
- {
- $new_notification = 0;
- }
- else if($mybb->input['do'] == "instant_notification")
- {
- $new_notification = 1;
- }
- // Update
- $update_array = array("notification" => $new_notification);
- $db->update_query("threadsubscriptions", $update_array, "tid IN ($tids) AND uid='{$mybb->user['uid']}'");
- }
- // Done, redirect
- redirect("usercp.php?action=subscriptions", $lang->redirect_subscriptions_updated);
- }
- if($mybb->input['action'] == "subscriptions")
- {
- $plugins->run_hooks("usercp_subscriptions_start");
- // Thread visiblity
- $visible = "AND t.visible != 0";
- if(is_moderator() == true)
- {
- $visible = '';
- }
- // Do Multi Pages
- $query = $db->query("
- SELECT COUNT(ts.tid) as threads
- FROM ".TABLE_PREFIX."threadsubscriptions ts
- LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid = ts.tid)
- WHERE ts.uid = '".$mybb->user['uid']."' {$visible}
- ");
- $threadcount = $db->fetch_field($query, "threads");
- if(!$mybb->settings['threadsperpage'] || (int)$mybb->settings['threadsperpage'] < 1)
- {
- $mybb->settings['threadsperpage'] = 20;
- }
- $perpage = $mybb->settings['threadsperpage'];
- $page = intval($mybb->input['page']);
- if($page > 0)
- {
- $start = ($page-1) * $perpage;
- $pages = $threadcount / $perpage;
- $pages = ceil($pages);
- if($page > $pages || $page <= 0)
- {
- $start = 0;
- $page = 1;
- }
- }
- else
- {
- $start = 0;
- $page = 1;
- }
- $end = $start + $perpage;
- $lower = $start+1;
- $upper = $end;
- if($upper > $threadcount)
- {
- $upper = $threadcount;
- }
- $multipage = multipage($threadcount, $perpage, $page, "usercp.php?action=subscriptions");
- $fpermissions = forum_permissions();
- // Fetch subscriptions
- $query = $db->query("
- SELECT s.*, t.*, t.username AS threadusername, u.username, p.displaystyle AS threadprefix
- FROM ".TABLE_PREFIX."threadsubscriptions s
- LEFT JOIN ".TABLE_PREFIX."threads t ON (s.tid=t.tid)
- LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
- LEFT JOIN ".TABLE_PREFIX."threadprefixes p ON (p.pid=t.prefix)
- WHERE s.uid='".$mybb->user['uid']."' {$visible}
- ORDER BY t.lastpost DESC
- LIMIT $start, $perpage
- ");
- while($subscription = $db->fetch_array($query))
- {
- $forumpermissions = $fpermissions[$subscription['fid']];
- if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0 || ($forumpermissions['canonlyviewownthreads'] != 0 && $subscription['uid'] != $mybb->user['uid']))
- {
- // Hmm, you don't have permission to view this thread - unsubscribe!
- $del_subscriptions[] = $subscription['sid'];
- }
- else if($subscription['tid'])
- {
- $subscriptions[$subscription['tid']] = $subscription;
- }
- }
- if(is_array($del_subscriptions))
- {
- $sids = implode(',', $del_subscriptions);
- if($sids)
- {
- $db->delete_query("threadsubscriptions", "sid IN ({$sids}) AND uid='{$mybb->user['uid']}'");
- }
- $threadcount = $threadcount - count($del_subscriptions);
- if($threadcount < 0)
- {
- $threadcount = 0;
- }
- }
- if(is_array($subscriptions))
- {
- $tids = implode(",", array_keys($subscriptions));
- if($mybb->user['uid'] == 0)
- {
- // Build a forum cache.
- $query = $db->query("
- SELECT fid
- FROM ".TABLE_PREFIX."forums
- WHERE active != 0
- ORDER BY pid, disporder
- ");
- $forumsread = my_unserialize($mybb->cookies['mybb']['forumread']);
- }
- else
- {
- // Build a forum cache.
- $query = $db->query("
- SELECT f.fid, fr.dateline AS lastread
- FROM ".TABLE_PREFIX."forums f
- LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}')
- WHERE f.active != 0
- ORDER BY pid, disporder
- ");
- }
- while($forum = $db->fetch_array($query))
- {
- if($mybb->user['uid'] == 0)
- {
- if($forumsread[$forum['fid']])
- {
- $forum['lastread'] = $forumsread[$forum['fid']];
- }
- }
- $readforums[$forum['fid']] = $forum['lastread'];
- }
- // Check participation by the current user in any of these threads - for 'dot' folder icons
- if($mybb->settings['dotfolders'] != 0)
- {
- $query = $db->simple_select("posts", "tid,uid", "uid='{$mybb->user['uid']}' AND tid IN ({$tids})");
- while($post = $db->fetch_array($query))
- {
- $subscriptions[$post['tid']]['doticon'] = 1;
- }
- }
- // Read threads
- if($mybb->settings['threadreadcut'] > 0)
- {
- $query = $db->simple_select("threadsread", "*", "uid='{$mybb->user['uid']}' AND tid IN ({$tids})");
- while($readthread = $db->fetch_array($query))
- {
- $subscriptions[$readthread['tid']]['lastread'] = $readthread['dateline'];
- }
- }
- $icon_cache = $cache->read("posticons");
- // Now we can build our subscription list
- foreach($subscriptions as $thread)
- {
- $bgcolor = alt_trow();
- $folder = '';
- $prefix = '';
- // If this thread has a prefix, insert a space between prefix and subject
- if($thread['prefix'] != 0)
- {
- $thread['threadprefix'] .= ' ';
- }
- // Sanitize
- $thread['subject'] = $parser->parse_badwords($thread['subject']);
- $thread['subject'] = htmlspecialchars_uni($thread['subject']);
- // Build our links
- $thread['threadlink'] = get_thread_link($thread['tid']);
- $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost");
- // Fetch the thread icon if we have one
- if($thread['icon'] > 0 && $icon_cache[$thread['icon']])
- {
- $icon = $icon_cache[$thread['icon']];
- $icon['path'] = htmlspecialchars_uni($icon['path']);
- $icon['name'] = htmlspecialchars_uni($icon['name']);
- $icon = "<img src=\"{$icon['path']}\" alt=\"{$icon['name']}\" />";
- }
- else
- {
- $icon = " ";
- }
- // Determine the folder
- $folder = '';
- $folder_label = '';
- if($thread['doticon'])
- {
- $folder = "dot_";
- $folder_label .= $lang->icon_dot;
- }
- $gotounread = '';
- $isnew = 0;
- $donenew = 0;
- $lastread = 0;
- if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'])
- {
- $forum_read = $readforums[$thread['fid']];
- $read_cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;
- if($forum_read == 0 || $forum_read < $read_cutoff)
- {
- $forum_read = $read_cutoff;
- }
- }
- else
- {
- $forum_read = $forumsread[$thread['fid']];
- }
- if($mybb->settings['threadreadcut'] > 0 && $thread['lastpost'] > $forum_read)
- {
- $cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;
- }
- if($thread['lastpost'] > $cutoff)
- {
- if($thread['lastread'])
- {
- $lastread = $thread['lastread'];
- }
- else
- {
- $lastread = 1;
- }
- }
- if(!$lastread)
- {
- $readcookie = $threadread = my_get_array_cookie("threadread", $thread['tid']);
- if($readcookie > $forum_read)
- {
- $lastread = $readcookie;
- }
- else
- {
- $lastread = $forum_read;
- }
- }
- if($lastread && $lastread < $thread['lastpost'])
- {
- $folder .= "new";
- $folder_label .= $lang->icon_new;
- $new_class = "subject_new";
- $thread['newpostlink'] = get_thread_link($thread['tid'], 0, "newpost");
- eval("\$gotounread = \"".$templates->get("forumdisplay_thread_gotounread")."\";");
- $unreadpost = 1;
- }
- else
- {
- $folder_label .= $lang->icon_no_new;
- $new_class = "subject_old";
- }
- if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews'])
- {
- $folder .= "hot";
- $folder_label .= $lang->icon_hot;
- }
- if($thread['closed'] == 1)
- {
- $folder .= "lock";
- $folder_label .= $lang->icon_lock;
- }
- $folder .= "folder";
- if($thread['visible'] == 0)
- {
- $bgcolor = "trow_shaded";
- }
- // Build last post info
- $lastpostdate = my_date($mybb->settings['dateformat'], $thread['lastpost']);
- $lastposttime = my_date($mybb->settings['timeformat'], $thread['lastpost']);
- $lastposter = $thread['lastposter'];
- $lastposteruid = $thread['lastposteruid'];
- // Don't link to guest's profiles (they have no profile).
- if($lastposteruid == 0)
- {
- $lastposterlink = $lastposter;
- }
- else
- {
- $lastposterlink = build_profile_link($lastposter, $lastposteruid);
- }
- $thread['replies'] = my_number_format($thread['replies']);
- $thread['views'] = my_number_format($thread['views']);
- // What kind of notification type do we have here?
- switch($thread['notification'])
- {
- case "1": // Instant
- $notification_type = $lang->instant_notification;
- break;
- default: // No notification
- $notification_type = $lang->no_notification;
- }
- eval("\$threads .= \"".$templates->get("usercp_subscriptions_thread")."\";");
- }
- // Provide remove options
- eval("\$remove_options = \"".$templates->get("usercp_subscriptions_remove")."\";");
- }
- else
- {
- eval("\$threads = \"".$templates->get("usercp_subscriptions_none")."\";");
- }
- $plugins->run_hooks("usercp_subscriptions_end");
- eval("\$subscriptions = \"".$templates->get("usercp_subscriptions")."\";");
- output_page($subscriptions);
- }
- if($mybb->input['action'] == "forumsubscriptions")
- {
- $plugins->run_hooks("usercp_forumsubscriptions_start");
- if($mybb->user['uid'] == 0)
- {
- // Build a forum cache.
- $query = $db->query("
- SELECT fid
- FROM ".TABLE_PREFIX."forums
- WHERE active != 0
- ORDER BY pid, disporder
- ");
- $forumsread = my_unserialize($mybb->cookies['mybb']['forumread']);
- }
- else
- {
- // Build a forum cache.
- $query = $db->query("
- SELECT f.fid, fr.dateline AS lastread
- FROM ".TABLE_PREFIX."forums f
- LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}')
- WHERE f.active != 0
- ORDER BY pid, disporder
- ");
- }
- while($forum = $db->fetch_array($query))
- {
- if($mybb->user['uid'] == 0)
- {
- if($forumsread[$forum['fid']])
- {
- $forum['lastread'] = $forumsread[$forum['fid']];
- }
- }
- $readforums[$forum['fid']] = $forum['lastread'];
- }
- $fpermissions = forum_permissions();
- require_once MYBB_ROOT."inc/functions_forumlist.php";
- $query = $db->query("
- SELECT fs.*, f.*, t.subject AS lastpostsubject, fr.dateline AS lastread
- FROM ".TABLE_PREFIX."forumsubscriptions fs
- LEFT JOIN ".TABLE_PREFIX."forums f ON (f.fid = fs.fid)
- LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid = f.lastposttid)
- LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}')
- WHERE f.type='f' AND fs.uid='".$mybb->user['uid']."'
- ORDER BY f.name ASC
- ");
- $forums = '';
- while($forum = $db->fetch_array($query))
- {
- $forum_url = get_forum_link($forum['fid']);
- $forumpermissions = $fpermissions[$forum['fid']];
- if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0)
- {
- continue;
- }
- $lightbulb = get_forum_lightbulb(array('open' => $forum['open'], 'lastread' => $forum['lastread']), array('lastpost' => $forum['lastpost']));
- $folder = $lightbulb['folder'];
- if($forumpermissions['canonlyviewownthreads'] != 0)
- {
- $posts = '-';
- $threads = '-';
- }
- else
- {
- $posts = my_number_format($forum['posts']);
- $threads = my_number_format($forum['threads']);
- }
- if($forum['lastpost'] == 0 || $forum['lastposter'] == "")
- {
- $lastpost = "<div align=\"center\">{$lang->never}</div>";
- }
- // Hide last post
- elseif($forumpermissions['canonlyviewownthreads'] != 0 && $forum['lastposteruid'] != $mybb->user['uid'])
- {
- $lastpost = "<div align=\"center\">{$lang->na}</div>";
- }
- else
- {
- $forum['lastpostsubject'] = $parser->parse_badwords($forum['lastpostsubject']);
- $lastpost_date = my_date($mybb->settings['dateformat'], $forum['lastpost']);
- $lastpost_time = my_date($mybb->settings['timeformat'], $forum['lastpost']);
- $lastposttid = $forum['lastposttid'];
- $lastposter = $forum['lastposter'];
- $lastpost_profilelink = build_profile_link($lastposter, $forum['lastposteruid']);
- $lastpost_subject = htmlspecialchars_uni($forum['lastpostsubject']);
- if(my_strlen($lastpost_subject) > 25)
- {
- $lastpost_subject = my_substr($lastpost_subject, 0, 25) . "...";
- }
- $lastpost_link = get_thread_link($forum['lastposttid'], 0, "lastpost");
- eval("\$lastpost = \"".$templates->get("forumbit_depth2_forum_lastpost")."\";");
- }
- if($mybb->settings['showdescriptions'] == 0)
- {
- $forum['description'] = "";
- }
- eval("\$forums .= \"".$templates->get("usercp_forumsubscriptions_forum")."\";");
- }
- if(!$forums)
- {
- eval("\$forums = \"".$templates->get("usercp_forumsubscriptions_none")."\";");
- }
- $plugins->run_hooks("usercp_forumsubscriptions_end");
- eval("\$forumsubscriptions = \"".$templates->get("usercp_forumsubscriptions")."\";");
- output_page($forumsubscriptions);
- }
- if($mybb->input['action'] == "do_editsig" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_editsig_start");
- // User currently has a suspended signature
- if($mybb->user['suspendsignature'] == 1 && $mybb->user['suspendsigtime'] > TIME_NOW)
- {
- error_no_permission();
- }
- if($mybb->input['updateposts'] == "enable")
- {
- $update_signature = array(
- "includesig" => 1
- );
- $db->update_query("posts", $update_signature, "uid='".$mybb->user['uid']."'");
- }
- elseif($mybb->input['updateposts'] == "disable")
- {
- $update_signature = array(
- "includesig" => 0
- );
- $db->update_query("posts", $update_signature, "uid='".$mybb->user['uid']."'");
- }
- $new_signature = array(
- "signature" => $db->escape_string($mybb->input['signature'])
- );
- $plugins->run_hooks("usercp_do_editsig_process");
- $db->update_query("users", $new_signature, "uid='".$mybb->user['uid']."'");
- $plugins->run_hooks("usercp_do_editsig_end");
- redirect("usercp.php?action=editsig", $lang->redirect_sigupdated);
- }
- if($mybb->input['action'] == "editsig")
- {
- $plugins->run_hooks("usercp_editsig_start");
- if($mybb->input['preview'] && !$error)
- {
- $sig = $mybb->input['signature'];
- $template = "usercp_editsig_preview";
- }
- elseif(!$error)
- {
- $sig = $mybb->user['signature'];
- $template = "usercp_editsig_current";
- }
- else if($error)
- {
- $sig = $mybb->input['signature'];
- $template = false;
- }
- if($mybb->user['suspendsignature'] && ($mybb->user['suspendsigtime'] == 0 || $mybb->user['suspendsigtime'] > 0 && $mybb->user['suspendsigtime'] > TIME_NOW))
- {
- // User currently has no signature and they're suspended
- error($lang->sig_suspended);
- }
- if($mybb->usergroup['canusesig'] != 1)
- {
- // Usergroup has no permission to use this facility
- error_no_permission();
- }
- else if($mybb->usergroup['canusesig'] == 1 && $mybb->usergroup['canusesigxposts'] > 0 && $mybb->user['postnum'] < $mybb->usergroup['canusesigxposts'])
- {
- // Usergroup can use this facility, but only after x posts
- error($lang->sprintf($lang->sig_suspended_posts, $mybb->usergroup['canusesigxposts']));
- }
- if($sig && $template)
- {
- $sig_parser = array(
- "allow_html" => $mybb->settings['sightml'],
- "allow_mycode" => $mybb->settings['sigmycode'],
- "allow_smilies" => $mybb->settings['sigsmilies'],
- "allow_imgcode" => $mybb->settings['sigimgcode'],
- "me_username" => $mybb->user['username'],
- "filter_badwords" => 1
- );
- $sigpreview = $parser->parse_message($sig, $sig_parser);
- eval("\$signature = \"".$templates->get($template)."\";");
- }
- // User has a current signature, so let's display it (but show an error message)
- if($mybb->user['suspendsignature'] && $mybb->user['suspendsigtime'] > TIME_NOW)
- {
- $plugins->run_hooks("usercp_editsig_end");
- // User either doesn't have permission, or has their signature suspended
- eval("\$editsig = \"".$templates->get("usercp_editsig_suspended")."\";");
- }
- else
- {
- // User is allowed to edit their signature
- if($mybb->settings['sigsmilies'] == 1)
- {
- $sigsmilies = $lang->on;
- $smilieinserter = build_clickable_smilies();
- }
- else
- {
- $sigsmilies = $lang->off;
- }
- if($mybb->settings['sigmycode'] == 1)
- {
- $sigmycode = $lang->on;
- }
- else
- {
- $sigmycode = $lang->off;
- }
- if($mybb->settings['sightml'] == 1)
- {
- $sightml = $lang->on;
- }
- else
- {
- $sightml = $lang->off;
- }
- if($mybb->settings['sigimgcode'] == 1)
- {
- $sigimgcode = $lang->on;
- }
- else
- {
- $sigimgcode = $lang->off;
- }
- $sig = htmlspecialchars_uni($sig);
- $lang->edit_sig_note2 = $lang->sprintf($lang->edit_sig_note2, $sigsmilies, $sigmycode, $sigimgcode, $sightml, $mybb->settings['siglength']);
- if($mybb->settings['bbcodeinserter'] != 0 || $mybb->user['showcodebuttons'] != 0)
- {
- $codebuttons = build_mycode_inserter("signature");
- }
- $plugins->run_hooks("usercp_editsig_end");
- eval("\$editsig = \"".$templates->get("usercp_editsig")."\";");
- }
- output_page($editsig);
- }
- if($mybb->input['action'] == "do_avatar" && $mybb->request_method == "post")
- {
- // Verify incoming POST request
- verify_post_check($mybb->input['my_post_key']);
- $plugins->run_hooks("usercp_do_avatar_start");
- require_once MYBB_ROOT."inc/functions_upload.php";
- $avatar_error = "";
- if($mybb->input['remove']) // remove avatar
- {
- $updated_avatar = array(
- "avatar" => "",
- "avatardimensions" => "",
- "avatartype" => ""
- );
- $db->update_query("users", $updated_avatar, "uid='".$mybb->user['uid']."'");
- remove_avatars($mybb->user['uid']);
- }
- elseif($mybb->input['gallery']) // Gallery avatar
- {
- if(empty($mybb->input['avatar']))
- {
- $avatar_error = $lang->error_noavatar;
- }
- $mybb->input['gallery'] = str_replace(array("./", ".."), "", $mybb->input['gallery']);
- $mybb->input['avatar'] = str_replace(array("./", ".."), "", $mybb->input['avatar']);
- if(empty($avatar_error))
- {
- if($mybb->input['gallery'] == "default")
- {
- $avatarpath = $db->escape_string($mybb->settings['avatardir']."/".$mybb->input['avatar']);
- }
- else
- {
- $avatarpath = $db->escape_string($mybb->settings['avatardir']."/".$mybb->input['gallery']."/".$mybb->input['avatar']);
- }
- if(file_exists($avatarpath))
- {
- $dimensions = @getimagesize($avatarpath);
- $updated_avatar = array(
- "avatar" => $avatarpath.'?dateline='.TIME_NOW,
- "avatardimensions" => "{$dimensions[0]}|{$dimensions[1]}",
- "avatartype" => "gallery"
- );
- $db->update_query("users", $updated_avatar, "uid='".$mybb->user['uid']."'");
- }
- remove_avatars($mybb->user['uid']);
- }
- }
- elseif($_FILES['avatarupload']['name']) // upload avatar
- {
- if($mybb->usergroup['canuploadavatars'] == 0)
- {
- error_no