Example #1
0
 /**
  * Set user's status
  *
  * @param integer $userId
  * @param boolean $approved
  * @param array $userInfo
  * @param string $selfUserName
  * @return boolean|string
  */
 public function setUserStatus($userId, $approved = true, array $userInfo, $selfUserName = null)
 {
     try {
         $this->adapter->getDriver()->getConnection()->beginTransaction();
         $update = $this->update()->table('user_list')->set(['status' => $approved ? self::STATUS_APPROVED : self::STATUS_DISAPPROVED, 'activation_code' => null, 'date_edited' => date('Y-m-d')])->where(['user_id' => $userId])->where([new NotInPredicate('user_id', [self::DEFAULT_USER_ID])]);
         $statement = $this->prepareStatementForSqlObject($update);
         $statement->execute();
         // clear caches
         $this->removeUserCache($userId);
         $this->clearActiveUsersCache();
         $this->adapter->getDriver()->getConnection()->commit();
     } catch (Exception $e) {
         $this->adapter->getDriver()->getConnection()->rollback();
         ApplicationErrorLogger::log($e);
         return $e->getMessage();
     }
     true === $approved ? UserEvent::fireUserApproveEvent($userId, $userInfo, $selfUserName) : UserEvent::fireUserDisapproveEvent($userId, $userInfo);
     return true;
 }