Example #1
0
 protected function _run()
 {
     $key = $this->getCacheKey() . 'run';
     $dependency = new TagDependency(['tags' => [$this->className() . (string) $this->namespace, (new Tree())->getTableCacheTag()]]);
     $result = \Yii::$app->cache->get($key);
     if ($result === false || $this->enabledRunCache == Cms::BOOL_N) {
         $this->activeQuery = Tree::find();
         if ($this->treePid) {
             $this->activeQuery->andWhere(['pid' => $this->treePid]);
         }
         if ($this->level) {
             $this->activeQuery->andWhere(['level' => $this->level]);
         }
         if ($this->active) {
             $this->activeQuery->andWhere(['active' => $this->active]);
         }
         if ($this->site_codes) {
             $this->activeQuery->andWhere(['site_code' => $this->site_codes]);
         }
         if ($this->enabledCurrentSite == Cms::BOOL_Y && ($currentSite = \Yii::$app->cms->site)) {
             $this->activeQuery->andWhere(['site_code' => $currentSite->code]);
         }
         if ($this->orderBy) {
             $this->activeQuery->orderBy([$this->orderBy => (int) $this->order]);
         }
         if ($this->tree_type_ids) {
             $this->activeQuery->andWhere(['tree_type_id' => $this->tree_type_ids]);
         }
         /**
          *
          */
         if ($this->with) {
             $this->activeQuery->with($this->with);
         }
         if ($this->activeQueryCallback && is_callable($this->activeQueryCallback)) {
             $callback = $this->activeQueryCallback;
             $callback($this->activeQuery);
         }
         $result = parent::_run();
         \Yii::$app->cache->set($key, $result, (int) $this->runCacheDuration, $dependency);
     }
     return $result;
 }