public function listenToMethodNotFound(sfEvent $event) { $parameters = $event->getParameters(); if ($parameters['method'] == 'defineCombinedAssets') { $this->loaded_assets = count($parameters['arguments']) > 0 ? $parameters['arguments'][0] : array(); $event->setProcessed(true); } if ($parameters['method'] == 'getCombinedAssets') { $event->setReturnValue($this->loaded_assets); $event->setProcessed(true); } }
public function extend(sfEvent $event) { $this->_subject = $event->getSubject(); $method = $event['method']; $arguments = $event['arguments']; if (method_exists($this, $method)) { $result = call_user_func_array(array($this, $method), $arguments); $event->setProcessed(true); $event->setReturnValue($result); return true; } else { return false; } }
/** * Listen to the form.method_not_found event * * @param sfEvent $event * @return void */ public static function listenToFormMethodNotFound(sfEvent $event) { $form = $event->getSubject(); // do not process events of non-object forms if (!$form instanceof BaseFormDoctrine || $form instanceof FakeObjectForm) { return; } switch (strtolower($event['method'])) { case 'setobject': if (count($event['arguments']) !== 1) { throw new InvalidArugmentException('The number of arguments is invalid.'); } self::setObject($form, $event['arguments'][0]); $event->setProcessed(true); break; case 'embedcollection': if (count($event['arguments']) < 2 || count($event['arguments']) > 3) { throw new InvalidArgumentException('The number of arguments is invalid.'); } self::embedCollection($form, $event['arguments'][0], $event['arguments'][1], isset($event['arguments'][2]) ? $event['arguments'][2] : array()); $event->setProcessed(true); break; } }
public function run(sfEvent $event) { if (isset($event['pager'])) { $pager = $event['pager']; $context = sfContext::getInstance(); $response = $context->getResponse(); $request = $context->getRequest(); $className = 'sf' . ucfirst($event['format']) . 'Feed'; if (!class_exists($className)) { return false; } $feed = sfFeedPeer::newInstance($event['format']); $feed->initialize(array('title' => $response->getTitle(), 'link' => $request->getUri())); $items = sfFeedPeer::convertObjectsToItems($pager->getResults()); $feed->addItems($items); $event->setProcessed(true); $event->setReturnValue($feed->asXml()); $request->setRequestFormat($event['format']); return true; } else { return false; } }
/** * Listens on "component.method_not_found" * * @param sfEvent $event * @return null */ public static function listenOnComponentMethodNotFoundEvent(sfEvent $event) { try { $callable = array(new sfViewCacheTagManagerBridge($event->getSubject()), $event['method']); $value = call_user_func_array($callable, $event['arguments']); $event->setReturnValue($value); $event->setProcessed(true); } catch (BadMethodCallException $e) { $event->setProcessed(false); } catch (sfException $e) { $event->setProcessed(true); self::notifyApplicationLog(__CLASS__, $e->getMessage(), sfLogger::NOTICE); } }
// ->getSubject() $t->diag('->getSubject()'); $t->is($event->getSubject(), $subject, '->getSubject() returns the event subject'); // ->getName() $t->diag('->getName()'); $t->is($event->getName(), 'name', '->getName() returns the event name'); // ->getParameters() $t->diag('->getParameters()'); $t->is($event->getParameters(), $parameters, '->getParameters() returns the event parameters'); // ->getReturnValue() ->setReturnValue() $t->diag('->getReturnValue() ->setReturnValue()'); $event->setReturnValue('foo'); $t->is($event->getReturnValue(), 'foo', '->getReturnValue() returns the return value of the event'); // ->setProcessed() ->isProcessed() $t->diag('->setProcessed() ->isProcessed()'); $event->setProcessed(true); $t->is($event->isProcessed(), true, '->isProcessed() returns true if the event has been processed'); $event->setProcessed(false); $t->is($event->isProcessed(), false, '->setProcessed() changes the processed status'); // ArrayAccess interface $t->diag('ArrayAccess interface'); $t->is($event['foo'], 'bar', 'sfEvent implements the ArrayAccess interface'); $event['foo'] = 'foo'; $t->is($event['foo'], 'foo', 'sfEvent implements the ArrayAccess interface'); try { $event['foobar']; $t->fail('::offsetGet() throws an InvalidArgumentException exception when the parameter does not exist'); } catch (InvalidArgumentException $e) { $t->pass('::offsetGet() throws an InvalidArgumentException exception when the parameter does not exist'); } $t->ok(isset($event['foo']), 'sfEvent implements the ArrayAccess interface');
public function handleMemoryLimitEvent(sfEvent $event) { // store the current state $this->saveState($event['model'], array('limit' => $event['limit'], 'page' => $event['page'])); $event->setProcessed(true); }