1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | <?php /** * GitPHP ProjectListArray * * Lists all projects in a multidimensional array * * @author Christopher Han <xiphux@gmail.com> * @copyright Copyright (c) 2010 Christopher Han * @package GitPHP * @subpackage Git */ require_once(GITPHP_GITOBJECTDIR . 'ProjectListBase.class.php'); require_once(GITPHP_GITOBJECTDIR . 'Project.class.php'); /** * ProjectListArray class * * @package GitPHP * @subpackage Git */ class GitPHP_ProjectListArray extends GitPHP_ProjectListBase { /** * __construct * * constructor * * @param mixed $projectArray array to read * @throws Exception if parameter is not an array * @access public */ public function __construct($projectArray) { if (!is_array($projectArray)) { throw new Exception('An array of projects is required'); } $this->projectConfig = $projectArray; parent::__construct(); } /** * PopulateProjects * * Populates the internal list of projects * * @access protected * @throws Exception if file cannot be read */ protected function PopulateProjects() { $projectRoot = GitPHP_Util::AddSlash(GitPHP_Config::GetInstance()->GetValue('projectroot')); foreach ($this->projectConfig as $proj => $projData) { try { if (is_string($projData)) { // Just flat array of project paths $projObj = new GitPHP_Project($projectRoot, $projData); $this->projects[$projData] = $projObj; } else if (is_array($projData)) { if (is_string($proj) && !empty($proj)) { // Project key pointing to data array $projObj = new GitPHP_Project($projectRoot, $proj); $this->projects[$proj] = $projObj; $this->ApplyProjectSettings($proj, $projData); } else if (isset($projData['project'])) { // List of data arrays with projects inside $projObj = new GitPHP_Project($projectRoot, $projData['project']); $this->projects[$projData['project']] = $projObj; $this->ApplyProjectSettings(null, $projData); } } } catch (Exception $e) { GitPHP_Log::GetInstance()->Log($e->message); } } } } |