public function testBasic() { $sender = new \stdClass(); $event = new Event($sender, ['a' => 'b', 'c' => 'd']); $this->assertFalse($event->isDefaultPrevented()); $event->preventDefault(); $this->assertTrue($event->isDefaultPrevented()); $this->assertTrue($event->hasParam('a')); $this->assertTrue($event->hasParam('c')); $this->assertEquals('b', $event->getParam('a')); $this->assertEquals('d', $event->getParam('c')); }
/** * Plugin REST requests handler * * @param Event $event */ public static function handlePluginRESTRequest($event) { $request = $event->data[0]; if (strtolower($request->endpoint) != 'plugin') { return; } if (!count($request->path)) { throw new RestException('rest_plugin_name_missing', 400); } $name = array_shift($request->path); $info = self::getPluginInfo(ucfirst($name)); if (!count($request->path)) { throw new RestException('rest_endpoint_missing', 400); } $endpoint = array_shift($request->path); $class = ucfirst($name) . 'Plugin' . ucfirst($endpoint) . 'Endpoint'; if (!class_exists($class)) { throw new RestException('rest_endpoint_not_implemented', 501); } $handler = new $class($request); if (!method_exists($handler, $request->method)) { throw new RestException('rest_method_not_implemented', 501); } Logger::debug('Forwarding call to ' . $class . '::' . $request->method . '() handler'); $event->preventDefault(); $event->result = call_user_func_array(array($handler, $request->method), $request->path); }