From dd4f3bfbad36de070cc9d9f3933f42c7db99e00b Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Thu, 19 Oct 2017 22:05:00 +0700 Subject: [PATCH] Added 'user_id' (created by) and 'create_date' columns to 'project' table. --- .../Controller/ProjectController.php | 4 +- .../20151015124825_convert_errors.php | 10 +-- ...171019143346_added_additional_columns3.php | 56 +++++++++++++++++ src/PHPCensor/Model/BuildError.php | 28 ++++----- src/PHPCensor/Model/Project.php | 63 +++++++++++++++++++ src/PHPCensor/Service/ProjectService.php | 16 +++-- .../PHPCensor/Service/ProjectServiceTest.php | 6 +- 7 files changed, 155 insertions(+), 28 deletions(-) create mode 100644 src/PHPCensor/Migrations/20171019143346_added_additional_columns3.php diff --git a/src/PHPCensor/Controller/ProjectController.php b/src/PHPCensor/Controller/ProjectController.php index 96299a42..8276a12b 100644 --- a/src/PHPCensor/Controller/ProjectController.php +++ b/src/PHPCensor/Controller/ProjectController.php @@ -327,7 +327,9 @@ class ProjectController extends PHPCensor\Controller 'environments' => $this->getParam('environments', null), ]; - $project = $this->projectService->createProject($title, $type, $reference, $options); + /** @var PHPCensor\Model\User $user */ + $user = $_SESSION['php-censor-user']; + $project = $this->projectService->createProject($title, $type, $reference, $user->getId(), $options); $response = new RedirectResponse(); $response->setHeader('Location', APP_URL.'project/view/' . $project->getId()); diff --git a/src/PHPCensor/Migrations/20151015124825_convert_errors.php b/src/PHPCensor/Migrations/20151015124825_convert_errors.php index 37751b69..7cb07683 100644 --- a/src/PHPCensor/Migrations/20151015124825_convert_errors.php +++ b/src/PHPCensor/Migrations/20151015124825_convert_errors.php @@ -66,7 +66,7 @@ class ConvertErrors extends AbstractMigration $buildError = new BuildError(); $buildError->setBuildId($meta->getBuildId()); $buildError->setPlugin('php_mess_detector'); - $buildError->setCreatedDate(new \DateTime()); + $buildError->setCreateDate(new \DateTime()); $buildError->setFile($error['file']); $buildError->setLineStart($error['line_start']); $buildError->setLineEnd($error['line_end']); @@ -87,7 +87,7 @@ class ConvertErrors extends AbstractMigration $buildError = new BuildError(); $buildError->setBuildId($meta->getBuildId()); $buildError->setPlugin('php_code_sniffer'); - $buildError->setCreatedDate(new \DateTime()); + $buildError->setCreateDate(new \DateTime()); $buildError->setFile($error['file']); $buildError->setLineStart($error['line']); $buildError->setLineEnd($error['line']); @@ -117,7 +117,7 @@ class ConvertErrors extends AbstractMigration $buildError = new BuildError(); $buildError->setBuildId($meta->getBuildId()); $buildError->setPlugin('php_docblock_checker'); - $buildError->setCreatedDate(new \DateTime()); + $buildError->setCreateDate(new \DateTime()); $buildError->setFile($error['file']); $buildError->setLineStart($error['line']); $buildError->setLineEnd($error['line']); @@ -148,7 +148,7 @@ class ConvertErrors extends AbstractMigration $buildError = new BuildError(); $buildError->setBuildId($meta->getBuildId()); $buildError->setPlugin('php_cpd'); - $buildError->setCreatedDate(new \DateTime()); + $buildError->setCreateDate(new \DateTime()); $buildError->setFile($error['file']); $buildError->setLineStart($error['line_start']); $buildError->setLineEnd($error['line_end']); @@ -169,7 +169,7 @@ class ConvertErrors extends AbstractMigration $buildError = new BuildError(); $buildError->setBuildId($meta->getBuildId()); $buildError->setPlugin('technical_debt'); - $buildError->setCreatedDate(new \DateTime()); + $buildError->setCreateDate(new \DateTime()); $buildError->setFile($error['file']); $buildError->setLineStart($error['line']); $buildError->setSeverity(BuildError::SEVERITY_NORMAL); diff --git a/src/PHPCensor/Migrations/20171019143346_added_additional_columns3.php b/src/PHPCensor/Migrations/20171019143346_added_additional_columns3.php new file mode 100644 index 00000000..cd305cdb --- /dev/null +++ b/src/PHPCensor/Migrations/20171019143346_added_additional_columns3.php @@ -0,0 +1,56 @@ +table('build_error'); + + if ($table->hasColumn('created_date') && !$table->hasColumn('create_date')) { + $table + ->renameColumn('created_date', 'create_date') + ->save(); + } + + $table = $this->table('project'); + + if (!$table->hasColumn('create_date')) { + $table + ->addColumn('create_date', 'datetime', ['null' => true]) + ->save(); + } + + if (!$table->hasColumn('user_id')) { + $table + ->addColumn('user_id', 'integer', ['default' => 0]) + ->save(); + } + } + + public function down() + { + $table = $this->table('build_error'); + + if ($table->hasColumn('create_date') && !$table->hasColumn('created_date')) { + $table + ->renameColumn('create_date', 'created_date') + ->save(); + } + + $table = $this->table('project'); + + if ($table->hasColumn('create_date')) { + $table + ->removeColumn('create_date') + ->save(); + } + + if ($table->hasColumn('user_id')) { + $table + ->removeColumn('user_id') + ->save(); + } + } +} diff --git a/src/PHPCensor/Model/BuildError.php b/src/PHPCensor/Model/BuildError.php index a24ca754..324e2671 100644 --- a/src/PHPCensor/Model/BuildError.php +++ b/src/PHPCensor/Model/BuildError.php @@ -8,9 +8,9 @@ use b8\Store\Factory; class BuildError extends Model { const SEVERITY_CRITICAL = 0; - const SEVERITY_HIGH = 1; - const SEVERITY_NORMAL = 2; - const SEVERITY_LOW = 3; + const SEVERITY_HIGH = 1; + const SEVERITY_NORMAL = 2; + const SEVERITY_LOW = 3; /** * @var array @@ -39,7 +39,7 @@ class BuildError extends Model 'line_end' => null, 'severity' => null, 'message' => null, - 'created_date' => null, + 'create_date' => null, ]; /** @@ -55,7 +55,7 @@ class BuildError extends Model 'line_end' => 'getLineEnd', 'severity' => 'getSeverity', 'message' => 'getMessage', - 'created_date' => 'getCreatedDate', + 'create_date' => 'getCreateDate', // Foreign key getters: 'Build' => 'getBuild', @@ -74,7 +74,7 @@ class BuildError extends Model 'line_end' => 'setLineEnd', 'severity' => 'setSeverity', 'message' => 'setMessage', - 'created_date' => 'setCreatedDate', + 'create_date' => 'setCreateDate', // Foreign key setters: 'Build' => 'setBuild', @@ -163,9 +163,9 @@ class BuildError extends Model /** * @return \DateTime */ - public function getCreatedDate() + public function getCreateDate() { - $rtn = $this->data['created_date']; + $rtn = $this->data['create_date']; if (!empty($rtn)) { $rtn = new \DateTime($rtn); @@ -310,18 +310,18 @@ class BuildError extends Model /** * @param $value \DateTime */ - public function setCreatedDate($value) + public function setCreateDate($value) { - $this->validateNotNull('created_date', $value); - $this->validateDate('created_date', $value); + $this->validateNotNull('create_date', $value); + $this->validateDate('create_date', $value); - if ($this->data['created_date'] === $value) { + if ($this->data['create_date'] === $value) { return; } - $this->data['created_date'] = $value; + $this->data['create_date'] = $value; - $this->setModified('created_date'); + $this->setModified('create_date'); } /** diff --git a/src/PHPCensor/Model/Project.php b/src/PHPCensor/Model/Project.php index 9696e61f..bf461b7a 100644 --- a/src/PHPCensor/Model/Project.php +++ b/src/PHPCensor/Model/Project.php @@ -47,6 +47,8 @@ class Project extends Model 'allow_public_status' => null, 'archived' => null, 'group_id' => null, + 'create_date' => null, + 'user_id' => 0, ]; /** @@ -68,6 +70,8 @@ class Project extends Model 'allow_public_status' => 'getAllowPublicStatus', 'archived' => 'getArchived', 'group_id' => 'getGroupId', + 'create_date' => 'getCreateDate', + 'user_id' => 'getUserId', // Foreign key getters: 'Group' => 'getGroup', @@ -92,6 +96,8 @@ class Project extends Model 'allow_public_status' => 'setAllowPublicStatus', 'archived' => 'setArchived', 'group_id' => 'setGroupId', + 'create_date' => 'setCreateDate', + 'user_id' => 'setUserId', // Foreign key setters: 'Group' => 'setGroup', @@ -602,6 +608,63 @@ class Project extends Model return $rtn; } + /** + * @return \DateTime + */ + public function getCreateDate() + { + $rtn = $this->data['create_date']; + + if (!empty($rtn)) { + $rtn = new \DateTime($rtn); + } + + return $rtn; + } + + /** + * @param $value \DateTime + */ + public function setCreateDate($value) + { + $this->validateDate('create_date', $value); + + if ($this->data['create_date'] === $value) { + return; + } + + $this->data['create_date'] = $value; + + $this->setModified('create_date'); + } + + /** + * @return string + */ + public function getUserId() + { + $rtn = $this->data['user_id']; + + return (integer)$rtn; + } + + /** + * @param $value integer + */ + public function setUserId($value) + { + $this->validateNotNull('user_id', $value); + $this->validateInt('user_id', $value); + + if ($this->data['user_id'] === $value) { + return; + } + + $this->data['user_id'] = $value; + + $this->setModified('user_id'); + } + /** * Get the value of branch. * diff --git a/src/PHPCensor/Service/ProjectService.php b/src/PHPCensor/Service/ProjectService.php index f8887b4a..9d8628a7 100644 --- a/src/PHPCensor/Service/ProjectService.php +++ b/src/PHPCensor/Service/ProjectService.php @@ -25,16 +25,22 @@ class ProjectService /** * Create a new project model and use the project store to save it. - * @param string $title - * @param string $type - * @param string $reference - * @param array $options + * + * @param string $title + * @param string $type + * @param string $reference + * @param integer $userId + * @param array $options + * * @return \PHPCensor\Model\Project */ - public function createProject($title, $type, $reference, $options = []) + public function createProject($title, $type, $reference, $userId, $options = []) { // Create base project and use updateProject() to set its properties: $project = new Project(); + $project->setCreateDate(new \DateTime()); + $project->setUserId((integer)$userId); + return $this->updateProject($project, $title, $type, $reference, $options); } diff --git a/tests/PHPCensor/Service/ProjectServiceTest.php b/tests/PHPCensor/Service/ProjectServiceTest.php index 58b510c2..a51644d6 100644 --- a/tests/PHPCensor/Service/ProjectServiceTest.php +++ b/tests/PHPCensor/Service/ProjectServiceTest.php @@ -35,7 +35,7 @@ class ProjectServiceTest extends \PHPUnit\Framework\TestCase public function testExecute_CreateBasicProject() { - $returnValue = $this->testedService->createProject('Test Project', 'github', 'block8/phpci'); + $returnValue = $this->testedService->createProject('Test Project', 'github', 'block8/phpci', 0); $this->assertEquals('Test Project', $returnValue->getTitle()); $this->assertEquals('github', $returnValue->getType()); @@ -53,7 +53,7 @@ class ProjectServiceTest extends \PHPUnit\Framework\TestCase 'branch' => 'testbranch', ]; - $returnValue = $this->testedService->createProject('Test Project', 'github', 'block8/phpci', $options); + $returnValue = $this->testedService->createProject('Test Project', 'github', 'block8/phpci', 0, $options); $this->assertEquals('private', $returnValue->getSshPrivateKey()); $this->assertEquals('public', $returnValue->getSshPublicKey()); @@ -68,7 +68,7 @@ class ProjectServiceTest extends \PHPUnit\Framework\TestCase public function testExecute_CreateGitlabProjectWithoutPort() { $reference = 'git@gitlab.block8.net:block8/phpci.git'; - $returnValue = $this->testedService->createProject('Gitlab', 'gitlab', $reference); + $returnValue = $this->testedService->createProject('Gitlab', 'gitlab', $reference, 0); $this->assertEquals('git', $returnValue->getAccessInformation('user')); $this->assertEquals('gitlab.block8.net', $returnValue->getAccessInformation('domain'));