Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 38 |
EntityDeriver | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
110 | |
0.00% |
0 / 38 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getDerivativeDefinition | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 7 |
|||
getDerivativeDefinitions | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 25 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\rest\Plugin\Deriver\EntityDeriver. | |
*/ | |
namespace Drupal\rest\Plugin\Deriver; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Provides a resource plugin definition for every entity type. | |
* | |
* @see \Drupal\rest\Plugin\rest\resource\EntityResource | |
*/ | |
class EntityDeriver implements ContainerDeriverInterface { | |
/** | |
* List of derivative definitions. | |
* | |
* @var array | |
*/ | |
protected $derivatives; | |
/** | |
* The entity manager. | |
* | |
* @var \Drupal\Core\Entity\EntityManagerInterface | |
*/ | |
protected $entityManager; | |
/** | |
* Constructs an EntityDeriver object. | |
* | |
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
* The entity manager. | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager) { | |
$this->entityManager = $entity_manager; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container, $base_plugin_id) { | |
return new static( | |
$container->get('entity.manager') | |
); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getDerivativeDefinition($derivative_id, $base_plugin_definition) { | |
if (!isset($this->derivatives)) { | |
$this->getDerivativeDefinitions($base_plugin_definition); | |
} | |
if (isset($this->derivatives[$derivative_id])) { | |
return $this->derivatives[$derivative_id]; | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getDerivativeDefinitions($base_plugin_definition) { | |
if (!isset($this->derivatives)) { | |
// Add in the default plugin configuration and the resource type. | |
foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) { | |
$this->derivatives[$entity_type_id] = array( | |
'id' => 'entity:' . $entity_type_id, | |
'entity_type' => $entity_type_id, | |
'serialization_class' => $entity_type->getClass(), | |
'label' => $entity_type->getLabel(), | |
); | |
$default_uris = array( | |
'canonical' => "/entity/$entity_type_id/" . '{' . $entity_type_id . '}', | |
'https://www.drupal.org/link-relations/create' => "/entity/$entity_type_id", | |
); | |
foreach ($default_uris as $link_relation => $default_uri) { | |
// Check if there are link templates defined for the entity type and | |
// use the path from the route instead of the default. | |
if ($link_template = $entity_type->getLinkTemplate($link_relation)) { | |
$this->derivatives[$entity_type_id]['uri_paths'][$link_relation] = $link_template; | |
} | |
else { | |
$this->derivatives[$entity_type_id]['uri_paths'][$link_relation] = $default_uri; | |
} | |
} | |
$this->derivatives[$entity_type_id] += $base_plugin_definition; | |
} | |
} | |
return $this->derivatives; | |
} | |
} |