protected function createPagedCollection(LengthAwarePaginator $paginator, TransformerAbstract $transformer) { $data = $paginator->getCollection(); $collection = new Collection($data, $transformer); $collection->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $this->fractal->createData($collection)->toArray(); }
public function paginatedCollection(Paginator $paginator, $transformer = null, $resourceKey = null) { $paginator->appends(\Request::query()); $resource = new Collection($paginator->getCollection(), $this->getTransformer($transformer), $resourceKey); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $this->manager->createData($resource)->toArray(); }
public function index() { $clinics = Clinic::paginate(); $resource = new Collection($clinics->getCollection(), new ClinicTransformer(), 'clinics'); $resource->setPaginator(new IlluminatePaginatorAdapter($clinics)); return $this->fractal()->createData($resource)->toJson(); }
public function index() { $forms = Form::paginate(); $resource = new Collection($forms->getCollection(), new FormTransformer(), 'forms'); $resource->setPaginator(new IlluminatePaginatorAdapter($forms)); return $this->fractal()->createData($resource)->toJson(); }
public function createResponseArray($data, $entity, Request $request) { $this->request = $request; $fractal = new Manager(); $fractal->parseIncludes($request->query->get('include', [])); $fractal->setSerializer(new ArraySerializer()); $transformer = $this->transformerFactory->get($entity); if ($data instanceof Pagerfanta) { $pager = $data; $pager->setMaxPerPage($request->query->get('limit', 10)); $pager->setCurrentPage($request->query->get('page', 1)); $results = $pager->getCurrentPageResults(); $resource = new Collection($results, $transformer); $resource->setPaginator(new PagerfantaPaginatorAdapter($pager, [$this, 'paginationRouter'])); } elseif ($data instanceof DoctrineQuery) { $ormAdapter = new DoctrineORMAdapter($data); $pager = new Pagerfanta($ormAdapter); $pager->setMaxPerPage($request->query->get('limit', 10)); $pager->setCurrentPage($request->query->get('page', 1)); $results = $pager->getCurrentPageResults(); $resource = new Collection($results, $transformer); $resource->setPaginator(new PagerfantaPaginatorAdapter($pager, [$this, 'paginationRouter'])); } elseif (is_array($data)) { $resource = new Collection($data, $transformer); } else { $resource = new Item($data, $transformer); } $data = $fractal->createData($resource)->toArray(); return $data; }
private function paginateCollection(Collection $collection, IlluminatePaginator $paginator, PaginatorInterface $adapter = null) { if (is_null($adapter)) { $adapter = new IlluminatePaginatorAdapter($paginator); } $collection->setPaginator($adapter); }
public function respondWithPaginatedCollection(AbstractPaginator $paginator, $callback) { $resource = new Collection($paginator->getCollection(), $callback); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); $rootScope = $this->fractal->createData($resource); return $rootScope; }
public function index() { $users = User::paginate(); $resource = new Collection($users->getCollection(), new UserTransformer(), 'users'); $resource->setPaginator(new IlluminatePaginatorAdapter($users)); return $this->fractal()->createData($resource)->toJson(); }
/** * Returns the requested elements as JSON * * @param callable|null $configFactory A function for generating the config * @param array|null $config The API endpoint configuration * * @throws Exception * @throws HttpException */ public function actionGetElements($configFactory = null, array $config = null) { if ($configFactory !== null) { $params = craft()->urlManager->getRouteParams(); $variables = isset($params['variables']) ? $params['variables'] : null; $config = $this->_callWithParams($configFactory, $variables); } // Merge in default config options $config = array_merge(['paginate' => true, 'pageParam' => 'page', 'elementsPerPage' => 100, 'first' => false, 'transformer' => 'Craft\\ElementApi_ElementTransformer'], craft()->config->get('defaults', 'elementapi'), $config); if ($config['pageParam'] == 'p') { throw new Exception('The pageParam setting cannot be set to "p" because that’s the parameter Craft uses to check the requested path.'); } if (!isset($config['elementType'])) { throw new Exception('Element API configs must specify the elementType.'); } /** @var ElementCriteriaModel $criteria */ $criteria = craft()->elements->getCriteria($config['elementType'], ['limit' => null]); if (!empty($config['criteria'])) { $criteria->setAttributes($config['criteria']); } // Load Fractal $pluginPath = craft()->path->getPluginsPath() . 'elementapi/'; require $pluginPath . 'vendor/autoload.php'; $fractal = new Manager(); $fractal->setSerializer(new ArraySerializer()); // Define the transformer if (is_callable($config['transformer']) || $config['transformer'] instanceof TransformerAbstract) { $transformer = $config['transformer']; } else { Craft::import('plugins.elementapi.ElementApi_ElementTransformer'); $transformer = Craft::createComponent($config['transformer']); } if ($config['first']) { $element = $criteria->first(); if (!$element) { throw new HttpException(404); } $resource = new Item($element, $transformer); } else { if ($config['paginate']) { // Create the paginator require $pluginPath . 'ElementApi_PaginatorAdapter.php'; $paginator = new ElementApi_PaginatorAdapter($config['elementsPerPage'], $criteria->total(), $config['pageParam']); // Fetch this page's elements $criteria->offset = $config['elementsPerPage'] * ($paginator->getCurrentPage() - 1); $criteria->limit = $config['elementsPerPage']; $elements = $criteria->find(); $paginator->setCount(count($elements)); $resource = new Collection($elements, $transformer); $resource->setPaginator($paginator); } else { $resource = new Collection($criteria, $transformer); } } JsonHelper::sendJsonHeaders(); echo $fractal->createData($resource)->toJson(); // End the request craft()->end(); }
/** * @return mixed */ public function paginate() { $paginator = $this->repository->paginate(); $bloco = $paginator->getCollection(); $resource = new Collection($bloco, new CategoriaTecidoTransformer()); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $paginator; }
protected function respondWithPaginate($paginator, $callback) { $collection = $paginator->getCollection(); $resource = new Collection($collection, $callback); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); $rootScope = $this->fractal->createData($resource); return $this->respondWithArray($rootScope->toArray()); }
public function index(Manager $fractal, TransactionTransformer $transactionTransformer) { $transactions = Transaction::orderBy('time', 'desc')->paginate(10); $collection = new Collection($transactions, $transactionTransformer); $collection->setPaginator(new IlluminatePaginatorAdapter($transactions)); $data = $fractal->createData($collection)->toArray(); return $this->respond($data); }
/** * @param Paginator $data * @param TransformerAbstract $transformer * @param array $headers * @return \Illuminate\Http\JsonResponse */ public function respondWithPaginator(LengthAwarePaginator $data, TransformerAbstract $transformer, $headers = []) { $manager = new Manager(); $manager->setSerializer(new ArraySerializer()); $resource = new Collection($data->getCollection(), $transformer); $resource->setPaginator(new IlluminatePaginatorAdapter($data)); $response = $manager->createData($resource)->toArray(); return $this->respond(['post' => $this->_request->all(), 'data' => $response['data'], 'meta' => $response['meta'], 'error' => ['global' => '']], $headers); }
/** * @param $key * @param array $resources * @param PaginatorInterface $paginator * @param null|string|array $includes * @return array */ public function transformList($key, $resources, $includes = null, PaginatorInterface $paginator = null) { $transformer = $this->getTransformer($key); $resource = new Collection($resources, $transformer); if ($paginator !== null) { $resource->setPaginator($paginator); } return $this->convertResource($resource, $includes); }
/** * create fractal's collection * * @param Collection $collection * @param TransformerAbstract $transformer */ public function createPaginated($paginator, $transformer, $include = []) { $fractal = app(League\Fractal\Manager::class); $fractal->parseIncludes($include); $collection = $paginator->getCollection(); $resource = new Collection($collection, $transformer); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $fractal->createData($resource); }
/** * @param object[] $collection * @return \League\Fractal\Scope */ public function transformCollection($collection) { $item = reset($collection); $resource = new Collection($collection, $this->getTransformer(get_class($item)), $this->getResourceName(get_class($item))); if (null !== $this->paginator) { $resource->setPaginator(new IlluminatePaginatorAdapter($this->paginator)); } return $this->manager->createData($resource); }
/** * Respond with a paginator, and a transformer. * * @param LengthAwarePaginator $paginator * @param callable|\League\Fractal\TransformerAbstract $transformer * @param string $resourceKey * @param array $meta * @return ResponseFactory */ public function withPaginator(LengthAwarePaginator $paginator, $transformer, $resourceKey = null, $meta = []) { $resource = new Collection($paginator->items(), $transformer, $resourceKey); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); foreach ($meta as $metaKey => $metaValue) { $resource->setMetaValue($metaKey, $metaValue); } $rootScope = $this->manager->createData($resource); return $this->withArray($rootScope->toArray()); }
protected function respondWithPagination($item, $transformer) { if ($item == null) { return Response::json(null, $this->statusCode); } $paginator = $item; $resource = new Collection($item, $transformer); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); $rootScope = $this->fractal->createData($resource); return $this->respondWithArray($rootScope->toArray()); }
protected function createCollection($data, $transformer, $entityType, $paginator = false) { if ($this->serializer && $this->serializer != API_SERIALIZER_JSON) { $entityType = null; } $resource = new Collection($data, $transformer, $entityType); if ($paginator) { $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); } return $this->manager->createData($resource)->toArray(); }
public function index(APIRequest $request) { $limit = $this->getItemsPerPage($request); $events = Event::query(); $events = $this->processDateFilters($request, $events); $this->processOrdering($request, $events); $events = $events->with(['location', 'tags'])->paginate($limit); $resource = new Collection($events->items(), new EventTransformer(), 'event'); $resource->setPaginator(new IlluminatePaginatorAdapter($events)); return $this->fractal->createData($resource)->toArray(); }
public function index(Manager $fractal, BlockTransformer $blockTransformer) { $blocks = Block::orderBy('time', 'desc')->paginate(10); foreach ($blocks as $block) { $block->miner_reward = $block->transactions[0]->outputs[0]->value; } $collection = new Collection($blocks, $blockTransformer); $collection->setPaginator(new IlluminatePaginatorAdapter($blocks)); $data = $fractal->createData($collection)->toArray(); return $this->respond($data); }
public function index(APIRequest $request) { $limit = $this->getItemsPerPage($request); $locations = Location::query(); $locations = $this->processDateFilters($request, $locations); $this->processOrdering($request, $locations); $locations = $locations->paginate($limit); $resource = new Collection($locations->items(), new LocationTransformer(), 'location'); $resource->setPaginator(new IlluminatePaginatorAdapter($locations)); return $this->fractal->createData($resource)->toArray(); }
private function getFormattedData($data, $transformer, $serializer) { $fractal = new Manager(); $fractal->setSerializer($serializer); if ($data instanceof AbstractPaginator) { $resource = new Collection($data->getCollection(), $transformer); $resource->setPaginator(new IlluminatePaginatorAdapter($data)); } elseif (is_array($data) or $data instanceof Traversable) { $resource = new Collection($data, $transformer); } else { $resource = new Item($data, $transformer); } return $fractal->createData($resource); }
/** * Serialize a List of DataObject * @param $options * @return \League\Fractal\Scope */ public function getSerializedList(array $options = array()) { $manager = new Manager(); $manager->setSerializer($this->getSerializer()); $list = DataObject::get($this->owner->className); $decoratedList = $this->getDecoratedList($list, $options); $resource = new Collection($decoratedList, $this->getTransformer()); $paginator = new PaginatedListPaginatorAdapter($decoratedList); $resource->setPaginator($paginator); if (isset($options['include'])) { $manager->parseIncludes($options['include']); } return $manager->createData($resource); }
public function transformPaginated(LengthAwarePaginator $paginator) { $collection = $paginator->getCollection(); try { $transformer = TransformerFactory::makeForCollection($collection); $resource = new Collection($collection, $transformer); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $this->manager->createData($resource)->toArray(); } catch (\OutOfRangeException $e) { $emptyResource = new Collection([], []); $emptyResource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $this->manager->createData($emptyResource)->toArray(); } }
public function createCollectionResponseFromPaginator(Pagerfanta $paginator, TransformerAbstract $transformer, $code = JsonResponse::HTTP_OK) { $paginatorAdapter = new PagerfantaPaginatorAdapter($paginator, function () { return false; }); $resource = new Collection($paginator->getCurrentPageResults(), $transformer, 'data'); $resource->setPaginator($paginatorAdapter); $array = $this->manager->createData($resource)->toArray(); if (isset($array['meta']['pagination'])) { $paginationData = $array['meta']['pagination']; $paginationData['perPage'] = $paginationData['per_page']; $paginationData['currentPage'] = $paginationData['current_page']; $paginationData['totalPages'] = $paginationData['total_pages']; unset($paginationData['per_page'], $paginationData['current_page'], $paginationData['total_pages']); $array['meta']['pagination'] = $paginationData; } return new JsonResponse($array, $code); }
/** * @param $object * @param ResourceInterface $dunglasResource * @param Manager $fractalManager * @param Request|null $request * @param bool $defaultIncludes * * @return array * @throws \Exception */ public function normalize($object, ResourceInterface $dunglasResource, Manager $fractalManager, Request $request = null, $defaultIncludes = true) { $transformer = $this->transformerHelper->getTransformer($dunglasResource->getShortName()); if (null !== $request) { $fractalManager->parseIncludes($this->getEmbedsWithoutOptions($transformer, $request)); } $resource = new Item($object, $transformer); if ($object instanceof Paginator || $object instanceof PersistentCollection) { $resource = new Collection($object, $transformer); if ($fractalManager->getSerializer() instanceof ArraySerializer) { $resource->setPaginator(new DunglasPaginatorAdapter($object, $resource)); } } $rootScope = $fractalManager->createData($resource, $dunglasResource->getShortName()); if ($defaultIncludes === false) { $transformer->setDefaultIncludes([]); } $transformer->setCurrentScope($rootScope)->setEmbed($dunglasResource->getShortName()); return $rootScope->toArray(); }
/** * @param $data * @param TransformerInterface $transformer * @return array|\Illuminate\Support\Collection */ protected function collection($data, TransformerInterface $transformer) { if ($data instanceof LengthAwarePaginator) { $pagination = $data; $data = $pagination->getCollection(); } $resource = new Collection($data, $transformer); if (isset($pagination)) { $resource->setPaginator(new IlluminatePaginatorAdapter($pagination)); } $manager = new Manager(); if ($includes = app('request')->input('_with')) { $manager->parseIncludes($includes); } $data = $manager->createData($resource)->toArray(); if (isset($data['meta']['pagination']['links'])) { $links = $data['meta']['pagination']['links']; if (empty($links)) { $data['meta']['pagination']['links'] = new \stdClass(); } } return $data; }
/** * Simple/ignorant grab of everything * * @return mixed */ public function index() { if ($items = $this->repository->load('id', [], $this->limit(), $this->page())) { $resource = new FractalCollection($items, $this->getTransformer(), $this->repository->getTable()); $adapter = new IlluminatePaginatorAdapter($items); $resource->setPaginator($adapter); return $this->manager->createData($resource)->toJson(); } return null; }
/** * @param AbstractPaginator|LengthAwarePaginator|Paginator $paginator * @return \League\Fractal\Resource\Collection */ protected function transformPaginator($paginator) { $collection = $paginator->getCollection(); $resource = new Collection($collection, $this->getTransformer(), $this->resourceKeyCollection); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); return $resource; }