コード例 #1
0
 function storeDatabaseValue($name, $value, $triggers = true)
 {
     global $_CB_framework, $_PLUGINS;
     if ($this->id && isset($this->{$name})) {
         $ui = $_CB_framework->getUi();
         $user = new moscomprofilerUser($this->_db);
         $oldUserComplete = new moscomprofilerUser($this->_db);
         foreach (array_keys(get_object_vars($this)) as $k) {
             if (substr($k, 0, 1) != '_') {
                 $user->{$k} = $this->{$k};
                 $oldUserComplete->{$k} = $this->{$k};
             }
         }
         if ($name != 'password') {
             $user->password = null;
         }
         // In case of Password, save cleartext value for the onAfter event:
         $currentvalue = $user->{$name};
         if ($triggers) {
             if ($ui == 1) {
                 $_PLUGINS->trigger('onBeforeUserUpdate', array(&$user, &$user, &$oldUserComplete, &$oldUserComplete));
             } elseif ($ui == 2) {
                 $_PLUGINS->trigger('onBeforeUpdateUser', array(&$user, &$user, &$oldUserComplete));
             }
         }
         // In case of Password, hashed value:
         $user->{$name} = $value;
         $return = $user->store();
         if ($name == 'password') {
             // In case of Password, cleartext value for the onAfter event:
             $user->{$name} = $currentvalue;
         }
         if ($triggers) {
             if ($return) {
                 if ($ui == 1) {
                     $_PLUGINS->trigger('onAfterUserUpdate', array(&$user, &$user, $oldUserComplete));
                 } elseif ($ui == 2) {
                     $_PLUGINS->trigger('onAfterUpdateUser', array(&$user, &$user, $oldUserComplete));
                 }
             }
         }
         // Check if error is present in temporary user object:
         $error = $user->getError();
         if ($error) {
             // Pass error to current user object so can be output properly:
             $this->_error = $error;
         }
         unset($user, $oldUserComplete);
         return $return;
     }
     return false;
 }