/** * Action - details * detailed information about the user * * Access to the action is possible in the following paths: * - /account/details * * @return void */ public function detailsAction() { $changedPass = false; $auth = Zend_Auth::getInstance(); //------------------------------- //Создадим форму редактирования личных данных пользователя //что бы редактировать свои данных пользователь уже должен войти на сайт if ($this->_identity) { $formUserDetails = new Default_Form_UserDetails(); } else { $class_message = 'warning'; $message = $this->Translate('У вас недостаточно прав на этот ресурс'); $url = "/account/login?class_message={$class_message}&message={$message}"; $this->_redirect($url); } // Проверяем тип запроса, если POST значит пришли данные формы if ($this->_request->isPost()) { // Проверяем на валидность поля формы $result = $formUserDetails->isValid($this->_getAllParams()); if ($result) { //Получим данные о пользователе $user = new Default_Model_DbTable_User($this->db); $user->load($this->_identity->user_id); //Обновим личные данные пользователя $user->profile->first_name = $formUserDetails->getValue('first_name'); $user->profile->last_name = $formUserDetails->getValue('last_name'); $user->profile->email = $formUserDetails->getValue('email'); if (!$this->_isCommentator) { //Настройки профиля $user->profile->num_posts = $formUserDetails->getValue('num_posts'); $user->profile->blog_public = $formUserDetails->getValue('blog_public'); //Публичные данные пользователя $user->profile->public_first_name = $formUserDetails->getValue('public_first_name'); $user->profile->public_last_name = $formUserDetails->getValue('public_last_name'); $user->profile->public_email = $formUserDetails->getValue('public_email'); $user->profile->public_home_phone = $formUserDetails->getValue('public_home_phone'); $user->profile->public_work_phone = $formUserDetails->getValue('public_work_phone'); $user->profile->public_mobile_phone = $formUserDetails->getValue('public_mobile_phone'); } $password = $formUserDetails->getValue('password'); $password_approve = $formUserDetails->getValue('password_approve'); if (strlen($password) > 0 && strlen($password_approve) > 0) { $user->password = $password; $changedPass = TRUE; } //Проверим ошибочную ситуацию if (strlen($password) > 0 && strlen($password_approve) == 0) { $this->view->class_message = 'warning'; $this->view->message = array($this->Translate('Ошибка формы! Неверно введены данные в форму.'), $this->Translate('При заполненном поле пароль, поле формы подтверждение пароля не должно быть пустым.')); $this->view->formUserDetails = $formUserDetails; return; } //Запомним данные пользователя if ($user->save()) { //Обновим данные идентификации пользователя $auth->getStorage()->write($user->createAuthIdentity()); // Запомним в логе сообщений $message = "The user-\"{$user->username}\" has changed their details."; if ($changedPass) { $message .= " Password has been changed."; } $this->_logMsg->details_ok($message); $this->_redirect('/account/detailscomplete'); } else { $this->view->class_message = 'warning'; $this->view->message = array($this->Translate('Ошибка изменения детальной информации пользователя') . '!', $this->Translate('Ошибка базы данных при сохранении информации')) . '.'; $this->view->formUserDetails = $formUserDetails; return; } } else { // неверно заполнены поля формы!!!!!!! $this->view->class_message = 'warning'; //$message = $this->getFormMessages($formUserDetails); //$this->view->message = $message['warning']; $this->view->message = $this->getFormMessages($formUserDetails); } } else { //Установим значения формы по умолчанию //--- Личные данные пользователя --- $formUserDetails->setDefault('email', $this->_identity->email); $formUserDetails->setDefault('first_name', $this->_identity->first_name); $formUserDetails->setDefault('last_name', $this->_identity->last_name); //--- Настройки профиля --- //Установим кол. записей отображаемых в блоге $formUserDetails->setDefault('num_posts', $this->_identity->num_posts); //Установим признак публикации записей для доступа к ним других пользователей $formUserDetails->setDefault('blog_public', $this->_identity->blog_public); //--- Публичные данные пользователя --- $formUserDetails->setDefault('public_first_name', $this->_identity->public_first_name); $formUserDetails->setDefault('public_last_name', $this->_identity->public_last_name); $formUserDetails->setDefault('public_email', $this->_identity->public_email); $formUserDetails->setDefault('public_home_phone', $this->_identity->public_home_phone); $formUserDetails->setDefault('public_work_phone', $this->_identity->public_work_phone); $formUserDetails->setDefault('public_mobile_phone', $this->_identity->public_mobile_phone); } $this->view->formUserDetails = $formUserDetails; //Добавим путь к действию $this->_breadcrumbs->addStep($this->Translate('Редактировать профиль')); }