game/onyx2/modules/templates/smarty/sysplugins/smarty_method_clear_compiled_tpl.php

65 lines
2.2 KiB
PHP
Raw Normal View History

2020-11-15 15:12:32 +00:00
<?php
/**
* Smarty method Clear_Compiled_Tpl
*
* Deletes compiled template files
*
* @package Smarty
* @subpackage SmartyMethod
* @author Uwe Tews
*/
/**
* Delete compiled template file
*
* @param string $resource_name template name
* @param string $compile_id compile id
* @param integer $exp_time expiration time
* @return integer number of template files deleted
*/
function clear_compiled_tpl($smarty, $resource_name = null, $compile_id = null, $exp_time = null)
{
$_dir_sep = $smarty->use_sub_dirs ? DS : '^';
if (isset($resource_name)) {
$_resource_part_1 = $resource_name . $smarty->php_ext;
$_resource_part_2 = $resource_name . '.cache' . $smarty->php_ext;
} else {
$_resource_part = '';
}
$_dir = $smarty->compile_dir;
if ($smarty->use_sub_dirs && isset($compile_id)) {
$_dir .= $compile_id . $_dir_sep;
}
if (isset($compile_id)) {
$_compile_id_part = $smarty->compile_dir . $compile_id . $_dir_sep;
}
$_count = 0;
$_compileDirs = new RecursiveDirectoryIterator($_dir);
$_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_compile as $_file) {
if (strpos($_file, '.svn') !== false) continue;
if ($_file->isDir()) {
if (!$_compile->isDot()) {
// delete folder if empty
@rmdir($_file->getPathname());
}
} else {
if ((!isset($compile_id) || substr_compare((string)$_file, $_compile_id_part, 0, strlen($_compile_id_part)) == 0) &&
(!isset($resource_name) || substr_compare((string)$_file, $_resource_part_1, - strlen($_resource_part_1), strlen($_resource_part_1)) == 0 ||
substr_compare((string)$_file, $_resource_part_2, - strlen($_resource_part_2), strlen($_resource_part_2)) == 0)) {
if (isset($exp_time)) {
if (time() - @filemtime($_file) >= $exp_time) {
$_count += unlink((string) $_file) ? 1 : 0;
}
} else {
$_count += unlink((string) $_file) ? 1 : 0;
}
}
}
}
return $_count;
}
?>