model() public static method

Returns the static model of the specified AR class.
public static model ( string $className = __CLASS__ ) : News
$className string
return News the static model class
コード例 #1
0
ファイル: DefaultController.php プロジェクト: kostya1017/our
 public function actionRss()
 {
     // disabling web log
     foreach (Yii::app()->log->routes as $route) {
         if ($route instanceof CWebLogRoute) {
             $route->enabled = false;
         }
     }
     Yii::import('ext.feed.*');
     $feed = new EFeed();
     $feed->title = Yii::app()->name . ' | ' . Yii::t('newsModule.common', 'Nouvelles');
     $feed->description = Yii::app()->name . ' | ' . Yii::t('newsModule.common', 'Nouvelles');
     $feed->addChannelTag('language', Yii::app()->language);
     $feed->addChannelTag('pubDate', date(DATE_RSS, time()));
     $feed->addChannelTag('link', $this->createAbsoluteUrl('index'));
     if ($news = News::model()->findAll(array('order' => 'date DESC', 'limit' => 25, 'condition' => "date <= '" . date('Y-m-d H:i:s') . "' AND section_id = " . Yii::app()->cms->currentSectionId))) {
         foreach ($news as $new) {
             $item = $feed->createNewItem();
             $item->title = $new->title;
             $item->link = $this->createAbsoluteUrl('detail', array('n' => $new->title_url));
             $item->date = $new->date;
             if (!empty($new->image)) {
                 $item->description = '<div style="margin-bottom: 1em;"><img src="' . Yii::app()->request->hostInfo . Yii::app()->request->baseUrl . '/' . $new->imageHandler->dir . '/' . Helper::encodeFileName(Helper::fileSuffix($new->image, 's')) . '" alt="' . CHtml::encode($new->title) . '" /></div><div>' . CHtml::encode($new->summary) . '</div>';
             } else {
                 $item->description = CHtml::encode($new->summary);
             }
             $feed->addItem($item);
         }
     }
     $feed->generateFeed();
     Yii::app()->end();
 }
コード例 #2
0
ファイル: SiteController.php プロジェクト: jessesiu/GigaDBV3
 /**
  * This is the default 'index' action that is invoked
  * when an action is not explicitly requested by users.
  */
 public function actionIndex()
 {
     #if (Yii::app()->user->isGuest) {
     #    $this->render('index');
     #} else {
     #    if (Yii::app()->user->checkAccess('admin')) {
     #        $this->redirect(array('admin/index'));
     #    } else {
     #        $this->redirect(array('user/accountBalance', 'id'=>Yii::app()->user->_id));
     #    }
     #}
     $form = new SearchForm();
     // Use for Form
     $dataset = new Dataset();
     // Use for auto suggestion
     $datasetModel = $this->getDatasetByType(0);
     // Use for image slider content
     $publicIds = Yii::app()->db->createCommand()->select("id")->from("dataset")->where("upload_status = 'Published'")->queryAll();
     $datasettypes_hints = Type::model()->findAll(array('order' => 'name ASC'));
     $news = News::model()->findAll("start_date<=current_date AND end_date>=current_date");
     $criteria = new CDbCriteria();
     $criteria->limit = 10;
     $criteria->condition = "upload_status = 'Published'";
     #$criteria->order = "id DESC";
     $criteria->order = 'publication_date DESC';
     $latest_datasets = Dataset::model()->findAll($criteria);
     $criteria->condition = null;
     $criteria->order = 'publication_date DESC';
     $latest_messages = RssMessage::model()->findAll($criteria);
     $rss_arr = array_merge($latest_datasets, $latest_messages);
     $this->sortRssArray($rss_arr);
     $this->render('index', array('datasets' => $datasetModel, 'form' => $form, 'dataset' => $dataset, 'news' => $news, 'dataset_hint' => $datasettypes_hints, 'rss_arr' => $rss_arr, 'count' => count($publicIds), 'latest_datasets' => $latest_datasets));
 }
コード例 #3
0
ファイル: SiteController.php プロジェクト: alexjkitty/estate
 public function actionIndex()
 {
     $page = Menu::model()->findByPk(InfoPages::MAIN_PAGE_ID);
     $langs = Lang::getActiveLangs();
     $countLangs = count($langs);
     if (!isFree() && !isset($_GET['lang']) && ($countLangs > 1 || $countLangs == 1 && param('useLangPrefixIfOneLang'))) {
         $canonicalUrl = Yii::app()->getBaseUrl(true);
         $canonicalUrl .= '/' . Yii::app()->language;
         Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl);
     }
     Yii::app()->user->setState('searchUrl', NULL);
     $criteriaNews = new CDbCriteria();
     $criteriaNews->limit = 10;
     $criteriaNews->order = 'date_created DESC';
     $newsIndex = News::model()->findAll($criteriaNews);
     if (isset($_GET['is_ajax'])) {
         //			$modeListShow = User::getModeListShow();
         //			if ($modeListShow == 'table') {
         //				# нужны скрипты и стили, поэтому processOutput установлен в true только для table
         //				$this->renderPartial('index', array('page' => $page, 'newsIndex' => $newsIndex), false, true);
         //			}
         //			else {
         $this->renderPartial('index', array('page' => $page, 'newsIndex' => $newsIndex));
         //			}
     } else {
         $this->render('index', array('page' => $page, 'newsIndex' => $newsIndex));
     }
 }
コード例 #4
0
ファイル: FrontNewsController.php プロジェクト: 42point/Vinum
 public function actionCategory($category)
 {
     // главная страница категории новостей
     $model = NewsCategories::model()->findByAttributes(array("url" => $category));
     if (empty($model)) {
         $this->redirect("/");
     }
     if ($category == "novosti" || $category == "news" || $category == "Nouvelles") {
         $this->pageTitle = $model->title;
         $criteria = new CDbCriteria();
         $criteria->condition = "category_id =" . $model->id;
         $criteria->addCondition("lang_id = " . $this->lang);
         $modelNews = News::model()->findAll($criteria);
         $this->render("indexNovosti", array("content" => $modelNews, "categoryid" => $model->id, "categoryName" => $category));
     } else {
         $this->pageTitle = $model->title;
         $criteria = new CDbCriteria();
         $criteria->condition = "is_active=1 AND category_id =" . $model->id;
         $criteria->addCondition("lang_id = " . $this->lang);
         $modelNews = News::model()->findAll($criteria);
         $nCriteria = new CDbCriteria();
         $nCriteria->condition = "lang_id =" . $this->lang . " AND is_active=1";
         $ArtNewCategories = NewsCategories::model()->findAll($nCriteria);
         $this->render("indexEct", array("content" => $modelNews, "categories" => $ArtNewCategories));
     }
 }
コード例 #5
0
 public function init()
 {
     $criteria = new CDbCriteria();
     $criteria->select = 'date';
     $criteria->distinct = true;
     $this->model = News::model()->findAll($criteria);
 }
コード例 #6
0
ファイル: OtherNews.php プロジェクト: ngdvan/lntguitar
 public function run()
 {
     $criteria = new CDbCriteria();
     $criteria->addCondition('status=1');
     if ($this->catId) {
         $criteria->addCondition('term_id=' . $this->catId);
     }
     if ($this->currentId) {
         $criteria->addCondition('id<>' . $this->currentId);
     }
     $criteria->order = 'create_time DESC';
     $criteria->limit = 20;
     $news = News::model()->findAll($criteria);
     echo CHtml::openTag("div", array('class' => 'title', 'style' => 'color: #000000;font-size: 18px;'));
     echo "Tin khác";
     echo CHtml::closeTag("div");
     if ($news) {
         echo CHtml::openTag("ul", array('style' => 'border: 1px solid #CCCCCC;
 border-radius: 4px 4px 4px 4px;
 margin: 8px 0px 0px 0px;
 padding: 10px 5px;list-style:none;'));
         foreach ($news as $n) {
             echo CHtml::openTag('li');
             echo CHtml::link($n->title, array('/news/detail', 'id' => $n->id, 'tid' => $n->term_id, 'title' => Lnt::safeTitle($n->title))) . " <span style='color:#a7a7a7'>({$n->view})</span>";
             echo CHtml::closeTag('li');
         }
         echo CHtml::closeTag("ul");
     }
 }
コード例 #7
0
 public function actionIndex()
 {
     if (!empty($this->arrSystem)) {
         $this->pageTitle = "Trang chủ - " . $this->arrSystem->title;
     }
     // Hinh anh trinh dien
     $criteria = new CDBCriteria();
     $criteria->addCondition("is_product = 3");
     $arrImage = Slides::model()->findAll($criteria);
     // Linh vuc kinh doanh
     $criteria = new CDBCriteria();
     $criteria->addCondition("category_news_id = 1");
     $criteria->limit = 3;
     $arrNew = News::model()->findAll($criteria);
     // tin tuc noi bat
     $criteria = new CDBCriteria();
     $criteria->addCondition("category_news_id != 1");
     $criteria->order = 'id DESC';
     $criteria->limit = 3;
     $arrNewSpecial = News::model()->findAll($criteria);
     // hinh anh noi bat
     $criteria = new CDBCriteria();
     $criteria->addCondition("is_product = 1");
     $criteria->order = 'id DESC';
     $criteria->limit = 8;
     $arrImageSpecial = Slides::model()->findAll($criteria);
     $this->render("index", array('arrImage' => $arrImage, 'arrNew' => $arrNew, 'arrNewSpecial' => $arrNewSpecial, 'arrImageSpecial' => $arrImageSpecial));
 }
コード例 #8
0
 public function actionNewDetail($alias = null)
 {
     if (!empty($this->arrSystem)) {
         $this->pageTitle = "Tin tức - " . $this->arrSystem->title;
     }
     $new = $newRelated = null;
     $cateInfo = null;
     if (!empty($alias)) {
         // lay tin tuc theo alias
         $criteria = new CDBCriteria();
         $criteria->addCondition("alias = :alias");
         $criteria->params = array(":alias" => $alias);
         $new = News::model()->find($criteria);
         if (empty($new)) {
             throw new CHttpException(404, 'Không tìm thấy trang!.');
         } else {
             // lay ten cua danh muc
             $cateInfo = CategoriesNews::model()->findByPK($new->category_news_id);
             // lay cac tin lien quan
             $criteria = new CDBCriteria();
             $criteria->addCondition("alias != :alias and category_news_id = {$new->category_news_id} ");
             $criteria->params = array(":alias" => $alias);
             $criteria->order = "id DESC";
             $criteria->limit = 5;
             $newRelated = News::model()->findAll($criteria);
         }
     }
     $this->render("newDetail", array('newInfo' => $new, 'newRelated' => $newRelated, 'cateInfo' => $cateInfo));
 }
コード例 #9
0
 public function actionSitemap()
 {
     $pages = Pages::model()->findAll();
     $news = News::model()->findAll();
     header('Content-Type: application/xml');
     $this->renderPartial('../site/sitemap', array('pages' => $pages, 'news' => $news));
 }
コード例 #10
0
	private function loadModel($id)
	{
		$model=News::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}
コード例 #11
0
 public function actions()
 {
     if (!($limit = (int) $this->module->rssCount)) {
         throw new CHttpException(404);
     }
     $criteria = new CDbCriteria();
     $criteria->order = 'date DESC';
     $criteria->params = array();
     $criteria->limit = $limit;
     $title = $this->yupe->siteName;
     $description = $this->yupe->siteDescription;
     $categoryId = (int) Yii::app()->getRequest()->getQuery('category');
     if (!empty($categoryId)) {
         $category = Category::model()->cache($this->yupe->coreCacheTime)->published()->findByPk($categoryId);
         if (null === $category) {
             throw new CHttpException(404);
         }
         $title = $category->name;
         $description = $category->description;
         $criteria->addCondition('category_id = :category_id');
         $criteria->params[':category_id'] = $categoryId;
     }
     $data = News::model()->cache($this->yupe->coreCacheTime)->with('user')->published()->public()->findAll($criteria);
     return array('feed' => array('class' => 'yupe\\components\\actions\\YFeedAction', 'data' => $data, 'title' => $title, 'description' => $description, 'itemFields' => array('author_object' => 'user', 'author_nickname' => 'nick_name', 'content' => 'short_text', 'datetime' => 'date', 'link' => '/news/news/show', 'linkParams' => array('title' => 'alias'), 'title' => 'title', 'updated' => 'change_date')));
 }
コード例 #12
0
ファイル: LatestNews.php プロジェクト: awecode/awecms
    protected function renderContent()
    {
        $news_items = News::model()->getLatestNews();
        ?>
        <ul>
    <?php 
        foreach ($news_items as $news) {
            ?>
        <li>
            <?php 
            $title = CHtml::encode($news->title);
            echo CHtml::link($title, $news->url);
            ?>
        </li>
    <?php 
        }
        ?>
    <?php 
        if (!$news_items) {
            echo Yii::t('app', 'Sorry, no latest news!');
        }
        ?>
</ul>

        <?php 
    }
コード例 #13
0
 public function actionRss()
 {
     $this->layout = '';
     header('Content-Type: text/xml; charset=utf-8', true);
     $newsFeed = News::model()->findAll(array('order' => 'date DESC', 'limit' => '50', 'condition' => 'rss = 1'));
     $this->renderPartial('rss', array('newsFeed' => $newsFeed));
 }
コード例 #14
0
ファイル: SiteController.php プロジェクト: seaice/li
 public function dashboardAction()
 {
     $file = array("name" => "a71ea8d3fd1f413458fdd278261f95cad0c85eea.jpg", "type" => "image/jpeg", "tmp_name" => "F:\nmpp\tmp\\phpBA0B.tmp", "error" => '', "size" => '123');
     $upload = new Upload();
     $upload->allowType = 'jpg,gif,png';
     if (false == $upload->save($file)) {
         debug($upload->getError());
     }
     // $upload->saveRemoteImage('http://img4.cache.netease.com/ent/2015/12/15/20151215112500b0c08.jpg');
     die;
     // Log::log()->trade->debug("123");
     // $test = new Tes123123t();
     $data = News::model()->findByPk(3);
     // SELECT * FROM `news` WHERE (id = '2') LIMIT 1
     $data = News::model()->find(array('condition' => array(array('id', '=', 3))));
     // SELECT * FROM `news` WHERE (id = '1') LIMIT 1
     $data = News::model()->findAll(array('field' => '*', 'condition' => array(array('id', '>', 2), array('title', '!=', ''), array('id', 'between', array(1, 500))), 'order' => 'id desc'));
     // SELECT * FROM `news` WHERE (id > '2') AND (title != '') AND (id IN ('1','2','3')) AND (id BETWEEN '1' AND '5') ORDER BY id desc
     $data = News::model()->count(array('field' => '*', 'condition' => array(array('id', '>', 2), array('title', '!=', ''), array('id', 'between', array(1, 500))), 'order' => 'id desc'));
     // SELECT COUNT(*) as `count` FROM `news` WHERE (id > '2') AND (title != '') AND (id BETWEEN '1' AND '500') ORDER BY id desc
     // $data = News::model()
     //     ->leftJoin('news_class','news_class.id=news.class')
     //     ->findAll(array(
     //         'field'=>'news.*,news_class.name',
     //         'condition'=>array(
     //             array('news.id','>',2),
     //             array('title','!=',''),
     //             array('news.id','in',array(1,2,3)),
     //             array('news.id','between',array(1,5)),
     //         ),
     //         'order'=>'news.id desc',
     //     )
     // );
     // SELECT news.*,news_class.name FROM `news` LEFT JOIN news_class ON news_class.id=news.class WHERE (news.id > '2') AND (title != '') AND (news.id IN ('1','2','3')) AND (news.id BETWEEN '1' AND '5') ORDER BY news.id desc
     // debug($data);
     // debug($data);
     // debug($_SESSION['name']);
     // $_SESSION['name'] = 'my name is hh';
     // debug($_SESSION);
     // $r = new \Redis();
     // $r->connect('127.0.0.1', '6379');
     // $test = Redis::redis()->test->get('myname');
     // $r->set('myname','ikodota');
     // $test = $r->get('myname');
     // debug($_SESSION);
     // debug(microtime());
     // for($i=1;$i<10000;$i++)
     // {
     //     $str = substr(sha1(rand()), 0, 4);
     // }
     // debug(microtime());
     // $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
     // for($i=1;$i<10000;$i++)
     // {
     //     $str = (substr(str_shuffle($pool), 0, 4));
     // }
     // debug(microtime());
     $this->display();
 }
コード例 #15
0
ファイル: SiteController.php プロジェクト: hntvu/db_for_site
 public function actionIndex()
 {
     //lay 1 tin moi de hien thi phan tin tuc
     $headTab = new Menu();
     $numHeadTab1 = $headTab->model()->find('alias="tin-dia-phuong"')->id;
     $cdbNewsLocal = new CDbCriteria();
     $cdbNewsLocal->order = 'datecreate DESC';
     $cdbNewsLocal->limit = 1;
     $cdbNewsLocal->condition = 'idmenu =' . $numHeadTab1;
     $modelNewsLocal = News::model()->find($cdbNewsLocal);
     if ($modelNewsLocal === NULL) {
         Yii::app()->user->setFlash('LocalEmpty', 'Dữ liệu đang cập nhật');
         $modelLocalMore = Yii::app()->user->setFlash('LocalEmptyMore', 'Dữ liệu đang cập nhật');
     } else {
         //lay 4 tin khac de hien thi phan tin tuc
         $cdbLocalMore = new CDbCriteria();
         $cdbLocalMore->limit = 4;
         $cdbLocalMore->order = 'datecreate DESC';
         $cdbLocalMore->condition = 'id NOT IN ("' . $modelNewsLocal->id . '") AND idmenu=' . $modelNewsLocal->idmenu;
         $modelLocalMore = News::model()->findAll($cdbLocalMore);
     }
     //lay 1 tin moi de hien thi phan Tin cong nghe
     $numHeadTab2 = $headTab->model()->find('alias="tin-cong-nghe"')->id;
     $cdbNewsTech = new CDbCriteria();
     $cdbNewsTech->order = 'datecreate DESC';
     $cdbNewsTech->limit = 1;
     $cdbNewsTech->condition = 'idmenu =' . $numHeadTab2;
     $modelNewsTech = News::model()->find($cdbNewsTech);
     if ($modelNewsTech === NULL) {
         Yii::app()->user->setFlash('emptyData', 'Dữ liệu đang cập nhật');
         $modelTechMore = Yii::app()->user->setFlash('emptyDataMore', 'Dữ liệu đang cập nhật');
     } else {
         //lay 2 tin khac de hien thi phan Tin cong nghe
         $cdbTechMore = new CDbCriteria();
         $cdbTechMore->limit = 2;
         $cdbTechMore->order = 'datecreate DESC';
         $cdbTechMore->condition = 'id NOT IN ("' . $modelNewsTech->id . '") AND idmenu=' . $modelNewsTech->idmenu;
         $modelTechMore = News::model()->findAll($cdbTechMore);
     }
     //lay 1 tin moi de hien thi phan Thong bao
     $numHeadTab3 = $headTab->model()->find('alias="thong-bao"')->id;
     $cdbNewsNotify = new CDbCriteria();
     $cdbNewsNotify->order = 'datecreate DESC';
     $cdbNewsNotify->limit = 1;
     $cdbNewsNotify->condition = 'idmenu =' . $numHeadTab3;
     $modelNewsNotify = News::model()->find($cdbNewsNotify);
     if ($modelNewsNotify === NULL) {
         Yii::app()->user->setFlash('NofifyEmpty', 'Dữ liệu đang cập nhật');
         $modelNotifyMore = Yii::app()->user->setFlash('MoreNofifyEmpty', 'Dữ liệu đang cập nhật');
     } else {
         //lay 2 tin khac de hien thi phan Tin cong nghe
         $cdbNotifyMore = new CDbCriteria();
         $cdbNotifyMore->limit = 2;
         $cdbNotifyMore->order = 'datecreate DESC';
         $cdbNotifyMore->condition = 'id NOT IN ("' . $modelNewsNotify->id . '") AND idmenu=' . $modelNewsNotify->idmenu;
         $modelNotifyMore = News::model()->findAll($cdbNotifyMore);
     }
     $this->render('index', array('modelNewsLocal' => $modelNewsLocal, 'modelLocalMore' => $modelLocalMore, 'modelNewsTech' => $modelNewsTech, 'modelTechMore' => $modelTechMore, 'modelNewsNotify' => $modelNewsNotify, 'modelNotifyMore' => $modelNotifyMore));
 }
コード例 #16
0
ファイル: NewsController.php プロジェクト: mmorpg2015/ghtweb5
 public function loadModel($id)
 {
     $model = News::model()->not_deleted()->findByPk($id);
     if (!$model) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
コード例 #17
0
ファイル: NewsController.php プロジェクト: RSol/yupe
 public function actionShow($title)
 {
     $news = News::model()->published()->find('alias = :alias', array(':alias' => $title));
     if (!$news) {
         throw new CHttpException(404, Yii::t('news', 'Новость не найдена!'));
     }
     $this->render('news', array('news' => $news));
 }
コード例 #18
0
ファイル: SmiWidget.php プロジェクト: Vladimirtishenko/sn
 public function init()
 {
     $criteria = new CDbCriteria();
     $criteria->limit = 7;
     $criteria->condition = 'is_main = 1';
     $criteria->order = 'id DESC';
     $this->smis = News::model()->findAll($criteria);
 }
コード例 #19
0
 public function init()
 {
     $criteria = new CDbCriteria();
     $criteria->condition = 'main = :main';
     $criteria->params = array(':main' => 1);
     $criteria->order = 'date DESC';
     $this->model = News::model()->find($criteria);
 }
コード例 #20
0
ファイル: LatestNews.php プロジェクト: schiz/teff
    public function renderContent()
    {
        $lastTwoNews = News::model()->getLastTwoNews();

        $this->render('latestNews', array(
            'lastNews'=>$lastTwoNews
        ));
    }
コード例 #21
0
ファイル: ListAction.php プロジェクト: mmorpg2015/ghtweb5
 public function run()
 {
     $dependency = new CDbCacheDependency('SELECT MAX(UNIX_TIMESTAMP(updated_at)), COUNT(0) FROM {{news}} WHERE status = :status AND lang = :lang');
     $dependency->params = array('status' => ActiveRecord::STATUS_ON, 'lang' => app()->getLanguage());
     $model = News::model()->cache(3600 * 24, $dependency, 2)->opened();
     $dataProvider = new CActiveDataProvider($model, array('criteria' => array('condition' => 'lang = :lang', 'params' => array('lang' => app()->getLanguage()), 'order' => 't.created_at DESC'), 'pagination' => array('pageSize' => (int) config('news.per_page'), 'pageVar' => 'page')));
     app()->getController()->render('//news', array('dataProvider' => $dataProvider));
 }
コード例 #22
0
 public function loadModel($id)
 {
     $model = News::model()->findByAttributes(array('id_new' => $id, 'status_new' => 1));
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
コード例 #23
0
 /**
  * Возвращает объект новости по переданному идентификатору
  *
  * @return News[]
  */
 private function getNews()
 {
     $params = array('campaign_id' => $this->args['campaign_id']);
     if (isset($this->args['news_id'])) {
         $params['id'] = $this->args['news_id'];
     }
     return News::model()->active()->findAllByAttributes($params);
 }
コード例 #24
0
ファイル: NewsModule.php プロジェクト: buildshop/bs-common
 public function afterUninstall()
 {
     //Удаляем таблицу модуля
     Yii::app()->settings->clear('news');
     Yii::app()->db->createCommand()->dropTable(News::model()->tableName());
     Yii::app()->db->createCommand()->dropTable(NewsTranslate::model()->tableName());
     return parent::afterUninstall();
 }
コード例 #25
0
 public function loadModelByAlias($alias)
 {
     $model = News::model()->find('alias=:alias', array(':alias' => $alias));
     if ($model === null) {
         throw new CHttpException(404, 'Запрашиваемая страница не существует.');
     }
     return $model;
 }
 public function actionData()
 {
     $criteria = new CDbCriteria();
     $criteria->order = 'created_on DESC';
     $criteria->limit = 10;
     $news = News::model()->findAll($criteria);
     echo CJSON::encode($news);
 }
コード例 #27
0
ファイル: NewsController.php プロジェクト: awecode/awecms
 public function loadModel($id)
 {
     $model = News::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, Yii::t('app', 'The requested page does not exist.'));
     }
     return $model;
 }
コード例 #28
0
 /**
  * @param Event $event
  */
 public static function onGenerate(Event $event)
 {
     $generator = $event->getGenerator();
     $provider = new CActiveDataProvider(News::model()->published()->public());
     foreach (new CDataProviderIterator($provider) as $item) {
         $generator->addItem(Yii::app()->createAbsoluteUrl('/news/news/view', ['slug' => $item->slug]), strtotime($item->update_time), SitemapHelper::FREQUENCY_WEEKLY, 0.5);
     }
 }
コード例 #29
0
ファイル: NewsController.php プロジェクト: equa2k9/jazz
 public function loadModelByAlias($alias_url)
 {
     $model = News::model()->findByAttributes(array('alias_url' => $alias_url));
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
 /**
  * @return bool|void
  * @internal Il y a un 'implicit' commit de MySQL sur le create table
  * @see      http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html
  */
 public function up()
 {
     // Ajout de la colonne tag.language_id
     $this->addColumn('tag', 'language_id', 'INT(10) UNSIGNED NOT NULL DEFAULT 1 AFTER id');
     $this->addForeignKey('fk_language_id_tag', 'tag', 'language_id', 'language', 'id', 'cascade', 'cascade');
     $this->dropIndex('tag_index_name', 'tag');
     $this->createIndex('tag_index_name', 'tag', 'name, language_id', true);
     // Ajout de la table translated_news introduisant la version multilingue des textes
     $this->createTable('translated_news', array('id' => 'int(10) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY', 'news_id' => 'int(10) UNSIGNED NOT NULL', 'language_id' => 'int(10) UNSIGNED NOT NULL', 'title' => 'varchar(255) NOT NULL', 'slug' => 'varchar(255) NOT NULL', 'description' => 'varchar(255)', 'keywords' => 'varchar(255)', 'content' => 'text', 'created_at' => 'datetime NOT NULL', 'updated_at' => 'datetime NOT NULL'), 'ENGINE = InnoDB');
     // clés dans translated_news
     $this->addForeignKey('fk_news_id_translated_news', 'translated_news', 'news_id', 'news', 'id', 'cascade', 'cascade');
     $this->addForeignKey('fk_language_id_translated_news', 'translated_news', 'language_id', 'language', 'id', 'restrict', 'cascade');
     $this->createIndex('idx_title_translated_news', 'translated_news', 'title');
     $this->createIndex('idx_slug_translated_news', 'translated_news', 'slug', true);
     // Ajout de la table d'association translated_news_has_tag
     $this->createTable('translated_news_has_tag', array('translated_news_id' => 'INT(10) UNSIGNED NOT NULL', 'tag_id' => 'INT(10) UNSIGNED NOT NULL'), 'ENGINE = InnoDB');
     // clés dans translated_news_has_tag
     $this->addPrimaryKey('PRIMARY', 'translated_news_has_tag', 'translated_news_id, tag_id');
     $this->addForeignKey('fk_translated_news_id_translated_news_has_tag', 'translated_news_has_tag', 'translated_news_id', 'translated_news', 'id', 'cascade', 'cascade');
     $this->addForeignKey('fk_tag_id_translated_news_has_tag', 'translated_news_has_tag', 'tag_id', 'tag', 'id', 'cascade', 'cascade');
     // Copie des textes depuis news vers translated_news
     /** @var $news News */
     foreach (News::model()->findAll() as $news) {
         $translated = new TranslatedNews();
         $translated->news_id = $news->id;
         $translated->language_id = $news->language_id ? $news->language_id : 1;
         $translated->title = $news->title;
         $translated->slug = $news->slug;
         $translated->description = $news->description;
         $translated->content = $news->content;
         $translated->created_at = $news->created_at;
         $translated->updated_at = $news->updated_at;
         if (!$translated->save()) {
             echo "\nErreur sur save() pour la migration de la news {$news->id}\n";
         }
     }
     // Migration de news_tag vers translated_news_has_tags
     /** @var $translation TranslatedNews */
     foreach (TranslatedNews::model()->findAll() as $translation) {
         /** @var $oldAsso NewsTag */
         // On récupère la news associée à chaque traduction : c'est l'id de cette news qui donne les tags dans news_tag
         // les news en anglais n'ont pas de tags, on corrige ça à la main
         foreach (NewsTag::model()->findAllByAttributes(array('news_id' => $translation->news_id)) as $oldAsso) {
             $newAsso = new TranslatedNewsHasTag();
             $newAsso->tag_id = $oldAsso->tag_id;
             $newAsso->translated_news_id = $translation->id;
             if (!$newAsso->save()) {
                 echo "Erreur sur newAsso->save() pour translated_news_id = {$translation->id} / tag_id = {$oldAsso->tag_id}\n";
             }
             // NB : on ne met par tag.language_id à jour car actuellement, plusieurs tags sont utilisés en fr et en en :
             // PHP, JQuery, etc...
         }
     }
     echo "\nPasser le champ language_id a anglais pour les news en anglais\n";
     echo "Faire pointer les news traduites et les news originales vers la meme news de base\n";
     echo "Penser a corriger les tags pour les articles en anglais\n";
     echo "A faire apres : nettoyer la table news et supprimer comments\n";
 }