public function actionConfirm() { if (!Yii::$app->user->can('confirmRelease')) { throw new yii\web\ForbiddenHttpException(); } if (!Yii::$app->request->isPost || !isset($_POST['Release']) || !isset($_POST['Release']['mod_id'])) { throw new yii\web\BadRequestHttpException(); } if (isset($_POST['Release']['publish_at'])) { $_POST['Release']['publish_at'] = strtotime($_POST['Release']['publish_at']); } $model = Release::createObject($_POST['Release']); if ($model->save()) { Yii::$app->session->setFlash('release-confirm', ['success', 'Success', 'Release has been confirmed.']); } else { $errors = []; foreach ($model->getErrors() as $field) { foreach ($field as $error) { $errors[] = $error; } } Yii::$app->session->setFlash('release-confirm', ['warning', 'Error', implode("<br/>", $errors)]); } return $this->actionView($model->mod->project->group->alias, $model->mod->project->alias, $model->mod->alias); }
/** * @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; }