mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-08 09:43:01 +02:00
plugins: first prototype version
git-svn-id: http://piwigo.org/svn/trunk@1578 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
?>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | PhpWebGallery - a PHP based picture gallery |
|
||||
// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | branch : BSF (Best So Far)
|
||||
// | file : $Id$
|
||||
// | last update : $Date$
|
||||
// | last modifier : $Author$
|
||||
// | revision : $Revision$
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | 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 PhpWebGallery 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/');
|
||||
|
||||
/* 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
|
||||
*/
|
||||
function add_event_handler($event, $func, $priority=50, $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 true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
trigger_event('add_event_handler',
|
||||
array('event'=>$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');
|
||||
}
|
||||
?>
|
||||
+15
-14
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user