Cache support for snapshots
[gitphp.git] / include / gitutil.git_read_projects.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
<?php
/*
 *  gitutil.git_read_projects.php
 *  gitphp: A PHP git repository browser
 *  Component: Git utility - read projects
 *
 *  Copyright (C) 2008 Christopher Han <xiphux@gmail.com>
 */
 
 require_once('gitutil.git_recurse_projects.php');
 require_once('gitutil.git_project_info.php');
 
function git_read_projects($projectroot,$projectlist,$projdata = FALSE)
{
        $projects = array();
        if (isset($projectroot)) {
                if (is_dir($projectroot)) {
                        if (isset($projectlist)) {
                                foreach ($projectlist as $cat => $plist) {
                                        if (is_array($plist)) {
                                                $projs = array();
                                                foreach ($plist as $pname => $ppath) {
                                                        if (is_dir($projectroot . $ppath) && is_file($projectroot . $ppath . "/HEAD")) {
                                                                if ($projdata)
                                                                        $projs[] = git_project_info($projectroot, $ppath);
                                                                else
                                                                        $projs[] = $ppath;
                                                        }
                                                }
                                                if (count($projs) > 0) {
                                                        sort($projs);
                                                        $projects[$cat] = $projs;
                                                }
                                        }
                                }
                        } else {
                                $projects = git_recurse_projects($projectroot);
                                $len = count($projects);
                                $cut = strlen($projectroot);
                                for ($i = 0; $i < $len; $i++) {
                                        $p = substr($projects[$i],$cut + 1);
                                        if ($projdata)
                                                $projects[$i] = git_project_info($projectroot, $p);
                                        else
                                                $projects[$i] = $p;
                                }
                        }
                } else
                        return "Projectroot is not a directory";
        } else
                return "No projectroot set";
        return $projects;
}
 
?>
 
comments