Added EventRegister. This allows the framework to determine what modules should be loaded at an event. This way classes only get loaded at the right time

This commit is contained in:
Abel Hoogeveen 2015-02-23 20:27:26 +01:00
parent 8eb292def5
commit 4343e773af
3 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1 @@
<?php return 1 ;

View File

@ -0,0 +1,17 @@
<?php
class EventRegisterBuildEvent extends Event {
public $register = array();
public function init($call){}
public function addEvent($modName, $eventName) {
if (!isset($this->register[$eventName])) {
$this->register[$eventName] = array();
}
$this->register[$eventName][] = $modName;
}
}
?>

View File

@ -111,6 +111,14 @@ class Events extends Bus{
$this->logger->log("Checking for Listeners");
// Read the event register for listeners
$register = $this->config->eventregister->register;
if (isset($register[$eventName])) {
for ($i=0; $i < count($register[$eventName]); $i++) {
$this->core->loadMod($register[$eventName][$i]);
}
}
//There are listeners for this event
if(isset($this->listeners[$eventName])) {
//Loop from the highest priority to the lowest
@ -144,8 +152,20 @@ class Events extends Bus{
return $event;
}
// Event Preparation:
public function buildEventRegister() {
$this->logger->newLevel("Building Event Register", 'Events');
$dir = FUZEPATH . "/Core/Mods/";
$mods = array_values(array_diff(scandir($dir), array('..', '.')));
for ($i=0; $i < count($mods); $i++) {
$this->core->loadMod($mods[$i]);
}
$event = $this->fireEvent('eventRegisterBuildEvent', '');
$this->config->set('eventregister', 'register', $event->register);
$this->logger->stopLevel();
}
}
class NotifierEvent extends Event {}