Вход Регистрация
Файл: protected/controllers/RssController.php
Строк: 210
<?php
/*
 * Генератор RSS лент
 */

class RssController extends Controller
{
    
/*
     * Действие по умолчанию
     */
    
public $defaultAction 'post';

    
/*
     * Макет страницы
     */
    
public $layout '';



    
/*
     * Инициализация компонента
     */
    
public function  init()
    {
        
// Загружаем класс создания RSS лент
        
Yii::import ('ext.RssGen');

        
parent::init();
    }



    
/*
     * Трансляция статей в RSS
     */
    
public function actionPost ()
    {
        
$rss = new RssGen;
        
$rss->title CHtml::encode (Yii::app ()->config->rss_title);
        
$rss->link $this->createAbsoluteUrl ('//');
        
$rss->desctiption nl2br (CHtml::encode (Yii::app ()->config->rss_description));
        
        
$last_create_post Yii::app ()->db->createCommand ()->select ('MAX(`create_time`) AS create_time')->from ('{{post}}')->queryRow ();
        
$last_update_post Yii::app ()->db->createCommand ()->select ('MAX(`update_time`) AS update_time')->from ('{{post}}')->queryRow ();

        
$rss->pubDate $last_create_post["create_time"];
        
$rss->lastBuildDate $last_update_post["update_time"];
        
$rss->image Yii::app ()->request->getBaseUrl (TRUE) . '/themes/' Yii::app ()->theme->name '/favicon.ico';

        foreach (
Post::model ()->loadToRss ()->getData () as $post)
        {

            
$item = new RssGenItem;
            
            
$item->title $post->title;
            
$item->link $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id));
            
$item->description nl2br (bbCode::Format (Smile::Format (CHtml::encode ((Yii::app ()->config->give_in_rss == 'info') ? $post->info_content $post->cut_content))));
            
$item->pubDate $post->create_time;
            
$item->comments $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id'#' => 'comment'));
            
$item->author CHtml::encode ($post->user->login);

            
$rss->addItem ($item);
        }

        
$rss->render ();
    }

    
/*
     * Последние комментарии
     */
    
public function actionLastComments ()
    {
        
$rss = new RssGen;
        
$rss->title CHtml::encode ('Последние комментарии');
        
$rss->link $this->createAbsoluteUrl ('//');
        
$rss->desctiption nl2br (CHtml::encode ('Последние комментарии в формате RSS.
Подписывайтесь и будьте в курсе самых свежих отзывов читателей!'
));

        
$last_create_comment Yii::app ()->db->createCommand ()->select ('MAX(`create_time`) AS create_time')->from ('{{comment}}')->queryRow ();

        
$rss->pubDate $rss->lastBuildDate $last_create_comment["create_time"];
        
$rss->image Yii::app ()->request->getBaseUrl (TRUE) . '/themes/' Yii::app ()->theme->name '/favicon.ico';

        foreach (
Comment::model ()->loadLastComments ()->getData () as $comment)
        {

            
$item = new RssGenItem;

            
$item->title 'Комментарий #' $comment->id;
            
$item->link $this->createAbsoluteUrl ('//post/view', array ('id' => $comment->id_post'#' => $comment->id));
            
$item->description nl2br (bbCode::Format (Smile::Format (CHtml::encode ($comment->content)))) . '<br />
(К статье <a href="' 
$this->createAbsoluteUrl ('//post/view', array ('id' => $comment->post->id)) . '">' CHtml::encode ($comment->post->title) . '</a>).';
            
$item->pubDate $comment->create_time;
            
$item->author CHtml::encode ((($comment->login == NULL) ? $comment->user->login $comment->login));

            
$rss->addItem ($item);
        }

        
$rss->render ();
    }

    
/*
     * RSS для статей в определенной категории
     */
    
public function actionCategory ($id)
    {
        
$category Category::model()->findByPk((int) $id);
        if (
$category === null)
            throw new 
CHttpException(404'Этой категории не существует!');

        
$rss = new RssGen;
        
$rss->title CHtml::encode ($category->title ' / Категории' Yii::app ()->config->title_postfix);
        
$rss->link $this->createAbsoluteUrl ('//');
        
$rss->desctiption nl2br (CHtml::encode ($category->about));

        
$last_create_post Yii::app ()->db->createCommand ()->select ('MAX(`create_time`) AS create_time')->from ('{{post}}')->where ('`id_category` = ' $category->id)->queryRow ();
        
$last_update_post Yii::app ()->db->createCommand ()->select ('MAX(`update_time`) AS update_time')->from ('{{post}}')->where ('`id_category` = ' $category->id)->queryRow ();

        
$rss->pubDate $last_create_post["create_time"];
        
$rss->lastBuildDate $last_update_post["update_time"];
        
$rss->image Yii::app ()->request->getBaseUrl (TRUE) . '/themes/' Yii::app ()->theme->name '/favicon.ico';

        foreach (
Post::model ()->loadToRssFromCategory ($category->id)->getData () as $post)
        {

            
$item = new RssGenItem;

            
$item->title $post->title;
            
$item->link $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id));
            
$item->description nl2br (bbCode::Format (Smile::Format (CHtml::encode ((Yii::app ()->config->give_in_rss == 'info') ? $post->info_content $post->cut_content))));
            
$item->pubDate $post->create_time;
            
$item->comments $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id'#' => 'comment'));
            
$item->author CHtml::encode ($post->user->login);

            
$rss->addItem ($item);
        }

        
$rss->render ();
    }

    
/*
     * RSS для статей с определенным тегом
     */
    
public function actionTag ($tag)
    {
        
$rss = new RssGen;
        
$rss->title CHtml::encode ($tag ' / Теги' Yii::app ()->config->title_postfix);
        
$rss->link $this->createAbsoluteUrl ('//');
        
$rss->desctiption nl2br (CHtml::encode ('Последние статьи с тегом <b>' $tag '</b>.'));
        
        
$rss->image Yii::app ()->request->getBaseUrl (TRUE) . '/themes/' Yii::app ()->theme->name '/favicon.ico';

        foreach (
Post::model ()->loadByTag ($tagYii::app ()->config->rss_item_count)->getData () as $post)
        {

            
$item = new RssGenItem;

            
$item->title $post->title;
            
$item->link $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id));
            
$item->description nl2br (bbCode::Format (Smile::Format (CHtml::encode ((Yii::app ()->config->give_in_rss == 'info') ? $post->info_content $post->cut_content))));
            
$item->pubDate $post->create_time;
            
$item->comments $this->createAbsoluteUrl ('//post/view', array ('id' => $post->id'#' => 'comment'));
            
$item->author CHtml::encode ($post->user->login);

            
$rss->addItem ($item);
        }

        
$rss->render ();
    }

    
/*
     * Комменты к определенной статье
     */
    
public function actionComments ($id)
    {
        
$post Post::model ()->findByPk ($id);
        if (
$post === NULL) throw new CHttpException (404'Статья не найдена');
        
        
$rss = new RssGen;
        
$rss->title CHtml::encode ('Комментарии к статье "' CHtml::encode ($post->title) . '"' Yii::app ()->config->title_postfix);
        
$rss->link $this->createAbsoluteUrl ('//');
        
$rss->desctiption nl2br (CHtml::encode ('Последние комментарии в формате RSS.
Подписывайтесь и будьте в курсе самых свежих отзывов читателей!'
));

        
$last_create_comment Yii::app ()->db->createCommand ()->select ('MAX(`create_time`) AS create_time')->from ('{{comment}}')->where ('`id_post` = ' $post->id)->queryRow ();

        
$rss->pubDate $rss->lastBuildDate $last_create_comment["create_time"];
        
$rss->image Yii::app ()->request->getBaseUrl (TRUE) . '/themes/' Yii::app ()->theme->name '/favicon.ico';

        foreach (
Comment::model ()->loadComments ($post->id)->getData () as $comment)
        {

            
$item = new RssGenItem;

            
$item->title 'Комментарий #' $comment->id;
            
$item->link $this->createAbsoluteUrl ('//post/view', array ('id' => $comment->id_post'#' => $comment->id));
            
$item->description nl2br (bbCode::Format (Smile::Format (CHtml::encode ($comment->content))));
            
$item->pubDate $comment->create_time;
            
$item->author CHtml::encode ((($comment->login == NULL) ? $comment->user->login $comment->login));

            
$rss->addItem ($item);
        }

        
$rss->render ();
    }
}
Онлайн: 0
Реклама