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;
 }
Example #2
0
 /**
  * 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);
 }
Example #4
0
 /**
  * @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;
 }
Example #5
0
 /**
  * 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');
 }
Example #7
0
 /**
  * {@inheritdoc}
  */
 public function addListener($eventName, $listener, $priority = 0)
 {
     $this->_wrappedDispatcher->addListener($eventName, $listener, $priority);
 }
Example #8
0
 /**
  * @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);
 }