diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/include/functions.php | 79 | ||||
-rw-r--r-- | admin/maintenance.php | 8 | ||||
-rw-r--r-- | admin/rating.php | 2 | ||||
-rw-r--r-- | admin/themes/default/template/maintenance.tpl | 1 |
4 files changed, 88 insertions, 2 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php index 6acc7ab98..85ee0f4f2 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -2246,4 +2246,83 @@ SELECT return array_from_query($query, 'user_id'); } + +function clear_derivative_cache($type='all') +{ + $pattern='#.*-'; + if ($type == 'all') + { + $type_urls = array(); + foreach(ImageStdParams::get_all_types() as $dtype) + { + $type_urls[] = derivative_to_url($dtype); + } + $type_urls[] = derivative_to_url(IMG_CUSTOM); + $pattern .= '(' . implode('|',$type_urls) . ')'; + } + else + { + $pattern .= derivative_to_url($type); + } + $pattern.='(_[a-zA-Z0-9]+)*\.[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); + } +} + +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; + } +} ?>
\ No newline at end of file diff --git a/admin/maintenance.php b/admin/maintenance.php index 886739efc..65cb125fa 100644 --- a/admin/maintenance.php +++ b/admin/maintenance.php @@ -121,12 +121,17 @@ DELETE pwg_query($query); break; } - case 'compiled-templates' : + case 'compiled-templates': { $template->delete_compiled_templates(); FileCombiner::clear_combined_files(); break; } + case 'derivatives': + { + clear_derivative_cache(); + break; + } default : { break; @@ -154,6 +159,7 @@ $template->assign( 'U_MAINT_C13Y' => sprintf($url_format, 'c13y'), 'U_MAINT_SEARCH' => sprintf($url_format, 'search'), 'U_MAINT_COMPILED_TEMPLATES' => sprintf($url_format, 'compiled-templates'), + 'U_MAINT_DERIVATIVES' => sprintf($url_format, 'derivatives'), 'U_HELP' => get_root_url().'admin/popuphelp.php?page=maintenance', ) ); diff --git a/admin/rating.php b/admin/rating.php index 559d48523..91b0ab8da 100644 --- a/admin/rating.php +++ b/admin/rating.php @@ -172,7 +172,7 @@ $query = ' SELECT i.id, i.path, i.file, - i.tn_ext, + i.representative_ext, i.rating_score AS score, MAX(r.date) AS recently_rated, ROUND(AVG(r.rate),2) AS avg_rates, diff --git a/admin/themes/default/template/maintenance.tpl b/admin/themes/default/template/maintenance.tpl index 3b61eb0af..2c5f59713 100644 --- a/admin/themes/default/template/maintenance.tpl +++ b/admin/themes/default/template/maintenance.tpl @@ -29,4 +29,5 @@ <li><a href="{$U_MAINT_FEEDS}">{'Purge never used notification feeds'|@translate}</a></li> <li><a href="{$U_MAINT_SEARCH}"onclick="return confirm('{'Purge search history'|@translate|@escape:'javascript'}');">{'Purge search history'|@translate}</a></li> <li><a href="{$U_MAINT_COMPILED_TEMPLATES}">{'Purge compiled templates'|@translate}</a></li> + <li><a href="{$U_MAINT_DERIVATIVES}">{'Purge derivative image cache'|@translate}</a></li> </ul> |