Example #1
0
 /**
  * Действие просмотра лога модераторских действий:
  */
 public function getModActionsAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Последние действия модераторов');
     $template->setParameter('board_id', 'news');
     $modlog = ControlModel::getLogModEvent();
     $this['comments'] = array_reverse($modlog);
     return true;
 }
Example #2
0
 /**
  * Добавление новой ссылки:
  */
 public function addAction(Application $application, Template $template)
 {
     $session = Session::getInstance();
     if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) != TemplateHelper::getSiteUrl()) {
         return false;
     }
     if (ControlModel::isLiveCaptcha()) {
         $catpcha = false;
         $this['live_form'] = $_POST;
         if (@$_POST['captcha']) {
             if ($_POST['captcha'] !== $session->instantGet('captcha_' . $_POST['captcha_key'], false)) {
                 $template->setParameter('captcha_err', true);
                 $captcha = true;
             } else {
                 $session->persistenceSet('captcha_mode', false);
             }
         } else {
             $captcha = true;
         }
         $key = 'live';
         $template->setParameter('title', 'Добавление ссылки');
         $template->setParameter('captcha_key', $key);
         $session->instantSet('captcha_' . $key, true);
         if ($captcha) {
             return true;
         }
     }
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         ControlModel::checkContent($_POST['description']);
         $validator = new ValidatorHelper($_POST);
         $validator->assertExists('link', 'Не введена ссылка');
         $validator->assertRegexp('link', ValidatorHelper::URL_REGEXP, 'Ссылка введена неверно');
         if ($validator->fieldValid('link')) {
             $validator->assertTrue('link', Blog_BlogOnlineModel::CheckCategory($_POST['link']) !== false, 'Данная ссылка не может участвовать в ленте');
         }
         if ($validator->fieldValid('link')) {
             $validator->assertTrue('link', Blog_BlogOnlineModel::CheckLinkPosted($_POST['link']) != true, 'Ссылка уже участвует в ленте');
         }
         $validator->assertTrue('timeout', ControlModel::getLiveInterval() == 0, 'Таймаут ' . TemplateHelper::ending(ControlModel::getLiveInterval(), 'секунда', 'секунды', 'секунд'));
         $validator->assertTrue('link', !ControlModel::CheckLinkfilter($params['link']), 'Запрещенная ссылка');
         $validator->assertExists('description', 'Не введено описание');
         $validator->assertLength('description', 100, 'Описание длиннее 100 символов');
         if ($validator->isValid()) {
             Blog_BlogOnlineModel::CreateLink($_POST);
             $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/live/');
             return false;
         }
         $session->instantSet('live_errors', $validator->getValidationResults());
         $session->instantSet('live_form', $_POST);
         $template->headerSeeOther('http://' . TemplateHelper::getSiteUrl() . '/live/');
         return false;
     }
     return false;
 }
Example #3
0
 /**
  * Предварительный просмотр:
  */
 public function previewAction(Application $application, Template $template)
 {
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
         die($application->go('errors_error404'));
     }
     $session = Session::getInstance();
     if (!$session->isAdminSession()) {
         die($application->go('errors_error403'));
     }
     $template->setParameter('title', $_POST['title']);
     $this['preview_content'] = $_POST['content'];
     return true;
 }
 public function indexAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Форс-о-метр');
     if (array_key_exists('query', $_GET)) {
         $query = $this['query'] = $_GET['query'];
         $search = new SphinxClient();
         $search->SetServer('localhost', 3312);
         $search->SetGroupBy('created_at', SPH_GROUPBY_MONTH);
         // Полный поиск (запрос):
         $search->ResetFilters();
         $search->SetMatchMode(SPH_MATCH_PHRASE);
         $search->AddQuery($query, 'forceometer');
         // Поиск уникальных в месяц (запрос):
         $search->ResetFilters();
         $search->SetMatchMode(SPH_MATCH_PHRASE);
         $search->SetFilter('uniq_m', array(1));
         $search->AddQuery($query, 'forceometer');
         // Поиск уникальных вообще (запрос):
         $search->ResetFilters();
         $search->SetMatchMode(SPH_MATCH_PHRASE);
         $search->SetFilter('uniq_f', array(1));
         $search->AddQuery($query, 'forceometer');
         $query_result = $search->RunQueries();
         // Поиск уникальных постеров месяца (вообще):
         $search->ResetFilters();
         $search->SetMatchMode(SPH_MATCH_FULLSCAN);
         $search->SetFilter('uniq_m', array(1));
         $bare_query = $search->Query('', 'forceometer');
         /*
         		    $search -> ResetFilters();
                     $search -> SetMatchMode(SPH_MATCH_FULLSCAN);
                     $bare_query2 = $search -> Query('', 'forceometer');
         */
         if (!$query_result || $query_result[0]['total_found'] == 0) {
             $this['not_found'] = 1;
             return true;
         }
         $result = array('posts' => array(), 'posters' => array(), 'uniq_m' => array(), 'uniq_f' => array());
         for ($y = 2009; $y <= date('Y'); $y++) {
             for ($m = 1; $m <= 12; $m++) {
                 // Пропуск несуществующих дат и текущего месяца:
                 if ($y == 2009 && $m < 3) {
                     continue;
                 }
                 if ($y == date('Y') && $m >= date('m')) {
                     break;
                 }
                 $stamp = $y . '-' . ($m < 10 ? '0' . $m : $m) . '-01';
                 $result['posts'][$stamp] = 0;
                 $result['posters'][$stamp] = 0;
                 $result['uniq_m'][$stamp] = 0;
                 $result['uniq_f'][$stamp] = 0;
             }
         }
         // Проходим результаты:
         if ($query_result[0]['matches']) {
             foreach ($query_result[0]['matches'] as $match) {
                 $date = $match['attrs']['@groupby'];
                 $stamp = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-01';
                 if (array_key_exists($stamp, $result['posts'])) {
                     $result['posts'][$stamp] = $match['attrs']['@count'];
                 }
             }
         }
         if ($bare_query['matches']) {
             foreach ($bare_query['matches'] as $match) {
                 $date = $match['attrs']['@groupby'];
                 $stamp = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-01';
                 if (array_key_exists($stamp, $result['posters'])) {
                     $result['posters'][$stamp] = $match['attrs']['@count'];
                 }
             }
         }
         if ($query_result[1]['matches']) {
             foreach ($query_result[1]['matches'] as $match) {
                 $date = $match['attrs']['@groupby'];
                 $stamp = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-01';
                 if (array_key_exists($stamp, $result['uniq_m'])) {
                     $result['uniq_m'][$stamp] = $match['attrs']['@count'];
                 }
             }
         }
         /*
                     if ($bare_query2['matches']) {
                         foreach($bare_query2['matches'] as $match) {
                             $date = $match['attrs']['@groupby'];
                             $stamp = substr($date, 0, 4) .'-'. substr($date, 4, 2) .'-01';
         
                             if (array_key_exists($stamp, $result['uniq_f']))
                                 $result['uniq_f'][$stamp] = $match['attrs']['@count'];
                         }
                     }*/
         foreach ($result['posts'] as $date => $count) {
             if ($count == 0) {
                 unset($result['posts'][$date]);
                 unset($result['posters'][$date]);
                 unset($result['uniq_f'][$date]);
                 unset($result['uniq_m'][$date]);
             }
         }
         $this['results'] = json_encode($result);
         unset($result);
         return true;
     }
     return true;
 }
Example #5
0
 /**
  * Комната чата:
  */
 public function chatAction(Application $application, Template $template)
 {
     if ($_GET['id']) {
         $room = Chat_ChatRoomsModel::GetRoom($_GET['id']);
     } elseif ($_GET['alias']) {
         $room = Chat_ChatRoomsModel::GetRoomByAlias($_GET['alias']);
     }
     if ($room) {
         $template->setParameter('title', '«' . $room['title'] . '» чат');
         $this['room'] = $room;
         EventModel::getInstance()->Broadcast('view_chat');
         return true;
     }
     $template->setParameter('title', 'Комната не существует');
     EventModel::getInstance()->Broadcast('view_chat');
     return true;
 }
Example #6
0
 public function indexAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Доступ запрещен');
     return true;
 }
Example #7
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;
 }
Example #8
0
 public function indexAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Ничего не найдено');
     $template->headerNotFound();
     return true;
 }
Example #9
0
 public function indexAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Свершилась ошибка');
     return true;
 }
Example #10
0
 /**
  * Просмотр последних постов:
  */
 public function lastBoardPostsAction(Application $application, Template $template)
 {
     $template->setParameter('title', 'Последние посты разделов');
     $page = @$_GET['page'] ? $_GET['page'] : 0;
     $this['posts'] = Board_BoardModel::getLastPosts($page, $pages);
     $template->setParameter('total_pages', ceil($pages - 1));
     $template->setParameter('current_page', $page);
     $template->setParameter('link_pages', 'http://' . TemplateHelper::getSiteUrl() . '/service/last_board_posts/%d/');
     return true;
 }
Example #11
0
 /**
  * Список загруженных файлов:
  */
 public function staticFilesAction(Application $application, Template $template)
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (array_key_exists('upload', $_FILES)) {
             StaticModel::CreateFile($_FILES['upload']);
         }
     }
     $template->setParameter('menu', 'static');
     $template->setParameter('submenu', 'static_files');
     $this['files'] = StaticModel::GetFiles();
     return true;
 }