Esempio n. 1
0
 public function actionTagPages($tag_name)
 {
     $tag = Tag::model()->findByAttributes(['name' => $tag_name]);
     if (!$tag) {
         $this->pageNotFound();
     }
     $this->page_title = t('Страницы с тегом') . ' ' . $tag->name;
     $tag_rel_table = TagRel::model()->tableName();
     $criteria = new CDbCriteria();
     $criteria->compare('t.status', Page::STATUS_PUBLISHED);
     $criteria->with = ['tags', 'sections'];
     $criteria->addCondition("t.id IN (\r\n            SELECT object_id FROM {$tag_rel_table}\r\n                WHERE tag_id = {$tag->id} AND\r\n                       model_id  = 'Page'\r\n        )");
     $data_provider = new CActiveDataProvider('Page', ['criteria' => $criteria, 'pagination' => ['pageSize' => '10']]);
     $this->render('index', ['data_provider' => $data_provider, 'tag' => $tag]);
 }
Esempio n. 2
0
 public function grabTagsFromText()
 {
     /**
      * @var $tag DOMElement
      */
     $filters = array('|^\\([0-9\\.]+\\)$|');
     $doc = new DOMDocument();
     @$doc->loadHTML($this->text);
     $xpath = new DOMXPath($doc);
     $tags = $xpath->query('//strong');
     foreach ($tags as $tag_name) {
         $tag_name = trim(utf8_decode($tag_name->textContent));
         if (mb_strlen($tag_name, 'utf-8') > 30) {
             continue;
         }
         foreach ($filters as $pattern) {
             if (preg_match($pattern, $tag_name)) {
                 continue 2;
             }
         }
         $tag = Tag::model()->find("name='{$tag_name}'");
         if (!$tag) {
             $tag = new Tag();
             $tag->name = $tag_name;
             $tag->save();
         }
         TagRel::createIfNotExists($tag->id, $this);
     }
 }
Esempio n. 3
0
 public function _deleteRels($exclude_ids)
 {
     $criteria = new CDbCriteria(['condition' => 'model_id=:model_id AND object_id=:object_id', 'params' => ['object_id' => $this->owner->id, 'model_id' => get_class($this->owner)]]);
     $criteria->addNotInCondition('tag_id', $exclude_ids);
     TagRel::model()->deleteAll($criteria);
 }
Esempio n. 4
0
 public function _deleteRels()
 {
     TagRel::model()->deleteAll("object_id = '{$this->owner->id}' AND model_id = '" . get_class($this->owner) . "'");
 }