root/trunk/lib/SGL/Cache.php

Revision 3124, 5.1 kB (checked in by demian, 3 weeks ago)

bugfix to trunk merge -2

  • Property svn:eol-style set to native
Line 
1 <?php
2 /* Reminder: always indent with 4 spaces (no tabs). */
3 // +---------------------------------------------------------------------------+
4 // | Copyright (c) 2006, Demian Turner                                         |
5 // | All rights reserved.                                                      |
6 // |                                                                           |
7 // | Redistribution and use in source and binary forms, with or without        |
8 // | modification, are permitted provided that the following conditions        |
9 // | are met:                                                                  |
10 // |                                                                           |
11 // | o Redistributions of source code must retain the above copyright          |
12 // |   notice, this list of conditions and the following disclaimer.           |
13 // | o Redistributions in binary form must reproduce the above copyright       |
14 // |   notice, this list of conditions and the following disclaimer in the     |
15 // |   documentation and/or other materials provided with the distribution.    |
16 // | o The names of the authors may not be used to endorse or promote          |
17 // |   products derived from this software without specific prior written      |
18 // |   permission.                                                             |
19 // |                                                                           |
20 // | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       |
21 // | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT         |
22 // | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR     |
23 // | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT      |
24 // | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     |
25 // | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT          |
26 // | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     |
27 // | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
28 // | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
29 // | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE     |
30 // | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.      |
31 // |                                                                           |
32 // +---------------------------------------------------------------------------+
33 // | Seagull 0.6                                                               |
34 // +---------------------------------------------------------------------------+
35 // | Cache.php                                                                 |
36 // +---------------------------------------------------------------------------+
37 // | Author:   Demian Turner <demian@phpkitchen.com>                           |
38 // +---------------------------------------------------------------------------+
39
40 /**
41  * A wrapper for PEAR's Cache_Lite.
42  *
43  * @package SGL
44  * @author  Demian Turner <demian@phpkitchen.com>
45  */
46 class SGL_Cache
47 {
48     /**
49      * Returns a singleton Cache_Lite instance.
50      *
51      * example usage:
52      * $cache = & SGL_Cache::singleton();
53      * warning: in order to work correctly, the cache
54      * singleton must be instantiated statically and
55      * by reference
56      *
57      * @access  public
58      * @param boolean $forceNew     If true and $conf['cache']['enabled'] is set to false,
59      *                              this will be ignored and caching enabled
60      * @static
61      * @return  mixed reference to Cache_Lite object
62      */
63     function &singleton($forceNew = false)
64     {
65         static $instance;
66
67         // If the instance doesn't exist, create one
68         if (!isset($instance) || $forceNew) {
69             require_once 'Cache/Lite.php';
70             $c = &SGL_Config::singleton();
71             $conf = $c->getAll();
72
73             $isEnabled = ($forceNew) ? true : $conf['cache']['enabled'];
74             $options = array(
75                 'cacheDir'  => SGL_TMP_DIR . '/',
76                 'lifeTime'  => $conf['cache']['lifetime'],
77                 'caching'   => $isEnabled);
78             // new options are added via issets for BC
79             if (isset($conf['cache']['cleaningFactor'])) {
80                 $options['automaticCleaningFactor'] = $conf['cache']['cleaningFactor'];
81             }
82             if (isset($conf['cache']['readControl'])) {
83                 $options['readControl'] = $conf['cache']['readControl'];
84             }
85             if (isset($conf['cache']['writeControl'])) {
86                 $options['writeControl'] = $conf['cache']['writeControl'];
87             }
88             $instance = new Cache_Lite($options);
89         }
90         return $instance;
91     }
92
93     /**
94      * Clear cache directory of a specific module's cache files. A simple wrapper to
95      * PEAR::Cache_Lite's clean() method.
96      *
97      * @access public
98      * @param  string $group name of the cache group (e.g. nav, blocks, etc.)
99      * @return boolean true on success
100      * @author  Andy Crain <apcrain@fuse.net>
101      */
102      function clear($group = false)
103      {
104         $cache = & SGL_Cache::singleton();
105         return $cache->clean($group);
106      }
107 }
108 ?>
Note: See TracBrowser for help on using the browser.