From 714ccd2989c219b592460d80b0a455baca1a5fd1 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 11 Mar 2008 17:18:49 +0000 Subject: God bless 'em! Plugins now autoregister their own views. git-svn-id: https://code.elgg.org/elgg/trunk@168 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/elgglib.php | 24 ++++++++++++++++++++++++ engine/lib/plugins.php | 3 +++ 2 files changed, 27 insertions(+) (limited to 'engine') diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index f17a86458..973de2680 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -178,6 +178,30 @@ } + /** + * Auto-registers views from a particular starting location + * + * @param string $view_base The base of the view name + * @param string $folder The folder to begin looking in + * @param string $base_location_path The base views directory to use with set_view_location + */ + function autoregister_views($view_base, $folder, $base_location_path) { + + if (!isset($i)) $i = 0; + if ($handle = opendir($folder)) { + while ($view = readdir($handle)) { + if (!in_array($view,array('.','..','.svn','CVS')) && !is_dir($folder . "/" . $view)) { + if (substr_count($view,".php") > 0) { + set_view_location($view_base . "/" . str_replace(".php","",$view), $base_location_path); + } + } else if (!in_array($view,array('.','..','.svn','CVS')) && is_dir($folder . "/" . $view)) { + autoregister_views($view_base . "/" . $view, $folder . "/" . $view, $base_location_path); + } + } + } + + } + /** * Returns a representation of a full 'page' (which might be an HTML page, RSS file, etc, depending on the current view) * diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 34be9b7cf..92294faea 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -28,6 +28,9 @@ if (!in_array($mod,array('.','..','.svn','CVS')) && is_dir($CONFIG->pluginspath . "/" . $mod)) { if (!@include($CONFIG->pluginspath . $mod . "/start.php")) throw new PluginException("{$mod} is a misconfigured plugin."); + if (is_dir($CONFIG->pluginspath . $mod . "/views/default")) { + autoregister_views($mod,$CONFIG->pluginspath . $mod . "/views/default",$CONFIG->pluginspath . $mod . "/views"); + } } } } -- cgit v1.2.3