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 / display.git_history.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
<?php
/*
 *  display.git_history.php
 *  gitphp: A PHP git repository browser
 *  Component: Display - history
 *
 *  Copyright (C) 2008 Christopher Han <xiphux@gmail.com>
 */
 
 require_once('gitutil.git_get_hash_by_path.php');
 require_once('gitutil.git_read_head.php');
 require_once('gitutil.git_read_commit.php');
 require_once('gitutil.read_info_ref.php');
 require_once('gitutil.git_history_list.php');
 require_once('gitutil.git_path_trees.php');
 
function git_history($projectroot,$project,$hash,$file)
{
        global $tpl;
 
        $cachekey = sha1($project) . "|" . $hash . "|" . sha1($file);
 
        if (!$tpl->is_cached('history.tpl', $cachekey)) {
                if (!isset($hash))
                        $hash = git_read_head($projectroot . $project);
                $co = git_read_commit($projectroot . $project, $hash);
                $refs = read_info_ref($projectroot . $project);
                $tpl->assign("hash",$hash);
                if (isset($refs[$hash]))
                        $tpl->assign("hashbaseref",$refs[$hash]);
                $tpl->assign("tree",$co['tree']);
                $tpl->assign("title",$co['title']);
                $paths = git_path_trees($projectroot . $project, $hash, $file);
                $tpl->assign("paths",$paths);
                $cmdout = git_history_list($projectroot . $project, $hash, $file);
                $lines = explode("\n", $cmdout);
                $historylines = array();
                foreach ($lines as $i => $line) {
                        if (preg_match("/^([0-9a-fA-F]{40})/",$line,$regs))
                                $commit = $regs[1];
                        else if (preg_match("/:([0-7]{6}) ([0-7]{6}) ([0-9a-fA-F]{40}) ([0-9a-fA-F]{40}) (.)\t(.*)$/",$line,$regs) && isset($commit)) {
                                        $historyline = array();
                                        $co = git_read_commit($projectroot . $project, $commit);
                                        $historyline["agestringage"] = $co['age_string_age'];
                                        $historyline["agestringdate"] = $co['age_string_date'];
                                        $historyline["authorname"] = $co['author_name'];
                                        $historyline["commit"] = $commit;
                                        $historyline["file"] = $file;
                                        $historyline["title"] = $co['title_short'];
                                        if (isset($refs[$commit]))
                                                $historyline["commitref"] = $refs[$commit];
                                        $blob = git_get_hash_by_path($projectroot . $project, $hash,$file);
                                        $blob_parent = git_get_hash_by_path($projectroot . $project, $commit,$file);
                                        if ($blob && $blob_parent && ($blob != $blob_parent)) {
                                                $historyline["blob"] = $blob;
                                                $historyline["blobparent"] = $blob_parent;
                                        }
                                        $historylines[] = $historyline;
                                        unset($commit);
                        }
                }
                $tpl->assign("historylines",$historylines);
        }
        $tpl->display('history.tpl', $cachekey);
}
 
?>
 
comments