From d8e1a9d364e8a7d664871e43544fc483ceac4439 Mon Sep 17 00:00:00 2001 From: devzorg Date: Fri, 16 May 2014 22:10:47 +0400 Subject: [PATCH] Adding / SVG support build status --- PHPCI/Controller/BuildStatusController.php | 57 +++++++++++++----- public/assets/img/build-error.svg | 1 + public/assets/img/build-failed.svg | 1 + .../img/{build-ok.png => build-passing.png} | Bin public/assets/img/build-passing.svg | 1 + 5 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 public/assets/img/build-error.svg create mode 100644 public/assets/img/build-failed.svg rename public/assets/img/{build-ok.png => build-passing.png} (100%) create mode 100644 public/assets/img/build-passing.svg diff --git a/PHPCI/Controller/BuildStatusController.php b/PHPCI/Controller/BuildStatusController.php index 54132401..9c2db5ab 100644 --- a/PHPCI/Controller/BuildStatusController.php +++ b/PHPCI/Controller/BuildStatusController.php @@ -37,31 +37,56 @@ class BuildStatusController extends \PHPCI\Controller $this->projectStore = Store\Factory::getStore('Project'); } + /** + * Returns status of the last build + * @param $projectId + * @return string + */ + protected function _getStatus($projectId) + { + $branch = $this->getParam('branch', 'master'); + try { + $project = $this->projectStore->getById($projectId); + $status = 'passing'; + + if (!$project->getAllowPublicStatus()) { + die(); + } + + if (isset($project) && $project instanceof Project) { + $build = $project->getLatestBuild($branch, array(2,3)); + + if (isset($build) && $build instanceof Build && $build->getStatus() != 2) { + $status = 'failed'; + } + } + } catch (\Exception $e) { + $status = 'error'; + } + + return $status; + } + /** * Returns the appropriate build status image for a given project. */ public function image($projectId) { - $branch = $this->getParam('branch', 'master'); - $project = $this->projectStore->getById($projectId); - $status = 'ok'; - - if (!$project->getAllowPublicStatus()) { - die(); - } - - if (isset($project) && $project instanceof Project) { - $build = $project->getLatestBuild($branch, array(2,3)); - - if (isset($build) && $build instanceof Build && $build->getStatus() != 2) { - $status = 'failed'; - } - } - + $status = $this->_getStatus($projectId); header('Content-Type: image/png'); die(file_get_contents(APPLICATION_PATH . 'public/assets/img/build-' . $status . '.png')); } + /** + * Returns the appropriate build status image in SVG format for a given project. + */ + public function svg($projectId) + { + $status = $this->_getStatus($projectId); + header('Content-Type: image/svg+xml'); + die(file_get_contents(APPLICATION_PATH . 'public/assets/img/build-' . $status . '.svg')); + } + public function view($projectId) { $project = $this->projectStore->getById($projectId); diff --git a/public/assets/img/build-error.svg b/public/assets/img/build-error.svg new file mode 100644 index 00000000..a6567a32 --- /dev/null +++ b/public/assets/img/build-error.svg @@ -0,0 +1 @@ +buildbuilderrorerror \ No newline at end of file diff --git a/public/assets/img/build-failed.svg b/public/assets/img/build-failed.svg new file mode 100644 index 00000000..c7afed21 --- /dev/null +++ b/public/assets/img/build-failed.svg @@ -0,0 +1 @@ +buildbuildfailedfailed \ No newline at end of file diff --git a/public/assets/img/build-ok.png b/public/assets/img/build-passing.png similarity index 100% rename from public/assets/img/build-ok.png rename to public/assets/img/build-passing.png diff --git a/public/assets/img/build-passing.svg b/public/assets/img/build-passing.svg new file mode 100644 index 00000000..42f797eb --- /dev/null +++ b/public/assets/img/build-passing.svg @@ -0,0 +1 @@ +buildbuildpassingpassing \ No newline at end of file