/** * Creates data provider instance with search query applied * * @param array $params * @param bool $unimproved * * @return ActiveDataProvider */ public function search($params = [], $unimproved = false) { $query = Release::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, 'mod_id' => $this->mod_id, 'status' => $this->status, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]); $query->andFilterWhere(['<', 'publish_at', $this->publish_at]); $query->andFilterWhere(['like', 'version', $this->version]); $query->andFilterWhere(['like', 'file_name', $this->version]); if ($unimproved) { $models = $dataProvider->getModels(); $keys = $dataProvider->getKeys(); $unimproved = $this->mod->getUnimprovedReleases($models); foreach ($unimproved as $release) { array_unshift($models, $release); $keys[] = key($models); } $dataProvider->setModels($models); $dataProvider->setKeys($keys); } return $dataProvider; }
public function loadModel($id) { if (($model = Release::findOne($id)) === null) { throw new yii\web\NotFoundHttpException('Release not found'); } if (!Yii::$app->user->can('managementReleases') && !$model->isPublished() || !Yii::$app->user->can('viewProjectModReleases', ['mod' => $model->mod])) { throw new yii\web\ForbiddenHttpException(); } return $model; }
/** * @param array|null $improves * @return array unimproved releases */ public function getUnimprovedReleases($improves = null) { if ($improves === null) { $improves = $this->releases; } $path = Yii::getAlias($this->module->basePathReleases . '/' . $this->getFullAlias(count($this->project->mods) > 1 ? true : false)); FileHelper::createDirectory($path); $listFolderFiles = scandir($path); $listTableFiles = ArrayHelper::map($improves, 'id', 'file_name'); foreach ($listTableFiles as $i => $file) { if (($key = array_search($file, $listFolderFiles)) !== false) { unset($listFolderFiles[$key]); } } $unimproved = []; foreach ($listFolderFiles as $file) { if ($file != '.' && $file != '..') { $release = Release::createObject(['mod_id' => $this->id, 'file_name' => $file]); $release->parseFile(); $unimproved[] = $release; } } return $unimproved; }
public function loadModel($id, $group = null, $project = null, $mod = null) { if (($model = Release::findOne($id)) === null) { throw new NotFoundHttpException('Release not found'); } if ($group !== null && $project !== null && $mod !== null) { if ($mod == 'default') { $mod = null; } if ($model->mod->alias != $mod || $model->mod->project->alias != $project || $model->mod->project->group->alias != $group) { throw new NotFoundHttpException('Release not found'); } } return $model; }