aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/include/functions_plugins.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'BSF/include/functions_plugins.inc.php')
-rw-r--r--BSF/include/functions_plugins.inc.php284
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