/** * Возвращает информацию о текущем пользователе * * @return array */ public function getCurrentUserInfo() { $User = new Phorm_User($this->_bootstrap); $token = $this->_bootstrap->getResource('Request')->getCookie('token'); /** * Проверяем негостевые данные в сессии */ if (isset($this->_usersession->UserData) && $this->_usersession->UserData['userid'] > 0) { return $this->_usersession->UserData; /** * Проверяем токен в куках */ } elseif ($token && ($UserData = $User->getUserInfo(array('tokenauth' => $token)))) { $User->saveUserInfo(array('userid' => $UserData['userid'], 'lastvisit' => time(), 'lastip' => $this->_request->getClientIp())); return $UserData; /** * Гостевые данные из существующий сессии */ } elseif (isset($this->_usersession->UserData)) { return $this->_usersession->UserData; /** * Гостевые данные при новой сессии без токена */ } else { return $User->getUserInfo(array('userid' => 0)); } }
/** * Редактирование собственного профиля * * @return void */ public function profileAction() { if ($this->_usersession->UserData['userid'] > 0 && ($UserInfo = $this->User->getUserInfo(array('userid' => $this->_usersession->UserData['userid'])))) { $form = $this->User->getProfileForm(); $form->setDefaults($UserInfo); if ($this->_request->isPost()) { $FormData = $this->_request->getPost(); // Нередактируемые поля $FormData['userid'] = $UserInfo['userid']; $FormData['username'] = $UserInfo['username']; if ($form->isValid($FormData)) { $FormData = $form->getValues(); unset($FormData['signed'], $FormData['lastvisit']); if ($FormData = $this->User->saveUserInfo($FormData)) { $this->User->_usersession->UserData = $this->User->getUserInfo(array('userid' => $FormData['userid'])); return $this->composeSuccessMessage('Изменения внесены', '/users/profile/'); } else { $this->composeTransactionErrorMessage($this->User->_errors); } } } $this->view->assign('Form', $form); } else { return $this->composeErrorMessage('Пользователь с указанным Id не найден', '/users/'); } }