From ebb08d868b9d676ab6950db67d231e36bdcd10d0 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Sun, 19 Feb 2017 00:52:13 +0700 Subject: [PATCH 1/3] Added 'Build with debug' button for Admin on project page. Issue #22 --- src/PHPCensor/Controller/ProjectController.php | 10 +++++++++- src/PHPCensor/Languages/lang.en.php | 3 ++- src/PHPCensor/Languages/lang.ru.php | 1 + src/PHPCensor/Logging/BuildLogger.php | 7 +++++-- src/PHPCensor/Model/Build.php | 2 ++ src/PHPCensor/Service/BuildService.php | 2 +- src/PHPCensor/View/Project/view.phtml | 8 +++++++- tests/PHPCensor/Model/BuildTest.php | 2 +- tests/PHPCensor/Service/BuildServiceTest.php | 2 +- 9 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/PHPCensor/Controller/ProjectController.php b/src/PHPCensor/Controller/ProjectController.php index 5ea02dcf..bb17db0c 100644 --- a/src/PHPCensor/Controller/ProjectController.php +++ b/src/PHPCensor/Controller/ProjectController.php @@ -115,8 +115,16 @@ class ProjectController extends PHPCensor\Controller throw new NotFoundException(Lang::get('project_x_not_found', $projectId)); } + $debug = (boolean)$this->getParam('debug', false); + $extra = null; + if ($debug && $this->currentUserIsAdmin()) { + $extra = [ + 'debug' => true, + ]; + } + $email = $_SESSION['php-censor-user']->getEmail(); - $build = $this->buildService->createBuild($project, null, urldecode($branch), $email); + $build = $this->buildService->createBuild($project, null, urldecode($branch), $email, null, $extra); if ($this->buildService->queueError) { $_SESSION['global_error'] = Lang::get('add_to_queue_failed'); diff --git a/src/PHPCensor/Languages/lang.en.php b/src/PHPCensor/Languages/lang.en.php index 6da0e0ee..e54c11a4 100644 --- a/src/PHPCensor/Languages/lang.en.php +++ b/src/PHPCensor/Languages/lang.en.php @@ -66,7 +66,8 @@ PHP Censor', 'manage_users' => 'Manage Users', 'plugins' => 'Plugins', 'view' => 'View', - 'build_now' => 'Build Now', + 'build_now' => 'Build now', + 'build_now_debug' => 'Build now with debug', 'edit_project' => 'Edit Project', 'delete_project' => 'Delete Project', diff --git a/src/PHPCensor/Languages/lang.ru.php b/src/PHPCensor/Languages/lang.ru.php index 50e3f34f..9a1cad9a 100644 --- a/src/PHPCensor/Languages/lang.ru.php +++ b/src/PHPCensor/Languages/lang.ru.php @@ -65,6 +65,7 @@ PHP Censor', 'plugins' => 'Плагины', 'view' => 'Отчет', 'build_now' => 'Собрать', + 'build_now_debug' => 'Собрать в режиме отладки', 'edit_project' => 'Редактировать проект', 'delete_project' => 'Удалить проект', diff --git a/src/PHPCensor/Logging/BuildLogger.php b/src/PHPCensor/Logging/BuildLogger.php index ac9efee0..b1e58c83 100644 --- a/src/PHPCensor/Logging/BuildLogger.php +++ b/src/PHPCensor/Logging/BuildLogger.php @@ -38,7 +38,7 @@ class BuildLogger implements LoggerAwareInterface public function __construct(LoggerInterface $logger, Build $build) { $this->logger = $logger; - $this->build = $build; + $this->build = $build; } /** @@ -101,7 +101,10 @@ class BuildLogger implements LoggerAwareInterface */ public function logDebug($message) { - if (defined('DEBUG_MODE') && DEBUG_MODE) { + if ( + (defined('DEBUG_MODE') && DEBUG_MODE) || + ((boolean)$this->build->getExtra('debug')) + ) { $this->log("\033[0;36m" . $message . "\033[0m"); } } diff --git a/src/PHPCensor/Model/Build.php b/src/PHPCensor/Model/Build.php index d4f25945..b259b1bc 100644 --- a/src/PHPCensor/Model/Build.php +++ b/src/PHPCensor/Model/Build.php @@ -522,6 +522,8 @@ class Build extends Model */ public function setExtra($value) { + $value = json_encode($value); + $this->validateString('Extra', $value); if ($this->data['extra'] === $value) { diff --git a/src/PHPCensor/Service/BuildService.php b/src/PHPCensor/Service/BuildService.php index 26017a16..e40f3ff4 100644 --- a/src/PHPCensor/Service/BuildService.php +++ b/src/PHPCensor/Service/BuildService.php @@ -87,7 +87,7 @@ class BuildService } if (!is_null($extra)) { - $build->setExtra(json_encode($extra)); + $build->setExtra($extra); } $build = $this->buildStore->save($build); diff --git a/src/PHPCensor/View/Project/view.phtml b/src/PHPCensor/View/Project/view.phtml index f01bc5f7..e2fe6ca5 100644 --- a/src/PHPCensor/View/Project/view.phtml +++ b/src/PHPCensor/View/Project/view.phtml @@ -16,7 +16,13 @@
getArchived()): ?> - + User()->getIsAdmin()): ?> + + + + + + diff --git a/tests/PHPCensor/Model/BuildTest.php b/tests/PHPCensor/Model/BuildTest.php index 096fda34..efd699f4 100644 --- a/tests/PHPCensor/Model/BuildTest.php +++ b/tests/PHPCensor/Model/BuildTest.php @@ -63,7 +63,7 @@ class BuildTest extends \PHPUnit_Framework_TestCase ]; $build = new Build(); - $build->setExtra(json_encode($info)); + $build->setExtra($info); $this->assertEquals('Item One', $build->getExtra('item1')); $this->assertEquals(2, $build->getExtra('item2')); diff --git a/tests/PHPCensor/Service/BuildServiceTest.php b/tests/PHPCensor/Service/BuildServiceTest.php index ba0f97ad..6cdfe63b 100644 --- a/tests/PHPCensor/Service/BuildServiceTest.php +++ b/tests/PHPCensor/Service/BuildServiceTest.php @@ -100,7 +100,7 @@ class BuildServiceTest extends \PHPUnit_Framework_TestCase $build->setFinished(new \DateTime()); $build->setCommitMessage('test'); $build->setCommitterEmail('test@example.com'); - $build->setExtra(json_encode(['item1' => 1001])); + $build->setExtra(['item1' => 1001]); $returnValue = $this->testedService->createDuplicateBuild($build); From b83a6db6974c2acd497f5ea1ca06c8edc8db8b80 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Sun, 19 Feb 2017 00:59:45 +0700 Subject: [PATCH 2/3] Fixed 'build_error.message' column size --- ...175400_fixed_build_error_message_column.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/PHPCensor/Migrations/20170218175400_fixed_build_error_message_column.php diff --git a/src/PHPCensor/Migrations/20170218175400_fixed_build_error_message_column.php b/src/PHPCensor/Migrations/20170218175400_fixed_build_error_message_column.php new file mode 100644 index 00000000..c142fd5c --- /dev/null +++ b/src/PHPCensor/Migrations/20170218175400_fixed_build_error_message_column.php @@ -0,0 +1,18 @@ +table('build_error') + ->changeColumn('message', 'text') + ->save(); + } + + public function down() + { + } +} From 5d03a0ab35b004bcf698420de7e3fbc8604bb9df Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Sun, 19 Feb 2017 01:21:46 +0700 Subject: [PATCH 3/3] Fixed extra --- src/PHPCensor/Model/Build.php | 2 -- src/PHPCensor/Service/BuildService.php | 2 +- tests/PHPCensor/Model/BuildTest.php | 2 +- tests/PHPCensor/Service/BuildServiceTest.php | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/PHPCensor/Model/Build.php b/src/PHPCensor/Model/Build.php index b259b1bc..d4f25945 100644 --- a/src/PHPCensor/Model/Build.php +++ b/src/PHPCensor/Model/Build.php @@ -522,8 +522,6 @@ class Build extends Model */ public function setExtra($value) { - $value = json_encode($value); - $this->validateString('Extra', $value); if ($this->data['extra'] === $value) { diff --git a/src/PHPCensor/Service/BuildService.php b/src/PHPCensor/Service/BuildService.php index e40f3ff4..26017a16 100644 --- a/src/PHPCensor/Service/BuildService.php +++ b/src/PHPCensor/Service/BuildService.php @@ -87,7 +87,7 @@ class BuildService } if (!is_null($extra)) { - $build->setExtra($extra); + $build->setExtra(json_encode($extra)); } $build = $this->buildStore->save($build); diff --git a/tests/PHPCensor/Model/BuildTest.php b/tests/PHPCensor/Model/BuildTest.php index efd699f4..096fda34 100644 --- a/tests/PHPCensor/Model/BuildTest.php +++ b/tests/PHPCensor/Model/BuildTest.php @@ -63,7 +63,7 @@ class BuildTest extends \PHPUnit_Framework_TestCase ]; $build = new Build(); - $build->setExtra($info); + $build->setExtra(json_encode($info)); $this->assertEquals('Item One', $build->getExtra('item1')); $this->assertEquals(2, $build->getExtra('item2')); diff --git a/tests/PHPCensor/Service/BuildServiceTest.php b/tests/PHPCensor/Service/BuildServiceTest.php index 6cdfe63b..ba0f97ad 100644 --- a/tests/PHPCensor/Service/BuildServiceTest.php +++ b/tests/PHPCensor/Service/BuildServiceTest.php @@ -100,7 +100,7 @@ class BuildServiceTest extends \PHPUnit_Framework_TestCase $build->setFinished(new \DateTime()); $build->setCommitMessage('test'); $build->setCommitterEmail('test@example.com'); - $build->setExtra(['item1' => 1001]); + $build->setExtra(json_encode(['item1' => 1001])); $returnValue = $this->testedService->createDuplicateBuild($build);