/** * 提交任务 * * @param $projectId 没有projectId则显示列表 * @return string */ public function actionSubmit($projectId = null) { if (!$projectId) { // 显示所有项目列表 $projects = Project::find()->leftJoin(Group::tableName(), '`group`.`project_id`=`project`.`id`')->where(['project.status' => Project::STATUS_VALID, '`group`.`user_id`' => $this->uid])->asArray()->all(); return $this->render('select-project', ['projects' => $projects]); } $task = new Task(); $conf = Project::getConf($projectId); if (!$conf) { throw new \Exception(yii::t('task', 'unknown project')); } if (\Yii::$app->request->getIsPost()) { $group = Group::find()->where(['user_id' => $this->uid, 'project_id' => $projectId])->count(); if (!$group) { throw new \Exception(yii::t('task', 'you are not the member of project')); } if ($task->load(\Yii::$app->request->post())) { // 是否需要审核 $status = $conf->audit == Project::AUDIT_YES ? Task::STATUS_SUBMIT : Task::STATUS_PASS; $task->user_id = $this->uid; $task->project_id = $projectId; $task->status = $status; $task->file_list = implode("\n", (array) $task->file_list); if ($task->save()) { return $this->redirect('@web/task/'); } } } $tpl = $conf->repo_type == Project::REPO_GIT ? 'submit-git' : 'submit-svn'; return $this->render($tpl, ['task' => $task, 'conf' => $conf]); }
public function actionFilediff($projectId, $file) { \Yii::$app->response->format = 'json'; $project = Project::getConf($projectId); if (!$project) { throw new \Exception(yii::t('task', 'unknown project')); } return (new CodeFile($project))->diffWithOnline($file); }
/** * 提交任务 * * @param $projectId * @return string */ public function actionSubmit($projectId = null) { $task = new Task(); if ($projectId) { // svn下无trunk $nonTrunk = false; $conf = Project::find()->where(['id' => $projectId, 'status' => Project::STATUS_VALID])->one(); $conf = Project::getConf($projectId); // 第一次可能会因为更新而耗时,但一般不会,第一次初始化会是在检测里 if ($conf->repo_type == Project::REPO_SVN && !file_exists(Project::getDeployFromDir())) { $version = Repo::getRevision($conf); $version->updateRepo(); } // 为了简化svn无trunk, branches时,不需要做查看分支,直接就是主干 $svnTrunk = sprintf('%s/trunk', Project::getDeployFromDir()); // svn下无trunk目录 if (!file_exists($svnTrunk)) { $nonTrunk = true; } } if (\Yii::$app->request->getIsPost()) { if (!$conf) { throw new \Exception(yii::t('task', 'unknown project')); } $group = Group::find()->where(['user_id' => $this->uid, 'project_id' => $projectId])->count(); if (!$group) { throw new \Exception(yii::t('task', 'you are not the member of project')); } if ($task->load(\Yii::$app->request->post())) { // 是否需要审核 $status = $conf->audit == Project::AUDIT_YES ? Task::STATUS_SUBMIT : Task::STATUS_PASS; $task->user_id = $this->uid; $task->project_id = $projectId; $task->status = $status; if ($task->save()) { return $this->redirect('/task/'); } } } if ($projectId) { $tpl = $conf->repo_type == Project::REPO_GIT ? 'submit-git' : 'submit-svn'; return $this->render($tpl, ['task' => $task, 'conf' => $conf, 'nonTrunk' => $nonTrunk]); } // 成员所属项目 $projects = Project::find()->leftJoin(Group::tableName(), '`group`.project_id=project.id')->where(['project.status' => Project::STATUS_VALID, '`group`.user_id' => $this->uid])->asArray()->all(); return $this->render('select-project', ['projects' => $projects]); }
/** * 获取commit之间的文件 * * @param $projectId */ public function actionGetCommitFile($projectId, $start, $end, $branch = 'trunk') { $conf = Project::getConf($projectId); $revision = Repo::getRevision($conf); $list = $revision->getFileBetweenCommits($branch, $start, $end); $this->renderJson($list); }
/** * 简化 * * @param integer $id * @return the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Project::getConf($id)) !== null) { if ($model->user_id != $this->uid) { throw new \Exception(yii::t('w', 'you are not master of project')); } return $model; } else { throw new NotFoundHttpException(yii::t('conf', 'project not exists')); } }
/** * 获取commit历史 * * @param $projectId */ public function actionGetCommitHistory($projectId, $branch = 'master') { $git = new Git(); $conf = Project::getConf($projectId); $git->setConfig($conf); if ($conf->git_type == Project::GIT_TAG) { $list = $git->getTagList(); } else { $list = $git->getCommitList($branch); } $this->renderJson($list); }
/** * 简化 * * @param integer $id * @return the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Project::getConf($id)) !== null) { if ($model->user_id != $this->uid) { throw new \Exception('不可以操作其它人的项目:)'); } return $model; } else { throw new NotFoundHttpException('该项目不存在:)'); } }
/** * 简化 * * @param integer $id * @return the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Project::getConf($id)) !== null) { //判断是否为管理员 if (!Group::isAuditAdmin($this->uid, $model->id)) { throw new \Exception(yii::t('w', 'you are not admin of project')); } return $model; } else { throw new NotFoundHttpException(yii::t('conf', 'project not exists')); } }