Пример #1
0
 /**
  * Select layout
  * 
  * @param integer $layoutId
  * @param integer $userId
  * @return boolean|string
  */
 public function selectLayout($layoutId, $userId)
 {
     try {
         $this->adapter->getDriver()->getConnection()->beginTransaction();
         $update = $this->update()->table('user_list')->set(['layout' => $layoutId])->where(['user_id' => $userId]);
         $statement = $this->prepareStatementForSqlObject($update);
         $statement->execute();
         // clear a cache
         $this->removeUserCache($userId);
         $this->adapter->getDriver()->getConnection()->commit();
     } catch (Exception $e) {
         $this->adapter->getDriver()->getConnection()->rollback();
         ApplicationErrorLogger::log($e);
         return $e->getMessage();
     }
     // fire the edit user event
     UserEvent::fireUserEditEvent($userId, true);
     return true;
 }
Пример #2
0
 /**
  * Edit user
  *
  * @param array $userInfo
  * @param array $formData
  *      string nick_name required
  *      string slug optional
  *      string email required
  *      string password optional
  *      string time_zone optional
  * @param boolean $statusApproved
  * @param array $avatar
  * @param boolean $deleteAvatar
  * @param boolean $selfEdit
  * @return boolean|string
  */
 public function editUser($userInfo, array $formData, $statusApproved = true, array $avatar = [], $deleteAvatar = false, $selfEdit = false)
 {
     try {
         $this->adapter->getDriver()->getConnection()->beginTransaction();
         $extraValues = ['status' => $statusApproved ? self::STATUS_APPROVED : self::STATUS_DISAPPROVED, 'date_edited' => date('Y-m-d')];
         // generate a new slug
         if (empty($formData['slug'])) {
             $extraValues['slug'] = $this->generateSlug($userInfo['user_id'], $formData['nick_name'], 'user_list', 'user_id', self::USER_SLUG_LENGTH);
         }
         // regenerate the user's password
         if (!empty($formData['password'])) {
             $extraValues = array_merge($extraValues, ['password' => $this->generatePassword($formData['password'])]);
         } else {
             // remove the empty password
             unset($formData['password']);
         }
         if (!$formData['time_zone']) {
             $formData['time_zone'] = null;
         }
         $update = $this->update()->table('user_list')->set(array_merge($formData, $extraValues))->where(['user_id' => $userInfo['user_id']]);
         $statement = $this->prepareStatementForSqlObject($update);
         $statement->execute();
         // upload the user's avatar
         $this->uploadAvatar($userInfo['user_id'], $avatar, $userInfo['avatar'], $deleteAvatar);
         // clear caches
         $this->removeUserCache($userInfo['user_id']);
         $this->clearActiveUsersCache();
         $this->adapter->getDriver()->getConnection()->commit();
     } catch (Exception $e) {
         $this->adapter->getDriver()->getConnection()->rollback();
         ApplicationErrorLogger::log($e);
         return $e->getMessage();
     }
     // fire the edit user event
     UserEvent::fireUserEditEvent($userInfo['user_id'], $selfEdit);
     return true;
 }