From 6ec266faa69cd1efeb531d3b1494189989a84293 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 21 Nov 2008 20:13:28 +0000 Subject: 2nd attempt at inserting html by modules. --- core/helpers/block_helper.php | 49 +++++++++++++++++++++++++++++++++++++++ core/helpers/module.php | 4 ++++ core/helpers/photo.php | 1 - core/libraries/MY_View.php | 54 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 core/helpers/block_helper.php (limited to 'core') diff --git a/core/helpers/block_helper.php b/core/helpers/block_helper.php new file mode 100644 index 00000000..5f49d444 --- /dev/null +++ b/core/helpers/block_helper.php @@ -0,0 +1,49 @@ +where("name", $module_name)->find()->loaded; } + + public static function get_list() { + return ORM::factory("module")->find_all(); + } } diff --git a/core/helpers/photo.php b/core/helpers/photo.php index 126387d6..b3669c96 100644 --- a/core/helpers/photo.php +++ b/core/helpers/photo.php @@ -42,7 +42,6 @@ class Photo_Core { throw new Exception("@todo INVALID_IMAGE_FILE"); } - Kohana::log("debug", print_r($image_info, true)); // Force an extension onto the name $pi = pathinfo($name); if (empty($pi["extension"])) { diff --git a/core/libraries/MY_View.php b/core/libraries/MY_View.php index 26326b5d..d9712d37 100644 --- a/core/libraries/MY_View.php +++ b/core/libraries/MY_View.php @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class View extends View_Core { + private static $block_helpers = null; + /** * Override View_Core::render so that we trap errors stemming from bad PHP includes and show a * visible stack trace to help developers. @@ -38,4 +40,56 @@ class View extends View_Core { return ""; } } + + public static function admin($theme) { + return self::_get_block_helpers("admin", $theme); + } + + public static function head($theme) { + return self::_get_block_helpers("head", $theme); + } + + public static function top($theme) { + return self::_get_block_helpers("top", $theme); + } + + public static function bottom($theme) { + return self::_get_block_helpers("bottom", $theme); + } + + public static function sidebar($theme) { + return self::_get_block_helpers("sidebar", $theme); + } + + public static function album($theme) { + return self::_get_block_helpers("album", $theme); + } + + public static function album_header($theme) { + return self::_get_block_helpers("album_header", $theme); + } + + public static function photo($theme) { + return self::_get_block_helpers("photo", $theme); + } + + private static function _get_block_helpers($method, $theme) { + if (empty(self::$block_helpers[$method])) { + foreach (module::get_list() as $module) { + $helper_path = MODPATH . "$module->name/helpers/{$module->name}_block.php"; + $helper_class = "{$module->name}_block"; + if (file_exists($helper_path) && method_exists($helper_class, $method)) { + self::$block_helpers[$method][] = "$helper_class"; + } + } + } + + $blocks = ""; + if (!empty(self::$block_helpers[$method])) { + foreach (self::$block_helpers[$method] as $helper_class) { + $blocks .= call_user_func_array(array($helper_class, $method), array($theme)) . "\n"; + } + } + return $blocks; + } } -- cgit v1.2.3