[ticket/12789] Remove the directories in \phpbb\cache\driver\memory::purge()

PHPBB3-12789
This commit is contained in:
Tristan Darricau 2014-06-30 21:38:10 +02:00
parent bef9d64179
commit e7251252ce

View file

@ -150,28 +150,34 @@ abstract class memory extends \phpbb\cache\driver\base
function purge() function purge()
{ {
// Purge all phpbb cache files // Purge all phpbb cache files
$dir = @opendir($this->cache_dir); try
{
if (!$dir) $iterator = new \DirectoryIterator($this->cache_dir);
}
catch (\Exception $e)
{ {
return; return;
} }
while (($entry = readdir($dir)) !== false) foreach ($iterator as $fileInfo)
{ {
if (strpos($entry, 'container_') !== 0 && if ($fileInfo->isDot())
strpos($entry, 'url_matcher') !== 0 &&
strpos($entry, 'sql_') !== 0 &&
strpos($entry, 'data_') !== 0 &&
strpos($entry, 'ctpl_') !== 0 &&
strpos($entry, 'tpl_') !== 0)
{ {
continue; continue;
} }
$filename = $fileInfo->getFilename();
$this->remove_file($this->cache_dir . $entry); if ($fileInfo->isDir())
{
$this->remove_dir($fileInfo->getPathname());
}
else if (strpos($filename, 'container_') !== 0 &&
strpos($filename, 'url_matcher') !== 0 &&
strpos($filename, 'sql_') !== 0 &&
strpos($filename, 'data_') !== 0)
{
$this->remove_file($fileInfo->getPathname());
}
} }
closedir($dir);
unset($this->vars); unset($this->vars);
unset($this->sql_rowset); unset($this->sql_rowset);
@ -425,6 +431,44 @@ abstract class memory extends \phpbb\cache\driver\base
return @unlink($filename); return @unlink($filename);
} }
/**
* Remove directory
*
* @param string $dir Directory to remove
*
* @return null
*/
protected function remove_dir($dir)
{
try
{
$iterator = new \DirectoryIterator($dir);
}
catch (\Exception $e)
{
return;
}
foreach ($iterator as $fileInfo)
{
if ($fileInfo->isDot())
{
continue;
}
if ($fileInfo->isDir())
{
$this->remove_dir($fileInfo->getPathname());
}
else
{
$this->remove_file($fileInfo->getPathname());
}
}
@rmdir($dir);
}
/** /**
* Check if a cache var exists * Check if a cache var exists
* *