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