/**
  * Construct the resource representation object.
  *
  * @param ResourceInterface $resource
  * @param AdapterInterface $adapter
  */
 public function __construct(ResourceInterface $resource, AdapterInterface $adapter)
 {
     // Set the service locator first.
     $this->setServiceLocator($adapter->getServiceLocator());
     $this->setId($resource->getId());
     $this->setAdapter($adapter);
     $this->resource = $resource;
 }
Example #2
0
 /**
  * Execute a batch create operation.
  *
  * @param Request $request
  * @param null|AdapterInterface $adapter Custom adapter
  * @return Response
  */
 protected function executeBatchCreate(Request $request, AdapterInterface $adapter)
 {
     $t = $this->getTranslator();
     if (!is_array($request->getContent())) {
         throw new Exception\BadRequestException($t->translate('Invalid batch operation request data.'));
     }
     // Create a simulated request for individual create events.
     $createRequest = new Request(Request::CREATE, $request->getResource());
     // Trigger the create.pre event for every resource.
     foreach ($request->getContent() as $content) {
         $createRequest->setContent($content);
         $createEvent = new Event(Event::API_CREATE_PRE, $adapter, ['request' => $createRequest]);
         $adapter->getEventManager()->trigger($createEvent);
     }
     $response = $adapter->batchCreate($request);
     // Do not trigger create.post events if an error has occured or if the
     // response does not return valid content.
     if ($response->isError() || !is_array($response->getContent())) {
         return $response;
     }
     // Trigger the create.post event for every created resource.
     foreach ($response->getContent() as $resource) {
         $createRequest->setContent($resource);
         $createEvent = new Event(Event::API_CREATE_POST, $adapter, ['request' => $createRequest, 'response' => new Response($resource)]);
         $adapter->getEventManager()->trigger($createEvent);
     }
     return $response;
 }