From d0abe9aee932e5b7da8dfe319a691ad21eaa0f31 Mon Sep 17 00:00:00 2001 From: dannylamb Date: Mon, 21 Nov 2016 11:10:21 -0400 Subject: [PATCH] Patching up UUID param converter (#6) --- src/FedoraResourceHtmlRouteProvider.php | 8 ++--- src/ParamConverter/UuidEntityConverter.php | 36 +++++----------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/FedoraResourceHtmlRouteProvider.php b/src/FedoraResourceHtmlRouteProvider.php index d5263e79..7700bffe 100644 --- a/src/FedoraResourceHtmlRouteProvider.php +++ b/src/FedoraResourceHtmlRouteProvider.php @@ -41,7 +41,7 @@ class FedoraResourceHtmlRouteProvider extends AdminHtmlRouteProvider implements } if ($uuid_route = $this->getUuidRoute($entity_type)) { - $collection->add("islandora.{$entity_type_id}.uuid", $uuid_route); + $collection->add("entity.{$entity_type_id}.uuid", $uuid_route); } @@ -62,12 +62,12 @@ class FedoraResourceHtmlRouteProvider extends AdminHtmlRouteProvider implements $route = new Route($entity_type->getLinkTemplate('uuid')); $route ->addDefaults([ - '_entity_view' => 'fedora_resource.full', + '_entity_view' => "{$entity_type_id}.full", '_title_callback' => '\Drupal\Core\Entity\Controller\EntityController::title', ]) - ->setRequirement('_entity_access', $entity_type_id . '.view') + ->setRequirement('_entity_access', "{$entity_type_id}.view") ->setOption('parameters', [ - $entity_type_id => ['type' => 'entity:' . $entity_type_id], + $entity_type_id => ['type' => "uuid"], ]) // Fetch UUID pattern from Uuid class(constant) ->setRequirement($entity_type_id, '^' . Uuid::VALID_PATTERN . '$'); diff --git a/src/ParamConverter/UuidEntityConverter.php b/src/ParamConverter/UuidEntityConverter.php index b3e18b17..cae37c98 100644 --- a/src/ParamConverter/UuidEntityConverter.php +++ b/src/ParamConverter/UuidEntityConverter.php @@ -19,51 +19,29 @@ namespace Drupal\islandora\ParamConverter; use Drupal\Core\ParamConverter\EntityConverter; use Drupal\Core\ParamConverter\ParamConverterInterface; use Drupal\Component\Uuid\Uuid; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Route; + /** * Converts an UUID param (route) into an Entity. * * @ingroup islandora */ -class UuidEntityConverter extends EntityConverter implements ParamConverterInterface { +class UuidEntityConverter extends EntityConverter { + /** * @inheritDoc */ public function convert($value, $definition, $name, array $defaults) { - - $entity_type_id = $this->getEntityTypeFromDefaults($definition, $name, $defaults); - if ($storage = $this->entityManager->getStorage($entity_type_id)) { - - // Try to load fedora entity by UUID or ID depending on $value. - if (!(is_int($value) || ctype_digit((string) $value)) && Uuid::isValid($value)) { - $entities = $storage->loadByProperties(['uuid' => $value]); - $entity = ($entities) ? reset($entities) : NULL; - - } - else { - $entity = parent::convert($value, $definition, $name, $defaults); - } - } - - return $entity; + return $this->entityManager->loadEntityByUuid($name, $value); } /** * @inheritDoc */ public function applies($definition, $name, Route $route) { - /*if (!empty($definition['type']) && strpos($definition['type'], 'entity:') === 0) { - $entity_type_id = substr($definition['type'], strlen('entity:')); - if (strpos($definition['type'], '{') !== FALSE) { - $entity_type_slug = substr($entity_type_id, 1, -1); - return $name != $entity_type_slug && in_array($entity_type_slug, $route->compile()->getVariables(), TRUE); - } - return $this->entityManager->hasDefinition($entity_type_id); - } - return FALSE;*/ - - return parent::applies($definition, $name, $route); // TODO: Change the autogenerated stub + return (!empty($definition['type']) && $definition['type'] == 'uuid'); } -} \ No newline at end of file +}