/** * @depends testQueryParamsAreMutable */ public function testQueryParamsAreNullable(ResourceEvent $event) { $event->setQueryParams(null); $this->assertNull($event->getQueryParams()); }
/** * Dispatch an incoming event to the appropriate method * * Marshals arguments from the event parameters. * * @param ResourceEvent $event * @return mixed */ public function dispatch(ResourceEvent $event) { $this->event = $event; switch ($event->getName()) { case 'create': $data = $event->getParam('data', []); return $this->create($data); case 'delete': $id = $event->getParam('id', null); return $this->delete($id); case 'deleteList': $data = $event->getParam('data', []); return $this->deleteList($data); case 'fetch': $id = $event->getParam('id', null); return $this->fetch($id); case 'fetchAll': $queryParams = $event->getQueryParams() ?: []; return $this->fetchAll($queryParams); case 'patch': $id = $event->getParam('id', null); $data = $event->getParam('data', []); return $this->patch($id, $data); case 'patchList': $data = $event->getParam('data', []); return $this->patchList($data); case 'replaceList': $data = $event->getParam('data', []); return $this->replaceList($data); case 'update': $id = $event->getParam('id', null); $data = $event->getParam('data', []); return $this->update($id, $data); default: throw new Exception\RuntimeException(sprintf('%s has not been setup to handle the event "%s"', __METHOD__, $event->getName())); } }
/** * @param ResourceEvent $event * @param bool $translatePaging * @param bool $translateDecoded * @return array */ protected function getQueryParams(ResourceEvent $event, $translatePaging = false, $translateDecoded = false) { $params = (array) ($event->getQueryParams() ?: array()); if ($translatePaging === true) { $params = $this->translatePagingParams($params); } if ($translateDecoded === true) { foreach ($params as $key => $value) { // Try to detect JSON... if (is_string($value) && in_array($value[0], array('[', '{'))) { try { $params[$key] = $this->decodeJson($value); } catch (Exception\RuntimeException $e) { // Do nothing (assume it wasn't JSON) } } } } return $params; }