/** * 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; }
/** * 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; }