Cache support for blobplain using a hack
[gitphp.git] / include / display.git_blob_plain.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
<?php
/*
 *  display.git_blob_plain.php
 *  gitphp: A PHP git repository browser
 *  Component: Display - blob (plaintext)
 *
 *  Copyright (C) 2008 Christopher Han <xiphux@gmail.com>
 */
 
 require_once('gitutil.git_cat_file.php');
 require_once('util.file_mime.php');
 
function git_blob_plain($projectroot,$project,$hash,$file)
{
        global $gitphp_conf, $tpl;
 
        $cachekey = sha1($project) . "|" . $hash . "|" . sha1($file);
 
        $buffer = null;
 
        // XXX: Nasty hack to cache headers
        if (!$tpl->is_cached('blobheaders.tpl', $cachekey)) {
                if ($file)
                        $saveas = $file;
                else
                        $saveas = $hash . ".txt";
 
                $buffer = git_cat_file($projectroot . $project, $hash);
 
                if ($gitphp_conf['filemimetype'])
                        $mime = file_mime($buffer, $file);
 
                $headers = array();
 
                if ($mime)
                        $headers[] = "Content-type: " . $mime;
                else
                        $headers[] = "Content-type: text/plain; charset=UTF-8";
 
                $headers[] = "Content-disposition: inline; filename=\"" . $saveas . "\"";
 
                $tpl->assign("blobheaders", serialize($headers));
        }
        $out = $tpl->fetch('blobheaders.tpl', $cachekey);
 
        $returnedheaders = unserialize($out);
 
        foreach ($returnedheaders as $i => $header)
                header($header);
 
 
        if (!$tpl->is_cached('blobplain.tpl', $cachekey)) {
                if (!$buffer)
                        $buffer = git_cat_file($projectroot . $project, $hash);
                $tpl->assign("blob", $buffer);
        }
        $tpl->display('blobplain.tpl', $cachekey);
}
 
?>
 
comments