/** * Добавление поста в базу данных: */ 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; }