Cache project list if set to auto discover them
[gitphp.git] / include / git / ProjectListDirCached.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
<?php
/**
 * GitPHP ProjectListDirCached
 *
 * Load projects from cache
 *
 * @author Tanguy Pruvot <tpruvot@github>
 * @package GitPHP
 * @subpackage Git
 */
 
require_once(GITPHP_INCLUDEDIR . 'Config.class.php');
require_once(GITPHP_GITOBJECTDIR . 'ProjectListBase.class.php');
require_once(GITPHP_GITOBJECTDIR . 'Project.class.php');
 
/**
 * ProjectListDirCached class
 *
 * @package GitPHP
 * @subpackage Git
 */
class GitPHP_ProjectListDirCached extends GitPHP_ProjectListBase
{
        
        /**
         * __construct
         *
         * constructor
         *
         * @access public
         */
        public function __construct($projectArray)
        {
                parent::__construct();
 
                $this->projectConfig = $projectArray;
 
                $this->PopulateProjects();
        }
 
        /**
         * PopulateProjects
         *
         * Populates the internal list of projects
         *
         * @access protected
         * @throws Exception if file cannot be read
         */
        protected function PopulateProjects()
        {
                $stat = stat(GITPHP_CACHE.'ProjectList.dat');
                if ($stat !== FALSE) {
                        $cache_life = '180';  //caching time, in seconds
                        $filemtime = max($stat['mtime'], $stat['ctime']);
                        
                        if  (time() - $filemtime >= $cache_life) {
                                GitPHP_Log::GetInstance()->Log('ProjectListDirCache: expired, reloading...');
                                return;
                        }
 
                        $data = file_get_contents(GITPHP_CACHE.'ProjectList.dat');
                        $this->projects = unserialize($data);
                }
        }
}
 
comments