Throw CRITICAL error message on unhandled Exception on plugin events instead of crashing

This commit is contained in:
Shoghi Cervantes 2014-10-15 18:35:30 +02:00
parent 1adf53a81e
commit d473ce13ee

View File

@ -641,14 +641,16 @@ class PluginManager{
* @param Event $event * @param Event $event
*/ */
public function callEvent(Event $event){ public function callEvent(Event $event){
$handlers = $event->getHandlers(); foreach($event->getHandlers()->getRegisteredListeners() as $registration){
$listeners = $handlers->getRegisteredListeners();
foreach($listeners as $registration){
if(!$registration->getPlugin()->isEnabled()){ if(!$registration->getPlugin()->isEnabled()){
continue; continue;
} }
try{
$registration->callEvent($event); $registration->callEvent($event);
}catch(\Exception $e){
$this->server->getLogger()->critical("Could not pass event ". $event->getEventName() ." to ". $registration->getPlugin()->getDescription()->getFullName() .": ".$e->getMessage()." on ".get_class($registration->getListener()));
}
} }
} }