aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/cache.php204
-rw-r--r--engine/lib/views.php200
2 files changed, 204 insertions, 200 deletions
diff --git a/engine/lib/cache.php b/engine/lib/cache.php
index 72293022a..1f24cddd1 100644
--- a/engine/lib/cache.php
+++ b/engine/lib/cache.php
@@ -7,6 +7,8 @@
* @subpackage Cache
*/
+/* Filepath Cache */
+
/**
* Returns an ElggCache object suitable for caching view
* file load paths to disk under $CONFIG->dataroot.
@@ -112,3 +114,205 @@ function elgg_disable_filepath_cache() {
$CONFIG->viewpath_cache_enabled = 0;
elgg_filepath_cache_reset();
}
+
+/* Simplecache */
+
+/**
+ * Registers a view to simple cache.
+ *
+ * Simple cache is a caching mechanism that saves the output of
+ * views and its extensions into a file. If the view is called
+ * by the {@link simplecache/view.php} file, the Elgg framework will
+ * not be loaded and the contents of the view will returned
+ * from file.
+ *
+ * @warning Simple cached views must take no parameters and return
+ * the same content no matter who is logged in.
+ *
+ * @note CSS and the basic JS views are cached by the engine.
+ *
+ * @param string $viewname View name
+ *
+ * @return void
+ * @link http://docs.elgg.org/Views/Simplecache
+ * @see elgg_view_regenerate_simplecache()
+ */
+function elgg_view_register_simplecache($viewname) {
+ global $CONFIG;
+
+ if (!isset($CONFIG->views)) {
+ $CONFIG->views = new stdClass;
+ }
+
+ if (!isset($CONFIG->views->simplecache)) {
+ $CONFIG->views->simplecache = array();
+ }
+
+ $CONFIG->views->simplecache[] = $viewname;
+}
+
+/**
+ * Get the URL for the cached file
+ *
+ * @param string $type The file type: css or js
+ * @param string $view The view name
+ * @return string
+ * @since 1.8.0
+ */
+function elgg_view_get_simplecache_url($type, $view) {
+ global $CONFIG;
+ $lastcache = (int)$CONFIG->lastcache;
+
+ if (elgg_view_is_simplecache_enabled()) {
+ $viewtype = elgg_get_viewtype();
+ $url = elgg_get_site_url() . "cache/$type/$view/$viewtype/$view.$lastcache.$type";
+ } else {
+ $url = elgg_get_site_url() . "pg/$type/$view.$lastcache.$type";
+ }
+ return $url;
+}
+
+/**
+ * Regenerates the simple cache.
+ *
+ * @warning This does not invalidate the cache, but actively resets it.
+ *
+ * @param string $viewtype Optional viewtype to regenerate
+ *
+ * @return void
+ * @see elgg_view_register_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
+ // contexts can be correctly set (since this is called before page_handler()).
+ // To avoid this, lie about $CONFIG->pagehandlerdone to force
+ // the trigger correctly when the first view is actually being output.
+ $CONFIG->pagesetupdone = TRUE;
+
+ if (!file_exists($CONFIG->dataroot . 'views_simplecache')) {
+ mkdir($CONFIG->dataroot . 'views_simplecache');
+ }
+
+ 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_$viewtype", $lastcached);
+ datalist_set("simplecache_lastcached_$viewtype", $lastcached);
+ }
+
+ elgg_set_viewtype($original_viewtype);
+
+ // needs to be set for links in html head
+ $CONFIG->lastcache = $lastcached;
+
+ unset($CONFIG->pagesetupdone);
+}
+
+/**
+ * Is simple cache enabled
+ *
+ * @return bool
+ * @since 1.8.0
+ */
+function elgg_view_is_simplecache_enabled() {
+ global $CONFIG;
+
+ if ($CONFIG->simplecache_enabled) {
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Enables the simple cache.
+ *
+ * @access private
+ * @see elgg_view_register_simplecache()
+ * @return void
+ */
+function elgg_view_enable_simplecache() {
+ global $CONFIG;
+
+ datalist_set('simplecache_enabled', 1);
+ $CONFIG->simplecache_enabled = 1;
+ elgg_view_regenerate_simplecache();
+}
+
+/**
+ * Disables the simple cache.
+ *
+ * @warning Simplecache is also purged when disabled.
+ *
+ * @access private
+ * @see elgg_view_register_simplecache()
+ * @return void
+ */
+function elgg_view_disable_simplecache() {
+ global $CONFIG;
+ if ($CONFIG->simplecache_enabled) {
+ datalist_set('simplecache_enabled', 0);
+ $CONFIG->simplecache_enabled = 0;
+
+ // purge simple cache
+ if ($handle = opendir($CONFIG->dataroot . 'views_simplecache')) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != "..") {
+ unlink($CONFIG->dataroot . 'views_simplecache/' . $file);
+ }
+ }
+ closedir($handle);
+ }
+ }
+}
+
+/**
+ * Invalidates all cached views in the simplecache
+ *
+ * @return bool
+ * @since 1.7.4
+ */
+function elgg_invalidate_simplecache() {
+ global $CONFIG;
+
+ $return = TRUE;
+
+ if ($handle = opendir($CONFIG->dataroot . 'views_simplecache')) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != "..") {
+ $return = $return && unlink($CONFIG->dataroot . 'views_simplecache/' . $file);
+ }
+ }
+ closedir($handle);
+ } else {
+ $return = FALSE;
+ }
+
+ return $return;
+}
diff --git a/engine/lib/views.php b/engine/lib/views.php
index 865212a06..49fba8bf6 100644
--- a/engine/lib/views.php
+++ b/engine/lib/views.php
@@ -1453,206 +1453,6 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype)
}
/**
- * Registers a view to simple cache.
- *
- * Simple cache is a caching mechanism that saves the output of
- * views and its extensions into a file. If the view is called
- * by the {@link simplecache/view.php} file, the Elgg framework will
- * not be loaded and the contents of the view will returned
- * from file.
- *
- * @warning Simple cached views must take no parameters and return
- * the same content no matter who is logged in.
- *
- * @note CSS and the basic JS views are cached by the engine.
- *
- * @param string $viewname View name
- *
- * @return void
- * @link http://docs.elgg.org/Views/Simplecache
- * @see elgg_view_regenerate_simplecache()
- */
-function elgg_view_register_simplecache($viewname) {
- global $CONFIG;
-
- if (!isset($CONFIG->views)) {
- $CONFIG->views = new stdClass;
- }
-
- if (!isset($CONFIG->views->simplecache)) {
- $CONFIG->views->simplecache = array();
- }
-
- $CONFIG->views->simplecache[] = $viewname;
-}
-
-/**
- * Get the URL for the cached file
- *
- * @param string $type The file type: css or js
- * @param string $view The view name
- * @return string
- * @since 1.8.0
- */
-function elgg_view_get_simplecache_url($type, $view) {
- global $CONFIG;
- $lastcache = (int)$CONFIG->lastcache;
-
- if (elgg_view_is_simplecache_enabled()) {
- $viewtype = elgg_get_viewtype();
- $url = elgg_get_site_url() . "cache/$type/$view/$viewtype/$view.$lastcache.$type";
- } else {
- $url = elgg_get_site_url() . "pg/$type/$view.$lastcache.$type";
- }
- return $url;
-}
-
-/**
- * Regenerates the simple cache.
- *
- * @warning This does not invalidate the cache, but actively resets it.
- *
- * @param string $viewtype Optional viewtype to regenerate
- *
- * @return void
- * @see elgg_view_register_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
- // contexts can be correctly set (since this is called before page_handler()).
- // To avoid this, lie about $CONFIG->pagehandlerdone to force
- // the trigger correctly when the first view is actually being output.
- $CONFIG->pagesetupdone = TRUE;
-
- if (!file_exists($CONFIG->dataroot . 'views_simplecache')) {
- mkdir($CONFIG->dataroot . 'views_simplecache');
- }
-
- 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_$viewtype", $lastcached);
- datalist_set("simplecache_lastcached_$viewtype", $lastcached);
- }
-
- elgg_set_viewtype($original_viewtype);
-
- // needs to be set for links in html head
- $CONFIG->lastcache = $lastcached;
-
- unset($CONFIG->pagesetupdone);
-}
-
-/**
- * Is simple cache enabled
- *
- * @return bool
- * @since 1.8.0
- */
-function elgg_view_is_simplecache_enabled() {
- global $CONFIG;
-
- if ($CONFIG->simplecache_enabled) {
- return true;
- }
-
- return false;
-}
-
-/**
- * Enables the simple cache.
- *
- * @access private
- * @see elgg_view_register_simplecache()
- * @return void
- */
-function elgg_view_enable_simplecache() {
- global $CONFIG;
-
- datalist_set('simplecache_enabled', 1);
- $CONFIG->simplecache_enabled = 1;
- elgg_view_regenerate_simplecache();
-}
-
-/**
- * Disables the simple cache.
- *
- * @warning Simplecache is also purged when disabled.
- *
- * @access private
- * @see elgg_view_register_simplecache()
- * @return void
- */
-function elgg_view_disable_simplecache() {
- global $CONFIG;
- if ($CONFIG->simplecache_enabled) {
- datalist_set('simplecache_enabled', 0);
- $CONFIG->simplecache_enabled = 0;
-
- // purge simple cache
- if ($handle = opendir($CONFIG->dataroot . 'views_simplecache')) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != "..") {
- unlink($CONFIG->dataroot . 'views_simplecache/' . $file);
- }
- }
- closedir($handle);
- }
- }
-}
-
-/**
- * Invalidates all cached views in the simplecache
- *
- * @return bool
- * @since 1.7.4
- */
-function elgg_invalidate_simplecache() {
- global $CONFIG;
-
- $return = TRUE;
-
- if ($handle = opendir($CONFIG->dataroot . 'views_simplecache')) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != "..") {
- $return = $return && unlink($CONFIG->dataroot . 'views_simplecache/' . $file);
- }
- }
- closedir($handle);
- } else {
- $return = FALSE;
- }
-
- return $return;
-}
-
-/**
* Add the core Elgg head elements that could be cached
*/
function elgg_views_register_core_head_elements() {