* Purges all cached pages
*
* @param string $pageCacheDir page cache directory
+ *
+ * @return mixed an error string if the directory is missing
*/
function purgeCachedPages($pageCacheDir)
{
if (! is_dir($pageCacheDir)) {
- return;
+ $error = 'Cannot purge '.$pageCacheDir.': no directory';
+ error_log($error);
+ return $error;
}
- // TODO: check write access to the cache directory
-
- $handler = opendir($pageCacheDir);
- if ($handler == false) {
- return;
- }
-
- while (($filename = readdir($handler)) !== false) {
- if (endsWith($filename, '.cache')) {
- unlink($pageCacheDir.'/'.$filename);
- }
- }
- closedir($handler);
+ array_map('unlink', glob($pageCacheDir.'/*.cache'));
}
/**
{
if (! is_dir(self::$testCacheDir)) {
mkdir(self::$testCacheDir);
+ } else {
+ array_map('unlink', glob(self::$testCacheDir.'/*'));
}
foreach (self::$pages as $page) {
file_put_contents(self::$testCacheDir.'/'.$page.'.cache', $page);
}
+ file_put_contents(self::$testCacheDir.'/intru.der', 'ShouldNotBeThere');
}
/**
purgeCachedPages(self::$testCacheDir);
foreach (self::$pages as $page) {
$this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache');
- }
+ }
+
+ $this->assertFileExists(self::$testCacheDir.'/intru.der');
+ }
+
+ /**
+ * Purge cached pages - missing directory
+ */
+ public function testPurgeCachedPagesMissingDir()
+ {
+ $this->assertEquals(
+ 'Cannot purge tests/dummycache_missing: no directory',
+ purgeCachedPages(self::$testCacheDir.'_missing')
+ );
}
/**