1 <?php
3 /**
4 * Project: Smarty: the PHP compiling template engine
5 * File: smarty_internal_cache.php
6 * SVN: $Id: $
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 * For questions, help, comments, discussion, etc., please join the
23 * Smarty mailing list. Send a blank e-mail to
24 * smarty-discussion-subscribe@googlegroups.com
25 *
26 * @link http://www.smarty.net/
27 * @copyright 2008 New Digital Group, Inc.
28 * @author Monte Ohrt <monte at ohrt dot com>
29 * @author Uwe Tews
30 * @package Smarty
31 * @subpackage PluginsInternal
32 * @version 3-SVN$Rev: 3286 $
33 */
35 class Smarty_Internal_Cache {
37 protected $smarty;
39 function __construct($smarty) {
40 $this->smarty = $smarty;
41 }
43 /**
44 * Loads cache resource.
45 *
46 * @return object of cache resource
47 */
48 public function loadResource($type = null) {
49 if (!isset($type)) {
50 $type = $this->smarty->caching_type;
51 }
52 // already loaded?
53 if (isset($this->smarty->cache_resource_objects[$type])) {
54 return $this->smarty->cache_resource_objects[$type];
55 }
56 if (in_array($type, $this->smarty->cache_resource_types)) {
57 $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
58 return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty);
59 }
60 else {
61 // try plugins dir
62 $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
63 if ($this->smarty->loadPlugin($cache_resource_class)) {
64 return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty);
65 }
66 else {
67 throw new Exception("Unable to load cache resource '{$type}'");
68 }
69 }
70 }
72 /**
73 * Empty cache folder
74 *
75 * @param integer $exp_time expiration time
76 * @param string $type resource type
77 * @return integer number of cache files deleted
78 */
79 function clearAll($exp_time = null, $type = null)
80 {
81 return $this->loadResource($type)->clearAll($exp_time);
82 }
84 /**
85 * Empty cache for a specific template
86 *
87 * @param string $template_name template name
88 * @param string $cache_id cache id
89 * @param string $compile_id compile id
90 * @param integer $exp_time expiration time
91 * @param string $type resource type
92 * @return integer number of cache files deleted
93 */
94 function clear($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
95 {
96 // load cache resource
97 $cacheResource = $this->loadResource($type);
99 return $cacheResource->clear($template_name, $cache_id, $compile_id, $exp_time);
100 }
102 }