| 
									
										
										
										
											2010-02-07 03:03:48 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  | * Project:     Smarty: the PHP compiling template engine | 
					
						
							|  |  |  | * File:        smarty_internal_cache.php | 
					
						
							|  |  |  | * SVN:         $Id: $ | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  | * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  | * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  | * version 2.1 of the License, or (at your option) any later version. | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  | * Lesser General Public License for more details. | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  | * License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * For questions, help, comments, discussion, etc., please join the | 
					
						
							|  |  |  | * Smarty mailing list. Send a blank e-mail to | 
					
						
							|  |  |  | * smarty-discussion-subscribe@googlegroups.com | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * @link http://www.smarty.net/ | 
					
						
							|  |  |  | * @copyright 2008 New Digital Group, Inc. | 
					
						
							|  |  |  | * @author Monte Ohrt <monte at ohrt dot com>  | 
					
						
							|  |  |  | * @author Uwe Tews  | 
					
						
							|  |  |  | * @package Smarty | 
					
						
							| 
									
										
										
										
											2010-02-07 11:09:28 +00:00
										 |  |  | * @subpackage PluginsInternal | 
					
						
							| 
									
										
										
										
											2010-02-07 03:03:48 +00:00
										 |  |  | * @version 3-SVN$Rev: 3286 $ | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Smarty_Internal_Cache { | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |     protected $smarty; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function __construct($smarty) { | 
					
						
							|  |  |  |       $this->smarty = $smarty; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Loads cache resource. | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @return object of cache resource | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     public function loadResource($type = null) { | 
					
						
							|  |  |  |         if (!isset($type)) { | 
					
						
							|  |  |  |             $type = $this->smarty->caching_type; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         // already loaded?
 | 
					
						
							|  |  |  |         if (isset($this->smarty->cache_resource_objects[$type])) { | 
					
						
							|  |  |  |             return $this->smarty->cache_resource_objects[$type]; | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         if (in_array($type, $this->smarty->cache_resource_types)) { | 
					
						
							|  |  |  |             $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); | 
					
						
							|  |  |  |             return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty); | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             // try plugins dir
 | 
					
						
							|  |  |  |             $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); | 
					
						
							|  |  |  |             if ($this->smarty->loadPlugin($cache_resource_class)) { | 
					
						
							|  |  |  |                 return $this->smarty->cache_resource_objects[$type] = new $cache_resource_class($this->smarty); | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |             else { | 
					
						
							|  |  |  |                 throw new Exception("Unable to load cache resource '{$type}'"); | 
					
						
							|  |  |  |             }  | 
					
						
							|  |  |  |         }  | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Empty cache folder | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param integer $exp_time expiration time | 
					
						
							|  |  |  |     * @param string $type resource type | 
					
						
							|  |  |  |     * @return integer number of cache files deleted | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     function clearAll($exp_time = null, $type = null) | 
					
						
							|  |  |  |     {  | 
					
						
							|  |  |  |         return $this->loadResource($type)->clearAll($exp_time); | 
					
						
							|  |  |  |     }         | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |     * Empty cache for a specific template | 
					
						
							|  |  |  |     *  | 
					
						
							|  |  |  |     * @param string $template_name template name | 
					
						
							|  |  |  |     * @param string $cache_id cache id | 
					
						
							|  |  |  |     * @param string $compile_id compile id | 
					
						
							|  |  |  |     * @param integer $exp_time expiration time | 
					
						
							|  |  |  |     * @param string $type resource type | 
					
						
							|  |  |  |     * @return integer number of cache files deleted | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     function clear($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) | 
					
						
							|  |  |  |     {  | 
					
						
							|  |  |  |        // load cache resource
 | 
					
						
							|  |  |  |         $cacheResource = $this->loadResource($type); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |         return $cacheResource->clear($template_name, $cache_id, $compile_id, $exp_time); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | } |