/** * Constructor * * @param Zend_Db_Adapter_Abstract $db * @param int $user_id * @param int $post_id */ public function __construct($db, $user_id, $post_id = 0) { $this->db = $db; $this->user = new Default_Model_DbTable_User($db); $this->user->load($user_id); $this->post = new Default_Model_DbTable_BlogPost($db); $this->post->loadForUser($this->user->getId(), $post_id); if (!$this->post->isSaved()) { $this->post->user_id = $this->user->getId(); } parent::__construct(); }
/** * Action - registration * User Registration on the site * * Access to the action is possible in the following paths: * - /account/registration * * @return void */ public function registerAction() { $result = true; //---------------------- // Инициализируем форму регистрации $formRegister = new Default_Form_UserRegistration(); // Проверим тип запроса, если POST значит пришли данные формы if ($this->_request->isPost()) { // Проверяем на валидность поля формы $result = $formRegister->isValid($this->_getAllParams()); if ($result) { // Сохраним данные пользователя // и перейдем на действие завершения регистрации //Создадим пользователя и установим его данные $user = new Default_Model_DbTable_User($this->db); $user->username = $formRegister->getValue('username'); $user->profile->first_name = $formRegister->getValue('first_name'); $user->profile->last_name = $formRegister->getValue('last_name'); $user->profile->email = $formRegister->getValue('email'); //Сохраним данные пользователя if ($user->save()) { //Сохраним в сессии признак регистрации пользователя $session = new Zend_Session_Namespace('registration'); $session->user_id = $user->getId(); //Перейдем к завершению регистрации $this->_redirect('/account/registercomplete'); } else { // Запишем в лог событие об ошибочной регистрации $username = $formRegister->getValue('username'); $first_name = $formRegister->getValue('first_name'); $last_name = $formRegister->getValue('last_name'); $email = $formRegister->getValue('email'); $message = sprintf('Error registering! Can not save in the database or transmission registration data by e-mail: User Login - "%s"; First Name - "%s"; Last Name - "%s"; E-Mail - "%s".', $username, $first_name, $last_name, $email); // Запомним в логе сообщений $this->_logMsg->reg_err($message); } } else { //неверно заполнена форма!!! $errMessages = $this->getFormMessages($formRegister); $strMessage = var_export($errMessages, true); // Запишем в лог событие об ошибочной регистрации $username = $formRegister->getValue('username'); $first_name = $formRegister->getValue('first_name'); $last_name = $formRegister->getValue('last_name'); $email = $formRegister->getValue('email'); $message = sprintf('Error registering! User data: User Login - "%s"; First Name - "%s"; Last Name - "%s"; E-Mail - "%s".', $username, $first_name, $last_name, $email); $message .= "\n\n" . $strMessage; // Запомним в логе сообщений $this->_logMsg->reg_err($message); $this->view->class_message = 'warning'; $this->view->message = $errMessages; } } // Передаем форму в скрипт вида $this->view->formRegister = $formRegister; //Добавим путь к действию $this->_breadcrumbs->addStep($this->Translate('Создать профиль')); }
/** * Action - comments * actions for user comments * * Access to the action is possible in the following paths: * шаблон раутера - user/:username/post/:post_id/comments/* * * - /user/user1/post/27/comments * * @return void */ public function commentsAction() { $json = array(); $result = TRUE; //----------------------- // Получим обьект запроса $request = $this->getRequest(); $params = $request->getParams(); $type_action = $params['type_action']; $post_id = (int) $request->getUserParam('post_id'); $username = trim($request->getUserParam('username')); try { if ($type_action == 'delete') { // Удалим комментарий // Получим массив комментариев для удаления $comment_ids = $params["comment_ids"]; $comment_ids = Zend_Json::decode($comment_ids); $parent_comment_id = $comment_ids[0]; // Удалим комментарии из базы данных $comment = new Default_Model_DbTable_BlogPostComment($this->db); foreach ($comment_ids as $comment_id) { if ($comment->loadForPost($post_id, $comment_id)) { $comment->delete(); } else { $result = FALSE; break; } } if ($result) { $json = array('deleted' => true, 'result' => $this->Translate('Комментарий удален из сообщения блога'), 'comment_id' => $parent_comment_id); } else { $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при добавлении / удалении комментария в блог') . '</em>')); } } else { if ($type_action == 'add' || $type_action == 'reply' || $type_action == 'edit') { // Добавим/изменим комментарий на сообщение $allParams = $this->_getAllParams(); $reply_id = $params["reply_id"]; $formAddComment = new Default_Form_AddComment($username, $post_id); $result = $formAddComment->isValid($allParams); if ($result) { $comment = new Default_Model_DbTable_BlogPostComment($this->db); if ($type_action == 'edit') { if ($comment->loadForPost($post_id, $reply_id)) { $comment->comment = $formAddComment->getValue('ckeditor_comment'); } else { $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>')); } } else { $comment->user_id = $this->_identity->user_id; $comment->post_id = $post_id; $comment->reply_id = $reply_id; $comment->comment = $formAddComment->getValue('ckeditor_comment'); } if ($comment->save()) { if ($type_action == 'edit') { $html = $formAddComment->getValue('ckeditor_comment'); $result = $this->Translate('Комментарий изменен'); } else { // Получим параметр для шаблона $treeComments = Default_Model_DbTable_BlogPostComment::getTreeComments($this->db, $this->user->getId(), array('post_id' => $post_id, 'comment_id' => $comment->getId())); // Создадим обьект шаблона $templater = Default_Plugin_SysBox::createViewSmarty(); //Установим параметры шаблона $templater->treeComments = $treeComments; $templater->authenticated = true; $templater->isAdmin = $this->_isAdmin; $templater->identity = $this->_identity; // Получим результат шаблона $html = $templater->render('user/lib/comment-item.tpl'); $result = $this->Translate('Добавлен комментарий к сообщению блога'); } $json = array('added' => true, 'result' => $result, 'comment_id' => $comment->getId(), 'html' => $html); } else { // Ошибка записи в базу данных $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>')); } } else { // неверно заполнены поля формы $json = array('class_message' => 'warning', 'messages' => $this->getFormMessages($formAddComment)); } } } } catch (Exception $e) { $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при добавлении / удалении комментария в блог') . '</em>', Default_Plugin_SysBox::getMessageError($e))); } $this->sendJson($json); }