Exemplo n.º 1
0
 /**
  * Действие оцениваемого поста:
  */
 public function rateablePostAjaxAction(Application $application)
 {
     if (!Session::getInstance()->isModeratorSession()) {
         return false;
     }
     $post = Blog_BlogPostsModel::GetPost($_GET['id']);
     if ($post && ControlModel::checkModrights($post['category'])) {
         Blog_BlogPostsModel::RateablePost($_GET['id'], !$post['rateable'], date("d-m-Y H:i:s") . ' ' . $_SESSION['auth']['name'] . (!$post['rateable'] ? ' сделал оцениваемым' : ' сделал неоцениваемым') . ' пост.');
         ControlModel::logModEvent(date("d-m-Y H:i:s") . ' ' . $_SESSION['auth']['name'] . '<br />' . (!$post['rateable'] ? ' сделал оцениваемым' : ' сделал неоцениваемым') . ' пост <a href="http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/" class="js-cross-link">&gt;&gt;' . $post['id'] . '</a>');
         JabberBot::send('-=$ /me (модлог) ' . $_SESSION['auth']['name'] . (!$post['rateable'] ? ' сделал оцениваемым' : ' сделал неоцениваемым') . ' пост http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/');
     }
     return true;
 }
Exemplo n.º 2
0
 /**
  * Действие добавления поста:
  */
 public function addPostAction(Application $application, Template $template)
 {
     $session = Session::getInstance();
     $settings = ControlModel::GetSettings();
     if ($session->isJustCreated()) {
         return false;
     }
     if (!$session->persistenceGet('rules_accepted')) {
         $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/help/news/?confirm');
     }
     $this['form_errors'] = array();
     $this['blog_form'] = array();
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         $text_test = ControlModel::checkContent($_POST['text']);
         $text_full_test = ControlModel::checkContent($_POST['text_full']);
         $validator = new ValidatorHelper($_POST);
         if (ControlModel::isPostCaptcha()) {
             $validator->assertExists('captcha_key', 'Введите капчу');
             if ($_POST['captcha_key']) {
                 $validator->assertEqual('captcha', $session->instantGet('captcha_' . $_POST['captcha_key'], false), 'Капча введена неверно');
             }
         }
         $validator->assertExists('title', 'Не введен заголовок');
         $validator->assertLength('title', 70, 'Заголовок слишком длинный');
         $validator->assertExists('text', 'Не введен вводный текст');
         $validator->assertLength('text', 1024, 'Вводный текст слишком длинный');
         if (!$session->isModeratorSession()) {
             $validator->assertLength('text_full', 5096, 'Подробный текст слишком длинный');
         }
         $validator->assertNotExists('email', 'Заполнено лишнее поле');
         if ($validator->fieldValid('title')) {
             $validator->assertLengthMore('title', 3, 'Заголовок слишком короткий');
         }
         if ($validator->fieldValid('text')) {
             $validator->assertLengthMore('text', 15, 'Вводный текст слишком короткий');
         }
         if ($validator->fieldValid('title')) {
             $validator->assertTrue('title', mb_substr($_POST['title'], -1, 1, 'UTF-8') != '.', 'Точка в конце заголовка');
         }
         $validator->assertTrue('text', $text_test && $text_full_test, 'Запрещенное слово из вордфильтра');
         $validator->assertTrue('timeout', ControlModel::getPostInterval() == 0, 'Таймаут ' . TemplateHelper::ending(ControlModel::getPostInterval(), 'секунда', 'секунды', 'секунд'));
         if ($_POST['link'] != '') {
             $validator->assertRegexp('link', ValidatorHelper::URL_REGEXP, 'Ссылка введена неверно');
         }
         if ($validator->fieldValid('link')) {
             $validator->assertTrue('link', ControlModel::CheckLinkfilter($_POST['link']) == false, 'Ссылка запрещена');
         }
         if ($_POST['category'] != '') {
             $validator->assertTrue('category', Blog_BlogCategoryModel::CategoryExists($_POST['category']), 'Неверный ключ категории');
         }
         if ($validator->isValid()) {
             $id = Blog_BlogPostsModel::CreatePost($_POST, true);
             if (ControlModel::checkModrights(Blog_BlogCategoryModel::GetCategoryIdByCode($_POST['category']))) {
                 if ($_POST['rated']) {
                     Blog_BlogPostsModel::RatedPost($id, true);
                 }
                 if ($_POST['pinned']) {
                     Blog_BlogPostsModel::PinPost($id, true);
                 }
                 if ($_POST['notrateable']) {
                     Blog_BlogPostsModel::RateablePost($id, false);
                 }
                 if ($_POST['closed']) {
                     Blog_BlogPostsModel::ClosePost($id, true);
                 }
             }
             if (ControlModel::isPostPremoderation()) {
                 Blog_BlogPostsModel::HidePost($id, true);
                 Blog_BlogPostsModel::SetSpecialComment($id, 'Пост ожидает модерации');
             }
             if (ControlModel::isPostHandApproving()) {
                 Blog_BlogPostsModel::RateablePost($id, false);
             }
             $session->persistenceSet('captcha_mode', false);
             $session->persistenceSet('captcha_mode_length', @$settings['captcha_length']);
             $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $id . '/');
             return false;
         }
         $this['form_errors'] = $validator->getValidationResults();
         $this['blog_form'] = $_POST;
     }
     if (ControlModel::isPostCaptcha()) {
         $key = 'post';
         $template->setParameter('captcha_key', $key);
         $session->instantSet('captcha_' . $key, true);
     }
     $template->setParameter('title', 'Добавить пост');
     $template->setParameter('board_id', 'news');
     $template->setParameter('section', 'add');
     EventModel::getInstance()->Broadcast('view_add_post');
     return true;
 }