diff options
Diffstat (limited to 'BSF/include/functions_plugins.inc.php')
-rw-r--r-- | BSF/include/functions_plugins.inc.php | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/BSF/include/functions_plugins.inc.php b/BSF/include/functions_plugins.inc.php deleted file mode 100644 index e2beb18ac..000000000 --- a/BSF/include/functions_plugins.inc.php +++ /dev/null @@ -1,284 +0,0 @@ -<?php -// +-----------------------------------------------------------------------+ -// | Piwigo - a PHP based picture gallery | -// +-----------------------------------------------------------------------+ -// | Copyright(C) 2008 Piwigo Team http://piwigo.org | -// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | -// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | -// +-----------------------------------------------------------------------+ -// | This program is free software; you can redistribute it and/or modify | -// | it under the terms of the GNU General Public License as published by | -// | the Free Software Foundation | -// | | -// | This program is distributed in the hope that it will be useful, but | -// | WITHOUT ANY WARRANTY; without even the implied warranty of | -// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | -// | General Public License for more details. | -// | | -// | You should have received a copy of the GNU General Public License | -// | along with this program; if not, write to the Free Software | -// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | -// | USA. | -// +-----------------------------------------------------------------------+ - -/* -Events and event handlers are the core of Piwigo plugin management. -Plugins are addons that are found in plugins subdirectory. If activated, PWG -will include the index.php of each plugin. -Events are triggered by PWG core code. Plugins (or even PWG itself) can -register their functions to handle these events. An event is identified by a -string. -*/ - -define('PHPWG_PLUGINS_PATH', PHPWG_ROOT_PATH.'plugins/'); - -define('EVENT_HANDLER_PRIORITY_NEUTRAL', 50); - -/* Register a event handler. - * @param string $event the name of the event to listen to - * @param mixed $func the function that will handle the event - * @param int $priority optional priority (greater priority will - * be executed at last) -*/ -function add_event_handler($event, $func, - $priority=EVENT_HANDLER_PRIORITY_NEUTRAL, $accepted_args=1) -{ - global $pwg_event_handlers; - - if ( isset($pwg_event_handlers[$event][$priority]) ) - { - foreach($pwg_event_handlers[$event][$priority] as $handler) - { - if ( $handler['function'] == $func ) - { - return false; - } - } - } - - $pwg_event_handlers[$event][$priority][] = - array( - 'function'=>$func, - 'accepted_args'=>$accepted_args); - ksort( $pwg_event_handlers[$event] ); - return true; -} - -/* Register a event handler. - * @param string $event the name of the event to listen to - * @param mixed $func the function that needs removal - * @param int $priority optional priority (greater priority will - * be executed at last) -*/ -function remove_event_handler($event, $func, - $priority=EVENT_HANDLER_PRIORITY_NEUTRAL) -{ - global $pwg_event_handlers; - - if (!isset( $pwg_event_handlers[$event][$priority] ) ) - { - return false; - } - for ($i=0; $i<count($pwg_event_handlers[$event][$priority]); $i++) - { - if ($pwg_event_handlers[$event][$priority][$i]['function']==$func) - { - unset($pwg_event_handlers[$event][$priority][$i]); - $pwg_event_handlers[$event][$priority] = - array_values($pwg_event_handlers[$event][$priority]); - - if ( empty($pwg_event_handlers[$event][$priority]) ) - { - unset( $pwg_event_handlers[$event][$priority] ); - if (empty( $pwg_event_handlers[$event] ) ) - { - unset( $pwg_event_handlers[$event] ); - } - } - return true; - } - } - return false; -} - -/* Triggers an event and calls all registered event handlers - * @param string $event name of the event - * @param mixed $data data to pass to handlers -*/ -function trigger_event($event, $data=null) -{ - global $pwg_event_handlers; - - // just for debugging - trigger_action('pre_trigger_event', - array('event'=>$event, 'data'=>$data) ); - - if ( !isset($pwg_event_handlers[$event]) ) - { - trigger_action('post_trigger_event', - array('event'=>$event, 'data'=>$data) ); - return $data; - } - $args = array_slice(func_get_args(), 2); - - foreach ($pwg_event_handlers[$event] as $priority => $handlers) - { - if ( !is_null($handlers) ) - { - foreach($handlers as $handler) - { - $all_args = array_merge( array($data), $args); - $function_name = $handler['function']; - $accepted_args = $handler['accepted_args']; - - if ( $accepted_args == 1 ) - $the_args = array($data); - elseif ( $accepted_args > 1 ) - $the_args = array_slice($all_args, 0, $accepted_args); - elseif ( $accepted_args == 0 ) - $the_args = NULL; - else - $the_args = $all_args; - - $data = call_user_func_array($function_name, $the_args); - } - } - } - trigger_action('post_trigger_event', - array('event'=>$event, 'data'=>$data) ); - return $data; -} - -function trigger_action($event, $data=null) -{ - global $pwg_event_handlers; - if ($event!='pre_trigger_event' - and $event!='post_trigger_event' - and $event!='trigger_action') - {// special case for debugging - avoid recursive calls - trigger_action('trigger_action', - array('event'=>$event, 'data'=>$data) ); - } - - if ( !isset($pwg_event_handlers[$event]) ) - { - return; - } - $args = array_slice(func_get_args(), 2); - - foreach ($pwg_event_handlers[$event] as $priority => $handlers) - { - if ( !is_null($handlers) ) - { - foreach($handlers as $handler) - { - $all_args = array_merge( array($data), $args); - $function_name = $handler['function']; - $accepted_args = $handler['accepted_args']; - - if ( $accepted_args == 1 ) - $the_args = array($data); - elseif ( $accepted_args > 1 ) - $the_args = array_slice($all_args, 0, $accepted_args); - elseif ( $accepted_args == 0 ) - $the_args = NULL; - else - $the_args = $all_args; - - call_user_func_array($function_name, $the_args); - } - } - } -} - -/** Saves some data with the associated plugim id. It can be retrieved later ( - * during this script lifetime) using get_plugin_data - * @param string plugin_id - * @param mixed data - * returns true on success, false otherwise - */ -function set_plugin_data($plugin_id, &$data) -{ - global $pwg_loaded_plugins; - if ( isset($pwg_loaded_plugins[$plugin_id]) ) - { - $pwg_loaded_plugins[$plugin_id]['plugin_data'] = &$data; - return true; - } - return false; -} - -/** Retrieves plugin data saved previously with set_plugin_data - * @param string plugin_id - */ -function &get_plugin_data($plugin_id) -{ - global $pwg_loaded_plugins; - if ( isset($pwg_loaded_plugins[$plugin_id]) ) - { - return $pwg_loaded_plugins[$plugin_id]['plugin_data']; - } - return null; -} - -/* Returns an array of plugins defined in the database - * @param string $state optional filter on this state - * @param string $id optional returns only data about given plugin -*/ -function get_db_plugins($state='', $id='') -{ - $query = ' -SELECT * FROM '.PLUGINS_TABLE; - if (!empty($state) or !empty($id) ) - { - $query .= ' -WHERE 1=1'; - if (!empty($state)) - { - $query .= ' - AND state="'.$state.'"'; - } - if (!empty($id)) - { - $query .= ' - AND id="'.$id.'"'; - } - } - - $result = pwg_query($query); - $plugins = array(); - while ($row = mysql_fetch_array($result)) - { - array_push($plugins, $row); - } - return $plugins; -} - - -function load_plugin($plugin) -{ - $file_name = PHPWG_PLUGINS_PATH.$plugin['id'].'/main.inc.php'; - if ( file_exists($file_name) ) - { - global $pwg_loaded_plugins; - $pwg_loaded_plugins[ $plugin['id'] ] = $plugin; - include_once( $file_name ); - } -} - -/*loads all the plugins on startup*/ -function load_plugins() -{ - global $conf, $pwg_loaded_plugins; - $pwg_loaded_plugins = array(); - if ($conf['enable_plugins']) - { - $plugins = get_db_plugins('active'); - foreach( $plugins as $plugin) - {// include main from a function to avoid using same function context - load_plugin($plugin); - } - trigger_action('plugins_loaded'); - } -} -?>
\ No newline at end of file |