protected function setUpListener() { $that = $this; $overrider = new OMClassOverrider(PropelExtendingTest::$map); EventDispatcherProxy::setDispatcherGetter(function () use($that, $overrider) { $c = $that->getContainer(); $d = new ContainerAwareEventDispatcher($c); $d->addListener('om.detect', array($overrider, 'onDetectionRequest')); return $d; }); return $overrider; }
/** * Load runtime hook listeners. * * @return HookDispatcher */ public function loadRuntimeHandlers() { $handlers = $this->storage->getRuntimeHandlers(); foreach ($handlers as $handler) { if ($handler['serviceid']) { $callable = $this->factory->buildService($handler['serviceid'], $handler['classname'], $handler['method']); $this->dispatcher->addListenerService($handler['eventname'], $callable); } else { try { $callable = array($handler['classname'], $handler['method']); $this->dispatcher->addListener($handler['eventname'], $callable); } catch (\InvalidArgumentException $e) { throw new Exception\RuntimeException("Hook event handler could not be attached because %s", $e->getMessage(), 0, $e); } } } return $this; }
/** * {@inheritDoc} * * @throws \RuntimeException if the listener method is not callable */ public function addListener($eventName, $listener, $priority = 0) { if (!is_callable($listener)) { throw new \RuntimeException(sprintf('The given callback (%s) for event "%s" is not callable.', $this->getListenerAsString($listener), $eventName)); } $this->priorities[$eventName . '_' . $this->getListenerAsString($listener)] = $priority; parent::addListener($eventName, $listener, $priority); }
/** * @param ContainerInterface $container * @return \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher */ public function createEventDispatcher($container) { $dispatcher = new ContainerAwareEventDispatcher($container); $dispatcher->addListener('hook_civicrm_post::Activity', array('\\Civi\\CCase\\Events', 'fireCaseChange')); $dispatcher->addListener('hook_civicrm_post::Case', array('\\Civi\\CCase\\Events', 'fireCaseChange')); $dispatcher->addListener('hook_civicrm_caseChange', array('\\Civi\\CCase\\Events', 'delegateToXmlListeners')); $dispatcher->addListener('hook_civicrm_caseChange', array('\\Civi\\CCase\\SequenceListener', 'onCaseChange_static')); $dispatcher->addListener('DAO::post-insert', array('\\CRM_Core_BAO_RecurringEntity', 'triggerInsert')); $dispatcher->addListener('DAO::post-update', array('\\CRM_Core_BAO_RecurringEntity', 'triggerUpdate')); $dispatcher->addListener('DAO::post-delete', array('\\CRM_Core_BAO_RecurringEntity', 'triggerDelete')); $dispatcher->addListener('hook_civicrm_unhandled_exception', array('CRM_Core_LegacyErrorHandler', 'handleException')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Activity_ActionMapping', 'onRegisterActionMappings')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Contact_ActionMapping', 'onRegisterActionMappings')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Contribute_ActionMapping_ByPage', 'onRegisterActionMappings')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Contribute_ActionMapping_ByType', 'onRegisterActionMappings')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Event_ActionMapping', 'onRegisterActionMappings')); $dispatcher->addListener(\Civi\ActionSchedule\Events::MAPPINGS, array('CRM_Member_ActionMapping', 'onRegisterActionMappings')); return $dispatcher; }
/** * Adds an event listener that listens on the specified events. * * Wrapper for Symfony\Component\EventDispatcher\EventDispatcher::addListener method. * * @param string $eventName The event to listen on * @param callable $listener The listener * @param integer $priority The higher this value, the earlier an event listener will be triggered in the chain (defaults to 0) */ public function connect($eventName, $listener, $priority = 0) { parent::addListener($eventName, $listener, $priority); }
public function testPreEventWithSoftDeleteBehavior() { $that = $this; $order = array(); EventDispatcherProxy::setDispatcherGetter(function () use($that, &$order) { $c = $that->getContainer(); $d = new ContainerAwareEventDispatcher($c); $d->addListener('model.delete.pre', function ($e) use($that, &$order) { $order[] = 'model.delete.pre'; }); $d->addListener('delete.pre', function ($e) use($that, &$order) { $order[] = 'delete.pre'; }); $d->addListener('query.delete.pre', function ($e) use($that, &$order) { $order[] = 'query.delete.pre'; }); return $d; }); $m = new SoftdeleteTable(); $m->save(); $m->delete(); $that->assertContains('model.delete.pre', $order, 'Delete model event'); $that->assertContains('delete.pre', $order, 'Model global delete event'); $order = array(); BaseSoftdeleteTableQuery::create()->filterById(1)->delete(); $that->assertContains('delete.pre', $order, 'Query global delete event'); $that->assertContains('query.delete.pre', $order, 'Query delete event'); }
/** * {@inheritdoc} */ public function addListener($eventName, $listener, $priority = 0) { $this->_wrappedDispatcher->addListener($eventName, $listener, $priority); }
/** * @param ContainerInterface $container * @return \Symfony\Component\EventDispatcher\EventDispatcher */ public function createEventDispatcher($container) { $dispatcher = new ContainerAwareEventDispatcher($container); $dispatcher->addListener('hook_civicrm_post::Activity', array('\\Civi\\CCase\\Events', 'fireCaseChange')); $dispatcher->addListener('hook_civicrm_post::Case', array('\\Civi\\CCase\\Events', 'fireCaseChange')); $dispatcher->addListener('hook_civicrm_caseChange', array('\\Civi\\CCase\\Events', 'delegateToXmlListeners')); $dispatcher->addListener('hook_civicrm_caseChange', array('\\Civi\\CCase\\SequenceListener', 'onCaseChange_static')); $dispatcher->addListener('DAO::post-insert', array('\\CRM_Core_BAO_RecurringEntity', 'triggerInsert')); $dispatcher->addListener('DAO::post-update', array('\\CRM_Core_BAO_RecurringEntity', 'triggerUpdate')); $dispatcher->addListener('DAO::post-delete', array('\\CRM_Core_BAO_RecurringEntity', 'triggerDelete')); $dispatcher->addListener('hook_civicrm_unhandled_exception', array('CRM_Core_LegacyErrorHandler', 'handleException')); return $dispatcher; }
/** * {@inheritdoc} */ public function addListener($eventName, $listener, $priority = 0) { $this->originalDispatcher->addListener($eventName, $listener, $priority); }