57 lines
1.2 KiB
PHP

<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage plugins
*/
/**
* delete a dir recursively (level=0 -> keep root)
* WARNING: no tests, it will try to remove what you tell it!
*
* @param string $dirname
* @param integer $level
* @param integer $exp_time
* @return boolean
*/
// $dirname, $level = 1, $exp_time = null
function smarty_core_rmdir($params, &$smarty) {
if (!isset($params ['level'])) {
$params ['level'] = 1;
}
if (!isset($params ['exp_time'])) {
$params ['exp_time'] = null;
}
if ($_handle = @opendir($params ['dirname'])) {
while (false !== ($_entry = readdir($_handle))) {
if (!fs_is_directorycomponent($_entry)) {
if (@is_dir($params ['dirname'] . DIRECTORY_SEPARATOR . $_entry)) {
$_params = array(
'dirname' => $params ['dirname'] . DIRECTORY_SEPARATOR . $_entry,
'level' => $params ['level'] + 1,
'exp_time' => $params ['exp_time']
);
smarty_core_rmdir($_params, $smarty);
} else {
$smarty->_unlink($params ['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params ['exp_time']);
}
}
}
closedir($_handle);
}
if ($params ['level']) {
return @rmdir($params ['dirname']);
}
return (bool) $_handle;
}
/* vim: set expandtab: */
?>