From 2062a91d9ca2f31ccf4cd1eaa338c5190bffe56d Mon Sep 17 00:00:00 2001 From: brettp Date: Fri, 4 Feb 2011 23:03:32 +0000 Subject: Added support for screenshots in the advanced plugin admin. git-svn-id: http://code.elgg.org/elgg/trunk@8021 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/admin.php | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'engine') diff --git a/engine/lib/admin.php b/engine/lib/admin.php index c3dfb7b84..0e6eab0cf 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -87,9 +87,9 @@ function admin_init() { elgg_register_action('admin/site/update_basic', '', 'admin'); elgg_register_action('admin/site/update_advanced', '', 'admin'); - + elgg_register_action('admin/menu/save', '', 'admin'); - + elgg_register_action('admin/plugins/simple_update_states', '', 'admin'); elgg_register_action('profile/fields/reset', '', 'admin'); @@ -145,6 +145,7 @@ function admin_init() { } register_page_handler('admin', 'admin_settings_page_handler'); + register_page_handler('admin_plugin_screenshot', 'admin_plugin_screenshot_page_handler'); } /** @@ -223,6 +224,52 @@ function admin_settings_page_handler($page) { echo elgg_view_page($title, $body, 'admin'); } +/** + * Serves up screenshots for plugins from + * elgg/pg/admin_plugin_ss///. + * + * @param array $pages The pages array + * @return true + */ +function admin_plugin_screenshot_page_handler($pages) { + admin_gatekeeper(); + + $plugin_id = elgg_get_array_value(0, $pages); + // only thumbnail or full. + $size = elgg_get_array_value(1, $pages, 'thumbnail'); + + // the rest of the string is the filename + $filename_parts = array_slice($pages, 2); + $filename = implode('/', $filename_parts); + $filename = sanitise_filepath($filename, false); + + $plugin = new ElggPlugin($plugin_id); + if (!$plugin) { + $file = elgg_get_root_dir() . '_graphics/icons/default/medium.png'; + } else { + $file = $plugin->getPath() . $filename; + if (!file_exists($file)) { + $file = elgg_get_root_dir() . '_graphics/icons/default/medium.png'; + } + } + + header("Content-type: image/jpeg"); + + // resize to 100x100 for thumbnails + switch ($size) { + case 'thumbnail': + echo get_resized_image_from_existing_file($file, 100, 100, true); + break; + + case 'full': + default: + echo file_get_contents($file); + break; + } + + return true; +} + /** * Write a persistent message to the admin view. * Useful to alert the admin to take a certain action. -- cgit v1.2.3