/** * Добавление комнаты чата: */ public function addAction(Application $application, Template $template) { $session = Session::getInstance(); $this['form_errors'] = array(); $this['blog_form'] = array(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $validator = new ValidatorHelper($_POST); $validator->assertExists('captcha_key', 'Введите капчу'); if ($_POST['captcha_key']) { $validator->assertEqual('captcha', $session->instantGet('captcha_' . $_POST['captcha_key'], false), 'Капча введена неверно'); } $validator->assertExists('title', 'Не введен заголовок'); $validator->assertLength('title', 25, 'Заголовок слишком длинный'); $validator->assertExists('description', 'Не введен вводный текст'); $validator->assertLength('description', 75, 'Вводный текст слишком длинный'); $validator->assertExists('controlword', 'Не введен контрольный пароль'); if ($validator->fieldValid('title')) { $validator->assertLengthMore('title', 3, 'Заголовок слишком короткий'); } if ($validator->fieldValid('description')) { $validator->assertLengthMore('description', 5, 'Описание слишком короткое'); } if ($validator->fieldValid('controlword')) { $validator->assertLengthMore('controlword', 3, 'Контрольный пароль слишком короткий'); } $validator->assertNotExists('email', 'Заполнено лишнее поле'); if ($validator->isValid()) { $id = Chat_ChatRoomsModel::CreateRoom($_POST); $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/chat/' . $id . '/'); return false; } $this['form_errors'] = $validator->getValidationResults(); $this['blog_form'] = $_POST; } $key = 'chat'; $template->setParameter('captcha_key', $key); $session->instantSet('captcha_' . $key, true); $template->setParameter('title', 'Добавление комнаты чата'); $template->setParameter('section', 'add'); return true; }
/** * Действие добавление комментария: */ public function addCommentAction(Application $application, Template $template) { $session = Session::getInstance(); $settings = ControlModel::GetSettings(); if ($session->isJustCreated()) { return false; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $text_test = ControlModel::checkContent($_POST['text']); $validator = new ValidatorHelper($_POST); if (ControlModel::isCommentCaptcha()) { $validator->assertExists('captcha_key', 'Введите капчу'); if ($_POST['captcha_key']) { $validator->assertEqual('captcha', $session->instantGet('captcha_' . $_POST['captcha_key'], false), 'Капча введена неверно'); } } $validator->assertExists('text', 'Не введен текст комментария'); $validator->assertExists('post_id', 'Не указан идентификатор поста'); $validator->assertLength('text', 2048, 'Текст комментария слишком длинный'); $validator->assertNotExists('email', 'Заполнено лишнее поле'); $validator->assertTrue('text', $text_test, 'Запрещенное слово из вордфильтра'); $validator->assertTrue('timeout', ControlModel::getPostCommentInterval() == 0, 'Таймаут ' . TemplateHelper::ending(ControlModel::getPostCommentInterval(), 'секунда', 'секунды', 'секунд')); if ($validator->isValid()) { $id = Blog_BlogCommentsModel::CreateComment($_POST, true); $session->activeSet('last_visit_post_' . $_POST['post_id'], time()); $session->persistenceSet('captcha_mode', false); $session->persistenceSet('captcha_mode_length', @$settings['captcha_length']); $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $_GET['post_id'] . '/#' . $id); return false; } $session->instantSet('comment_errors', $validator->getValidationResults()); $session->instantSet('comment_form', $_POST); $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $_GET['post_id'] . '/#comment_form'); return false; } $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/news/'); return false; }
/** * Создание поста (форма ajax): */ public function createPostAjaxFormAction(Application $application, Template $template) { $board = new Board_BoardModel($_GET['board']); $session = Session::getInstance(); if ($session->isJustCreated()) { return false; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $validator = new ValidatorHelper($_POST); if (!array_key_exists('upload', $_FILES) || $_FILES['upload']['error'] == 4) { $validator->assertExists('text', $_GET['board'] != 'int' ? 'Не введен текст' : 'Please enter the message'); } $validator->assertLength('text', 2048, $_GET['board'] != 'int' ? 'Текст слишком длинный' : 'Post\'s text is too long'); $validator->assertNotExists('email', $_GET['board'] != 'int' ? 'Заполнено лишнее поле' : 'Spam omitted'); $validator->assertTrue('timeout', ControlModel::getBoardPostInterval() == 0, $_GET['board'] != 'int' ? 'Таймаут ' . TemplateHelper::ending(ControlModel::getBoardPostInterval(), 'секунда', 'секунды', 'секунд') : ControlModel::getBoardPostInterval() . ' seconds timeout'); if ($validator->fieldValid('timeout')) { ControlModel::checkBoardPost($_POST['text']); } if (ControlModel::isCommentCaptcha()) { $validator->assertLengthMore('captcha', 1, $_GET['board'] != 'int' ? 'Не введена капча' : 'Please enter the Captcha code'); if ($validator->fieldValid('captcha')) { $validator->assertEqual('captcha', $session->instantGet('captcha_board_comment', false), $_GET['board'] != 'int' ? 'Капча введена неверно' : 'Captcha code is incorrect'); } } $validator->assertTrue('text', ControlModel::checkSpam($_POST['text']), $_GET['board'] != 'int' ? 'Ваше сообщение определено, как спам' : 'Spam message was detected'); $validator->assertTrue('upload', Board_UploadModel::checkUpload(), $_GET['board'] != 'int' ? 'Ошибка загрузки изображения' : 'File upload error'); $session->instantSet('captcha_board_comment', true); if ($validator->isValid()) { $id = $board->createPost($_POST['parent_id'], $_POST); $session->persistenceSet('captcha_mode', false); $session->persistenceSet('captcha_mode_length', @$settings['captcha_length']); $template->renderJSONP('comment_callback', array('sucess' => true, 'id' => $id)); return false; } $template->renderJSONP('comment_callback', array('success' => false, 'errors' => $validator->getValidationResults())); } return false; }