/** * Редактирование комментария: */ public static function EditComment($id, $params, $safeMode = true) { if (Blog_BlogPostsModel::PostExists($params['post_id'])) { $session = Session::getInstance(); $cache = KVS::getInstance(); // Обработка: $params['text'] = TexyHelper::markup($params['text'], !$session->isAdminSession()); $record = array('text' => $params['text']); if (!$safeMode) { $record = array_merge($record, array('special_comment' => @$params['special_comment'])); } $dbh = PDOQuery::getInstance(); $dbh->update('1chan_comment', $record, 'id = ' . $dbh->q($id)); EventModel::getInstance()->Broadcast('edit_comment', $record); return $id; } return false; }
echo $post['id']; ?> _info"> <span class="b-blog-entry_b-info_b-control"> <a href="http://<?php echo TemplateHelper::getSiteUrl(); ?> /news/fav/toggle/<?php echo $post['id']; ?> /" class="js-favorite-button"> <img src="http://<?php echo TemplateHelper::getSiteUrl(); ?> /ico/favorites<?php if (!Blog_BlogPostsModel::IsFavoritePost($post['id'])) { ?> -false<?php } ?> .png" width="16" height="16" alt="" id="post_<?php echo $post['id']; ?> _favorite" /> </a> <a href="#" class="js-moderator-button g-hidden"> <img src="http://<?php echo TemplateHelper::getSiteUrl(); ?> /ico/settings.png" width="16" height="16" alt="<?php echo $post['id'];
/** * Действие удаление комментария: */ public function removePostCommentAjaxAction(Application $application) { if (!Session::getInstance()->isAdminSession()) { return false; } $comment = Blog_BlogCommentsModel::GetComment($_GET['id']); $post = Blog_BlogPostsModel::GetPost(@$comment['post_id']); if ($comment && $post && ControlModel::checkModrights($post['category'])) { Blog_BlogCommentsModel::RemoveComment($_GET['id']); ControlModel::logModEvent(date("d-m-Y H:i:s") . ' ' . $_SESSION['auth']['name'] . '<br /> удалил комментарий ' . $comment['id'] . ' в посте <a href="http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/" class="js-cross-link">>>' . $post['id'] . '</a>' . '<br /><em>' . strip_tags($comment['text'], 'a') . '</em>'); JabberBot::send('-=$ /me (модлог) ' . $_SESSION['auth']['name'] . ' удалил комментарий ' . $comment['id'] . ' в посте http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/'); return true; } return false; }
/** * Оценка поста: */ public static function RatePost($id, $increment = true) { $dbh = PDOQuery::getInstance(); $ip = $_SERVER['REMOTE_ADDR']; $cache = KVS::getInstance(); $post = Blog_BlogPostsModel::GetPost($id); if ($post && !$post['rateable']) { return false; } $raters = unserialize($cache->get(__CLASS__, $id, 'raters')); if (!$raters) { return false; } if (in_array($ip, $raters)) { return false; } else { $raters[] = $ip; $cache->set(__CLASS__, $id, 'raters', serialize($raters)); } $dbh->update_insecure('1chan_post', array('rate' => '`rate`' . ($increment ? '+1' : '-1')), 'id = ' . $dbh->q($id), 1, true); $post = Blog_BlogPostsModel::GetPost($id); EventModel::getInstance()->Broadcast('rate_post', array($id, $post['rate'])); /** if ($post['rate'] >= ControlModel::getRatedCount() && !$post['rated']) self::RatedPost($id, true); **/ return true; }
static function boardpostlink2($parser, $matches, $name) { list(, $board_name, $id) = $matches; $parser->again = false; if ($board_name != 'news') { $board = new Board_BoardModel($board_name); if ($board->existsPost($id)) { $post = $board->getPost($id); $href = 'http://1chan.ru/' . $board_name . '/res/'; if ($post['parent_id'] == null) { $href .= $id . '/#top'; } else { $href .= $post['parent_id'] . '/#' . $id; } $link = TexyHtml::el('a'); $link->href($href); $link->attrs['class'] = 'js-cross-link'; $link->attrs['name'] = $board_name . '/' . $id; $link->setText('>>' . $board_name . '/' . $id); return $link; } return '>>' . $board_name . '/' . $id; } if (Blog_BlogCommentsModel::CommentExists($id)) { $comment = Blog_BlogCommentsModel::GetComment($id); $post_id = $comment['post_id']; } elseif (Blog_BlogPostsModel::PostExists($id)) { $post_id = $id; } else { '>>news/' . $id; } $link = TexyHtml::el('a'); $link->href('http://1chan.ru/news/res/' . $post_id . '/#' . $id); $link->attrs['class'] = 'js-cross-link'; $link->attrs['name'] = 'news/' . $id; $link->setText('>>news/' . $id); return $link; }
/** * Действие просмотр rss ленты всех постов: */ public function rssAllAction(Application $application, Template $template) { $posts = Blog_BlogPostsModel::GetAllPosts(0, 20, false); if ($posts) { $rss = new rss('utf-8'); $rss->channel('Первый канал - Все', 'http://1chan.ru/', 'Новости имиджборд и не только.'); $rss->language('ru-ru'); $rss->copyright('Все права пренадлежат вам © 2010'); $rss->managingEditor('*****@*****.**'); $rss->category('Все'); $rss->startRSS(); foreach ($posts as $key => $post) { $title = $post['category'] ? TemplateHelper::BlogCategory($post['category'], 'title') . ' — ' . $post['title'] : $post['title']; $rss->itemTitle($title); $rss->itemLink('http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/'); $rss->itemDescription($post['link'] ? '<a href="' . $post['link'] . '">' . $post['link'] . '</a><br />' . $post['text'] : $post['text']); $rss->itemAuthor('anonymous'); $rss->itemGuid('http://' . TemplateHelper::getSiteUrl() . '/news/res/' . $post['id'] . '/', true); $rss->itemPubDate(date('D, d M Y H:i:s O', $post['created_at'])); $rss->addItem(); } $result = $rss->RSSdone(); } EventModel::getInstance()->Broadcast('view_rss_all_post'); $template->headerOk(); $template->headerContentType('application/rss+xml', 'UTF-8'); echo $result; return false; }
/** * Поиск постов: */ public function postSearchAction(Application $application, Template $template) { $template->setParameter('menu', 'posts'); $template->setParameter('submenu', 'post_search'); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (!empty($_POST['id'])) { $post = Blog_BlogPostsModel::GetPost($_POST['id']); if ($post) { $this['posts'] = array($post); } } else { $search = new SphinxClient(); $search->SetServer('localhost', 3312); $search->SetSortMode(SPH_SORT_EXTENDED, '@relevance DESC, created_at DESC, @id DESC'); $search->SetLimits(0, 60); $search->SetWeights(array('title' => 40, 'text' => 20, 'text_full' => 10)); if (isset($_POST['category'])) { $search->SetFilter('category', $_POST['category']); } $result = $search->Query($_POST['query'], '*'); if (is_array($result['matches'])) { $ids = array_keys($result['matches']); $this['posts'] = Blog_BlogPostsModel::GetPostsByIds($ids); } } } return true; }