public function init() { $this->css[] = \Yii::$app->settings->get($this->settingsKey, self::SETTINGS_SECTION) . '-' . self::MAIN_LESS_FILE; parent::init(); if (!$this->sourcePath) { // TODO: this is workaround for empty source path when using bundled assets return; } else { $sourcePath = \Yii::getAlias($this->sourcePath); @mkdir($sourcePath); $models = Less::find()->all(); $hash = sha1(Json::encode($models)); if ($hash !== \Yii::$app->cache->get(self::CACHE_ID)) { $lessFiles = FileHelper::findFiles($sourcePath, ['only' => ['*.less']]); foreach ($lessFiles as $file) { unlink($file); } foreach ($models as $model) { file_put_contents("{$sourcePath}/{$model->key}.less", $model->value); } $dependency = new FileDependency(); $dependency->fileName = __FILE__; \Yii::$app->cache->set(self::CACHE_ID, $hash, 0, $dependency); @touch($sourcePath); } } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = LessModel::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id]); $query->andFilterWhere(['like', 'key', $this->key])->andFilterWhere(['like', 'value', $this->value]); $query->orderBy('key'); return $dataProvider; }
/** * Finds the Less model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * * @param integer $id * * @return Less the loaded model * @throws HttpException if the model cannot be found */ protected function findModel($id) { if (($model = Less::findOne($id)) !== null) { return $model; } else { throw new HttpException(404, 'The requested page does not exist.'); } }