errorPermission(); } $userapi = new UserAPI(); $userapi->set('userid', bugdar::$userinfo['userid']); $userapi->setCondition(); $userinfo = bugdar::$userinfo; // ################################################################### if (empty($_REQUEST['do'])) { $_REQUEST['do'] = 'modify'; } // ################################################################### if ($_POST['do'] == 'killsearch') { $search = $db->queryFirst("SELECT * FROM " . TABLE_PREFIX . "search WHERE searchid = " . $input->inputClean('searchid', TYPE_UINT) . " AND userid = " . bugdar::$userinfo['userid']); if (!$search) { $message->errorPermission(); } $db->query("DELETE FROM " . TABLE_PREFIX . "search WHERE searchid = " . $input->in['searchid']); $message->redirect(T('This saved search has been removed from your list.'), 'userctrl.php'); } // ################################################################### if ($_REQUEST['do'] == 'deletesearch') { $search = $db->queryFirst("SELECT * FROM " . TABLE_PREFIX . "search WHERE searchid = " . $input->inputClean('searchid', TYPE_UINT) . " AND userid = " . bugdar::$userinfo['userid']); if (!$search) { $message->errorPermission(); } $message->confirm(T('Are you sure you want to delete this saved search?'), 'userctrl.php', 'killsearch', T('Delete'), T('Cancel'), array('searchid' => $input->in['searchid'])); } // ################################################################### if ($_POST['do'] == 'update') { // ------------------------------------------------------------------- // authentication if (!empty($input->in['password_change']) OR !empty($input->in['email_change'])) { if (empty($input->in['validate'])) { $message->addError(T('You need to enter your current password to change your email or password')); } else { if (md5(md5($input->in['validate']) . md5(bugdar::$userinfo['salt'])) != bugdar::$userinfo['password']) { $message->addError(T('Your authentication password does not match the one in our records')); } } } // ------------------------------------------------------------------- // email validation if (!empty($input->in['email_change'])) { if (!empty($input->in['email_change']) AND empty($input->in['email_confirm'])) { $message->addError(T('You need to enter both the email and confirm email fields to change your address')); } if ($input->in['email_change'] != $input->in['email_confirm']) { $message->addError(T('Your email and confirm email addresses do not match')); } $userapi->set('email', $input->in['email_change']); } // ------------------------------------------------------------------- // password validation if (!empty($input->in['password_change'])) { if (!empty($input->in['password_change']) AND empty($input->in['password_confirm'])) { $message->addError(T('You need to enter both the password and confirm password fields to change your password')); } else { if ($input->in['password_change'] != $input->in['password_confirm']) { $message->addError(T('Your password and confirm password do not match')); } } $userapi->set('password', $input->in['password_change']); } $userapi->set('displayname', $input->in['displayname']); $userapi->set('showemail', $input->in['showemail']); $userapi->set('showcolors', $input->in['showcolors']); $userapi->set('languageid', $input->in['languageid']); $userapi->set('timezone', $input->in['timezone']); $userapi->set('usedst', $input->in['usedst']); $userapi->set('hidestatuses', $input->in['hidestatuses']); $userapi->set('defaultsortkey', $input->in['defaultsortkey']); $userapi->set('defaultsortas', $input->in['defaultsortas']); $userapi->set('columnoptions', $input->inputClean('columnoptions', TYPE_UINT)); // ------------------------------------------------------------------- // copy fields $userinfo['displayname'] = $input->in['displayname']; $userinfo['showemail'] = $input->in['showemail']; $userinfo['showcolors'] = $input->in['showcolors']; $userinfo['languageid'] = $input->in['languageid']; $userinfo['timezone'] = $input->in['timezone']; $userinfo['usedst'] = $input->in['usedst']; $userinfo['hidestatuses'] = $input->in['hidestatuses']; $userinfo['defaultsorkey'] = $input->in['defaultsorkey']; $userinfo['defaultsortas'] = $input->in['defaultsortas']; $userinfo['columnoptions'] = $input->in['columnoptions']; $email = $input->in['email_change']; $email_confirm = $input->in['email_confirm']; // ------------------------------------------------------------------- // error handling if ($message->hasErrors()) { $show['errors'] = true; $_REQUEST['do'] = 'modify'; } else { $userapi->update(); $db->query("DELETE FROM " . TABLE_PREFIX . "useremail WHERE userid = " . bugdar::$userinfo['userid']); $input->inputClean('emailopts', TYPE_INT); if (is_array($input->in['emailopts'])) { foreach ($input->in['emailopts'] AS $relation => $bitarr) { $bitmask = 0; if (is_array($bitarr)) { foreach ($bitarr AS $option => $yes) { $bitmask += $option * $yes; } } $db->query("INSERT INTO " . TABLE_PREFIX . "useremail (userid, relation, mask) VALUES (" . bugdar::$userinfo['userid'] . ", $relation, $bitmask)"); } } $message->redirect(T('The changes to your account have been made.'), 'userctrl.php'); } } // ################################################################### if ($_REQUEST['do'] == 'modify') { $langselect = construct_datastore_select('language', 'title', 'languageid', $userinfo['languageid']); $hidestatuses = construct_datastore_select('status', 'status', 'statusid', (!is_array($userinfo['hidestatuses']) ? explode(',', $userinfo['hidestatuses']) : $userinfo['hidestatuses']), 0); $hidestatusesnum = (sizeof(bugdar::$datastore['status']) < 8 ? sizeof(bugdar::$datastore['status']) + 1 : 8); $defaultsortkey = construct_option_select('defaultsortkey', ListSorter::fetch_by_text(false), $userinfo['defaultsortkey']); $defaultsortas = construct_option_select('defaultsortas', ListSorter::fetch_as_text(false), $userinfo['defaultsortas']); foreach ($datef->fetch_timezone_list() as $value => $label) { $tpl = new BSTemplate('selectoption'); $tpl->vars = array( 'value' => $value, 'label' => $label, 'selected' => ($value == $userinfo['timezone']) ); $tzselect .= $tpl->evaluate()->getTemplate(); } $checked = array(); if (!is_array($input->in['emailopts'])) { $options = $db->query("SELECT * FROM " . TABLE_PREFIX . "useremail WHERE userid = " . bugdar::$userinfo['userid']); foreach ($options as $opt) { foreach (bugdar::$emailOptions['notifications'] AS $name => $notif) { foreach (bugdar::$emailOptions['relations'] AS $name => $relation) { if ($opt['mask'] & $notif AND $opt['relation'] == $relation) { $checked["$relation"]["$notif"] = HTML_CHECKED; } } } } } else { $checked = $input->in['emailopts']; foreach ($checked AS $key1 => $value1) { foreach ($value1 AS $key2 => $value2) { if ($value2) { $checked["$key1"]["$key2"] = HTML_CHECKED; } } } } $columns = array(); $columnOptions = ''; require_once('./includes/class_sort.php'); if (!is_array($input->in['columnoptions'])) { foreach (ListSorter::fetch_by_text(false) AS $column => $name) { if (is_array(bugdar::$userinfo['columnoptions'])) { $columns["$column"] = bugdar::$userinfo['columnoptions']["$column"]; } else { $columns["$column"] = bugdar::$options['columnoptions']["$column"]; } $tpl = new BSTemplate('userctrl_column'); $tpl->vars = array( 'columns' => $columns, 'column' => $column, 'name' => $name ); $columnOptions .= $tpl->evaluate()->getTemplate(); } } else { $columns = $input->in['columnoptions']; foreach (ListSorter::fetch_by_text(false) as $column => $name) { $tpl = new BSTemplate('userctrl_column'); $tpl->vars = array( 'columns' => $columns, 'column' => $column, 'name' => $name ); $columnOptions .= $tpl->evaluate()->getTemplate(); } } // searches $searches = ''; $searchesFetch = $db->query("SELECT * FROM " . TABLE_PREFIX . "search WHERE name IS NOT NULL AND userid = " . bugdar::$userinfo['userid']); foreach ($searchesFetch as $search) { $tpl = new BSTemplate('userctrl_search'); $tpl->vars = array('search' => $search); $searches .= $tpl->evaluate()->getTemplate(); } $tpl = new BSTemplate('userctrl'); $tpl->vars = array( 'checked' => $checked, 'userinfo' => $userinfo, 'searches' => $searches, 'defaultsortkey' => $defaultsortkey, 'hidestatusesnum' => $hidestatusesnum, 'hidestatuses' => $hidestatuses, 'defaultsortas' => $defaultsortas, 'columnOptions' => $columnOptions, 'langselect' => $langselect, 'tzselect' => $tzselect ); $tpl->evaluate()->flush(); } ?>