Esempio n. 1
0
 /**
  * Редактирование комментария:
  */
 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;
 }
Esempio n. 2
0
    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'];
Esempio n. 3
0
 /**
  * Действие удаление комментария:
  */
 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">&gt;&gt;' . $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;
 }
Esempio n. 4
0
 /**
  * Оценка поста:
  */
 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;
 }
Esempio n. 5
0
 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('&gt;&gt;' . $board_name . '/' . $id);
             return $link;
         }
         return '&gt;&gt;' . $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 {
         '&gt;&gt;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('&gt;&gt;news/' . $id);
     return $link;
 }
Esempio n. 6
0
 /**
  * Действие просмотр 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;
 }
Esempio n. 7
0
 /**
  * Поиск постов:
  */
 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;
 }