Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
/**
4
 * "Singleton"
5
 */
6
class CSSCache {
7
  function get() {
8
    global $__g_css_manager;
9
 
10
    if (!isset($__g_css_manager)) {
11
      $__g_css_manager = new CSSCache();
12
    };
13
 
14
    return $__g_css_manager;
15
  }
16
 
17
  function _getCacheFilename($url) {
18
    return CACHE_DIR.md5($url).'.css.compiled';
19
  }
20
 
21
  function _isCached($url) {
22
    $cache_filename = $this->_getCacheFilename($url);
23
    return is_readable($cache_filename);
24
  }
25
 
26
  function &_readCached($url) {
27
    $cache_filename = $this->_getCacheFilename($url);
28
    $obj = unserialize(file_get_contents($cache_filename));
29
    return $obj;
30
  }
31
 
32
  function _putCached($url, $css) {
33
    file_put_contents($this->_getCacheFilename($url), serialize($css));
34
  }
35
 
36
  function &compile($url, $css, &$pipeline) {
37
    if ($this->_isCached($url)) {
38
      return $this->_readCached($url);
39
    } else {
40
      $cssruleset = new CSSRuleset();
41
      $cssruleset->parse_css($css, $pipeline);
42
      $this->_putCached($url, $cssruleset);
43
      return $cssruleset;
44
    };
45
  }
46
}
47
 
48
?>