diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-06-04 15:36:36 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-06-04 15:36:36 +0000 |
commit | f4b1ebbe468e295d59bf7285b335aa51bcf132bb (patch) | |
tree | 517ed7919069d8a6c3fb34235b048a2bbab91e98 /engine/lib/elgglib.php | |
parent | 559cae5d9035f65f12c1cc25cffe05880a2734c4 (diff) | |
download | elgg-f4b1ebbe468e295d59bf7285b335aa51bcf132bb.tar.gz elgg-f4b1ebbe468e295d59bf7285b335aa51bcf132bb.tar.bz2 |
Merge r6301:6338 from 1.7 to trunk.
git-svn-id: http://code.elgg.org/elgg/trunk@6356 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/lib/elgglib.php')
-rw-r--r-- | engine/lib/elgglib.php | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index f890b3518..e86b7a4c8 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -431,12 +431,19 @@ function elgg_view_register_simplecache($viewname) { /** * Regenerates the simple cache. * + * @param string $viewtype Optional viewtype to regenerate * @see elgg_view_register_simplecache * */ -function elgg_view_regenerate_simplecache() { +function elgg_view_regenerate_simplecache($viewtype = NULL) { global $CONFIG; + if (!isset($CONFIG->views->simplecache) || !is_array($CONFIG->views->simplecache)) { + return; + } + + $lastcached = time(); + // @todo elgg_view() checks if the page set is done (isset($CONFIG->pagesetupdone)) and // triggers an event if it's not. Calling elgg_view() here breaks submenus // (at least) because the page setup hook is called before any @@ -445,25 +452,35 @@ function elgg_view_regenerate_simplecache() { // the trigger correctly when the first view is actually being output. $CONFIG->pagesetupdone = TRUE; - if (isset($CONFIG->views->simplecache)) { - if (!file_exists($CONFIG->dataroot . 'views_simplecache')) { - @mkdir($CONFIG->dataroot . 'views_simplecache'); - } + if (!file_exists($CONFIG->dataroot . 'views_simplecache')) { + mkdir($CONFIG->dataroot . 'views_simplecache'); + } - if (!empty($CONFIG->views->simplecache) && is_array($CONFIG->views->simplecache)) { - foreach($CONFIG->views->simplecache as $view) { - $viewcontents = elgg_view($view); - $viewname = md5(elgg_get_viewtype() . $view); - if ($handle = fopen($CONFIG->dataroot . 'views_simplecache/' . $viewname, 'w')) { - fwrite($handle, $viewcontents); - fclose($handle); - } + if (isset($viewtype)) { + $viewtypes = array($viewtype); + } else { + $viewtypes = $CONFIG->view_types; + } + + $original_viewtype = elgg_get_viewtype(); + + foreach ($viewtypes as $viewtype) { + elgg_set_viewtype($viewtype); + foreach ($CONFIG->views->simplecache as $view) { + $viewcontents = elgg_view($view); + $viewname = md5(elgg_get_viewtype() . $view); + if ($handle = fopen($CONFIG->dataroot . 'views_simplecache/' . $viewname, 'w')) { + fwrite($handle, $viewcontents); + fclose($handle); } } - datalist_set('simplecache_lastupdate', 0); + datalist_set("simplecache_lastupdate_$viewtype", $lastcached); + datalist_set("simplecache_lastcached_$viewtype", $lastcached); } + elgg_set_viewtype($original_viewtype); + unset($CONFIG->pagesetupdone); } |