/** * Return TRUE if the input has an id, and thus is an edit of an existing field. * @param ResourceTransformer $transformer * @param ResourceDefinition $resourceDefinition * @param Context $context * @param $input * @return bool */ protected function hasInputIdentifier(ResourceTransformer $transformer, ResourceDefinition $resourceDefinition, Context $context, &$input) { $identifiers = $resourceDefinition->getFields()->getIdentifiers(); if (count($identifiers) > 0) { foreach ($identifiers as $field) { $value = $this->resolvePropertyInput($transformer, $input, $field, $context); if (!$value) { return false; } } return true; } return false; }
/** * @param ResourceTransformer $transformer * @param ResourceDefinition $definition * @param null $request * @return PaginationBuilder */ private function createPaginationBuilderFromDefinition(ResourceTransformer $transformer, ResourceDefinition $definition, $request = null) { $cn = $this->paginationClass; /** * @var PaginationBuilder $builder */ $builder = new $cn(); // Register attribute names foreach ($definition->getFields() as $field) { if ($field instanceof IdentifierField || $field instanceof ResourceField && $field->isSortable()) { $builder->registerPropertyName($field->getName(), $field->getDisplayName()); } } $sorting = $transformer->getPropertyResolver()->getParameterFromRequest($request, ResourceTransformer::SORT_PARAMETER); $sortedOn = []; if ($sorting) { $sortFields = explode(',', $sorting); // Set the sort order foreach ($sortFields as $sortField) { if (mb_substr($sortField, 0, 1) === '!') { $sortField = mb_substr($sortField, 1); $direction = OrderParameter::DESC; } else { $direction = OrderParameter::ASC; } $field = $definition->getFields()->getFromDisplayName($sortField); if ($field) { if ($field->isSortable()) { $sortedOn[$field->getName()] = true; $builder->orderBy(new OrderParameter($field->getName(), $direction)); } } else { // Check sortable switch ($sortField) { case self::RANDOM: $this->handleRandomOrder($builder, $direction, $request); break; } } } } // Add all foreach ($definition->getFields() as $field) { if ($field instanceof IdentifierField && !isset($sortedOn[$field->getName()])) { $builder->orderBy(new OrderParameter($field->getName(), OrderParameter::ASC)); } } // Set request if (isset($request)) { $builder->setRequest($request); } return $builder; }