mobilekid Posted January 31, 2009 Share Posted January 31, 2009 Hi, eveytime a member joins my forum in vbull they get a confirmation email. what I want is for when that user clicks my confirmation email they are also re-directed to another website. does anyone have a code I would need and where to place this inside the template of vbull, thanks somuch. Quote Link to comment Share on other sites More sharing options...
Vince889 Posted February 1, 2009 Share Posted February 1, 2009 Honestly, I have never worked with vBulletin's code. However, I imagine that your adjustment would have to be in the the "profile.php" file. The activation link for vBulletin looks something like: profile.php?mode=activate&u=**&act_key=**** Scroll through the script and find the '$_GET['mode']' part and add a: header('Location: siteurl.here'); line somewhere appropriate. However, I am likely incorrectly. I could only solve this if I had the code in front of me. Quote Link to comment Share on other sites More sharing options...
mobilekid Posted February 1, 2009 Author Share Posted February 1, 2009 I understand, here is the profile.php code sir. part1. <?php /*======================================================================*\ || #################################################################### || || # vBulletin 3.6.8 - Licence Number VBFDC2RAQ5 || # ---------------------------------------------------------------- # || || # Copyright ©2000-2007 Jelsoft Enterprises Ltd. All Rights Reserved. || || # This file may not be redistributed in whole or significant part. # || || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # || || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # || || #################################################################### || \*======================================================================*/ // ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE); // #################### DEFINE IMPORTANT CONSTANTS ####################### define('GET_EDIT_TEMPLATES', 'editsignature,updatesignature'); define('THIS_SCRIPT', 'profile'); // ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array('user', 'timezone', 'posting', 'cprofilefield', 'cppermission'); // get special data templates from the datastore $specialtemplates = array( 'smiliecache', 'bbcodecache', 'banemail', 'ranks', 'noavatarperms' ); // pre-cache templates used by all actions $globaltemplates = array( 'USERCP_SHELL', 'usercp_nav_folderbit' ); // pre-cache templates used by specific actions $actiontemplates = array( 'editprofile' => array( 'modifyprofile', 'modifyprofile_birthday', 'userfield_checkbox_option', 'userfield_optional_input', 'userfield_radio', 'userfield_radio_option', 'userfield_select', 'userfield_select_option', 'userfield_select_multiple', 'userfield_textarea', 'userfield_textbox', ), 'editoptions' => array( 'modifyoptions', 'modifyoptions_timezone', 'userfield_checkbox_option', 'userfield_optional_input', 'userfield_radio', 'userfield_radio_option', 'userfield_select', 'userfield_select_option', 'userfield_select_multiple', 'userfield_textarea', 'userfield_textbox', ), 'editavatar' => array( 'modifyavatar', 'help_avatars_row', 'modifyavatar_category', 'modifyavatarbit', 'modifyavatarbit_custom', 'modifyavatarbit_noavatar', ), 'editlist' => array( 'modifylist', 'modifylistbit' ), 'editusergroups' => array( 'modifyusergroups', 'modifyusergroups_joinrequestbit', 'modifyusergroups_memberbit', 'modifyusergroups_nonmemberbit', 'modifyusergroups_displaybit', 'modifyusergroups_groupleader', ), 'editsignature' => array( 'modifysignature', 'forumrules' ), 'updatesignature' => array( 'modifysignature', 'forumrules' ), 'editpassword' => array( 'modifypassword' ), 'editprofilepic' => array( 'modifyprofilepic' ), 'joingroup' => array( 'modifyusergroups_requesttojoin', 'modifyusergroups_groupleader' ), 'editattachments' => array( 'GENERIC_SHELL', 'modifyattachmentsbit', 'modifyattachments' ), 'addlist' => array( 'modifylist', 'modifylistbit' ), 'removelist' => array( 'modifylist', 'modifylistbit' ), ); $actiontemplates['none'] =& $actiontemplates['editprofile']; // ######################### REQUIRE BACK-END ############################ require_once('./global.php'); require_once(DIR . '/includes/functions_user.php'); // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### if (empty($_REQUEST['do'])) { $_REQUEST['do'] = 'editprofile'; } if (!($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview'])) { print_no_permission(); } if (empty($vbulletin->userinfo['userid'])) { print_no_permission(); } // set shell template name $shelltemplatename = 'USERCP_SHELL'; $templatename = ''; // initialise onload event $onload = ''; // start the navbar $navbits = array('usercp.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['user_control_panel']); ($hook = vBulletinHook::fetch_hook('profile_start')) ? eval($hook) : false; // ############################### start dst autodetect switch ############################### if ($_POST['do'] == 'dst') { if ($vbulletin->userinfo['dstauto']) { $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); switch ($vbulletin->userinfo['dstonoff']) { case 1: { if ($vbulletin->userinfo['options'] & $vbulletin->bf_misc_useroptions['dstonoff']) { $userdata->set_bitfield('options', 'dstonoff', 0); } } break; case 0: { if (!($vbulletin->userinfo['options'] & $vbulletin->bf_misc_useroptions['dstonoff'])) { $userdata->set_bitfield('options', 'dstonoff', 1); } } break; } ($hook = vBulletinHook::fetch_hook('profile_dst')) ? eval($hook) : false; $userdata->save(); } eval(print_standard_redirect('redirect_dst')); } // ############################################################################ // ############################### EDIT PASSWORD ############################## // ############################################################################ if ($_REQUEST['do'] == 'editpassword') { ($hook = vBulletinHook::fetch_hook('profile_editpassword_start')) ? eval($hook) : false; // draw cp nav bar construct_usercp_nav('password'); // check for password history retention $passwordhistory = $permissions['passwordhistory']; // don't let banned people edit their email (see bug 2142) if (!($permissions['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'])) { $show['edit_email_field'] = false; $navbits[''] = $vbphrase['edit_password']; } else { $show['edit_email_field'] = true; $navbits[''] = $vbphrase['edit_email_and_password']; } // don't show optional because password expired $show['password_optional'] = !$show['passwordexpired']; $templatename = 'modifypassword'; } // ############################### start update password ############################### if ($_POST['do'] == 'updatepassword') { $vbulletin->input->clean_array_gpc('p', array( 'currentpassword' => TYPE_STR, 'currentpassword_md5' => TYPE_STR, 'newpassword' => TYPE_STR, 'newpasswordconfirm' => TYPE_STR, 'newpassword_md5' => TYPE_STR, 'newpasswordconfirm_md5' => TYPE_STR, 'email' => TYPE_STR, 'emailconfirm' => TYPE_STR )); // instanciate the data manager class $userdata =& datamanager_init('user', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); ($hook = vBulletinHook::fetch_hook('profile_updatepassword_start')) ? eval($hook) : false; // validate old password if ($userdata->hash_password($userdata->verify_md5($vbulletin->GPC['currentpassword_md5']) ? $vbulletin->GPC['currentpassword_md5'] : $vbulletin->GPC['currentpassword'], $vbulletin->userinfo['salt']) != $vbulletin->userinfo['password']) { eval(standard_error(fetch_error('badpassword', $vbulletin->options['bburl'], $vbulletin->session->vars['sessionurl']))); } // update password if (!empty($vbulletin->GPC['newpassword']) OR !empty($vbulletin->GPC['newpassword_md5'])) { // are we using javascript-hashed password strings? if ($userdata->verify_md5($vbulletin->GPC['newpassword_md5'])) { $vbulletin->GPC['newpassword'] =& $vbulletin->GPC['newpassword_md5']; $vbulletin->GPC['newpasswordconfirm'] =& $vbulletin->GPC['newpasswordconfirm_md5']; } // check that new passwords match if ($vbulletin->GPC['newpassword'] != $vbulletin->GPC['newpasswordconfirm']) { eval(standard_error(fetch_error('passwordmismatch'))); } // check to see if the new password is invalid due to previous use if ($userdata->check_password_history($userdata->hash_password($vbulletin->GPC['newpassword'], $vbulletin->userinfo['salt']), $permissions['passwordhistory'])) { eval(standard_error(fetch_error('passwordhistory', $permissions['passwordhistory']))); } // everything is good - send the singly-hashed MD5 to the password update routine $userdata->set('password', ($vbulletin->GPC['newpassword_md5'] ? $vbulletin->GPC['newpassword_md5'] : $vbulletin->GPC['newpassword'])); // Update cookie if we have one $vbulletin->input->clean_array_gpc('c', array( COOKIE_PREFIX . 'password' => TYPE_STR, COOKIE_PREFIX . 'userid' => TYPE_UINT) ); if (md5($vbulletin->userinfo['password'] . COOKIE_SALT) == $vbulletin->GPC[COOKIE_PREFIX . 'password'] AND $vbulletin->GPC[COOKIE_PREFIX . 'userid'] == $vbulletin->userinfo['userid'] ) { vbsetcookie('password', md5(md5($vbulletin->GPC['newpassword'] . $vbulletin->userinfo['salt']) . COOKIE_SALT), true, true, true); } } // update email only if user is not banned (see bug 2142) and email is changed if ($permissions['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] AND ($vbulletin->GPC['email'] != $vbulletin->userinfo['email'] OR $vbulletin->GPC['emailconfirm'] != $vbulletin->userinfo['email'])) { // check that new email addresses match if ($vbulletin->GPC['email'] != $vbulletin->GPC['emailconfirm']) { eval(standard_error(fetch_error('emailmismatch'))); } // set the email field to be updated $userdata->set('email', $vbulletin->GPC['email']); // generate an activation ID if required if ($vbulletin->options['verifyemail'] AND !can_moderate()) { $userdata->set('usergroupid', 3); $userdata->set_info('override_usergroupid', true); $activate = true; // wait lets check if we have an entry first! $activation_exists = $db->query_first(" SELECT * FROM " . TABLE_PREFIX . "useractivation WHERE userid = " . $vbulletin->userinfo['userid'] . " AND type = 0 "); if (!empty($activation_exists['usergroupid']) AND $vbulletin->userinfo['usergroupid'] == 3) { $usergroupid = $activation_exists['usergroupid']; } else { $usergroupid = $vbulletin->userinfo['usergroupid']; } $activateid = build_user_activation_id($vbulletin->userinfo['userid'], $usergroupid, 0, 1); $username = unhtmlspecialchars($vbulletin->userinfo['username']); $userid = $vbulletin->userinfo['userid']; eval(fetch_email_phrases('activateaccount_change')); vbmail($vbulletin->GPC['email'], $subject, $message, true); } else { $activate = false; } } else { $userdata->verify_useremail($vbulletin->userinfo['email']); } ($hook = vBulletinHook::fetch_hook('profile_updatepassword_complete')) ? eval($hook) : false; // save the data $userdata->save(); if ($activate) { $vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q']; eval(print_standard_redirect('redirect_updatethanks_newemail', true, true)); } else { $vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q']; eval(print_standard_redirect('redirect_updatethanks')); } } else if ($_GET['do'] == 'updatepassword') { // add consistency with previous behavior exec_header_redirect('profile.php?do=editpassword'); } // ############################################################################ // ######################### EDIT BUDDY/IGNORE LISTS ########################## // ############################################################################ // ############################### start remove from list ############################### if ($_REQUEST['do'] == 'removelist') { $vbulletin->input->clean_array_gpc('r', array( 'userid' => TYPE_UINT, 'userlist' => TYPE_NOHTML )); // verify the kind of list requested if ($vbulletin->GPC['userlist'] != 'buddy') { $userlist = 'ignorelist'; $show['buddylist'] = false; } else { $userlist = 'buddylist'; $show['buddylist'] = true; } $_REQUEST['do'] = 'editlist'; ($hook = vBulletinHook::fetch_hook('profile_removelist')) ? eval($hook) : false; } // ############################### start add to list ############################### else if ($_REQUEST['do'] == 'addlist') { $vbulletin->input->clean_array_gpc('r', array( 'userid' => TYPE_UINT, 'userlist' => TYPE_NOHTML )); // get info about requested user $userinfo = verify_id('user', $vbulletin->GPC['userid'], 1, 1); $userid = $userinfo['userid']; $uglist = $userinfo['usergroupid'] . iif(trim($userinfo['membergroupids']), ",$userinfo[membergroupids]"); // verify the kind of list requested if ($vbulletin->GPC['userlist'] != 'buddy') { $userlist = 'ignorelist'; $show['buddylist'] = false; // can't add self to ignore list if ($vbulletin->userinfo['userid'] == $vbulletin->GPC['userid']) { eval(standard_error(fetch_error("cantlistself_$userlist"))); } // check we're not trying to ignore a staff member if (!$vbulletin->options['ignoremods'] AND can_moderate(0, '', $userid, $uglist) AND !($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])) { eval(standard_error(fetch_error('listignoreuser', $userinfo['username']))); } } else { $userlist = 'buddylist'; $show['buddylist'] = true; } $_REQUEST['do'] = 'editlist'; ($hook = vBulletinHook::fetch_hook('profile_addlist')) ? eval($hook) : false; } else { // used in do=editlist $userinfo = array(); $userlist = null; } // ############################### start update list ############################### if ($_POST['do'] == 'updatelist') { $vbulletin->input->clean_array_gpc('p', array( 'userlist' => TYPE_NOHTML, 'listbits' => TYPE_ARRAY_NOHTML, 'ajax' => TYPE_BOOL, )); if ($vbulletin->GPC['userlist'] != 'buddy') { $vbulletin->GPC['userlist'] = 'ignore'; } $var = $vbulletin->GPC['userlist'] . 'list'; ($hook = vBulletinHook::fetch_hook('profile_updatelist_start')) ? eval($hook) : false; // cache exiting list user ids unset($useridcache); $ids = str_replace(' ', ',', trim($vbulletin->userinfo["$var"])); if ($ids != '') { $users = $db->query_read_slave(" SELECT username, usergroupid, user.userid, moderator.userid as moduserid FROM " . TABLE_PREFIX . "user AS user LEFT JOIN " . TABLE_PREFIX . "moderator AS moderator ON(user.userid = moderator.userid) WHERE user.userid IN($ids) "); while ($user = $db->fetch_array($users)) { $user['username'] = $db->escape_string(vbstrtolower($user['username'])); $useridcache["{$user['username']}"] = $user; } } if (sizeof($vbulletin->GPC['listbits']) > 1000) { eval(standard_error(fetch_error('listlimit'))); } $listids = ''; foreach ($vbulletin->GPC['listbits'] AS $key => $val) { if ($vbulletin->GPC['ajax']) { $val = convert_urlencoded_unicode($val); } $val = $db->escape_string(vbstrtolower($val)); if (!empty($val)) { ($hook = vBulletinHook::fetch_hook('profile_updatelist_user')) ? eval($hook) : false; if (!is_array($useridcache["$val"])) { if ($userid = $db->query_first(" SELECT userid, username, usergroupid, membergroupids FROM " . TABLE_PREFIX . "user AS user WHERE username = '$val' ")) { $useridcache["$val"] = $userid; } } else { $userid = $useridcache["$val"]; } if ($userid['userid']) { $uglist = $userid['usergroupid'] . iif(trim($userid['membergroupids']), ",$userid[membergroupids]"); if ($var == 'ignorelist' AND !$vbulletin->options['ignoremods'] AND can_moderate(0, '', $userid['userid'], $uglist) AND !($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])) { eval(standard_error(fetch_error('listignoreuser', $userid['username']))); } else if ($vbulletin->GPC['userlist'] == 'ignore' AND $vbulletin->userinfo['userid'] == $userid['userid']) // this code only prevents users from adding themselves to their ignore list // else if ($vbulletin->userinfo['userid'] == $userid['userid']) // this code prevents users from adding themselves to their ignore AND buddy lists { eval(standard_error(fetch_error('cantlistself_' . $vbulletin->GPC['userlist']))); } else { if (empty($done["{$userid['userid']}"])) { $listids .= " $userid[userid]"; $done["{$userid['userid']}"] = 1; } } } else { eval(standard_error(fetch_error('listbaduser', $val, $vbulletin->session->vars['sessionurl_q']))); } } } $listids = trim($listids); require_once(DIR . '/includes/functions_databuild.php'); build_usertextfields($var, $listids); $vbulletin->userinfo["$var"] = $listids; if (is_array($printdebug)) { foreach ($printdebug AS $line => $text) { $out .= $text; } } ($hook = vBulletinHook::fetch_hook('profile_updatelist_complete')) ? eval($hook) : false; if ($vbulletin->GPC['ajax']) { $ajax = true; $_REQUEST['do'] = 'editlist'; } else { eval(print_standard_redirect('updatelist_' . $vbulletin->GPC['userlist'])); } } // ################# start edit buddy / ignore lists ############### if ($_REQUEST['do'] == 'editlist') { $list_types = array('buddylist', 'ignorelist'); // extract the user ids for each list type foreach ($list_types AS $list_type) { $user_ids["$list_type"] = array(); $show["$list_type"] = (empty($userlist) OR $userlist == $list_type); if ($show["$list_type"] AND $vbulletin->userinfo["$list_type"]) { $user_ids["$list_type"] = preg_split('#\s+#si', trim($vbulletin->userinfo["$list_type"]), -1, PREG_SPLIT_NO_EMPTY); } } // array to hold userid/username array for each list type $list_users = array('buddylist' => array(), 'ignorelist' => array()); $remove_ignore = array(); // query list users from the database if (!empty($user_ids['buddylist']) OR !empty($user_ids['ignorelist'])) { $users_result = $db->query_read_slave(" SELECT userid, username FROM " . TABLE_PREFIX . "user WHERE userid IN (" . implode(', ', array_merge($user_ids['buddylist'], $user_ids['ignorelist'])) . ") ORDER BY username "); while ($user = $db->fetch_array($users_result)) { if ($user['userid'] != 0) { $uglist = $user['usergroupid'] . iif(trim($user['membergroupids']), ",$user[membergroupids]"); if (in_array($user['userid'], $user_ids['ignorelist']) AND !$vbulletin->options['ignoremods'] AND can_moderate(0, '', $user['userid'], $uglist) AND !($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])) { $remove_ignore[] = $user['userid']; continue; } // add found user info to relevant $list_users storage foreach ($list_types AS $list_type) { if (in_array($user['userid'], $user_ids["$list_type"])) { $list_users["$list_type"]["$user[userid]"] = $user['username']; } } } } } if (!empty($remove_ignore)) { $listids = implode(' ', array_keys($list_users['ignorelist'])); require_once(DIR . '/includes/functions_databuild.php'); build_usertextfields('ignorelist', $listids); $vbulletin->userinfo['ignorelist'] = $listids; } // generate templates for buddy and ignore lists foreach ($list_types AS $list_type) { if ($show["$list_type"]) { ${$list_type . 'bits1'} = ''; ${$list_type . 'bits2'} = ''; if (!empty($list_users["$list_type"])) { $total_users = sizeof($list_users["$list_type"]); $user_count = 0; foreach ($list_users["$list_type"] AS $userid => $username) { if ($userid != $vbulletin->GPC['userid']) { $checked["$userid"] = 'checked="checked"'; } if ($user_count++ >= ($total_users / 2)) { eval('$' . $list_type . 'bits2 .= "' . fetch_template('modifylistbit') . '";'); } else { eval('$' . $list_type . 'bits1 .= "' . fetch_template('modifylistbit') . '";'); } } } } } ($hook = vBulletinHook::fetch_hook('profile_editlist')) ? eval($hook) : false; if ($ajax) { $userlist1 = ${$vbulletin->GPC['userlist'] . 'listbits1'}; $userlist2 = ${$vbulletin->GPC['userlist'] . 'listbits2'}; require_once(DIR . '/includes/class_xml.php'); $xml = new vB_AJAX_XML_Builder($vbulletin, 'text/xml'); $xml->add_group('userlist'); if ($userlist1) { $xml->add_tag('listbit1', $userlist1); if ($userlist2) { $xml->add_tag('listbit2', $userlist2); } } $xml->close_group(); $xml->print_xml(); } else { // draw cp nav bar construct_usercp_nav('buddylist'); $navbits[''] = $vbphrase['buddy_ignore_lists']; $templatename = 'modifylist'; } } // ############################################################################ // ALL FUNCTIONS BELOW HERE REQUIRE 'canmodifyprofile' PERMISSION, SO CHECK IT if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canmodifyprofile']) AND !$templatename) { print_no_permission(); } // ############################################################################ // ############################### EDIT PROFILE ############################### // ############################################################################ if ($_REQUEST['do'] == 'editprofile') { unset($tempcustom); // from functions_user.php? ($hook = vBulletinHook::fetch_hook('profile_editprofile_start')) ? eval($hook) : false; exec_switch_bg(); // Set birthday fields right here! if (empty($vbulletin->userinfo['birthday'])) { $dayselected['default'] = 'selected="selected"'; $monthselected['default'] = 'selected="selected"'; } else { $birthday = explode('-', $vbulletin->userinfo['birthday']); $dayselected["$birthday[1]"] = 'selected="selected"'; $monthselected["$birthday[0]"] = 'selected="selected"'; if (date('Y') >= $birthday[2] AND $birthday[2] != '0000') { $year = $birthday[2]; } } $sbselected = array($vbulletin->userinfo['showbirthday'] => 'selected="selected"'); // custom user title if ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) { exec_switch_bg(); if ($vbulletin->userinfo['customtitle'] == 2) { $vbulletin->userinfo['usertitle'] = htmlspecialchars_uni($vbulletin->userinfo['usertitle']); } $show['customtitleoption'] = true; } else { $show['customtitleoption'] = false; } require_once(DIR . '/includes/functions_misc.php'); // Set birthday required or optional $show['birthday_readonly'] = false; if ($vbulletin->options['reqbirthday']) { $show['birthday_required'] = true; if ($birthday[2] > 1901 AND $birthday[2] <= date('Y') AND @checkdate($birthday[0], $birthday[1], $birthday[2])) { $vbulletin->options['calformat1'] = mktimefix($vbulletin->options['calformat1'], $birthday[2]); if ($birthday[2] >= 1970) { $yearpass = $birthday[2]; } else { // day of the week patterns repeat every 28 years, so // find the first year >= 1970 that has this pattern $yearpass = $birthday[2] + 28 * ceil((1970 - $birthday[2]) / 28); } $birthdate = vbdate($vbulletin->options['calformat1'], mktime(0, 0, 0, $birthday[0], $birthday[1], $yearpass), false, true, false); $show['birthday_readonly'] = true; } } else { $show['birthday_optional'] = true; } // Get Custom profile fields $customfields = array(); fetch_profilefields(0); // draw cp nav bar construct_usercp_nav('profile'); eval('$birthdaybit = "' . fetch_template('modifyprofile_birthday') . '";'); $navbits[''] = $vbphrase['edit_profile']; $templatename = 'modifyprofile'; } // ############################### start update profile ############################### if ($_POST['do'] == 'updateprofile') { $vbulletin->input->clean_array_gpc('p', array( // coppa stuff 'coppauser' => TYPE_BOOL, 'parentemail' => TYPE_STR, // IM handles / homepage 'aim' => TYPE_STR, 'yahoo' => TYPE_STR, 'icq' => TYPE_STR, 'msn' => TYPE_STR, 'skype' => TYPE_STR, 'homepage' => TYPE_STR, // user title 'resettitle' => TYPE_STR, 'customtext' => TYPE_STR, // birthday fields 'day' => TYPE_INT, 'month' => TYPE_INT, 'year' => TYPE_INT, 'oldbirthday' => TYPE_STR, 'showbirthday' => TYPE_UINT, // redirect button 'gotopassword' => TYPE_NOCLEAN, // custom profile fields 'userfield' => TYPE_ARRAY, )); // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); // coppa stuff $userdata->set_info('coppauser', $vbulletin->GPC['coppauser']); $userdata->set('parentemail', $vbulletin->GPC['parentemail']); // easy stuff $userdata->set('icq', $vbulletin->GPC['icq']); $userdata->set('msn', $vbulletin->GPC['msn']); $userdata->set('aim', $vbulletin->GPC['aim']); $userdata->set('yahoo', $vbulletin->GPC['yahoo']); $userdata->set('skype', $vbulletin->GPC['skype']); $userdata->set('homepage', $vbulletin->GPC['homepage']); $userdata->set('birthday', $vbulletin->GPC); $userdata->set('showbirthday', $vbulletin->GPC['showbirthday']); // custom profile fields $userdata->set_userfields($vbulletin->GPC['userfield']); if ($vbulletin->userinfo['usertitle'] != $vbulletin->GPC['customtext'] AND !($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']) AND $vbulletin->options['ctMaxChars'] > 0 ) { // only trim title if changing custom title and not an admin $vbulletin->GPC['customtext'] = vbchop($vbulletin->GPC['customtext'], $vbulletin->options['ctMaxChars']); } // custom user title $userdata->set_usertitle( $vbulletin->GPC['customtext'], $vbulletin->GPC['resettitle'], $vbulletin->usergroupcache[$vbulletin->userinfo['displaygroupid']], ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) ? true : false, ($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']) ? true : false ); ($hook = vBulletinHook::fetch_hook('profile_updateprofile')) ? eval($hook) : false; // save the data $userdata->save(); if ($vbulletin->session->vars['profileupdate']) { $vbulletin->session->set('profileupdate', 0); } if (empty($vbulletin->GPC['gotopassword'])) { $vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q']; } else { $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editpassword'; } eval(print_standard_redirect('redirect_updatethanks')); } // ############################################################################ // ############################### EDIT OPTIONS ############################### // ############################################################################ if ($_REQUEST['do'] == 'editoptions') { require_once(DIR . '/includes/functions_misc.php'); ($hook = vBulletinHook::fetch_hook('profile_editoptions_start')) ? eval($hook) : false; // check the appropriate checkboxes $checked = array(); foreach ($vbulletin->userinfo AS $key => $val) { if ($val != 0) { $checked["$key"] = 'checked="checked"'; } else { $checked["$key"] = ''; } } // invisible option $show['invisibleoption'] = iif(bitwise($permissions['genericpermissions'], $vbulletin->bf_ugp_genericpermissions['caninvisible']), true, false); // Email members option $show['receiveemail'] = ($vbulletin->options['enableemail'] AND $vbulletin->options['displayemails']) ? true : false; // reputation options if ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canhiderep'] AND $vbulletin->options['reputationenable']) { if ($vbulletin->userinfo['showreputation']) { $checked['showreputation'] = 'checked="checked"'; } $show['reputationoption'] = true; } else { $show['reputationoption'] = false; } // PM options $show['pmoptions'] = iif($vbulletin->options['enablepms'] AND $permissions['pmquota'] > 0, true, false); // autosubscribe selected option $vbulletin->userinfo['autosubscribe'] = verify_subscription_choice($vbulletin->userinfo['autosubscribe'], $vbulletin->userinfo, 9999); $emailchecked = array($vbulletin->userinfo['autosubscribe'] => 'selected="selected"'); // threaded mode options if ($vbulletin->userinfo['threadedmode'] == 1 OR $vbulletin->userinfo['threadedmode'] == 2) { $threaddisplaymode["{$vbulletin->userinfo['threadedmode']}"] = 'selected="selected"'; } else { if ($vbulletin->userinfo['postorder'] == 0) { $threaddisplaymode[0] = 'selected="selected"'; } else { $threaddisplaymode[3] = 'selected="selected"'; } } // default days prune if ($vbulletin->userinfo['daysprune'] == 0) { $daysdefaultselected = 'selected="selected"'; } else { if ($vbulletin->userinfo['daysprune'] == '-1') { $vbulletin->userinfo['daysprune'] = 'all'; } $dname = 'days' . $vbulletin->userinfo['daysprune'] . 'selected'; $$dname = 'selected="selected"'; } // daylight savings time $selectdst = array(); if ($vbulletin->userinfo['dstauto']) { $selectdst[2] = 'selected="selected"'; } else if ($vbulletin->userinfo['dstonoff']) { $selectdst[1] = 'selected="selected"'; } else { $selectdst[0] = 'selected="selected"'; } require_once(DIR . '/includes/functions_misc.php'); $timezoneoptions = ''; foreach (fetch_timezone() AS $optionvalue => $timezonephrase) { $optiontitle = $vbphrase["$timezonephrase"]; $optionselected = iif($optionvalue == $vbulletin->userinfo['timezoneoffset'], 'selected="selected"', ''); eval('$timezoneoptions .= "' . fetch_template('option') . '";'); } eval('$timezoneoptions = "' . fetch_template('modifyoptions_timezone') . '";'); // start of the week if ($vbulletin->userinfo['startofweek'] > 0) { $dname = 'day' . $vbulletin->userinfo['startofweek'] . 'selected'; $$dname = 'selected="selected"'; } else { $day1selected = 'selected="selected"'; } // bb code editor options if (!is_array($vbulletin->options['editormodes_array'])) { $vbulletin->options['editormodes_array'] = unserialize($vbulletin->options['editormodes']); } $max_editormode = max($vbulletin->options['editormodes_array']); if ($vbulletin->userinfo['showvbcode'] > $max_editormode) { $vbulletin->userinfo['showvbcode'] = $max_editormode; } $show['editormode_picker'] = $max_editormode ? true : false; $show['editormode_wysiwyg'] = $max_editormode > 1 ? true : false; $checkvbcode = array($vbulletin->userinfo['showvbcode'] => ' checked="checked"'); $selectvbcode = array($vbulletin->userinfo['showvbcode'] => ' selected="selected"'); //MaxPosts by User $optionArray = explode(',', $vbulletin->options['usermaxposts']); $foundmatch = 0; foreach ($optionArray AS $optionvalue) { if ($optionvalue == $vbulletin->userinfo['maxposts']) { $optionselected = 'selected="selected"'; $foundmatch = 1; } else { $optionselected = ''; } $optiontitle = construct_phrase($vbphrase['show_x_posts_per_page'], $optionvalue); eval ('$maxpostsoptions .= "' . fetch_template('option') . '";'); } if ($foundmatch == 0) { $postsdefaultselected = 'selected="selected"'; } if ($vbulletin->options['allowchangestyles']) { $stylecount = 0; if ($vbulletin->stylecache !== null) { $stylesetlist = construct_style_options(); } $show['styleoption'] = iif($stylecount > 1, true, false); } else { $show['styleoption'] = false; } // get language options $languagelist = ''; $languages = fetch_language_titles_array('', 0); if (sizeof($languages) > 1) { foreach ($languages AS $optionvalue => $optiontitle) { $optionselected = iif($vbulletin->userinfo['languageid'] == $optionvalue, 'selected="selected"', ''); eval('$languagelist .= "' . fetch_template('option') . '";'); } $show['languageoption'] = true; } else { $show['languageoption'] = false; } $bgclass1 = 'alt1'; // Login Section $bgclass3 = 'alt1'; // Messaging Section $bgclass3 = 'alt1'; // Thread View Section $bgclass4 = 'alt1'; // Date/Time Section $bgclass5 = 'alt1'; // Other Section // Get custom otions $customfields = array(); fetch_profilefields(1); // draw cp nav bar construct_usercp_nav('options'); $navbits[''] = $vbphrase['edit_options']; $templatename = 'modifyoptions'; } // ############################### start update options ############################### if ($_POST['do'] == 'updateoptions') { require_once(DIR . '/includes/functions_misc.php'); $vbulletin->input->clean_array_gpc('p', array( 'newstyleset' => TYPE_INT, 'dst' => TYPE_INT, 'showvbcode' => TYPE_INT, 'pmpopup' => TYPE_INT, 'umaxposts' => TYPE_INT, 'prunedays' => TYPE_INT, 'timezoneoffset' => TYPE_NUM, 'startofweek' => TYPE_INT, 'languageid' => TYPE_INT, 'threadedmode' => TYPE_INT, 'invisible' => TYPE_INT, 'autosubscribe' => TYPE_INT, 'options' => TYPE_ARRAY_BOOL, 'set_options' => TYPE_ARRAY_BOOL, 'modifyavatar' => TYPE_NOCLEAN, 'userfield' => TYPE_ARRAY )); $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); // reputation if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canhiderep'])) { $vbulletin->GPC['options']['showreputation'] = 1; } // options bitfield foreach ($vbulletin->bf_misc_useroptions AS $key => $val) { if (isset($vbulletin->GPC['options']["$key"]) OR isset($vbulletin->GPC['set_options']["$key"])) { $value = $vbulletin->GPC['options']["$key"]; $userdata->set_bitfield('options', $key, $value); } } // style set if ($vbulletin->options['allowchangestyles'] AND $vbulletin->userinfo['realstyleid'] != $vbulletin->GPC['newstyleset']) { $userdata->set('styleid', $vbulletin->GPC['newstyleset']); } // language $userdata->set('languageid', $vbulletin->GPC['languageid']); // autosubscribe $userdata->set('autosubscribe', $vbulletin->GPC['autosubscribe']); // threaded mode $userdata->set('threadedmode', $vbulletin->GPC['threadedmode']); // time zone offset $userdata->set('timezoneoffset', $vbulletin->GPC['timezoneoffset']); $userdata->set('showvbcode', $vbulletin->GPC['showvbcode']); $userdata->set('pmpopup', $vbulletin->GPC['pmpopup']); $userdata->set('maxposts', $vbulletin->GPC['umaxposts']); $userdata->set('daysprune', $vbulletin->GPC['prunedays']); $userdata->set('startofweek', $vbulletin->GPC['startofweek']); // custom profile fields $userdata->set_userfields($vbulletin->GPC['userfield']); // daylight savings $userdata->set_dst($vbulletin->GPC['dst']); ($hook = vBulletinHook::fetch_hook('profile_updateoptions')) ? eval($hook) : false; $userdata->save(); if (!empty($vbulletin->GPC['modifyavatar'])) { $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editavatar'; } else { $vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q']; } eval(print_standard_redirect('redirect_updatethanks')); } // ############################################################################ // ############################## EDIT SIGNATURE ############################## // ############################################################################ // ########################### start update signature ######################### if ($_POST['do'] == 'updatesignature') { $vbulletin->input->clean_array_gpc('p', array( 'wysiwyg' => TYPE_BOOL, 'message' => TYPE_STR, 'preview' => TYPE_STR, 'deletesigpic' => TYPE_BOOL, 'sigpicurl' => TYPE_STR, )); if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusesignature'])) { eval(standard_error(fetch_error('nosignaturepermission'))); } if ($permissions['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['cansigpic']) { $vbulletin->input->clean_gpc('f', 'upload', TYPE_FILE); } require_once(DIR . '/includes/class_bbcode.php'); require_once(DIR . '/includes/class_sigparser.php'); require_once(DIR . '/includes/functions_misc.php'); $errors = array(); // DO WYSIWYG processing to get to BB code. if ($vbulletin->GPC['wysiwyg']) { require_once(DIR . '/includes/functions_wysiwyg.php'); $signature = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $permissions['signaturepermissions']['allowhtml']); } else { $signature = $vbulletin->GPC['message']; } ($hook = vBulletinHook::fetch_hook('profile_updatesignature_start')) ? eval($hook) : false; // handle image uploads if ($vbulletin->GPC['deletesigpic']) { if (preg_match('#\[sigpic\](.*)\[/sigpic\]#siU', $signature)) { $errors[] = fetch_error('sigpic_in_use'); } else { $userpic =& datamanager_init('Userpic_Sigpic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $userpic->condition = "userid = " . $vbulletin->userinfo['userid']; $userpic->delete(); } $redirectsig = true; } else if (($vbulletin->GPC['sigpicurl'] != '' AND $vbulletin->GPC['sigpicurl'] != 'http://www.') OR $vbulletin->GPC['upload']['size'] > 0) { require_once(DIR . '/includes/class_upload.php'); require_once(DIR . '/includes/class_image.php'); Quote Link to comment Share on other sites More sharing options...
mobilekid Posted February 1, 2009 Author Share Posted February 1, 2009 part 2. $upload = new vB_Upload_Userpic($vbulletin); $upload->data =& datamanager_init('Userpic_Sigpic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $upload->image =& vB_Image::fetch_library($vbulletin); $upload->maxwidth = $vbulletin->userinfo['permissions']['sigpicmaxwidth']; $upload->maxheight = $vbulletin->userinfo['permissions']['sigpicmaxheight']; $upload->maxuploadsize = $vbulletin->userinfo['permissions']['sigpicmaxsize']; $upload->allowanimation = ($vbulletin->userinfo['permissions']['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['cananimatesigpic']) ? true : false; if (!$upload->process_upload($vbulletin->GPC['sigpicurl'])) { eval(standard_error($upload->fetch_error())); } $redirectsig = true; $vbulletin->userinfo['sigpicrevision']++; } $userinfo_sigpic = fetch_userinfo($vbulletin->userinfo['userid'], 32); // Censored Words $censor_signature = fetch_censored_text($signature); if ($signature != $censor_signature) { $signature = $censor_signature; $errors[] = fetch_error('censoredword'); unset($censor_signature); } // Max number of images in the sig if imgs are allowed. if ($vbulletin->userinfo['permissions']['sigmaximages']) { // Parsing the signature into BB code. require_once(DIR . '/includes/class_bbcode_alt.php'); $bbcode_parser =& new vB_BbCodeParser_ImgCheck($vbulletin, fetch_tag_list()); $bbcode_parser->set_parse_userinfo($userinfo_sigpic, $vbulletin->userinfo['permissions']); $parsedsig = $bbcode_parser->parse($signature, 'signature'); $imagecount = fetch_character_count($parsedsig, '<img'); // Count the images if ($imagecount > $vbulletin->userinfo['permissions']['sigmaximages']) { $vbulletin->GPC['preview'] = true; $errors[] = fetch_error('toomanyimages', $imagecount, $vbulletin->userinfo['permissions']['sigmaximages']); } } // Count the raw characters in the signature if ($vbulletin->userinfo['permissions']['sigmaxrawchars'] AND vbstrlen($signature) > $vbulletin->userinfo['permissions']['sigmaxrawchars']) { $vbulletin->GPC['preview'] = true; $errors[] = fetch_error('sigtoolong_includingbbcode', $vbulletin->userinfo['permissions']['sigmaxrawchars']); } // Count the characters after stripping in the signature else if ($vbulletin->userinfo['permissions']['sigmaxchars'] AND (vbstrlen(strip_bbcode($signature, false, false, false)) > $vbulletin->userinfo['permissions']['sigmaxchars'])) { $vbulletin->GPC['preview'] = true; $errors[] = fetch_error('sigtoolong_excludingbbcode', $vbulletin->userinfo['permissions']['sigmaxchars']); } if ($vbulletin->userinfo['permissions']['sigmaxlines'] > 0) { require_once(DIR . '/includes/class_sigparser_char.php'); $char_counter =& new vB_SignatureParser_CharCount($vbulletin, fetch_tag_list(), $vbulletin->userinfo['permissions'], $vbulletin->userinfo['userid']); $line_count_text = $char_counter->parse(trim($signature)); if ($vbulletin->options['softlinebreakchars'] > 0) { // implicitly wrap after X characters without a break $line_count_text = preg_replace('#([^\r\n]{' . $vbulletin->options['softlinebreakchars'] . '})#', "\\1\n", $line_count_text); } // + 1, since 0 linebreaks still means 1 line $line_count = substr_count($line_count_text, "\n") + 1; if ($line_count > $vbulletin->userinfo['permissions']['sigmaxlines']) { $vbulletin->GPC['preview'] = true; $errors[] = fetch_error('sigtoomanylines', $vbulletin->userinfo['permissions']['sigmaxlines']); } } if ($vbulletin->userinfo['permissions']['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['canbbcode']) { // Get the files we need require_once(DIR . '/includes/functions_newpost.php'); // add # to color tags using hex if it's not there $signature = preg_replace('#\[color=("|"|\'|)([a-f0-9]{6})\\1]#i', '[color=\1#\2\1]', $signature); // Turn the text into bb code. $signature = convert_url_to_bbcode($signature); // Create the parser with the users sig permissions $sig_parser =& new vB_SignatureParser($vbulletin, fetch_tag_list(), $vbulletin->userinfo['permissions'], $vbulletin->userinfo['userid']); // Parse the signature $previewmessage = $sig_parser->parse($signature); if ($error_num = count($sig_parser->errors)) { foreach ($sig_parser->errors AS $tag => $error_phrase) { $errors[] = fetch_error($error_phrase, $tag); } } unset($sig_parser, $tag_list, $sig_tag_token_array, $results); } // If they are previewing the signature or there were usergroup rules broken and there are $errors[] if (!empty($errors) OR $vbulletin->GPC['preview'] != '') { if (!empty($errors)) { $errorlist = ''; foreach ($errors AS $key => $errormessage) { eval('$errorlist .= "' . fetch_template('newpost_errormessage') . '";'); } $show['errors'] = true; } $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list()); $bbcode_parser->set_parse_userinfo($userinfo_sigpic, $vbulletin->userinfo['permissions']); $previewmessage = $bbcode_parser->parse($signature, 'signature'); // save a conditional by just overwriting the phrase $vbphrase['submit_message'] =& $vbphrase['save_signature']; eval('$preview = "' . fetch_template('newpost_preview') . '";'); $_REQUEST['do'] = 'editsignature'; $preview_error_signature = $signature; } else { // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); $userdata->set('signature', $signature); ($hook = vBulletinHook::fetch_hook('profile_updatesignature_complete')) ? eval($hook) : false; $userdata->save(); if ($redirectsig) { $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editsignature&url=' . $vbulletin->url . '#sigpic'; } eval(print_standard_redirect('redirect_updatethanks')); } } // ############################### start update profile pic########################### if ($_POST['do'] == 'updatesigpic') { if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusesignature'])) { eval(standard_error(fetch_error('nosignaturepermission'))); } if (!($permissions['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['cansigpic'])) { print_no_permission(); } #if (!$vbulletin->options['profilepicenabled']) // add sigpicenabled? #{ # print_no_permission(); #} $vbulletin->input->clean_array_gpc('p', array( 'deletesigpic' => TYPE_BOOL, 'sigpicurl' => TYPE_STR, )); ($hook = vBulletinHook::fetch_hook('profile_updatesigpic_start')) ? eval($hook) : false; if ($vbulletin->GPC['deletesigpic']) { $userpic =& datamanager_init('Userpic_Sigpic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $userpic->condition = "userid = " . $vbulletin->userinfo['userid']; $userpic->delete(); } else { $vbulletin->input->clean_gpc('f', 'upload', TYPE_FILE); require_once(DIR . '/includes/class_upload.php'); require_once(DIR . '/includes/class_image.php'); $upload = new vB_Upload_Userpic($vbulletin); $upload->data =& datamanager_init('Userpic_Sigpic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $upload->image =& vB_Image::fetch_library($vbulletin); $upload->maxwidth = $vbulletin->userinfo['permissions']['sigpicmaxwidth']; $upload->maxheight = $vbulletin->userinfo['permissions']['sigpicmaxheight']; $upload->maxuploadsize = $vbulletin->userinfo['permissions']['sigpicmaxsize']; $upload->allowanimation = ($vbulletin->userinfo['permissions']['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['cananimatesigpic']) ? true : false; if (!$upload->process_upload($vbulletin->GPC['sigpicurl'])) { eval(standard_error($upload->fetch_error())); } } ($hook = vBulletinHook::fetch_hook('profile_updatesigpic_complete')) ? eval($hook) : false; $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editsignature#sigpic'; eval(print_standard_redirect('redirect_updatethanks')); } // ############################ start edit signature ########################## if ($_REQUEST['do'] == 'editsignature') { require_once(DIR . '/includes/functions_newpost.php'); if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusesignature'])) { eval(standard_error(fetch_error('nosignaturepermission'))); } ($hook = vBulletinHook::fetch_hook('profile_editsignature_start')) ? eval($hook) : false; // Build the permissions to display require_once(DIR . '/includes/class_bbcode.php'); require_once(DIR . '/includes/class_sigparser.php'); // Create the parser with the users sig permissions $sig_parser =& new vB_SignatureParser($vbulletin, fetch_tag_list(), $vbulletin->userinfo['permissions'], $vbulletin->userinfo['userid']); // Build $show variables for each signature bitfield permission foreach ($vbulletin->bf_ugp_signaturepermissions AS $bit_name => $bit_value) { $show["$bit_name"] = ($permissions['signaturepermissions'] & $bit_value ? true : false); } // Build variables for the remaining signature permissions $sigperms_display = array( 'sigmaxchars' => vb_number_format($permissions['maxchars']), 'sigmaxlines' => vb_number_format($permissions['maxlines']), 'sigpicmaxwidth' => vb_number_format($permissions['sigpicmaxwidth']), 'sigpicmaxheight' => vb_number_format($permissions['sigpicmaxheight']), 'sigpicmaxsize' => vb_number_format($permissions['sigpicmaxsize'], 1, true) ); if ($preview_error_signature) { $signature = $preview_error_signature; } else { $signature = $vbulletin->userinfo['signature']; } // Free the memory, unless we need it below. if (!$signature) { unset($sig_parser); } if ($signature) { if (!$previewmessage) { require_once(DIR . '/includes/class_bbcode.php'); $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list()); $bbcode_parser->set_parse_userinfo(fetch_userinfo($vbulletin->userinfo['userid'], 32), $vbulletin->userinfo['permissions']); $previewmessage = $bbcode_parser->parse($signature, 'signature'); } // save a conditional by just overwriting the phrase $vbphrase['submit_message'] =& $vbphrase['save_signature']; eval('$preview = "' . fetch_template('newpost_preview') . '";'); } require_once(DIR . '/includes/functions_editor.php'); // set message box width to usercp size $stylevar['messagewidth'] = $stylevar['messagewidth_usercp']; $editorid = construct_edit_toolbar( htmlspecialchars_uni($signature), 0, 'signature', $vbulletin->userinfo['permissions']['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['allowsmilies'] ); $show['canbbcode'] = ($vbulletin->userinfo['permissions']['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['canbbcode']) ? true : false; // ############### DISPLAY SIG IMAGE CONTROLS ############### require_once(DIR . '/includes/functions_file.php'); $inimaxattach = fetch_max_upload_size(); if ($permissions['signaturepermissions'] & $vbulletin->bf_ugp_signaturepermissions['cansigpic']) { $show['cansigpic'] = true; $show['sigpic_url'] = (ini_get('allow_url_fopen') != 0 OR function_exists('curl_init')); $maxnote = ''; if ($permissions['sigpicmaxsize'] AND ($permissions['sigpicmaxwidth'] OR $permissions['sigpicmaxheight'])) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_or_z'], $sigperms_display['sigpicmaxwidth'], $sigperms_display['sigpicmaxheight'], $sigperms_display['sigpicmaxsize']); } else if ($permissions['sigpicmaxsize']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x'], $sigperms_display['sigpicmaxsize']); } else if ($permissions['sigpicmaxwidth'] OR $permissions['sigpicmaxheight']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_pixels'], $sigperms_display['sigpicmaxwidth'], $sigperms_display['sigpicmaxheight']); } $show['maxnote'] = (!empty($maxnote)) ? true : false; // Get the current sig image info. if ($sig_image = $db->query_first("SELECT dateline, filename, filedata FROM " . TABLE_PREFIX . "sigpic WHERE userid = " . $vbulletin->userinfo['userid'])) { if ($sig_image['filedata'] != '') { // sigpic stored in the DB $sigpicurl = 'image.php?' . $vbulletin->session->vars['sessionurl'] . 'type=sigpic&userid=' . $vbulletin->userinfo['userid'] . "&dateline=$sig_image[dateline]"; } else { // sigpic stored in the FS $sigpicurl = $vbulletin->options['sigpicpath'] . '/sigpic' . $vbulletin->userinfo['userid'] . '_' . $vbulletin->userinfo['sigpicrevision'] . '.gif'; } } else // No sigpic yet { $sigpicurl = false; } } else { $show['cansigpic'] = false; } construct_usercp_nav('signature'); $navbits[''] = $vbphrase['edit_signature']; $templatename = 'modifysignature'; $url =& $vbulletin->url; } // ############################################################################ // ############################### EDIT AVATAR ################################ // ############################################################################ if ($_REQUEST['do'] == 'editavatar') { $vbulletin->input->clean_array_gpc('r', array( 'pagenumber' => TYPE_UINT, 'categoryid' => TYPE_UINT )); if (!$vbulletin->options['avatarenabled']) { eval(standard_error(fetch_error('avatardisabled'))); } ($hook = vBulletinHook::fetch_hook('profile_editavatar_start')) ? eval($hook) : false; // initialise vars $avatarchecked["{$vbulletin->userinfo['avatarid']}"] = 'checked="checked"'; $categorycache = array(); $bbavatar = array(); $donefirstcategory = 0; // variables that will become templates $avatarlist = ''; $nouseavatarchecked = ''; $categorybits = ''; $predefined_section = ''; $custom_section = ''; // initialise the bg class $bgclass = 'alt1'; // ############### DISPLAY USER'S AVATAR ############### if ($vbulletin->userinfo['avatarid']) { // using a predefined avatar $avatar = $db->query_first_slave("SELECT * FROM " . TABLE_PREFIX . "avatar WHERE avatarid = " . $vbulletin->userinfo['avatarid']); $avatarid =& $avatar['avatarid']; eval('$currentavatar = "' . fetch_template('modifyavatarbit') . '";'); // store avatar info in $bbavatar for later use $bbavatar = $avatar; } else { // not using a predefined avatar, check for custom if ($avatar = $db->query_first("SELECT dateline, width, height FROM " . TABLE_PREFIX . "customavatar WHERE userid=" . $vbulletin->userinfo['userid'])) { // using a custom avatar if ($vbulletin->options['usefileavatar']) { $vbulletin->userinfo['avatarurl'] = $vbulletin->options['avatarurl'] . '/avatar' . $vbulletin->userinfo['userid'] . '_' . $vbulletin->userinfo['avatarrevision'] . '.gif'; } else { $vbulletin->userinfo['avatarurl'] = 'image.php?' . $vbulletin->session->vars['sessionurl'] . 'u=' . $vbulletin->userinfo['userid'] . "&dateline=$avatar[dateline]"; } if ($avatar['width'] AND $avatar['height']) { $vbulletin->userinfo['avatarurl'] .= "\" width=\"$avatar[width]\" height=\"$avatar[height]"; } eval('$currentavatar = "' . fetch_template('modifyavatarbit_custom') . '";'); } else { // no avatar specified $nouseavatarchecked = 'checked="checked"'; $avatarchecked[0] = ''; eval('$currentavatar = "' . fetch_template('modifyavatarbit_noavatar') . '";'); } } // get rid of any lingering $avatar variables unset($avatar); $categorycache =& fetch_avatar_categories($vbulletin->userinfo); foreach ($categorycache AS $category) { if (!$donefirstcategory OR $category['imagecategoryid'] == $vbulletin->GPC['categoryid']) { $displaycategory = $category; $donefirstcategory = 1; } } // get the id of the avatar category we want to display if ($vbulletin->GPC['categoryid'] == 0) { if ($vbulletin->userinfo['avatarid'] != 0 AND !empty($categorycache["{$bbavatar['imagecategoryid']}"])) { $displaycategory = $bbavatar; } $vbulletin->GPC['categoryid'] = $displaycategory['imagecategoryid']; } // make the category <select> list $optionselected["{$vbulletin->GPC['categoryid']}"] = 'selected="selected"'; if (count($categorycache) > 1) { $show['categories'] = true; foreach ($categorycache AS $category) { $thiscategoryid = $category['imagecategoryid']; $selected = iif($thiscategoryid == $vbulletin->GPC['categoryid'], 'selected="selected"', ''); eval('$categorybits .= "' . fetch_template('modifyavatar_category') . '";'); } } else { $show['categories'] = false; $categorybits = ''; } // ############### GET TOTAL NUMBER OF AVATARS IN THIS CATEGORY ############### // get the total number of avatars in this category $totalavatars = $categorycache["{$vbulletin->GPC['categoryid']}"]['avatars']; // get perpage parameters for table display $perpage = $vbulletin->options['numavatarsperpage']; sanitize_pageresults($totalavatars, $vbulletin->GPC['pagenumber'], $perpage, 100, 25); // get parameters for query limits $startat = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; // make variables for 'displaying avatars x to y of z' text $first = $startat + 1; $last = $startat + $perpage; if ($last > $totalavatars) { $last = $totalavatars; } // ############### DISPLAY PREDEFINED AVATARS ############### if ($totalavatars) { $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $totalavatars, 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editavatar&categoryid=' . $vbulletin->GPC['categoryid']); $avatars = $db->query_read_slave(" SELECT avatar.*, imagecategory.title AS category FROM " . TABLE_PREFIX . "avatar AS avatar LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid) WHERE minimumposts <= " . $vbulletin->userinfo['posts'] . " AND avatar.imagecategoryid=" . $vbulletin->GPC['categoryid'] . " AND avatarid <> " . $vbulletin->userinfo['avatarid'] . " ORDER BY avatar.displayorder LIMIT $startat,$perpage "); $avatarsonthispage = $db->num_rows($avatars); $cols = intval($vbulletin->options['numavatarswide']); $cols = iif($cols, $cols, 5); $cols = iif($cols > $avatarsonthispage, $avatarsonthispage, $cols); $bits = array(); while ($avatar = $db->fetch_array($avatars)) { $categoryname = $avatar['category']; $avatarid =& $avatar['avatarid']; ($hook = vBulletinHook::fetch_hook('profile_editavatar_bit')) ? eval($hook) : false; eval('$bits[] = "' . fetch_template('modifyavatarbit') . '";'); if (sizeof($bits) == $cols) { $avatarcells = implode('', $bits); $bits = array(); eval('$avatarlist .= "' . fetch_template('help_avatars_row') . '";'); exec_switch_bg(); } } // initialize remaining columns $remainingcolumns = 0; $remaining = sizeof($bits); if ($remaining) { $remainingcolumns = $cols - $remaining; $avatarcells = implode('', $bits); eval('$avatarlist .= "' . fetch_template('help_avatars_row') . '";'); exec_switch_bg(); } $show['forumavatars'] = true; } else { $show['forumavatars'] = false; } // end code for predefined avatars // ############### DISPLAY CUSTOM AVATAR CONTROLS ############### require_once(DIR . '/includes/functions_file.php'); $inimaxattach = fetch_max_upload_size(); if ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canuseavatar']) { $show['customavatar'] = true; $show['customavatar_url'] = (ini_get('allow_url_fopen') != 0 OR function_exists('curl_init')); $permissions['avatarmaxsize'] = vb_number_format($permissions['avatarmaxsize'], 1, true); $maxnote = ''; if ($permissions['avatarmaxsize'] AND ($permissions['avatarmaxwidth'] OR $permissions['avatarmaxheight'])) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_or_z'], $permissions['avatarmaxwidth'], $permissions['avatarmaxheight'], $permissions['avatarmaxsize']); } else if ($permissions['avatarmaxsize']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x'], $permissions['avatarmaxsize']); } else if ($permissions['avatarmaxwidth'] OR $permissions['avatarmaxheight']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_pixels'], $permissions['avatarmaxwidth'], $permissions['avatarmaxheight']); } $show['maxnote'] = (!empty($maxnote)) ? true : false; } else { $show['customavatar'] = false; } // draw cp nav bar construct_usercp_nav('avatar'); $navbits[''] = $vbphrase['edit_avatar']; $templatename = 'modifyavatar'; } // ############################################################################ // ########################## EDIT PROFILE PICTURE ############################ // ############################################################################ if ($_REQUEST['do'] == 'editprofilepic') { ($hook = vBulletinHook::fetch_hook('profile_editprofilepic')) ? eval($hook) : false; if ($vbulletin->options['profilepicenabled'] AND ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canprofilepic'])) { if ($profilepic = $db->query_first(" SELECT userid, dateline, height, width FROM " . TABLE_PREFIX . "customprofilepic WHERE userid = " . $vbulletin->userinfo['userid'] )) { if ($vbulletin->options['usefileavatar']) { $vbulletin->userinfo['profileurl'] = $vbulletin->options['profilepicurl'] . '/profilepic' . $vbulletin->userinfo['userid'] . '_' . $vbulletin->userinfo['profilepicrevision'] . '.gif'; } else { $vbulletin->userinfo['profileurl'] = 'image.php?' . $vbulletin->session->vars['sessionurl'] . 'u=' . $vbulletin->userinfo['userid'] . "&dateline=$profilepic[dateline]&type=profile"; } if ($profilepic['width'] AND $profilepic['height']) { $vbulletin->userinfo['profileurl'] .= "\" width=\"$profilepic[width]\" height=\"$profilepic[height]"; } $show['profilepic'] = true; } $permissions['profilepicmaxsize'] = vb_number_format($permissions['profilepicmaxsize'], 1, true); $maxnote = ''; if ($permissions['profilepicmaxsize'] AND ($permissions['profilepicmaxwidth'] OR $permissions['profilepicmaxheight'])) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_or_z'], $permissions['profilepicmaxwidth'], $permissions['profilepicmaxheight'], $permissions['profilepicmaxsize']); } else if ($permissions['profilepicmaxsize']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x'], $permissions['profilepicmaxsize']); } else if ($permissions['profilepicmaxwidth'] OR $permissions['profilepicmaxheight']) { $maxnote = construct_phrase($vbphrase['note_maximum_size_x_y_pixels'], $permissions['profilepicmaxwidth'], $permissions['profilepicmaxheight']); } $show['maxnote'] = (!empty($maxnote)) ? true : false; $show['profilepic_url'] = (ini_get('allow_url_fopen') != 0 OR function_exists('curl_init')); // draw cp nav bar construct_usercp_nav('profilepic'); $navbits[''] = $vbphrase['edit_profile_picture']; $templatename = 'modifyprofilepic'; } else { print_no_permission(); } } // ############################### start update avatar ############################### if ($_POST['do'] == 'updateavatar') { if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canmodifyprofile'])) { print_no_permission(); } if (!$vbulletin->options['avatarenabled']) { eval(standard_error(fetch_error('avatardisabled'))); } $vbulletin->input->clean_array_gpc('p', array( 'avatarid' => TYPE_INT, 'avatarurl' => TYPE_STR, )); ($hook = vBulletinHook::fetch_hook('profile_updateavatar_start')) ? eval($hook) : false; $useavatar = iif($vbulletin->GPC['avatarid'] == -1, 0, 1); if ($useavatar) { if ($vbulletin->GPC['avatarid'] == 0) { $vbulletin->input->clean_gpc('f', 'upload', TYPE_FILE); // begin custom avatar code require_once(DIR . '/includes/class_upload.php'); require_once(DIR . '/includes/class_image.php'); $upload = new vB_Upload_Userpic($vbulletin); $upload->data =& datamanager_init('Userpic_Avatar', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $upload->image =& vB_Image::fetch_library($vbulletin); $upload->maxwidth = $vbulletin->userinfo['permissions']['avatarmaxwidth']; $upload->maxheight = $vbulletin->userinfo['permissions']['avatarmaxheight']; $upload->maxuploadsize = $vbulletin->userinfo['permissions']['avatarmaxsize']; $upload->allowanimation = ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['cananimateavatar']) ? true : false; if (!$upload->process_upload($vbulletin->GPC['avatarurl'])) { eval(standard_error($upload->fetch_error())); } } else { // start predefined avatar code $vbulletin->GPC['avatarid'] = verify_id('avatar', $vbulletin->GPC['avatarid']); $avatarinfo = $db->query_first_slave(" SELECT avatarid, minimumposts, imagecategoryid FROM " . TABLE_PREFIX . "avatar WHERE avatarid = " . $vbulletin->GPC['avatarid'] ); if ($avatarinfo['minimumposts'] > $vbulletin->userinfo['posts']) { // not enough posts error eval(standard_error(fetch_error('avatarmoreposts'))); } $membergroups = fetch_membergroupids_array($vbulletin->userinfo); $avperms = $db->query_read_slave(" SELECT usergroupid FROM " . TABLE_PREFIX . "imagecategorypermission WHERE imagecategoryid = $avatarinfo[imagecategoryid] "); $noperms = array(); while ($avperm = $db->fetch_array($avperms)) { $noperms[] = $avperm['usergroupid']; } if (!count(array_diff($membergroups, $noperms))) { eval(standard_error(fetch_error('invalid_avatar_specified'))); } $userpic =& datamanager_init('Userpic_Avatar', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $userpic->condition = 'userid = ' . $vbulletin->userinfo['userid']; $userpic->delete(); // end predefined avatar code } } else { // not using an avatar $vbulletin->GPC['avatarid'] = 0; $userpic =& datamanager_init('Userpic_Avatar', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $userpic->condition = 'userid = ' . $vbulletin->userinfo['userid']; $userpic->delete(); } // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); $userdata->set('avatarid', $vbulletin->GPC['avatarid']); ($hook = vBulletinHook::fetch_hook('profile_updateavatar_complete')) ? eval($hook) : false; $userdata->save(); $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editavatar'; eval(print_standard_redirect('redirect_updatethanks')); } // ############################### start update profile pic########################### if ($_POST['do'] == 'updateprofilepic') { if (!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canprofilepic'])) { print_no_permission(); } if (!$vbulletin->options['profilepicenabled']) { print_no_permission(); } $vbulletin->input->clean_array_gpc('p', array( 'deleteprofilepic' => TYPE_BOOL, 'avatarurl' => TYPE_STR, )); ($hook = vBulletinHook::fetch_hook('profile_updateprofilepic_start')) ? eval($hook) : false; if ($vbulletin->GPC['deleteprofilepic']) { $userpic =& datamanager_init('Userpic_Profilepic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $userpic->condition = "userid = " . $vbulletin->userinfo['userid']; $userpic->delete(); } else { $vbulletin->input->clean_gpc('f', 'upload', TYPE_FILE); require_once(DIR . '/includes/class_upload.php'); require_once(DIR . '/includes/class_image.php'); $upload = new vB_Upload_Userpic($vbulletin); $upload->data =& datamanager_init('Userpic_Profilepic', $vbulletin, ERRTYPE_STANDARD, 'userpic'); $upload->image =& vB_Image::fetch_library($vbulletin); $upload->maxwidth = $vbulletin->userinfo['permissions']['profilepicmaxwidth']; $upload->maxheight = $vbulletin->userinfo['permissions']['profilepicmaxheight']; $upload->maxuploadsize = $vbulletin->userinfo['permissions']['profilepicmaxsize']; $upload->allowanimation = ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['cananimateprofilepic']) ? true : false; if (!$upload->process_upload($vbulletin->GPC['avatarurl'])) { eval(standard_error($upload->fetch_error())); } } ($hook = vBulletinHook::fetch_hook('profile_updateprofilepic_complete')) ? eval($hook) : false; $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editprofilepic'; eval(print_standard_redirect('redirect_updatethanks')); } // ############################### start choose displayed usergroup ############################### if ($_POST['do'] == 'updatedisplaygroup') { $vbulletin->input->clean_array_gpc('p', array( 'usergroupid' => TYPE_UINT )); $membergroups = fetch_membergroupids_array($vbulletin->userinfo); if ($vbulletin->GPC['usergroupid'] == 0) { eval(standard_error(fetch_error('invalidid', $vbphrase['usergroup'], $vbulletin->options['contactuslink']))); } Quote Link to comment Share on other sites More sharing options...
mobilekid Posted February 1, 2009 Author Share Posted February 1, 2009 part 3. if (!in_array($vbulletin->GPC['usergroupid'], $membergroups)) { eval(standard_error(fetch_error('notmemberofdisplaygroup'))); } else { $display_usergroup = $vbulletin->usergroupcache["{$vbulletin->GPC['usergroupid']}"]; if ($vbulletin->GPC['usergroupid'] == $vbulletin->userinfo['usergroupid'] OR $display_usergroup['canoverride']) { $vbulletin->userinfo['displaygroupid'] = $vbulletin->GPC['usergroupid']; // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); $userdata->set('displaygroupid', $vbulletin->GPC['usergroupid']); $userdata->set_usertitle( $vbulletin->userinfo['customtitle'] ? $vbulletin->userinfo['usertitle'] : '', false, $display_usergroup, ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) ? true : false, ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['cancontrolpanel']) ? true : false ); ($hook = vBulletinHook::fetch_hook('profile_updatedisplaygroup')) ? eval($hook) : false; $userdata->save(); eval(print_standard_redirect('usergroup_displaygroupupdated')); } else { eval(standard_error(fetch_error('usergroup_invaliddisplaygroup'))); } } } // ************************************************************************* if ($_POST['do'] == 'leavegroup') { $vbulletin->input->clean_gpc('p', 'usergroupid', TYPE_UINT); $membergroups = fetch_membergroupids_array($vbulletin->userinfo); if (empty($membergroups)) { // check they have membergroups eval(standard_error(fetch_error('usergroup_cantleave_notmember'))); } else if (!in_array($vbulletin->GPC['usergroupid'], $membergroups)) { // check they are a member before leaving eval(standard_error(fetch_error('usergroup_cantleave_notmember'))); } else { if ($vbulletin->GPC['usergroupid'] == $vbulletin->userinfo['usergroupid']) { // trying to leave primary usergroup eval(standard_error(fetch_error('usergroup_cantleave_primary'))); } else if ($check = $db->query_first_slave("SELECT usergroupleaderid FROM " . TABLE_PREFIX . "usergroupleader WHERE usergroupid = " . $vbulletin->GPC['usergroupid'] . " AND userid=" . $vbulletin->userinfo['userid'])) { // trying to leave a group of which user is a leader eval(standard_error(fetch_error('usergroup_cantleave_groupleader'))); } else { $newmembergroups = array(); foreach ($membergroups AS $groupid) { if ($groupid != $vbulletin->userinfo['usergroupid'] AND $groupid != $vbulletin->GPC['usergroupid']) { $newmembergroups[] = $groupid; } } // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); $userdata->set('membergroupids', $newmembergroups); if ($vbulletin->userinfo['displaygroupid'] == $vbulletin->GPC['usergroupid']) { $userdata->set('displaygroupid', 0); $userdata->set_usertitle( $vbulletin->userinfo['customtitle'] ? $vbulletin->userinfo['usertitle'] : '', false, $vbulletin->usergroupcache["{$vbulletin->userinfo['usergroupid']}"], ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) ? true : false, ($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['cancontrolpanel']) ? true : false ); } ($hook = vBulletinHook::fetch_hook('profile_leavegroup')) ? eval($hook) : false; $userdata->save(); eval(print_standard_redirect('usergroup_nolongermember')); } } } // ************************************************************************* if ($_POST['do'] == 'insertjoinrequest') { $vbulletin->input->clean_array_gpc('p', array( 'usergroupid' => TYPE_UINT, 'reason' => TYPE_NOHTML, )); ($hook = vBulletinHook::fetch_hook('profile_insertjoinrequest')) ? eval($hook) : false; $vbulletin->url = "profile.php?do=editusergroups"; if ($request = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "usergrouprequest WHERE userid=" . $vbulletin->userinfo['userid'] . " AND usergroupid=" . $vbulletin->GPC['usergroupid'])) { // request already exists, just say okay... eval(print_standard_redirect('usergroup_requested')); } else { // insert the request /*insert query*/ $db->query_write(" INSERT INTO " . TABLE_PREFIX . "usergrouprequest (userid,usergroupid,reason,dateline) VALUES (" . $vbulletin->userinfo['userid'] . ", " . $vbulletin->GPC['usergroupid'] . ", '" . $db->escape_string($vbulletin->GPC['reason']) . "', " . TIMENOW . ") "); eval(print_standard_redirect('usergroup_requested')); } } // ************************************************************************* if ($_POST['do'] == 'joingroup') { $usergroupid = $vbulletin->input->clean_gpc('p', 'usergroupid', TYPE_UINT); $membergroups = fetch_membergroupids_array($vbulletin->userinfo); if (in_array($usergroupid, $membergroups)) { eval(standard_error(fetch_error('usergroup_already_member'))); } else { // check to see that usergroup exists and is public if ($vbulletin->usergroupcache["$usergroupid"]['ispublicgroup']) { $usergroup = $vbulletin->usergroupcache["$usergroupid"]; // check to see if group is moderated $leaders = $db->query_read_slave(" SELECT ugl.userid, username FROM " . TABLE_PREFIX . "usergroupleader AS ugl INNER JOIN " . TABLE_PREFIX . "user AS user USING(userid) WHERE ugl.usergroupid = $usergroupid "); if ($db->num_rows($leaders)) { // group is moderated: show join request page $_groupleaders = array(); while ($leader = $db->fetch_array($leaders)) { eval('$_groupleaders[] = "' . fetch_template('modifyusergroups_groupleader') . '";'); } $groupleaders = implode(', ', $_groupleaders); $navbits['profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editusergroups'] = $vbphrase['group_memberships']; $navbits[''] = $vbphrase['join_request']; ($hook = vBulletinHook::fetch_hook('profile_joingroup_moderated')) ? eval($hook) : false; // draw cp nav bar construct_usercp_nav('usergroups'); $templatename = 'modifyusergroups_requesttojoin'; } else { // group is not moderated: update user & join group $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($vbulletin->userinfo); $userdata->set('membergroupids', (($vbulletin->userinfo['membergroupids'] == '') ? $usergroupid : $vbulletin->userinfo['membergroupids'] . ',' . $usergroupid)); ($hook = vBulletinHook::fetch_hook('profile_joingroup_unmoderated')) ? eval($hook) : false; $userdata->save(); $usergroupname = $usergroup['title']; eval(print_standard_redirect('usergroup_welcome')); } } else { eval(standard_error(fetch_error('usergroup_notpublic'))); } } } // ************************************************************************* if ($_REQUEST['do'] == 'editusergroups') { // draw cp nav bar construct_usercp_nav('usergroups'); // check to see if there are usergroups available $haspublicgroups = false; foreach ($vbulletin->usergroupcache AS $usergroup) { if ($usergroup['ispublicgroup'] or $usergroup['canoverride']) { $haspublicgroups = true; break; } } ($hook = vBulletinHook::fetch_hook('profile_editusergroups_start')) ? eval($hook) : false; if (!$haspublicgroups) { eval(standard_error(fetch_error('no_public_usergroups'))); } else { $membergroups = fetch_membergroupids_array($vbulletin->userinfo); // query user's usertitle based on posts ladder $usertitle = $db->query_first_slave(" SELECT * FROM " . TABLE_PREFIX . "usertitle WHERE minposts < " . $vbulletin->userinfo['posts'] . " ORDER BY minposts DESC LIMIT 1 "); // get array of all usergroup leaders $bbuserleader = array(); $leaders = array(); $groupleaders = $db->query_read_slave(" SELECT ugl.*, user.username FROM " . TABLE_PREFIX . "usergroupleader AS ugl INNER JOIN " . TABLE_PREFIX . "user AS user USING(userid) "); while ($groupleader = $db->fetch_array($groupleaders)) { if ($groupleader['userid'] == $vbulletin->userinfo['userid']) { $bbuserleader[] = $groupleader['usergroupid']; } $leaders["$groupleader[usergroupid]"]["$groupleader[userid]"] = $groupleader; } unset($groupleader); $db->free_result($groupleaders); // notify about new join requests if user is a group leader $joinrequestbits = ''; if (!empty($bbuserleader)) { $joinrequests = $db->query_read_slave(" SELECT usergroup.title, usergroup.opentag, usergroup.closetag, usergroup.usergroupid, COUNT(usergrouprequestid) AS requests FROM " . TABLE_PREFIX . "usergroup AS usergroup LEFT JOIN " . TABLE_PREFIX . "usergrouprequest AS req USING(usergroupid) WHERE usergroup.usergroupid IN(" . implode(',', $bbuserleader) . ") GROUP BY usergroup.usergroupid ORDER BY usergroup.title "); while ($joinrequest = $db->fetch_array($joinrequests)) { exec_switch_bg(); $joinrequest['requests'] = vb_number_format($joinrequest['requests']); eval('$joinrequestbits .= "' . fetch_template('modifyusergroups_joinrequestbit') . '";'); } unset($joinrequest); $db->free_result($joinrequests); } $show['joinrequests'] = iif($joinrequestbits != '', true, false); // get usergroups $groups = array(); foreach ($vbulletin->usergroupcache AS $usergroupid => $usergroup) { if ($usergroup['usertitle'] == '') { $usergroup['usertitle'] = $usertitle['title']; } if (in_array($usergroupid, $membergroups)) { $groups['member']["$usergroupid"] = $usergroup; } else if ($usergroup['ispublicgroup']) { $groups['notmember']["$usergroupid"] = $usergroup; $couldrequest[] = $usergroupid; } } // do groups user is NOT a member of $nonmembergroupbits = ''; if (is_array($groups['notmember'])) { // get array of join requests for this user $requests = array(); $joinrequests = $db->query_read_slave("SELECT * FROM " . TABLE_PREFIX . "usergrouprequest WHERE userid=" . $vbulletin->userinfo['userid'] . " AND usergroupid IN (" . implode(',', $couldrequest) . ')'); while ($joinrequest = $db->fetch_array($joinrequests)) { $requests["$joinrequest[usergroupid]"] = $joinrequest; } unset($joinrequest); $db->free_result($joinrequests); foreach ($groups['notmember'] AS $usergroupid => $usergroup) { $joinrequested = 0; exec_switch_bg(); if (is_array($leaders["$usergroupid"])) { $_groupleaders = array(); foreach ($leaders["$usergroupid"] AS $leader) { eval('$_groupleaders[] = "' . fetch_template('modifyusergroups_groupleader') . '";'); } $ismoderated = 1; $groupleaders = implode(', ', $_groupleaders); if (isset($requests["$usergroupid"])) { $joinrequest = $requests["$usergroupid"]; $joinrequest['date'] = vbdate($vbulletin->options['dateformat'], $joinrequest['dateline'], 1); $joinrequest['time'] = vbdate($vbulletin->options['timeformat'], $joinrequest['dateline'], 1); $joinrequested = 1; } } else { $ismoderated = 0; $groupleaders = ''; } ($hook = vBulletinHook::fetch_hook('profile_editusergroups_nonmemberbit')) ? eval($hook) : false; eval('$nonmembergroupbits .= "' . fetch_template('modifyusergroups_nonmemberbit') . '";'); } } $show['nonmembergroups'] = iif($nonmembergroupbits != '', true, false); // set primary group info $primarygroupid = $vbulletin->userinfo['usergroupid']; $primarygroup = $groups['member']["{$vbulletin->userinfo['usergroupid']}"]; // do groups user IS a member of $membergroupbits = ''; foreach ($groups['member'] AS $usergroupid => $usergroup) { if ($usergroupid != $vbulletin->userinfo['usergroupid'] AND $usergroup['ispublicgroup']) { exec_switch_bg(); if ($usergroup['usertitle'] == '') { $usergroup['usertitle'] = $usertitle['title']; } if (isset($leaders["$usergroupid"]["{$vbulletin->userinfo['userid']}"])) { $show['isleader'] = true; } else { $show['isleader'] = false; } ($hook = vBulletinHook::fetch_hook('profile_editusergroups_memberbit')) ? eval($hook) : false; eval('$membergroupbits .= "' . fetch_template('modifyusergroups_memberbit') . '";'); } } $show['membergroups'] = iif($membergroupbits != '', true, false); // do groups user could use as display group $checked = array(); if ($vbulletin->userinfo['displaygroupid']) { $checked["{$vbulletin->userinfo['displaygroupid']}"] = 'checked="checked"'; } else { $checked["{$vbulletin->userinfo['usergroupid']}"] = 'checked="checked"'; } $displaygroupbits = ''; foreach ($groups['member'] AS $usergroupid => $usergroup) { if ($usergroupid != $vbulletin->userinfo['usergroupid'] AND $usergroup['canoverride']) { exec_switch_bg(); ($hook = vBulletinHook::fetch_hook('profile_editusergroups_displaybit')) ? eval($hook) : false; eval('$displaygroupbits .= "' . fetch_template('modifyusergroups_displaybit') . '";'); } } $show['displaygroups'] = iif($displaygroupbits != '', true, false); if (!$show['joinrequests'] AND !$show['nonmembergroups'] AND !$show['membergroups'] AND !$show['displaygroups']) { eval(standard_error(fetch_error('no_public_usergroups'))); } $navbits[''] = $vbphrase['group_memberships']; $templatename = 'modifyusergroups'; } } if ($_POST['do'] == 'deleteusergroups') { $vbulletin->input->clean_array_gpc('p', array( 'usergroupid' => TYPE_UINT, 'deletebox' => TYPE_ARRAY_BOOL )); ($hook = vBulletinHook::fetch_hook('profile_deleteusergroups_start')) ? eval($hook) : false; if ($vbulletin->GPC['usergroupid']) { // check permission to do authorizations in this group if (!$leadergroup = $db->query_first(" SELECT usergroupleaderid FROM " . TABLE_PREFIX . "usergroupleader AS usergroupleader WHERE userid = " . $vbulletin->userinfo['userid'] . " AND usergroupid = " . $vbulletin->GPC['usergroupid'] . " ")) { print_no_permission(); } if (!empty($vbulletin->GPC['deletebox'])) { foreach (array_keys($vbulletin->GPC['deletebox']) AS $userid) { $userids .= ',' . intval($userid); } $users = $db->query_read_slave(" SELECT u.userid, u.membergroupids, u.usergroupid, u.displaygroupid FROM " . TABLE_PREFIX . "user AS u LEFT JOIN " . TABLE_PREFIX . "usergroupleader AS ugl ON (u.userid = ugl.userid AND ugl.usergroupid = " . $vbulletin->GPC['usergroupid'] . ") WHERE u.userid IN (0$userids) AND ugl.usergroupleaderid IS NULL "); while ($user = $db->fetch_array($users)) { $membergroups = fetch_membergroupids_array($user, false); $newmembergroups = array(); foreach($membergroups AS $groupid) { if ($groupid != $user['usergroupid'] AND $groupid != $vbulletin->GPC['usergroupid']) { $newmembergroups[] = $groupid; } } // init user data manager $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_STANDARD); $userdata->set_existing($user); $userdata->set('membergroupids', $newmembergroups); if ($user['displaygroupid'] == $vbulletin->GPC['usergroupid']) { $userdata->set('displaygroupid', 0); } ($hook = vBulletinHook::fetch_hook('profile_deleteusergroups_process')) ? eval($hook) : false; $userdata->save(); } $vbulletin->url = 'memberlist.php?' . $vbulletin->session->vars['sessionurl'] . 'usergroupid=' . $vbulletin->GPC['usergroupid']; eval(print_standard_redirect('redirect_removedusers')); } else { // Print didn't select any users to delete eval(standard_error(fetch_error('usergroupleader_deleted'))); } } else { print_no_permission(); } } // ############################### Delete attachments for current user ################# if ($_POST['do'] == 'deleteattachments') { if (!$vbulletin->userinfo['userid']) { print_no_permission(); } $vbulletin->input->clean_array_gpc('p', array( 'deletebox' => TYPE_ARRAY_BOOL, 'perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT, 'showthumbs' => TYPE_BOOL, 'userid' => TYPE_UINT )); if (empty($vbulletin->GPC['deletebox'])) { eval(standard_error(fetch_error('attachdel'))); } ($hook = vBulletinHook::fetch_hook('profile_deleteattachments_start')) ? eval($hook) : false; // Get forums that allow canview access foreach ($vbulletin->userinfo['forumpermissions'] AS $forumid => $perm) { if (($perm & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($perm & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) AND ($perm & $vbulletin->bf_ugp_forumpermissions['cangetattachment'])) { if ($userid != $vbulletin->userinfo['userid'] AND !($perm & $vbulletin->bf_ugp_forumpermissions['canviewothers'])) { // Viewing non-self and don't have permission to view other's threads in this forum continue; } $forumids .= ",$forumid"; } } foreach (array_keys($vbulletin->GPC['deletebox']) AS $attachmentid) { $idlist .= ',' . intval($attachmentid); } // Verify that $vbulletin->userinfo owns these attachments before allowing deletion $validids = $db->query_read_slave(" SELECT attachment.attachmentid, attachment.postid, post.threadid, thread.forumid, thread.open, attachment.userid, post.dateline as p_dateline, IF(attachment.postid = 0, 1, 0) AS inprogress FROM " . TABLE_PREFIX . "attachment AS attachment LEFT JOIN " . TABLE_PREFIX . "post AS post ON (attachment.postid = post.postid) LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (thread.threadid = post.threadid) WHERE attachmentid IN (0$idlist) AND attachment.userid = " . $vbulletin->GPC['userid'] . " AND ((forumid IN(0$forumids) AND thread.visible = 1 AND post.visible = 1) " . iif($vbulletin->GPC['userid'] == $vbulletin->userinfo['userid'], "OR attachment.postid = 0") . ") "); unset($idlist); while ($attachment = $db->fetch_array($validids)) { if (!$attachment['inprogress']) { if (!$attachment['open'] AND !can_moderate($attachment['forumid'], 'canopenclose') AND !$vbulletin->options['allowclosedattachdel']) { continue; } else if (!can_moderate($attachment['forumid'], 'caneditposts')) { $forumperms = fetch_permissions($attachment['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['caneditpost']) OR $vbulletin->userinfo['userid'] != $attachment['userid']) { continue; } else { if (!$vbulletin->options['allowattachdel'] AND $vbulletin->options['edittimelimit'] AND $attachment['p_dateline'] < TIMENOW - $vbulletin->options['edittimelimit'] * 60) { continue; } } } } $idlist .= ',' . $attachment['attachmentid']; } require_once(DIR . '/includes/functions_file.php'); if (!empty($idlist)) { $attachdata =& datamanager_init('Attachment', $vbulletin, ERRTYPE_STANDARD); $attachdata->condition = "attachmentid IN (-1$idlist)"; $attachdata->delete(); } ($hook = vBulletinHook::fetch_hook('profile_deleteattachments_complete')) ? eval($hook) : false; $vbulletin->url = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editattachments&pp=' . $vbulletin->GPC['perpage'] . '&page=' . $vbulletin->GPC['pagenumber'] . '&showthumbs=' . $vbulletin->GPC['showthumbs'] . '&u=' . $vbulletin->GPC['userid']; eval(print_standard_redirect('redirect_attachdel')); } // ############################### List of attachments for current user ################ if ($_REQUEST['do'] == 'editattachments') { // Variables reused in templates $perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT); $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT); $showthumbs = $vbulletin->input->clean_gpc('r', 'showthumbs', TYPE_BOOL); $vbulletin->input->clean_array_gpc('r', array( 'userid' => TYPE_UINT )); $templatename = 'modifyattachments'; $show['attachment_list'] = true; if (!$vbulletin->GPC['userid'] OR $vbulletin->GPC['userid'] == $vbulletin->userinfo['userid']) { // show own attachments in user cp $userid = $vbulletin->userinfo['userid']; $username = $vbulletin->userinfo['username']; $show['attachquota'] = true; } else { // show someone else's attachments $userinfo = verify_id('user', $vbulletin->GPC['userid'], 1, 1); $userid = $userinfo['userid']; $username = $userinfo['username']; $show['otheruserid'] = true; } ($hook = vBulletinHook::fetch_hook('profile_editattachments_start')) ? eval($hook) : false; // Get forums that allow canview access foreach ($vbulletin->userinfo['forumpermissions'] AS $forumid => $perm) { if (($perm & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($perm & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) AND ($perm & $vbulletin->bf_ugp_forumpermissions['cangetattachment'])) { if ($userid != $vbulletin->userinfo['userid'] AND !($perm & $vbulletin->bf_ugp_forumpermissions['canviewothers'])) { // Viewing non-self and don't have permission to view other's threads in this forum continue; } $forumids .= ",$forumid"; } } // Get attachment count $attachments = $db->query_first_slave(" SELECT COUNT(*) AS total, SUM(filesize) AS sum FROM " . TABLE_PREFIX . "attachment AS attachment LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = attachment.postid) LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid) WHERE attachment.userid = $userid AND ((forumid IN(0$forumids) AND thread.visible = 1 AND post.visible = 1) " . iif($userid==$vbulletin->userinfo['userid'], "OR attachment.postid = 0") . ") "); $totalattachments = intval($attachments['total']); $attachsum = intval($attachments['sum']); if (!$totalattachments AND $userid != $vbulletin->userinfo['userid']) { eval(standard_error(fetch_error('noattachments'))); } else if (!$totalattachments) { $show['attachment_list'] = false; $show['attachquota'] = false; } else { if ($permissions['attachlimit']) { if ($attachsum >= $permissions['attachlimit']) { $totalsize = 0; $attachsize = 100; } else { $attachsize = ceil($attachsum / $permissions['attachlimit'] * 100); $totalsize = 100 - $attachsize; } $attachlimit = vb_number_format($permissions['attachlimit'], 1, true); } $attachsum = vb_number_format($attachsum, 1, true); if ($showthumbs) { $maxperpage = 10; $defaultperpage = 10; } else { $maxperpage = 200; $defaultperpage = 20; } sanitize_pageresults($totalattachments, $pagenumber, $perpage, $maxperpage, $defaultperpage); $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = ($pagenumber) * $perpage; if ($limitupper > $totalattachments) { $limitupper = $totalattachments; if ($limitlower > $totalattachments) { $limitlower = $totalattachments - $perpage; } } if ($limitlower <= 0) { $limitlower = 1; } // Get attachment info $attachments = $db->query_read_slave(" SELECT thread.forumid, post.postid, post.threadid AS p_threadid, post.title AS p_title, post.dateline AS p_dateline, attachment.attachmentid, thread.title AS t_title, attachment.filename, attachment.counter, attachment.filesize AS size, IF(thumbnail_filesize > 0, 1, 0) AS hasthumbnail, thumbnail_filesize, user.username, thread.open, attachment.userid " . iif($userid==$vbulletin->userinfo['userid'], ", IF(attachment.postid = 0, 1, 0) AS inprogress") . ", attachment.dateline, attachment.thumbnail_dateline FROM " . TABLE_PREFIX . "attachment AS attachment LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = attachment.postid) LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid) LEFT JOIN " . TABLE_PREFIX . "user AS user ON (attachment.userid = user.userid) WHERE attachment.userid = $userid AND ((forumid IN (0$forumids) AND thread.visible = 1 AND post.visible = 1) " . iif($userid == $vbulletin->userinfo['userid'], "OR attachment.postid = 0") . ") ORDER BY attachment.attachmentid DESC LIMIT " . ($limitlower - 1) . ", $perpage "); $template['attachmentlistbits'] = ''; while ($post = $db->fetch_array($attachments)) { $post['filename'] = htmlspecialchars_uni($post['filename']); if (!$post['p_title']) { $post['p_title'] = '«' . $vbphrase['n_a'] . '»'; } $post['counter'] = vb_number_format($post['counter']); $post['size'] = vb_number_format($post['size'], 1, true); $post['postdate'] = vbdate($vbulletin->options['dateformat'], $post['p_dateline'], true); $post['posttime'] = vbdate($vbulletin->options['timeformat'], $post['p_dateline']); $post['attachmentextension'] = strtolower(file_extension($post['filename'])); $show['thumbnail'] = iif($post['hasthumbnail'] == 1 AND $vbulletin->options['attachthumbs'] AND $showthumbs, 1, 0); $show['inprogress'] = iif(!$post['postid'], true, false); $show['deletebox'] = false; if ($post['inprogress']) { $show['deletebox'] = true; } else if ($post['open'] OR $vbulletin->options['allowclosedattachdel'] OR can_moderate($post['forumid'], 'canopenclose')) { if (can_moderate($post['forumid'], 'caneditposts')) { $show['deletebox'] = true; } else { $forumperms = fetch_permissions($post['forumid']); if (($forumperms & $vbulletin->bf_ugp_forumpermissions['caneditpost'] AND $vbulletin->userinfo['userid'] == $post['userid'])) { if ($vbulletin->options['allowattachdel'] OR !$vbulletin->options['edittimelimit'] OR $post['p_dateline'] >= TIMENOW - $vbulletin->options['edittimelimit'] * 60) { $show['deletebox'] = true; } } } } if ($show['deletebox']) { $show['deleteoption'] = true; } ($hook = vBulletinHook::fetch_hook('profile_editattachments_bit')) ? eval($hook) : false; eval('$template[\'attachmentlistbits\'] .= "' . fetch_template('modifyattachmentsbit') . '";'); } $sorturl = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editattachments'; if ($userid != $vbulletin->userinfo['userid']) { $sorturl .= "&u=$userid"; } if ($perpage != $defaultperpage) { $sorturl .= "&pp=$perpage"; } if ($showthumbs) { $sorturl .= "&showthumbs=1"; } $pagenav = construct_page_nav($pagenumber, $perpage, $totalattachments, $sorturl); $totalattachments = vb_number_format($totalattachments); $show['attachlimit'] = $permissions['attachlimit']; $show['currentattachsize'] = $attachsize; $show['totalattachsize'] = $totalsize; $show['thumbnails'] = $showthumbs; } ($hook = vBulletinHook::fetch_hook('profile_editattachments_complete')) ? eval($hook) : false; if ($userid == $vbulletin->userinfo['userid']) { // show $vbulletin->userinfo's attachments in usercp construct_usercp_nav('attachments'); $navbits[''] = construct_phrase($vbphrase['attachments_posted_by_x'], $vbulletin->userinfo['username']); } else { // show some other user's attachments $pagetitle = construct_phrase($vbphrase['attachments_posted_by_x'], $username); $navbits = array( 'member.php?' . $vbulletin->session->vars['sessionurl'] . "u=$userid" => $vbphrase['view_profile'], '' => $pagetitle ); $shelltemplatename = 'GENERIC_SHELL'; } } // ############################################################################# // spit out final HTML if we have got this far if ($templatename != '') { // make navbar $navbits = construct_navbits($navbits); eval('$navbar = "' . fetch_template('navbar') . '";'); ($hook = vBulletinHook::fetch_hook('profile_complete')) ? eval($hook) : false; // shell template eval('$HTML = "' . fetch_template($templatename) . '";'); eval('print_output("' . fetch_template($shelltemplatename) . '");'); } /*======================================================================*\ || #################################################################### || # Downloaded: 14:39, Sun Jul 29th 2007 || # CVS: $RCSfile$ - $Revision: 17681 $ || #################################################################### \*======================================================================*/ ?> [/code][/code] Quote Link to comment Share on other sites More sharing options...
Vince889 Posted February 1, 2009 Share Posted February 1, 2009 . Quote Link to comment Share on other sites More sharing options...
mobilekid Posted February 4, 2009 Author Share Posted February 4, 2009 thankyou, but it didnt work Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.