From 12182ddcfeced9934f45f20a3859049066ce0726 Mon Sep 17 00:00:00 2001 From: rvelices Date: Thu, 26 Oct 2006 03:35:20 +0000 Subject: plugins: first prototype version git-svn-id: http://piwigo.org/svn/trunk@1578 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/common.inc.php | 3 + include/config_default.inc.php | 2 + include/functions.inc.php | 1 + include/functions_plugins.inc.php | 155 ++++++++++++++++++++++++++++++++++++++ include/page_header.php | 29 +++---- 5 files changed, 176 insertions(+), 14 deletions(-) create mode 100644 include/functions_plugins.inc.php (limited to 'include') diff --git a/include/common.inc.php b/include/common.inc.php index d0376afe8..e77d41f89 100644 --- a/include/common.inc.php +++ b/include/common.inc.php @@ -158,6 +158,8 @@ if ($user['is_the_guest']) // template instance $template = new Template(PHPWG_ROOT_PATH.'template/'.$user['template'], $user['theme'] ); +load_plugins(); + if ($conf['gallery_locked']) { $header_msgs[] = $lang['gallery_locked_message']; @@ -191,6 +193,7 @@ if ($conf['check_upgrade_feed'] and defined('PHPWG_IN_UPGRADE') and PHPWG_IN_UPGRADE) { + // retrieve already applied upgrades $query = ' SELECT id diff --git a/include/config_default.inc.php b/include/config_default.inc.php index c4426d711..b70b24e21 100644 --- a/include/config_default.inc.php +++ b/include/config_default.inc.php @@ -521,4 +521,6 @@ $conf['email_admin_on_new_user']=false; // stored on user informations //$conf['default_admin_layout']='yoga/dark'; + +$conf['disable_plugins']=false; ?> diff --git a/include/functions.inc.php b/include/functions.inc.php index 2e7a47b4b..3b7c88bc6 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -33,6 +33,7 @@ include_once( PHPWG_ROOT_PATH .'include/functions_group.inc.php' ); include_once( PHPWG_ROOT_PATH .'include/functions_html.inc.php' ); include_once( PHPWG_ROOT_PATH .'include/functions_tag.inc.php' ); include_once( PHPWG_ROOT_PATH .'include/functions_url.inc.php' ); +include_once( PHPWG_ROOT_PATH .'include/functions_plugins.inc.php' ); //----------------------------------------------------------- generic functions diff --git a/include/functions_plugins.inc.php b/include/functions_plugins.inc.php new file mode 100644 index 000000000..23b6df5cd --- /dev/null +++ b/include/functions_plugins.inc.php @@ -0,0 +1,155 @@ +$event, 'function'=>$func) + ); + + $pwg_event_handlers[$event]["$priority"][] = + array( + 'function'=>$func, + 'accepted_args'=>$accepted_args); + + return true; +} + + +function trigger_event($event, $data=null) +{ + global $pwg_event_handlers; + if ($event!='pre_trigger_event' and $event!='post_trigger_event') + {// special case + trigger_event('pre_trigger_event', + array('event'=>$event, 'data'=>$data) ); + if ( !isset($pwg_event_handlers[$event]) ) + { + trigger_event('post_trigger_event', + array('event'=>$event, 'data'=>$data) ); + } + } + + if ( !isset($pwg_event_handlers[$event]) ) + { + 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); + } + } + } + + if ($event!='pre_trigger_event' and $event!='post_trigger_event') + { + trigger_event('post_trigger_event', + array('event'=>$event, 'data'=>$data) ); + } + + return $data; +} + + + + + +function get_active_plugins($runtime = true) +{ + global $conf; + if ($conf['disable_plugins'] and $runtime) + { + return array(); + } + if (empty($conf['active_plugins'])) + { + return array(); + } + return explode(',', $conf['active_plugins']); + +} + + +function load_plugins() +{ + $plugins = get_active_plugins(); + foreach( $plugins as $plugin) + { + if (!empty($plugin)) + { + include_once( PHPWG_PLUGINS_PATH.$plugin.'/index.php' ); + } + } + trigger_event('plugins_loaded'); +} +?> \ No newline at end of file diff --git a/include/page_header.php b/include/page_header.php index a729e0ebc..af571ab19 100644 --- a/include/page_header.php +++ b/include/page_header.php @@ -37,8 +37,9 @@ $template->assign_vars( $page['gallery_title'] : $conf['gallery_title'], 'PAGE_BANNER' => - isset($page['page_banner']) ? - $page['page_banner'] : $conf['page_banner'], + trigger_event('page_banner', + isset($page['page_banner']) ? + $page['page_banner'] : $conf['page_banner'] ), 'BODY_ID' => isset($page['body_id']) ? @@ -49,22 +50,22 @@ $template->assign_vars( 'LANG'=>$lang_info['code'], 'DIR'=>$lang_info['direction'], - 'TAG_INPUT_ENABLED' => + 'TAG_INPUT_ENABLED' => ((is_adviser()) ? 'disabled onclick="return false;"' : '') )); -// refresh -if ( isset( $refresh ) and intval($refresh) >= 0 +// refresh +if ( isset( $refresh ) and intval($refresh) >= 0 and isset( $url_link ) and isset( $redirect_msg ) ) -{ - $template->assign_vars( - array( - 'U_REDIRECT_MSG' => $redirect_msg, - 'REFRESH_TIME' => $refresh, - 'U_REFRESH' => $url_link - )); - $template->assign_block_vars('refresh', array()); -} +{ + $template->assign_vars( + array( + 'U_REDIRECT_MSG' => $redirect_msg, + 'REFRESH_TIME' => $refresh, + 'U_REFRESH' => $url_link + )); + $template->assign_block_vars('refresh', array()); +} header('Content-Type: text/html; charset='.$lang_info['charset']); $template->parse('header'); -- cgit v1.2.3