1
0
mirror of https://github.com/e107inc/e107.git synced 2025-02-07 15:51:18 +01:00
php-e107/e107_handlers/event_class.php

161 lines
3.9 KiB
PHP
Raw Normal View History

2006-12-02 04:36:16 +00:00
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| <EFBFBD>Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/event_class.php,v $
2009-01-22 23:14:48 +00:00
| $Revision: 1.6 $
| $Date: 2009-01-22 23:14:48 $
| $Author: lisa_ $
2006-12-02 04:36:16 +00:00
+----------------------------------------------------------------------------+
*/
2006-12-02 04:36:16 +00:00
if (!defined('e107_INIT')) { exit; }
class e107_event
{
2006-12-02 04:36:16 +00:00
var $functions = array();
var $includes = array();
function register($eventname, $function, $include='')
{
if ($include!='')
{
2006-12-02 04:36:16 +00:00
$this->includes[$eventname][] = $include;
}
$this->functions[$eventname][] = $function;
}
function trigger($eventname, &$data)
{
if (isset($this -> includes[$eventname]))
{
foreach($this->includes[$eventname] as $evt_inc)
{
if (file_exists($evt_inc))
{
2006-12-02 04:36:16 +00:00
include_once($evt_inc);
}
}
}
if (isset($this -> functions[$eventname]))
{
foreach($this->functions[$eventname] as $evt_func)
{
if (function_exists($evt_func))
{
2006-12-02 04:36:16 +00:00
$ret = $evt_func($data);
if ($ret!='')
{
2006-12-02 04:36:16 +00:00
break;
}
}
}
}
return (isset($ret) ? $ret : false);
}
function triggerAdminEvent($type, $parms=array())
{
global $pref;
if(!is_array($parms))
{
$_tmp = parse_str($parms, $parms);
}
if(isset($pref['e_admin_events_list']) && is_array($pref['e_admin_events_list']))
{
$called = getcachedvars('admin_events_called');
if(!is_array($called)) { $called = array(); }
foreach($pref['e_admin_events_list'] as $plugin)
{
2008-12-03 00:48:19 +00:00
if(plugInstalled($plugin))
{
2008-12-03 00:48:19 +00:00
$func = 'plugin_'.$plugin.'_admin_events';
if(!function_exists($func))
{
2008-12-03 00:48:19 +00:00
$fname = e_PLUGIN.$plugin.'/e_admin_events.php';
if(is_readable($fname)) { include_once($fname); }
2008-12-03 00:48:19 +00:00
}
if(function_exists($func))
{
$event_func = call_user_func($func, $type, $parms);
if ($event_func && function_exists($event_func) && !in_array($event_func, $called))
{
$called[] = $event_func;
cachevars('admin_events_called', $called);
call_user_func($event_func);
}
}
}
}
}
}
/*
* triggerHook trigger a hooked in element
* four methods are allowed hooks: form, create, update, delete
* form : return array('caption'=>'', 'text'=>'');
* create, update, delete : return string message
* @param array $data array containing
* @param string $method form,insert,update,delete
* @param string $table the table name of the calling plugin
* @param int $id item id of the record
* @param string $plugin identifier for the calling plugin
* @param string $function identifier for the calling function
* @return string $text string of rendered html, or message from db handler
*/
function triggerHook($data='')
{
global $pref;
$text = '';
if(isset($pref['e_event_list']) && is_array($pref['e_event_list']))
{
foreach($pref['e_event_list'] as $hook)
{
2009-01-22 23:14:48 +00:00
if(plugInstalled($hook))
{
2009-01-22 23:14:48 +00:00
if(is_readable(e_PLUGIN.$hook."/e_event.php"))
{
2009-01-22 23:14:48 +00:00
require_once(e_PLUGIN.$hook."/e_event.php");
$name = "e_event_{$hook}";
if(class_exists($name))
{
2009-01-22 23:14:48 +00:00
$class = new $name();
switch($data['method'])
{
//returns array('caption'=>'', 'text'=>'');
case 'form':
if(method_exists($class, "event_{$data['method']}"))
{
$text[] = $class->event_form($data);
}
break;
//returns string message
case 'create':
case 'update':
case 'delete':
if(method_exists($class, "event_{$data['method']}"))
{
$text .= call_user_func(array($class, "event_{$data['method']}"), $data);
}
break;
}
}
}
}
}
}
return $text;
}
2006-12-02 04:36:16 +00:00
}
2006-12-02 04:36:16 +00:00
?>