Example #1
0
 /**
  * Добавление новой ссылки (ajax):
  */
 public function addAjaxAction(Application $application)
 {
     if (ControlModel::isLiveCaptcha()) {
         return array('isValid' => 'captcha');
     }
     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);
         return true;
     }
     return array('isValid' => $validator->isValid(), 'validationResults' => $validator->getValidationResults());
 }
Example #2
0
 /**
  * Действие "поделиться ссылкой" через букмарклет:
  */
 public function shareLinkAction(Application $application, Template $template)
 {
     $kvs = KVS::getInstance();
     $validator = new ValidatorHelper($_GET);
     $validator->assertExists('title', '');
     $validator->assertLength('title', 70, '');
     $validator->assertExists('link', '');
     $validator->assertRegexp('link', ValidatorHelper::URL_REGEXP, '');
     $validator->assertLength('description', 128, '');
     if ($validator->isValid()) {
         $key = md5(strtolower($_GET['link']));
         $ip = md5($_SERVER['REMOTE_ADDR']);
         $counter = $kvs->get(__CLASS__, 'shared_links_ip', $ip);
         if (!$kvs->exists(__CLASS__, 'shared_links', $key) && !$kvs->exists(__CLASS__, 'shared_links_ban', $ip)) {
             if ($kvs->exists(__CLASS__, 'shared_links_ip', $ip)) {
                 if ($counter > 5) {
                     $kvs->set(__CLASS__, 'shared_links_ban', $ip, true);
                     $kvs->expire(__CLASS__, 'shared_links_ban', $ip, 5 * 60);
                 } else {
                     $lifetime = $kvs->lifetime(__CLASS__, 'shared_links_ip', $ip);
                     $kvs->set(__CLASS__, 'shared_links_ip', $ip, ++$counter);
                     $kvs->expire(__CLASS__, 'shared_links_ip', $ip, $lifetime);
                 }
             } else {
                 $kvs->set(__CLASS__, 'shared_links_ip', $ip, 1);
                 $kvs->expire(__CLASS__, 'shared_links_ip', $ip, 60);
             }
             JabberBot::send('-=% /me Отправлена ссылка: ' . $_GET['link'] . ' (' . $_GET['title'] . ')' . "\n" . (!empty($_GET['description']) ? 'С описанием: ' . $_GET['description'] : ''));
             $kvs->set(__CLASS__, 'shared_links', $key, true);
             $kvs->expire(__CLASS__, 'shared_links', $key, 60 * 60);
             $template->headerOk();
             $template->headerContentTypeWOCharset('image/png');
             readfile(WEB_DIR . '/ico/tick.png');
             exit;
         }
     }
     $template->headerBadRequest();
     exit;
 }
Example #3
0
 /**
  * Действие валидации поста (ajax):
  */
 public function validatePostAjaxAction(Application $application)
 {
     $session = Session::getInstance();
     $validator = new ValidatorHelper($_POST);
     $validator->assertExists('title', 'Не введен заголовок');
     $validator->assertLength('title', 70, 'Заголовок слишком длинный');
     $validator->assertExists('text', 'Не введен вводный текст');
     $validator->assertLength('text', 1024, 'Вводный текст слишком длинный');
     if (!$session->isModeratorSession()) {
         $validator->assertLength('text_full', 5096, 'Подробный текст слишком длинный');
     }
     if ($_POST['link'] != '') {
         $validator->assertRegexp('link', ValidatorHelper::URL_REGEXP, 'Ссылка введена неверно');
     }
     if ($validator->fieldValid('link')) {
         $validator->assertTrue('link', ControlModel::CheckLinkfilter($_POST['link']) == false, 'Ссылка запрещена');
     }
     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') != '.', 'Точка в конце заголовка');
     }
     if ($_POST['category'] != '') {
         $validator->assertTrue('category', Blog_BlogCategoryModel::CategoryExists($_POST['category']), 'Неверный ключ категории');
     }
     return array('isValid' => $validator->isValid(), 'validationResults' => $validator->getValidationResults());
 }