Ejemplo n.º 1
0
 /**
  * Determine if a transformer has any available includes.
  *
  * @author Morten Rugaard <*****@*****.**>
  *
  * @param  \Nodes\Api\Transformer\TransformerAbstract|\League\Fractal\TransformerAbstract|callable $transformer
  * @return bool
  */
 protected function transformerHasIncludes($transformer)
 {
     if (!$transformer instanceof NodesTransformerAbstract && !$transformer instanceof FractalTransformerAbstract) {
         return false;
     }
     $defaultIncludes = $transformer->getDefaultIncludes();
     $availableIncludes = $transformer->getAvailableIncludes();
     return !empty($defaultIncludes) || !empty($availableIncludes);
 }
Ejemplo n.º 2
0
 /**
  * Get includes as their array keys for eager loading.
  *
  * @param \League\Fractal\TransformerAbstract $transformer
  * @param string|array                        $requestedIncludes
  *
  * @return array
  */
 protected function mergeEagerLoads($transformer, $requestedIncludes)
 {
     $availableIncludes = array_intersect($transformer->getAvailableIncludes(), (array) $requestedIncludes);
     $includes = array_merge($availableIncludes, $transformer->getDefaultIncludes());
     $eagerLoads = [];
     foreach ($includes as $key => $value) {
         $eagerLoads[] = is_string($key) ? $key : $value;
     }
     return $eagerLoads;
 }
Ejemplo n.º 3
0
 /**
  * Prepare root scope and set some meta information.
  *
  * @param Item|Collection $resource
  *
  * @return \League\Fractal\Scope
  */
 protected function prepareRootScope($resource)
 {
     $resource->setMetaValue('available_includes', $this->transformer->getAvailableIncludes());
     $resource->setMetaValue('default_includes', $this->transformer->getDefaultIncludes());
     return $this->fractal->createData($resource);
 }
Ejemplo n.º 4
0
 /**
  * @param TransformerAbstract $transformer
  * @param Request             $request
  *
  * @return array
  */
 private function getEmbedsWithoutOptions(TransformerAbstract $transformer, Request $request)
 {
     $embeds = $request->get('embed', null);
     if (null === $embeds) {
         $embeds = implode(',', $transformer->getDefaultIncludes());
     }
     $embedAvailable = $request->headers->get(self::EMBED_AVAILABLE, 0);
     if ($request->headers->has(self::EMBED_AVAILABLE) && !$embedAvailable) {
         $transformer->setDefaultIncludes([]);
     }
     if ($embedAvailable) {
         if (is_null($embeds)) {
             $embeds = implode(',', $transformer->getAvailableIncludes());
         } else {
             $arrayEmbed = array_merge(explode(',', $embeds), $transformer->getAvailableIncludes());
             $embeds = implode(',', $arrayEmbed);
         }
     }
     return explode(',', $embeds);
 }