function clear_cache($path) { $base = DOC_ROOT . '/'; # trim trailing / $path = strrpos($path, '/') == strlen($path) - 1 ? substr($path, 0, -1) : $path; # parse path $dirs = explode('/', $path); # if the last item is a * then clear all cache files at that location $last = array_pop($dirs); if ($last == '*') { $targetpath = join('/', $dirs); if (file_exists($base . $targetpath)) { $dirhandle = opendir($base . $targetpath); while (($file = readdir($dirhandle)) !== false) { $pi = pathinfo($file); if ($pi['extension'] == AbstractController::_cache_extension) { unlink($base . $targetpath . '/' . $file); } else { if ($file[0] != '.' && is_dir($base . $targetpath . '/' . $file)) { AbstractController::clear_cache($targetpath . '/' . $file . '/*'); } } } closedir($dirhandle); } # also delete the cache file for the dir if (file_exists($base . $targetpath . '.' . AbstractController::_cache_extension)) { unlink($base . $targetpath . '.' . AbstractController::_cache_extension); } } else { unlink($base . $path . '.' . AbstractController::_cache_extension); } }