Move projectlist classes to their own folder
[gitphp.git] / include / git / ProjectList.class.php
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/**
 * GitPHP ProjectList
 *
 * Project list singleton instance and factory
 *
 * @author Christopher Han <xiphux@gmail.com>
 * @copyright Copyright (c) 2010 Christopher Han
 * @package GitPHP
 * @subpackage Git
 */
 
require_once(GITPHP_GITOBJECTDIR . 'ProjectListDirectory.class.php');
require_once(GITPHP_GITOBJECTDIR . 'ProjectListFile.class.php');
require_once(GITPHP_GITOBJECTDIR . 'ProjectListArray.class.php');
require_once(GITPHP_GITOBJECTDIR . 'ProjectListArrayLegacy.class.php');
require_once(GITPHP_GITOBJECTDIR . 'ProjectListScmManager.class.php');
 
/**
 * ProjectList class
 *
 * @package GitPHP
 * @subpackage Git
 */
class GitPHP_ProjectList
{
 
        /**
         * instance
         *
         * Stores the singleton instance of the projectlist
         *
         * @access protected
         * @static
         */
        protected static $instance = null;
 
        /**
         * GetInstance
         *
         * Returns the singleton instance
         *
         * @access public
         * @static
         * @return mixed instance of projectlist
         * @throws Exception if projectlist has not been instantiated yet
         */
        public static function GetInstance()
        {
                return self::$instance;
        }
 
        /**
         * DestroyInstance
         *
         * Releases the singleton instance
         *
         * @access public
         * @static
         */
        public static function DestroyInstance()
        {
                self::$instance = null;
        }
 
        /**
         * Instantiate
         *
         * Instantiates the singleton instance
         *
         * @access private
         * @static
         * @param string $file config file with git projects
         * @param boolean $legacy true if this is the legacy project config
         * @throws Exception if there was an error reading the file
         */
        public static function Instantiate($file = null, $legacy = false)
        {
                if (self::$instance)
                        return;
                        
                $projectRoot = GitPHP_Config::GetInstance()->GetValue('projectroot');
 
 
                if (!empty($file) && is_file($file) && include($file)) {
                        if (isset($git_projects)) {
                                if (is_string($git_projects)) {
                                        if (function_exists('simplexml_load_file') && GitPHP_ProjectListScmManager::IsSCMManager($git_projects)) {
                                                self::$instance = new GitPHP_ProjectListScmManager($projectRoot, $git_projects);
                                        } else {
                                                self::$instance = new GitPHP_ProjectListFile($projectRoot, $git_projects);
                                        }
                                } else if (is_array($git_projects)) {
                                        if ($legacy) {
                                                self::$instance = new GitPHP_ProjectListArrayLegacy($projectRoot, $git_projects);
                                        } else {
                                                self::$instance = new GitPHP_ProjectListArray($projectRoot, $git_projects);
                                        }
                                }
                        }
                }
 
                if (!self::$instance) {
 
                        self::$instance = new GitPHP_ProjectListDirectory($projectRoot, GitPHP_Config::GetInstance()->GetValue('exportedonly', false));
                }
 
                if (isset($git_projects_settings) && !$legacy)
                        self::$instance->SetSettings($git_projects_settings);
        }
 
}
 
 
comments