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;
 }
Example #2
0
 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);
 }
Example #3
0
 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;
 }