/**
  * 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('Редактировать профиль'));
 }