From: Jonny B. <Jo...@ti...> - 2010-09-08 11:26:43
|
On 8 Sep 2010, at 12:01, Marc Laporte wrote: > Hi! > > Some prefs need a cache clearing to take effect. > > log_tpl comes to mind but there are surely others. > > This causes support issues because the admin changed something but it doesn't take effect. > > How could we have something like clearcache=y in lib/prefs/* > > Thanks! Better would be clearcache=all or clearcache=temp_cache,prefs etc for finer tuning (the main thing with minify on is to avoid clearing the public cache). Also, many features need the admin page to be reloaded, for instance turning ajax off is always messy. Maybe we just reload always in admin? jb >> On 2010-09-08 6:21 AM, <jon...@us...> wrote: >> >> Revision: 29017 >> http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=29017&view=rev >> Author: jonnybradley >> Date: 2010-09-08 10:20:19 +0000 (Wed, 08 Sep 2010) >> >> Log Message: >> ----------- >> [REF] cachelib: Move cache emptying logic from admin system into $cachelib->empty_cache(). Also rename the mysterious "du" function to count_cache_files as that's what it does (and improve file counting). >> >> Modified Paths: >> -------------- >> trunk/lib/cache/cachelib.php >> trunk/tiki-admin_system.php >> >> Modified: trunk/lib/cache/cachelib.php >> =================================================================== >> --- trunk/lib/cache/cachelib.php 2010-09-08 05:40:50 UTC (rev 29016) >> +++ trunk/lib/cache/cachelib.php 2010-09-08 10:20:19 UTC (rev 29017) >> @@ -64,20 +64,74 @@ >> $logslib->add_log('system','erased full cache'); >> } >> } >> + >> + /** >> + * Empty one or more caches >> + * >> + * @param mixed $dir_names all|templates_c|temp_cache|temp_public|modules_cache|prefs (default all) >> + * @param string $log_section Type of log message. Default 'system' >> + */ >> + function empty_cache( $dir_names = array('all'), $log_section = 'system' ) { >> + global $tikidomain, $logslib, $tikilib; >> + >> + if (!is_array($dir_names)) { >> + $dir_names = array($dir_names); >> + } >> + if (in_array( 'all', $dir_names )) { >> + $this->erase_dir_content("templates_c/$tikidomain"); >> + $this->erase_dir_content("temp/public/$tikidomain"); >> + $this->erase_dir_content("temp/cache/$tikidomain"); >> + $this->erase_dir_content("modules/cache/$tikidomain"); >> + $this->flush_opcode_cache(); >> + $tikilib->set_lastUpdatePrefs(); >> + $logslib->add_log( $log_section, 'erased all cache content'); >> + } >> + if (in_array( 'templates_c', $dir_names )) { >> + $this->erase_dir_content("templates_c/$tikidomain"); >> + $this->flush_opcode_cache(); >> + $logslib->add_log( $log_section, 'erased templates_c content' ); >> + } >> + if (in_array( 'temp_cache', $dir_names)) { >> + $this->erase_dir_content("temp/cache/$tikidomain"); >> + $logslib->add_log( $log_section, 'erased temp/cache content' ); >> + } >> + if (in_array( 'temp_public', $dir_names)) { >> + $this->erase_dir_content("temp/public/$tikidomain"); >> + $logslib->add_log( $log_section, 'erased temp/public content' ); >> + } >> + if (in_array( 'modules_cache', $dir_names)) { >> + $this->erase_dir_content("modules/cache/$tikidomain"); >> + $logslib->add_log( $log_section, 'erased modules/cache content' ); >> + } >> + if (in_array( 'prefs', $dir_names)) { >> + $tikilib->set_lastUpdatePrefs(); >> + } >> + } >> >> function empty_type_cache($type) { >> return $this->implementation->empty_type_cache( $type ); >> } >> >> - function du($path, $begin=null) { >> + function count_cache_files($path, $begin=null) { >> + global $tikidomain; >> + >> if (!$path or !is_dir($path)) return (array('total' => 0,'cant' =>0)); >> $total = 0; >> $cant = 0; >> $back = array(); >> $all = opendir($path); >> + >> + // If using multiple Tikis but flushing cache on default install... >> + if (empty($tikidomain) && is_file('db/virtuals.inc')) { >> + $virtuals = array_map('trim', file('db/virtuals.inc')); >> + } else { >> + $virtuals = false; >> + } >> + >> while ($file = readdir($all)) { >> + if (substr($file,0,1) == "." or $file == 'CVS' or $file == '.svn' or $file == "index.php" or $file == "README" or $file == "web.config" or ($virtuals && in_array($file, $virtuals)) ) continue; >> if (is_dir($path.'/'.$file) and $file <> ".." and $file <> "." and $file <> "CVS" and $file <> ".svn" ) { >> - $du = $this->du($path.'/'.$file); >> + $du = $this->count_cache_files($path.'/'.$file); >> $total+= $du['total']; >> $cant+= $du['cant']; >> unset($file); >> >> Modified: trunk/tiki-admin_system.php >> =================================================================== >> --- trunk/tiki-admin_system.php 2010-09-08 05:40:50 UTC (rev 29016) >> +++ trunk/tiki-admin_system.php 2010-09-08 10:20:19 UTC (rev 29017) >> @@ -14,30 +14,7 @@ >> global $cachelib; >> include_once ('lib/cache/cachelib.php'); >> if (isset($_GET['do'])) { >> - if ($_GET['do'] == 'all') { >> - $cachelib->erase_dir_content("templates_c/$tikidomain"); >> - $cachelib->erase_dir_content("temp/public/$tikidomain"); >> - $cachelib->erase_dir_content("temp/cache/$tikidomain"); >> - $cachelib->erase_dir_content("modules/cache/$tikidomain"); >> - $cachelib->flush_opcode_cache(); >> - $tikilib->set_lastUpdatePrefs(); >> - $logslib->add_log('system', 'erased all Tiki cache content'); >> - } elseif ($_GET['do'] == 'templates_c') { >> - $cachelib->erase_dir_content("templates_c/$tikidomain"); >> - $cachelib->flush_opcode_cache(); >> - $logslib->add_log('system', 'erased templates_c content'); >> - } elseif ($_GET['do'] == 'temp_cache') { >> - $cachelib->erase_dir_content("temp/cache/$tikidomain"); >> - $logslib->add_log('system', 'erased temp/cache content'); >> - } elseif ($_GET['do'] == 'temp_public') { >> - $cachelib->erase_dir_content("temp/public/$tikidomain"); >> - $logslib->add_log('system', 'erased temp/public content'); >> - } elseif ($_GET['do'] == 'modules_cache') { >> - $cachelib->erase_dir_content("modules/cache/$tikidomain"); >> - $logslib->add_log('system', 'erased modules/cache content'); >> - } elseif ($_GET['do'] == 'prefs') { >> - $tikilib->set_lastUpdatePrefs(); >> - } >> + $cachelib->empty_cache($_GET['do']); >> } >> if (isset($_GET['compiletemplates'])) { >> $ctempl = 'templates'; >> @@ -50,20 +27,20 @@ >> } >> $languages = array(); >> $languages = $tikilib->list_languages(); >> -$templates_c = $cachelib->du("templates_c/$tikidomain"); >> +$templates_c = $cachelib->count_cache_files("templates_c/$tikidomain"); >> $smarty->assign('templates_c', $templates_c); >> -$tempcache = $cachelib->du("temp/cache/$tikidomain"); >> +$tempcache = $cachelib->count_cache_files("temp/cache/$tikidomain"); >> $smarty->assign('tempcache', $tempcache); >> -$temppublic = $cachelib->du("temp/public/$tikidomain"); >> +$temppublic = $cachelib->count_cache_files("temp/public/$tikidomain"); >> $smarty->assign('temppublic', $temppublic); >> -$modules = $cachelib->du("modules/cache/$tikidomain"); >> +$modules = $cachelib->count_cache_files("modules/cache/$tikidomain"); >> $smarty->assign('modules', $modules); >> $templates = array(); >> foreach($languages as $clang) { >> if ($smarty->use_sub_dirs) { // was if(is_dir("templates_c/$tikidomain/")) ppl with tikidomains should test. redflo >> - $templates[$clang["value"]] = $cachelib->du("templates_c/$tikidomain/" . $clang["value"] . "/"); >> + $templates[$clang["value"]] = $cachelib->count_cache_files("templates_c/$tikidomain/" . $clang["value"] . "/"); >> } else { >> - $templates[$clang["value"]] = $cachelib->du("templates_c/", $tikidomain . $clang["value"]); >> + $templates[$clang["value"]] = $cachelib->count_cache_files("templates_c/", $tikidomain . $clang["value"]); >> } >> } >> $smarty->assign_by_ref('templates', $templates); >> >> >> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. >> >> ------------------------------------------------------------------------------ >> This SF.net Dev2Dev email is sponsored by: >> >> Show off your parallel programming skills. >> Enter the Intel(R) Threading Challenge 2010. >> http://p.sf.net/sfu/intel-thread-sfd >> _______________________________________________ >> Tikiwiki-cvs mailing list >> Tik...@li... >> https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs > > ------------------------------------------------------------------------------ > This SF.net Dev2Dev email is sponsored by: > > Show off your parallel programming skills. > Enter the Intel(R) Threading Challenge 2010. > http://p.sf.net/sfu/intel-thread-sfd_______________________________________________ > Tikiwiki-cvs mailing list > Tik...@li... > https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs |