Squash-merging the ISSO3 branch back onto master
[bugdar.git] / userctrl.php
index 100e17fd04f49a91a08befdcbac0294926e15ee5..c973f86130e9bd8c81b259433d73493261ee2684 100644 (file)
@@ -2,7 +2,7 @@
 /*=====================================================================*\
 || ###################################################################
 || # Bugdar
-|| # Copyright ©2002-2007 Blue Static
+|| # Copyright (c)2004-2008 Blue Static
 || #
 || # This program is free software; you can redistribute it and/or modify
 || # it under the terms of the GNU General Public License as published by
@@ -25,26 +25,22 @@ $fetchtemplates = array(
        'userctrl_search'
 );
 
-define('SVN', '$Id$');
 
 $focus['user'] = 'focus';
 
 require_once('./global.php');
-require_once('./includes/class_api_error.php');
 require_once('./includes/api_user.php');
 
-APIError(array(new API_Error_Handler($message), 'user_cumulative'));
-
-if (!$bugsys->userinfo['userid'])
+if (!bugdar::$userinfo['userid'])
 {
        $message->errorPermission();
 }
 
-$userapi = new UserAPI($bugsys);
-$userapi->set('userid',                $bugsys->userinfo['userid']);
-$userapi->set_condition();
+$userapi = new UserAPI();
+$userapi->set('userid',                bugdar::$userinfo['userid']);
+$userapi->setCondition();
 
-$userinfo = $bugsys->userinfo;
+$userinfo = bugdar::$userinfo;
 
 // ###################################################################
 
@@ -57,13 +53,13 @@ if (empty($_REQUEST['do']))
 
 if ($_POST['do'] == 'killsearch')
 {
-       $search = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "search WHERE searchid = " . $bugsys->input_clean('searchid', TYPE_UINT) . " AND userid = " . $bugsys->userinfo['userid']);
+       $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 = " . $bugsys->in['searchid']);
+       $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');
 }
@@ -72,13 +68,13 @@ if ($_POST['do'] == 'killsearch')
 
 if ($_REQUEST['do'] == 'deletesearch')
 {
-       $search = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "search WHERE searchid = " . $bugsys->input_clean('searchid', TYPE_UINT) . " AND userid = " . $bugsys->userinfo['userid']);
+       $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' => $bugsys->in['searchid']));
+       $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']));
 }
 
 // ###################################################################
@@ -87,15 +83,15 @@ if ($_POST['do'] == 'update')
 {      
        // -------------------------------------------------------------------
        // authentication
-       if (!empty($bugsys->in['password_change']) OR !empty($bugsys->in['email_change']))
+       if (!empty($input->in['password_change']) OR !empty($input->in['email_change']))
        {
-               if (empty($bugsys->in['validate']))
+               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($bugsys->in['validate']) . md5($bugsys->userinfo['salt'])) != $bugsys->userinfo['password'])
+                       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'));
                        }
@@ -104,66 +100,66 @@ if ($_POST['do'] == 'update')
        
        // -------------------------------------------------------------------
        // email validation
-       if (!empty($bugsys->in['email_change']))
+       if (!empty($input->in['email_change']))
        {
-               if (!empty($bugsys->in['email_change']) AND empty($bugsys->in['email_confirm']))
+               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 ($bugsys->in['email_change'] != $bugsys->in['email_confirm'])
+               if ($input->in['email_change'] != $input->in['email_confirm'])
                {
                        $message->addError(T('Your email and confirm email addresses do not match'));
                }
                
-               $userapi->set('email',  $bugsys->in['email_change']);
+               $userapi->set('email',  $input->in['email_change']);
        }
        
        // -------------------------------------------------------------------
        // password validation
-       if (!empty($bugsys->in['password_change']))
+       if (!empty($input->in['password_change']))
        {
-               if (!empty($bugsys->in['password_change']) AND empty($bugsys->in['password_confirm']))
+               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 ($bugsys->in['password_change'] != $bugsys->in['password_confirm'])
+                       if ($input->in['password_change'] != $input->in['password_confirm'])
                        {
                                $message->addError(T('Your password and confirm password do not match'));
                        }
                }
                
-               $userapi->set('password',       $bugsys->in['password_change']);
+               $userapi->set('password',       $input->in['password_change']);
        }
        
-       $userapi->set('displayname',    $bugsys->in['displayname']);
-       $userapi->set('showemail',              $bugsys->in['showemail']);
-       $userapi->set('showcolors',             $bugsys->in['showcolors']);
-       $userapi->set('languageid',             $bugsys->in['languageid']);
-       $userapi->set('timezone',               $bugsys->in['timezone']);
-       $userapi->set('usedst',                 $bugsys->in['usedst']);
-       $userapi->set('hidestatuses',   $bugsys->in['hidestatuses']);
-       $userapi->set('defaultsortkey', $bugsys->in['defaultsortkey']);
-       $userapi->set('defaultsortas',  $bugsys->in['defaultsortas']);
-       $userapi->set('columnoptions',  $bugsys->input_clean('columnoptions', TYPE_UINT));
+       $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'] = $bugsys->in['displayname'];
-       $userinfo['showemail'] = $bugsys->in['showemail'];
-       $userinfo['showcolors'] = $bugsys->in['showcolors'];
-       $userinfo['languageid'] = $bugsys->in['languageid'];
-       $userinfo['timezone'] = $bugsys->in['timezone'];
-       $userinfo['usedst'] = $bugsys->in['usedst'];
-       $userinfo['hidestatuses'] = $bugsys->in['hidestatuses'];
-       $userinfo['defaultsorkey'] = $bugsys->in['defaultsorkey'];
-       $userinfo['defaultsortas'] = $bugsys->in['defaultsortas'];
-       $userinfo['columnoptions'] = $bugsys->in['columnoptions'];
+       $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 = $bugsys->in['email_change'];
-       $email_confirm = $bugsys->in['email_confirm'];
+       $email = $input->in['email_change'];
+       $email_confirm = $input->in['email_confirm'];
        
        // -------------------------------------------------------------------
        // error handling
@@ -176,11 +172,11 @@ if ($_POST['do'] == 'update')
        {
                $userapi->update();
                
-               $db->query("DELETE FROM " . TABLE_PREFIX . "useremail WHERE userid = " . $bugsys->userinfo['userid']);
-               $bugsys->input_clean('emailopts', TYPE_INT);
-               if (is_array($bugsys->in['emailopts']))
+               $db->query("DELETE FROM " . TABLE_PREFIX . "useremail WHERE userid = " . bugdar::$userinfo['userid']);
+               $input->inputClean('emailopts', TYPE_INT);
+               if (is_array($input->in['emailopts']))
                {
-                       foreach ($bugsys->in['emailopts'] AS $relation => $bitarr)
+                       foreach ($input->in['emailopts'] AS $relation => $bitarr)
                        {
                                $bitmask = 0;
                                if (is_array($bitarr))
@@ -190,7 +186,7 @@ if ($_POST['do'] == 'update')
                                                $bitmask += $option * $yes;
                                        }
                                }
-                               $db->query("INSERT INTO " . TABLE_PREFIX . "useremail (userid, relation, mask) VALUES (" . $bugsys->userinfo['userid'] . ", $relation, $bitmask)");
+                               $db->query("INSERT INTO " . TABLE_PREFIX . "useremail (userid, relation, mask) VALUES (" . bugdar::$userinfo['userid'] . ", $relation, $bitmask)");
                        }
                }
                
@@ -205,26 +201,31 @@ 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($bugsys->datastore['status']) < 8 ? sizeof($bugsys->datastore['status']) + 1 : 8);
+       $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)
+       foreach ($datef->fetch_timezone_list() as $value => $label)
        {
-               $selected = ($value == $userinfo['timezone']);
-               eval('$tzselect .= "' . $template->fetch('selectoption') . '";');
+               $tpl = new BSTemplate('selectoption');
+               $tpl->vars = array(
+                       'value'         => $value,
+                       'label'         => $label,
+                       'selected'      => ($value == $userinfo['timezone'])
+               );
+               $tzselect .= $tpl->evaluate()->getTemplate();
        }
        
        $checked = array();
-       if (!is_array($bugsys->in['emailopts']))
+       if (!is_array($input->in['emailopts']))
        {
-               $options = $db->query("SELECT * FROM " . TABLE_PREFIX . "useremail WHERE userid = " . $bugsys->userinfo['userid']);
-               while ($opt = $db->fetch_array($options))
+               $options = $db->query("SELECT * FROM " . TABLE_PREFIX . "useremail WHERE userid = " . bugdar::$userinfo['userid']);
+               foreach ($options as $opt)
                {
-                       foreach ($bugsys->emailoptions['notifications'] AS $name => $notif)
+                       foreach (bugdar::$emailOptions['notifications'] AS $name => $notif)
                        {
-                               foreach ($bugsys->emailoptions['relations'] AS $name => $relation)
+                               foreach (bugdar::$emailOptions['relations'] AS $name => $relation)
                                {
                                        if ($opt['mask'] & $notif AND $opt['relation'] == $relation)
                                        {
@@ -236,7 +237,7 @@ if ($_REQUEST['do'] == 'modify')
        }
        else
        {
-               $checked = $bugsys->in['emailopts'];
+               $checked = $input->in['emailopts'];
                foreach ($checked AS $key1 => $value1)
                {
                        foreach ($value1 AS $key2 => $value2)
@@ -252,45 +253,66 @@ if ($_REQUEST['do'] == 'modify')
        $columns = array();
        $columnOptions = '';
        require_once('./includes/class_sort.php');
-       if (!is_array($bugsys->in['columnoptions']))
+       if (!is_array($input->in['columnoptions']))
        {
                foreach (ListSorter::fetch_by_text(false) AS $column => $name)
                {
-                       if (is_array($bugsys->userinfo['columnoptions']))
+                       if (is_array(bugdar::$userinfo['columnoptions']))
                        {
-                               $columns["$column"] = $bugsys->userinfo['columnoptions']["$column"];
+                               $columns["$column"] = bugdar::$userinfo['columnoptions']["$column"];
                        }
                        else
                        {
-                               $columns["$column"] = $bugsys->options['columnoptions']["$column"];
+                               $columns["$column"] = bugdar::$options['columnoptions']["$column"];
                        }
-                       eval('$columnOptions .= "' . $template->fetch('userctrl_column') . '";');
+                       $tpl = new BSTemplate('userctrl_column');
+                       $tpl->vars = array(
+                               'columns'       => $columns,
+                               'column'        => $column,
+                               'name'          => $name
+                       );
+                       $columnOptions .= $tpl->evaluate()->getTemplate();
                }
        }
        else
        {
-               $columns = $bugsys->in['columnoptions'];
-               foreach (ListSorter::fetch_by_text(false) AS $column => $name)
+               $columns = $input->in['columnoptions'];
+               foreach (ListSorter::fetch_by_text(false) as $column => $name)
                {
-                       eval('$columnOptions .= "' . $template->fetch('userctrl_column') . '";');
+                       $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 = " . $bugsys->userinfo['userid']);
-       while ($search = $db->fetch_array($searchesFetch))
+       $searchesFetch = $db->query("SELECT * FROM " . TABLE_PREFIX . "search WHERE name IS NOT NULL AND userid = " . bugdar::$userinfo['userid']);
+       foreach ($searchesFetch as $search)
        {
-               eval('$searches .= "' . $template->fetch('userctrl_search') . '";');
+               $tpl = new BSTemplate('userctrl_search');
+               $tpl->vars = array('search' => $search);
+               $searches .= $tpl->evaluate()->getTemplate();
        }
        
-       eval('$template->flush("' . $template->fetch('userctrl') . '");');
+       $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();
 }
 
-/*=====================================================================*\
-|| ###################################################################
-|| # $HeadURL$
-|| # $Id$
-|| ###################################################################
-\*=====================================================================*/
 ?>
\ No newline at end of file