2013-05-16 00:47:37 +02:00
|
|
|
<?php
|
|
|
|
|
2016-07-19 20:28:11 +02:00
|
|
|
namespace PHPCensor;
|
2013-05-16 03:57:02 +02:00
|
|
|
|
2018-03-11 18:34:48 +01:00
|
|
|
use PHPCensor\Model\Project;
|
2018-03-04 08:30:34 +01:00
|
|
|
use PHPCensor\Store\Factory;
|
2016-07-19 20:28:11 +02:00
|
|
|
use PHPCensor\Model\Build;
|
2013-05-16 00:47:37 +02:00
|
|
|
|
2013-05-16 03:16:56 +02:00
|
|
|
/**
|
2017-10-21 10:51:05 +02:00
|
|
|
* BuildFactory - Takes in a generic "Build" and returns a type-specific build model.
|
2018-02-28 04:00:10 +01:00
|
|
|
*
|
2017-03-04 16:39:56 +01:00
|
|
|
* @author Dan Cryer <dan@block8.co.uk>
|
|
|
|
*/
|
2013-05-16 00:47:37 +02:00
|
|
|
class BuildFactory
|
|
|
|
{
|
2014-02-25 18:00:05 +01:00
|
|
|
/**
|
2018-03-08 17:20:05 +01:00
|
|
|
* @param integer $buildId
|
2017-11-05 15:48:36 +01:00
|
|
|
*
|
2018-03-08 17:20:05 +01:00
|
|
|
* @return Build|null
|
2014-02-25 18:00:05 +01:00
|
|
|
*/
|
|
|
|
public static function getBuildById($buildId)
|
|
|
|
{
|
|
|
|
$build = Factory::getStore('Build')->getById($buildId);
|
|
|
|
|
2014-05-09 12:47:42 +02:00
|
|
|
if (empty($build)) {
|
2018-03-08 17:20:05 +01:00
|
|
|
return null;
|
2014-05-09 12:47:42 +02:00
|
|
|
}
|
|
|
|
|
2014-02-25 18:00:05 +01:00
|
|
|
return self::getBuild($build);
|
|
|
|
}
|
|
|
|
|
2013-05-16 18:17:29 +02:00
|
|
|
/**
|
2017-11-05 15:48:36 +01:00
|
|
|
* Takes a generic build and returns a type-specific build model.
|
|
|
|
*
|
|
|
|
* @param Build $build The build from which to get a more specific build type.
|
|
|
|
*
|
|
|
|
* @return Build
|
|
|
|
*/
|
2015-10-05 15:48:17 +02:00
|
|
|
public static function getBuild(Build $build)
|
2013-05-16 03:57:02 +02:00
|
|
|
{
|
2015-10-05 15:48:17 +02:00
|
|
|
$project = $build->getProject();
|
2013-05-16 00:47:37 +02:00
|
|
|
|
2015-10-05 15:48:17 +02:00
|
|
|
if (!empty($project)) {
|
|
|
|
switch ($project->getType()) {
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_LOCAL:
|
2015-10-05 15:48:17 +02:00
|
|
|
$type = 'LocalBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_GIT:
|
2018-02-28 04:00:10 +01:00
|
|
|
$type = 'GitBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_GITHUB:
|
2015-10-05 15:48:17 +02:00
|
|
|
$type = 'GithubBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_BITBUCKET:
|
2015-10-05 15:48:17 +02:00
|
|
|
$type = 'BitbucketBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_GITLAB:
|
2015-10-05 15:48:17 +02:00
|
|
|
$type = 'GitlabBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_GOGS:
|
2018-02-28 04:00:10 +01:00
|
|
|
$type = 'GogsBuild';
|
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_HG:
|
2018-02-28 04:00:10 +01:00
|
|
|
$type = 'HgBuild';
|
2015-10-05 15:48:17 +02:00
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_BITBUCKET_HG:
|
2018-02-28 04:00:10 +01:00
|
|
|
$type = 'BitbucketHgBuild';
|
2015-10-05 15:48:17 +02:00
|
|
|
break;
|
2018-03-11 18:34:48 +01:00
|
|
|
case Project::TYPE_SVN:
|
2018-02-28 04:00:10 +01:00
|
|
|
$type = 'SvnBuild';
|
2017-02-07 13:50:09 +01:00
|
|
|
break;
|
2015-10-09 11:14:54 +02:00
|
|
|
default:
|
|
|
|
return $build;
|
2015-10-05 15:48:17 +02:00
|
|
|
}
|
2015-10-05 16:07:25 +02:00
|
|
|
|
2016-07-19 20:28:11 +02:00
|
|
|
$class = '\\PHPCensor\\Model\\Build\\' . $type;
|
2015-10-05 15:48:17 +02:00
|
|
|
$build = new $class($build->getDataArray());
|
2015-10-05 15:41:13 +02:00
|
|
|
}
|
2013-05-16 00:47:37 +02:00
|
|
|
|
2015-10-05 15:41:13 +02:00
|
|
|
return $build;
|
2013-05-16 03:57:02 +02:00
|
|
|
}
|
|
|
|
}
|