モジュールごとにキャッシュを削除してくれるブロックです。
俺的XOOPSだと、全てのキャッシュを丸ごと食らいつくしてしまうため、残しておきたいモジュールのキャッシュまでも無くなってしまいます。
このブロックですと、今アクセス中のモジュールだけ削除する仕組みになっているので、余計なキャッシュまで消してしまう心配は有りません。
また、好きなときにキャッシュを削除できるので、キャッシュの寿命をどんなに長くしても、コンテンツを更新したときだけクリックすれば、また新鮮な内容を反映できるわけです。
ちなみに、ブロックのキャッシュは削除できないのでご了承ください。
<?php if( isset( $_POST['cache_clear'] ) && !empty( $_POST['cleardir'] ) ){ if ($handle = opendir(XOOPS_CACHE_PATH)) { while (false !== ($fdir = readdir($handle))) { if ( $fdir != "." && $fdir != ".." ) { if ( substr($fdir,strlen($fdir)-4) == "html" && $fdir != "index.html" && preg_match('/^mod_'.$_POST['cleardir'].'/', $fdir)) { unlink(XOOPS_CACHE_PATH.'/'.$fdir); } } } closedir($handle); } redirect_header('<a href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']" target="_blank">http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']</a>,3 , htmlspecialchars($_POST['cleardir'])."モジュールのキャッシュのクリアをしました。"); } global $xoopsModule; $dirname = ""; if( is_object($xoopsModule) ){ $dirname = $xoopsModule->getVar('dirname'); } echo' <form action="'.XOOPS_URL.'/modules/'.$dirname.'/" method="POST"> <div align="center"> <input type="submit" name="submit" value="キャッシュクリア" /> </div> このモジュールのキャッシュをクリアします。 <input type="hidden" name="cache_clear" value="1" /> <input type="hidden" name="cleardir" value="'.$dirname.'" /> </form> ';