public static function &instance($username = EGS_USERNAME) { static $instance; if ($instance == NULL) { $instance = new ManagedUserPreferences(); if (empty($username)) { $instance->loggedin = FALSE; } else { $instance->username = $username; $instance->loggedin = TRUE; } $instance->initialise(); } return $instance; }
public function save_preferences() { if (!$this->loadData()) { $this->dataError(); sendBack(); } $user = $this->_uses[$this->modeltype]; $classname = ucfirst($this->_data['__moduleName']) . 'Preferences'; $module = new $classname(true, 'ManagedUserPreferences', $user->username); $preferenceNames = $module->getPreferenceNames(); $flash = Flash::Instance(); $userPreferences = ManagedUserPreferences::instance($username); // FIXME: Validate incomming data against supplied values foreach ($preferenceNames as $preferenceName) { if (isset($this->_data[$preferenceName])) { $pref = $module->getPreference($preferenceName); if (isset($pref['type']) && $pref['type'] == 'numeric') { if (!is_numeric($this->_data[$preferenceName])) { $flash->addError($pref['display_name'] . ' must be numeric'); continue; } } $userPreferences->setPreferenceValue($preferenceName, $this->_data['__moduleName'], $this->_data[$preferenceName]); } else { $preference = $module->getPreference($preferenceName); switch ($preference['type']) { case 'checkbox': $userPreferences->setPreferenceValue($preferenceName, $this->_data['__moduleName'], 'off'); break; case 'select_multiple': $userPreferences->setPreferenceValue($preferenceName, $this->_data['__moduleName'], array()); break; } } } $handled = $module->getHandledPreferences(); foreach ($handled as $name => $preference) { if (!empty($this->_data[$name]) && isset($preference['callback'])) { $callback = array($module, $preference['callback']); call_user_func($callback, $this->_data); } } // Do stuff. if (!is_null($user->person)) { $name = $user->person; } else { $name = $user->username; } $flash->addMessage(prettify($this->_data['__moduleName']) . ' preferences for ' . $name . ' saved successfully'); sendTo($this->name, 'index', $this->_modules); }
static function getPreferencesClass($username = EGS_USERNAME) { if ($username == EGS_USERNAME) { // get preferences for logged in user $prefs =& UserPreferences::instance($username); } else { // get preferences for named user $prefs =& ManagedUserPreferences::instance($username); } return $prefs; }