function int_delete_gdthumb_cache($pattern) { if ($contents = @opendir(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR)) { while (($node = readdir($contents)) !== false) { if ($node != '.' and $node != '..' and is_dir(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR . $node)) { clear_derivative_cache_rec(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR . $node, $pattern); } } closedir($contents); } }
function delete_gthumb_cache($height) { $pattern = '#.*-cu_s9999x' . $height . '\\.[a-zA-Z0-9]{3,4}$#'; if ($contents = @opendir(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR)) { while (($node = readdir($contents)) !== false) { if ($node != '.' and $node != '..' and is_dir(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR . $node)) { clear_derivative_cache_rec(PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR . $node, $pattern); } } closedir($contents); } }
$to_delete_derivative_dirs = array(); foreach (array_diff(array_keys($db_fulldirs), $fs_fulldirs) as $fulldir) { $to_delete[] = $db_fulldirs[$fulldir]; unset($db_fulldirs[$fulldir]); $infos[] = array('path' => $fulldir, 'info' => l10n('deleted')); if (substr_compare($fulldir, '../', 0, 3) == 0) { $fulldir = substr($fulldir, 3); } $to_delete_derivative_dirs[] = PHPWG_ROOT_PATH . PWG_DERIVATIVE_DIR . $fulldir; } if (count($to_delete) > 0) { if (!$simulate) { delete_categories($to_delete); foreach ($to_delete_derivative_dirs as $to_delete_dir) { if (is_dir($to_delete_dir)) { clear_derivative_cache_rec($to_delete_dir, '#.+#'); } } } $counts['del_categories'] = count($to_delete); } $template->append('footer_elements', '<!-- scanning dirs : ' . get_elapsed_time($start, get_moment()) . ' -->'); } // +-----------------------------------------------------------------------+ // | files / elements | // +-----------------------------------------------------------------------+ if (isset($_POST['submit']) and $_POST['sync'] == 'files' and !$general_failure) { $start_files = get_moment(); $start = $start_files; $fs = $site_reader->get_elements($basedir); $template->append('footer_elements', '<!-- get_elements: ' . get_elapsed_time($start, get_moment()) . ' -->');
/** * Used by clear_derivative_cache() * @ignore */ function clear_derivative_cache_rec($path, $pattern) { $rmdir = true; $rm_index = false; if ($contents = opendir($path)) { while (($node = readdir($contents)) !== false) { if ($node == '.' or $node == '..') { continue; } if (is_dir($path . '/' . $node)) { $rmdir &= clear_derivative_cache_rec($path . '/' . $node, $pattern); } else { if (preg_match($pattern, $node)) { unlink($path . '/' . $node); } elseif ($node == 'index.htm') { $rm_index = true; } else { $rmdir = false; } } } closedir($contents); if ($rmdir) { if ($rm_index) { unlink($path . '/index.htm'); } clearstatcache(); @rmdir($path); } return $rmdir; } }