inline add_event_listener to save some layers and loops
This commit is contained in:
parent
18490ed488
commit
3ad8fe4a93
@ -1381,24 +1381,6 @@ function path_to_tags($path) {
|
|||||||
global $_event_listeners;
|
global $_event_listeners;
|
||||||
$_event_listeners = array();
|
$_event_listeners = array();
|
||||||
|
|
||||||
/**
|
|
||||||
* Register an Extension.
|
|
||||||
*
|
|
||||||
* @param Extension $extension
|
|
||||||
* @param int $pos
|
|
||||||
* @param array $events
|
|
||||||
*/
|
|
||||||
function add_event_listener(Extension $extension, $pos=50, $events=array()) {
|
|
||||||
global $_event_listeners;
|
|
||||||
$pos *= 100;
|
|
||||||
foreach($events as $event) {
|
|
||||||
while(isset($_event_listeners[$event][$pos])) {
|
|
||||||
$pos += 1;
|
|
||||||
}
|
|
||||||
$_event_listeners[$event][$pos] = $extension;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @private */
|
/** @private */
|
||||||
global $_shm_event_count;
|
global $_shm_event_count;
|
||||||
@ -1561,15 +1543,19 @@ function _set_event_listeners($classes) {
|
|||||||
// don't do anything
|
// don't do anything
|
||||||
}
|
}
|
||||||
elseif(is_subclass_of($class, "Extension")) {
|
elseif(is_subclass_of($class, "Extension")) {
|
||||||
$c = new $class();
|
$extension = new $class();
|
||||||
$c->i_am($c);
|
$extension->i_am($extension);
|
||||||
$my_events = array();
|
$my_events = array();
|
||||||
foreach(get_class_methods($c) as $method) {
|
foreach(get_class_methods($extension) as $method) {
|
||||||
if(substr($method, 0, 2) == "on") {
|
if(substr($method, 0, 2) == "on") {
|
||||||
$my_events[] = substr($method, 2) . "Event";
|
$event = substr($method, 2) . "Event";
|
||||||
|
$pos = $extension->get_priority() * 100;
|
||||||
|
while(isset($_event_listeners[$event][$pos])) {
|
||||||
|
$pos += 1;
|
||||||
|
}
|
||||||
|
$_event_listeners[$event][$pos] = $extension;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
add_event_listener($c, $c->get_priority(), $my_events);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user