From 67961769f46444e5462f63212409ae0e69e217f1 Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 16 Feb 2009 11:22:15 +0000 Subject: Committing the simplecache for views. git-svn-id: https://code.elgg.org/elgg/trunk@2759 36083f99-b078-4883-b0ff-0f9b5a30f544 --- _css/css.php | 13 ++++++ _css/js.php | 40 ++++++++++++++++ engine/lib/elgglib.php | 64 ++++++++++++++++++++++++-- engine/start.php | 3 +- mod/profile/start.php | 1 + mod/profile/views/default/profile/metatags.php | 7 ++- simplecache/view.php | 44 ++++++++++++++++++ upgrade.php | 1 + views/default/page_elements/header.php | 4 +- 9 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 _css/js.php create mode 100644 simplecache/view.php diff --git a/_css/css.php b/_css/css.php index e36b35d16..df681bcb2 100644 --- a/_css/css.php +++ b/_css/css.php @@ -11,6 +11,8 @@ * @link http://elgg.org/ */ + /* + require_once(dirname(dirname(__FILE__)) . "/engine/start.php"); $default_css = elgg_view("css"); @@ -22,5 +24,16 @@ header("Content-Length: " . strlen($default_css)); echo $default_css; + */ + + global $viewinput; + $viewinput['view'] = 'css'; + + header("Content-type: text/css", true); + header('Expires: ' . date('r',time() + 864000), true); + header("Pragma: public", true); + header("Cache-Control: public", true); + // header("Content-Length: " . strlen($default_css)); + require_once(dirname(dirname(__FILE__)) . '/simplecache/view.php'); ?> \ No newline at end of file diff --git a/_css/js.php b/_css/js.php new file mode 100644 index 000000000..99c786e01 --- /dev/null +++ b/_css/js.php @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index e21e30e25..40a248d8f 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -397,6 +397,59 @@ return false; + } + + /** + * Registers a view to be simply cached + * + * Views cached in this manner must take no parameters and be login agnostic - + * that is to say, they look the same no matter who is logged in (or logged out). + * + * CSS and the basic jS views are automatically cached like this. + * + * @param string $viewname View name + */ + function elgg_view_register_simplecache($viewname) { + + global $CONFIG; + + if (!isset($CONFIG->views->simplecache)) + $CONFIG->views->simplecache = array(); + + //if (elgg_view_exists($viewname)) + $CONFIG->views->simplecache[] = $viewname; + + } + + /** + * Regenerates the simple cache. + * + * @see elgg_view_register_simplecache + * + */ + function elgg_view_regenerate_simplecache() { + + global $CONFIG; + + if (isset($CONFIG->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($view); + if ($handle = fopen($CONFIG->dataroot . 'views_simplecache/' . $viewname, 'w')) { + fwrite($handle, $viewcontents); + fclose($handle); + } + } + } + + } + } /** @@ -2106,14 +2159,19 @@ register_page_handler('js','js_page_handler'); extend_view('js/initialise_elgg','embed/js'); // Register an event triggered at system shutdown - register_shutdown_function('__elgg_shutdown_hook'); + register_shutdown_function('__elgg_shutdown_hook'); + } function elgg_boot() { // Actions register_action('comments/add'); - register_action('comments/delete'); + register_action('comments/delete'); + + elgg_view_register_simplecache('css'); + elgg_view_register_simplecache('js/friendsPickerv1'); + elgg_view_register_simplecache('js/initialise_elgg'); } /** @@ -2124,6 +2182,6 @@ define('ACCESS_PUBLIC',2); register_elgg_event_handler('init','system','elgg_init'); - register_elgg_event_handler('boot','system','elgg_boot'); + register_elgg_event_handler('boot','system','elgg_boot',1000); ?> \ No newline at end of file diff --git a/engine/start.php b/engine/start.php index 568cea905..d1484cafd 100644 --- a/engine/start.php +++ b/engine/start.php @@ -185,8 +185,9 @@ //forward("setup.php"); //} } - // System booted, return to normal view set_input('view', $oldview); + + run_function_once('elgg_view_regenerate_simplecache',time() - (86400 * 7)); ?> \ No newline at end of file diff --git a/mod/profile/start.php b/mod/profile/start.php index 671000f80..111f3ea8c 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -56,6 +56,7 @@ // Add Javascript reference to the page header extend_view('metatags','profile/metatags'); extend_view('css','profile/css'); + extend_view('js/initialise_elgg','profile/javascript'); if (get_context() == "profile") extend_view('canvas_header/submenu','profile/submenu'); diff --git a/mod/profile/views/default/profile/metatags.php b/mod/profile/views/default/profile/metatags.php index 9bc455cfb..2ca9718d9 100644 --- a/mod/profile/views/default/profile/metatags.php +++ b/mod/profile/views/default/profile/metatags.php @@ -11,8 +11,11 @@ * */ -?> + /* + * + */ - +?> + diff --git a/simplecache/view.php b/simplecache/view.php new file mode 100644 index 000000000..b7e4e7fe5 --- /dev/null +++ b/simplecache/view.php @@ -0,0 +1,44 @@ +dbhost,$CONFIG->dbuser,$CONFIG->dbpass)) { + + $view = $viewinput['view']; + + // Get the dataroot + if (@mysql_select_db($CONFIG->dbname,$dblink)) { + if ($result = mysql_query("select value from {$CONFIG->dbprefix}datalists where name = 'dataroot'",$dblink)) { + $row = mysql_fetch_object($result); + $dataroot = $row->value; + } + $filename = $dataroot . 'views_simplecache/' . md5($view); + if (file_exists($filename)) + $contents = @file_get_contents($filename); + else { + echo ''; exit; + } + } + } + + echo $contents; + +?> \ No newline at end of file diff --git a/upgrade.php b/upgrade.php index 53f372e3f..d4aa1bbea 100644 --- a/upgrade.php +++ b/upgrade.php @@ -21,6 +21,7 @@ if (version_upgrade_check()) { version_upgrade(); } + datalist_set('elgg_view_regenerate_simplecache',0); } else { global $CONFIG; echo elgg_view('settings/upgrading'); diff --git a/views/default/page_elements/header.php b/views/default/page_elements/header.php index 307eb1828..627e4b87a 100644 --- a/views/default/page_elements/header.php +++ b/views/default/page_elements/header.php @@ -62,14 +62,14 @@ END; - + - + -- cgit v1.2.3