| // +---------------------------------------------------------------------------+ // $Id$ require_once SGL_MOD_DIR . '/user/classes/PreferenceMgr.php'; /** * Manages user preferences. * * @package User * @author Demian Turner * @version $Revision: 1.26 $ */ class UserPreferenceMgr extends PreferenceMgr { var $aThemes = array(); var $aDateFormats = array(); var $aTimeouts = array(); var $aResPerPage = array(); function UserPreferenceMgr() { SGL::logMessage(null, PEAR_LOG_DEBUG); parent::PreferenceMgr(); $this->template = 'prefUserEdit.html'; $this->pageTitle = 'User Preferences'; $this->_aActionsMapping = array( 'editAll' => array('editAll'), 'updateAll' => array('updateAll', 'redirectToDefault'), ); } function validate($req, &$input) { SGL::logMessage(null, PEAR_LOG_DEBUG); $this->validated = true; $input->pageTitle = $this->pageTitle; $input->masterTemplate = $this->masterTemplate; $input->template = $this->template; $input->submitted = $req->get('submitted'); $input->action = ($req->get('action')) ? $req->get('action') : 'editAll'; $input->aPrefs = $req->get('prefs'); } function _cmd_editAll(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $output->aDateFormats = $this->aDateFormats; $output->aThemes = $this->aThemes; $output->aTimeouts = $this->aTimeouts; $output->aResPerPage = $this->aResPerPage; $output->prefs = $_SESSION['aPrefs']; } function _cmd_updateAll(&$input, &$output) { SGL::logMessage(null, PEAR_LOG_DEBUG); $uid = SGL_Session::getUid(); $query1 = " DELETE FROM {$this->conf['table']['user_preference']} WHERE usr_id = " . $uid; $ok = $this->dbh->query($query1); // get prefName/id mapping $aMapping = $this->da->getPrefsMapping(); foreach ($input->aPrefs as $prefName => $prefValue) { $query2 =" INSERT INTO {$this->conf['table']['user_preference']} ( user_preference_id, usr_id, preference_id, value) VALUES(" . $this->dbh->nextId($this->conf['table']['user_preference']) . ", $uid, $aMapping[$prefName], '$prefValue' )"; $res = $this->dbh->query($query2); if (PEAR::isError($res)) { SGL::raiseError('Error inserting prefs, exiting ...', SGL_ERROR_NODATA, PEAR_ERROR_DIE); } } // sync to session unset($_SESSION['aPrefs']); $_SESSION['aPrefs'] = $this->da->getPrefsByUserId($uid); SGL::raiseMsg('details successfully updated', true, SGL_MESSAGE_INFO); } } ?>