Exemple #1
0
 /**
  * Добавление поста в базу данных:
  */
 public static function CreatePost($params, $safeMode = true)
 {
     $session = Session::getInstance();
     $cache = KVS::getInstance();
     $id = $cache->incr('Blog_BlogPostsModel', null, 'nextPostId');
     $text_original = $params['text'];
     $params['title'] = TexyHelper::typo($params['title']);
     $params['text'] = TexyHelper::markup($params['text'], !$session->isAdminSession());
     $params['text_full'] = TexyHelper::markup($params['text_full'], !$session->isAdminSession());
     $record = array('id' => $id, 'ip' => $_SERVER['REMOTE_ADDR'], 'category' => 0, 'created_at' => time(), 'updated_at' => time(), 'link' => htmlspecialchars($params['link']), 'title' => $params['title'], 'text' => $params['text'], 'text_full' => $params['text_full']);
     if (HomeBoardHelper::existsBoard($params['homeboard'])) {
         $record['author'] = $params['homeboard'];
     }
     if (!$safeMode) {
         $record = array_merge($record, array('hidden' => (bool) @$params['hidden'], 'pinned' => (bool) @$params['pinned'], 'rated' => (bool) @$params['rated'], 'closed' => (bool) @$params['closed'], 'rateable' => (bool) @$params['rateable'], 'bumpable' => (bool) @$params['bumpable'], 'special_comment' => @$params['special_comment']));
     }
     if (array_key_exists('category', $params) && !empty($params['category'])) {
         $category = Blog_BlogCategoryModel::GetCategoryByCode($params['category']);
         if ($category) {
             Blog_BlogCategoryModel::CountCategory($category['id'], true);
             $record['category'] = $category['id'];
         }
     }
     $dbh = PDOQuery::getInstance();
     $dbh->insert('1chan_post', $record);
     $cache->set(__CLASS__, $id, 'raters', serialize(array($_SERVER['REMOTE_ADDR'])));
     $record['text_original'] = $text_original;
     EventModel::getInstance()->Broadcast('add_post', $record);
     return $id;
 }
 /**
  * Добавление комментария:
  */
 public static function CreateComment($params, $safeMode = true)
 {
     if (Blog_BlogPostsModel::PostExists($params['post_id'])) {
         $session = Session::getInstance();
         $post = Blog_BlogPostsModel::GetPost($params['post_id']);
         // Запрет комментирования закрытых тредов:
         if ($post['closed'] == true) {
             return false;
         }
         $cache = KVS::getInstance();
         $id = $cache->incr('Blog_BlogPostsModel', null, 'nextPostId');
         $text_original = $params['text'];
         // Обработка:
         $params['text'] = TexyHelper::markup($params['text'], !$session->isAdminSession());
         $record = array('id' => $id, 'post_id' => $params['post_id'], 'ip' => $_SERVER['REMOTE_ADDR'], 'created_at' => time(), 'text' => $params['text']);
         if (HomeBoardHelper::existsBoard($params['homeboard'])) {
             $record['author'] = $params['homeboard'];
         }
         if (!$safeMode) {
             $record = array_merge($record, array('special_comment' => @$params['special_comment']));
         }
         $dbh = PDOQuery::getInstance();
         $dbh->insert('1chan_comment', $record);
         if ($post['bumpable'] && time() - $post['created_at'] < 60 * 60 * 24 * 30) {
             $dbh->update_insecure('1chan_post', array('updated_at' => time(), 'comments' => '`comments`+1'), 'id = ' . $dbh->q($params['post_id']), 1, true);
         } else {
             $dbh->update_insecure('1chan_post', array('comments' => '`comments`+1'), 'id = ' . $dbh->q($params['post_id']), 1, true);
         }
         $record['text_original'] = $text_original;
         EventModel::getInstance()->Broadcast('add_comment', $record);
         /**
          * Сохраняем в кеше последние комментарии:
          */
         $record['post_title'] = $post['title'];
         $cache->listAdd(__CLASS__, null, 'lastComments', $id);
         $cache->listTrim(__CLASS__, null, 'lastComments', 0, 31);
         return $id;
     }
     return false;
 }