<?php
class nbCacheManager {
static $cache_dirs = array();
/**
* @desc Clears partial cache files
* @access public
* @param mixed - leave blank for ALL partials
* @param string - application
* @return void
* @author Ryan Johnson
* @version
*/
static public function clearPartialCache($partial_path = array(), $app = 'public')
{
$partial_paths = is_array($partial_path) ?
$partial_path : array($partial_path);
foreach($partial_paths as $path)
{
$path = str_replace('/', '/_', $path);
self::$cache_dirs[] = sprintf('/%s/*/template/*/all/sf_cache_partial/%s',
$app,
$path
);
}
self::doClearCache();
}
/**
* @desc Clears global cache
* @access public
* @param string - leave blank for ALL partials
* @param string - application
* @return void
* @author Ryan Johnson
* @version
*/
static public function clearCache($path = array(), $app ='public')
{
$paths = is_array($path) ? $path : array($path);
foreach($paths as $path)
{
self::$cache_dirs[] = sprintf('/%s/*/template/*/all/%s', $app, $path);
}
self::doClearCache();
}
/**
* @desc executes the clear
* @access public
* @param void
* @return void
* @author Ryan Johnson
* @version
*/
static private function doClearCache()
{
foreach(self::$cache_dirs as $cache_dir)
{
sfToolkit::clearGlob( sfConfig::get('sf_root_cache_dir') );
}
}
/**
* @desc clears all template cache
* @access public
* @param string - application
* @return void
* @author Ryan Johnson
* @version
*/
static public function clearTemplateCache($app ='public')
{
self::$cache_dirs = array(sprintf('/%s/*/template/*/all', $app));
self::doClearCache();
}
}
?>I've used in at the end of the admin generator save method, so that everytime a record is saved in the backend the template cache is cleared
protected function saveMyModule($my_module)
{
$my_module->save();
nbCacheManager::clearTemplateCache();
}