Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/inc/lib/events_dispatcher.class.php

51 lines
1.9 KiB

<?php
include_once api_get_path(CONFIGURATION_PATH).'events.conf.php';
/**
*
* Entry point for every event in the application.
* Fires the functions linked to the events according to the event's conf.
* Every function got its own filter, it's fired inside the functiones fired
* by this class. The filter config is next to the event config, in conf/events.conf.php
*
*/
class EventsDispatcher
{
public static function events($event_name, $event_data = array())
{
global $event_config;
// get the config for the event passed in parameter ($event_name)
// and execute every actions with the values
foreach ($event_config[$event_name]["actions"] as $func) {
$execute = true;
if (!function_exists($func)) // if the function doesn't exist, we log
{
error_log("EventsDispatcher warning : ".$func." does not exist.");
$execute = false;
}
// check if the event's got a filter
if (function_exists($event_name."_".$func."_filter_func"))
{
$filter = $event_name."_".$func."_filter_func";
// if it does, we execute the filter (which changes the data
// in-place and returns true on success or false on error)
$execute = $filter($event_data);
}
else // if there's no filter
{
error_log("EventsDispatcher warning : ".$event_name."_".$func."_filter_func does not exist.");
}
if (!$execute) // if the filter says we cannot send the mail, we get out of here
{
return false;
}
// finally, if the filter says yes (or the filter doesn't exist),
// we execute the in-between function that will call the needed
// function
$func($event_name, $event_data);
}
}
}