public function testOnFilterCollectors()
 {
     $container = Shopware()->Container();
     $debug = $this->getDebugClass();
     $eventManager = $container->get('events');
     $utils = new Utils();
     $arguments = new \Enlight_Event_EventArgs(['utils' => $utils, 'eventManager' => $eventManager]);
     $arguments->setReturn([]);
     $collectors = $debug->onFilterCollectors($arguments);
     $this->assertCount(count($arguments->getReturn()), $collectors);
     $arguments->setReturn([new EventCollector($eventManager, $utils)]);
     $collectors = $debug->onFilterCollectors($arguments);
     $this->assertCount(count($arguments->getReturn()), $collectors);
     $this->assertInstanceOf('\\Shopware\\Plugins\\ShopwareClockwork\\Clockwork\\Components\\Collector\\EventCollector', $collectors[0]);
     $arguments->setReturn([new TemplateCollector($container->get('template'), $utils, $container->get('kernel')->getRootDir())]);
     $collectors = $debug->onFilterCollectors($arguments);
     $this->assertCount(count($arguments->getReturn()), $collectors);
     $this->assertInstanceOf('\\Shopware\\Plugins\\ShopwareClockwork\\Clockwork\\Components\\Collector\\TemplateCollector', $collectors[0]);
     $arguments->setReturn([new EventCollector($eventManager, $utils), new TemplateCollector($container->get('template'), $utils, $container->get('kernel')->getRootDir())]);
     $collectors = $debug->onFilterCollectors($arguments);
     $this->assertCount(count($arguments->getReturn()), $collectors);
     $this->assertInstanceOf('\\Shopware\\Plugins\\ShopwareClockwork\\Clockwork\\Components\\Collector\\EventCollector', $collectors[0]);
     $this->assertInstanceOf('\\Shopware\\Plugins\\ShopwareClockwork\\Clockwork\\Components\\Collector\\TemplateCollector', $collectors[1]);
     $info = [1, 2, 3];
     $arguments->setReturn($info);
     $collectors = $debug->onFilterCollectors($arguments);
     $this->assertCount(count($arguments->getReturn()), $collectors);
     $this->assertSame($info, $collectors);
 }
 /**
  * @param string $event
  * @param mixed $value
  * @param null $eventArgs
  * @return mixed
  * @throws Enlight_Event_Exception
  */
 public function filter($event, $value, $eventArgs = null)
 {
     if (isset($eventArgs) && is_array($eventArgs)) {
         $eventArgs = new Enlight_Event_EventArgs($eventArgs);
     } elseif (!isset($eventArgs)) {
         $eventArgs = new Enlight_Event_EventArgs();
     } elseif (!$eventArgs instanceof Enlight_Event_EventArgs) {
         throw new Enlight_Event_Exception('Parameter "eventArgs" must be an instance of "Enlight_Event_EventArgs"');
     }
     $eventArgs->setReturn($value);
     $this->getPluginBootstrap()->addEvent($event, 'filter', $this->getListeners($event), $eventArgs);
     return $this->events->filter($event, $value, $eventArgs);
 }
Example #3
0
 /**
  * Checks if the event has registered listeners.
  * If the event has listeners this listeners will be executed with the given event arguments.
  * The event arguments have to been an array or an instance of the Enlight_Event_EventArgs class.
  * If the given arguments not an array or an instance of the Enlight_Event_EventArgs class enlight
  * throw an Enlight_Event_Exception.
  * Before the listener will be executed the the flag "processed" will be set to false in the event arguments.
  * After all event listeners has been executed the "processed" flag will be set to true.
  *
  * The return value of the execute method will be set in the event arguments return value.
  *
  * @throws  Enlight_Event_Exception
  *
  * @param   string                             $event
  * @param   mixed                              $value
  * @param   Enlight_Event_EventArgs|array|null $eventArgs
  *
  * @return  mixed
  */
 public function filter($event, $value, $eventArgs = null)
 {
     if (!$this->hasListeners($event)) {
         return $value;
     }
     if (isset($eventArgs) && is_array($eventArgs)) {
         $eventArgs = new Enlight_Event_EventArgs($eventArgs);
     } elseif (!isset($eventArgs)) {
         $eventArgs = new Enlight_Event_EventArgs();
     } elseif (!$eventArgs instanceof Enlight_Event_EventArgs) {
         throw new Enlight_Event_Exception('Parameter "eventArgs" must be an instance of "Enlight_Event_EventArgs"');
     }
     $eventArgs->setReturn($value);
     $eventArgs->setName($event);
     $eventArgs->setProcessed(false);
     foreach ($this->getListeners($event) as $listener) {
         if (null !== ($return = $listener->execute($eventArgs))) {
             $eventArgs->setReturn($return);
         }
     }
     $eventArgs->setProcessed(true);
     return $eventArgs->getReturn();
 }
 /**
  * Adds an Attribte to s_order for sepa
  *
  * @param Enlight_Event_EventArgs $args
  * @return string
  */
 public function insertOrderAttribute(Enlight_Event_EventArgs $args)
 {
     $subject = $args->getSubject();
     if ($subject->sUserData['additional']['payment']['name'] === "paymilldebit") {
         $sepaDays = (int) $this->Config()->get('paymillSepaDate');
         if ($sepaDays < 0) {
             $sepaDays = 0;
         }
         $timeStamp = strtotime("+" . $sepaDays . " DAYS");
         $attributeSql = preg_replace('/attribute6/', 'attribute6, paymill_sepa_date', $args->getReturn());
         $attributeSql = preg_replace('/\\)$/', ",{$timeStamp}  )", $attributeSql);
         $args->setReturn($attributeSql);
     }
 }
Example #5
0
 /**
  * Callback for Shopware_Plugins_HttpCache_InvalidateCacheId-Event
  *
  * This events should be used to invalidate cacheIds without having
  * to check if the http-cache-plugin is installed and enabled.
  *
  * <code>
  * Shopware()->Events()->notify(
  *     'Shopware_Plugins_HttpCache_InvalidateCacheId',
  *     array('cacheId' => 'a123')
  * );
  * </code>
  *
  * @param \Enlight_Event_EventArgs $args
  */
 public function onInvalidateCacheId(\Enlight_Event_EventArgs $args)
 {
     $cacheId = $args->get('cacheId');
     if (!$cacheId) {
         $args->setReturn(false);
         return;
     }
     $result = $this->invalidateCacheId($cacheId);
     $args->setReturn($result);
 }
Example #6
0
 /**
  * transfer attribute data from temp order to new finalized order, shopware doesn't do it automatically
  * the temp order contains already the pushed transaction status data
  * 
  * @param \Enlight_Event_EventArgs $args
  * @return string
  */
 public function event_Shopware_Modules_Order_SaveOrderAttributes_FilterSQL(\Enlight_Event_EventArgs $args)
 {
     $sql = $args->getReturn();
     $sOrder = $args->getSubject();
     $db = $sOrder->sSYSTEM->sDB_CONNECTION;
     $helper = $this->Application()->PayoneMain()->getHelper();
     //temporaryId
     $tempId = $sOrder->sSYSTEM->sSESSION_ID;
     $tempOrder = Shopware()->Models()->getRepository('Shopware\\Models\\Order\\Order')->findOneBy(array('temporaryId' => $tempId));
     if (!$tempOrder) {
         return;
     }
     $attributes = $helper->getOrCreateAttribute($tempOrder);
     //inject insert SQL
     $sql = str_replace("INSERT INTO s_order_attributes (", "INSERT INTO s_order_attributes " . "(mopt_payone_txid, mopt_payone_status, mopt_payone_sequencenumber, " . "mopt_payone_is_authorized, mopt_payone_is_finally_captured, mopt_payone_clearing_data, ", $sql);
     $sql = str_replace(" VALUES (", " VALUES (" . $db->quote($attributes->getMoptPayoneTxid()) . ', ' . $db->quote($attributes->getMoptPayoneStatus()) . ', ' . $db->quote($attributes->getMoptPayoneSequencenumber()) . ', ' . $db->quote($attributes->getMoptPayoneIsAuthorized()) . ', ' . $db->quote($attributes->getMoptPayoneIsFinallyCaptured()) . ', ' . $db->quote($attributes->getMoptPayoneClearingData()) . ', ', $sql);
     $args->setReturn($sql);
 }