Changed all ereg references to preg_match("/regex/"... and eregi references to preg_match("/regex/i" to prevent php 5.3.0 from complaining
[gitphp.git] / include / gitutil.git_read_commit.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
<?php
/*
 *  gitutil.git_read_commit.php
 *  gitphp: A PHP git repository browser
 *  Component: Git utility - read a commit
 *
 *  Copyright (C) 2008 Christopher Han <xiphux@gmail.com>
 */
 
 require_once('defs.constants.php');
 require_once('util.age_string.php');
 require_once('gitutil.git_read_revlist.php');
 
function git_read_commit($proj,$head)
{
        $lines = git_read_revlist($proj,$head,1,NULL,TRUE,TRUE);
        if (!($lines[0]) || !ereg("^[0-9a-fA-F]{40}",$lines[0]))
                return null;
        $commit = array();
        $tok = strtok($lines[0]," ");
        $commit['id'] = $tok;
        $tok = strtok(" ");
        $parents = array();
        while ($tok !== false) {
                $parents[] = $tok;
                $tok = strtok(" ");
        }
        $commit['parents'] = $parents;
        if (isset($parents[0]))
                $commit['parent'] = $parents[0];
        $comment = array();
        foreach ($lines as $i => $line) {
                if (ereg("^tree ([0-9a-fA-F]{40})$",$line,$regs))
                        $commit['tree'] = $regs[1];
                else if (ereg("^author (.*) ([0-9]+) (.*)$",$line,$regs)) {
                        $commit['author'] = $regs[1];
                        $commit['author_epoch'] = $regs[2];
                        $commit['author_tz'] = $regs[3];
                        if (ereg("^([^<]+) <",$commit['author'],$r))
                                $commit['author_name'] = $r[1];
                        else
                                $commit['author_name'] = $commit['author'];
                } else if (ereg("^committer (.*) ([0-9]+) (.*)$",$line,$regs)) {
                        $commit['committer'] = $regs[1];
                        $commit['committer_epoch'] = $regs[2];
                        $commit['committer_tz'] = $regs[3];
                        $commit['committer_name'] = $commit['committer'];
                        $commit['committer_name'] = ereg_replace(" <.*","",$commit['committer_name']);
                } else {
                        $trimmed = trim($line);
                        if ((strlen($trimmed) > 0) && !ereg("^[0-9a-fA-F]{40}",$trimmed) && !ereg("^parent [0-9a-fA-F]{40}",$trimmed)) {
                                if (!isset($commit['title'])) {
                                        $commit['title'] = $trimmed;
                                        if (strlen($trimmed) > GITPHP_TRIM_LENGTH)
                                                $commit['title_short'] = substr($trimmed,0,GITPHP_TRIM_LENGTH) . "...";
                                        else
                                                $commit['title_short'] = $trimmed;
                                }
                                $comment[] = $trimmed;
                        }
                }
        }
        $commit['comment'] = $comment;
        $age = time() - $commit['committer_epoch'];
        $commit['age'] = $age;
        $commit['age_string'] = age_string($age);
        date_default_timezone_set("UTC");
        if ($age > 60*60*24*7*2) {
                $commit['age_string_date'] = date("Y-m-d",$commit['committer_epoch']);
                $commit['age_string_age'] = $commit['age_string'];
        } else {
                $commit['age_string_date'] = $commit['age_string'];
                $commit['age_string_age'] = date("Y-m-d",$commit['committer_epoch']);
        }
        return $commit;
}
 
?>
 
comments