d662d2985039901ef8e64ce538cc9f458f7bb1d0
[yaffs-website] / Plugin / Deriver / TypedDataLanguageRelationshipDeriver.php
1 <?php
2
3 namespace Drupal\ctools\Plugin\Deriver;
4
5
6 use Drupal\Core\TypedData\DataDefinitionInterface;
7
8 class TypedDataLanguageRelationshipDeriver extends TypedDataRelationshipDeriver {
9
10   /**
11    * {@inheritdoc}
12    *
13    * @todo this results in awful labels like "Language Language from Content"
14    * Fix it.
15    */
16   protected $label = '@property Language from @base';
17
18   /**
19    * {@inheritdoc}
20    */
21   protected function generateDerivativeDefinition($base_plugin_definition, $data_type_id, $data_type_definition, DataDefinitionInterface $base_definition, $property_name, DataDefinitionInterface $property_definition) {
22     if (method_exists($property_definition, 'getType') && $property_definition->getType() == 'language') {
23       parent::generateDerivativeDefinition($base_plugin_definition, $data_type_id, $data_type_definition, $base_definition, $property_name, $property_definition);
24     }
25   }
26
27   /**
28    * {@inheritdoc}
29    */
30   public function getDerivativeDefinitions($base_plugin_definition) {
31     parent::getDerivativeDefinitions($base_plugin_definition);
32     // The data types will all be set to string since language extends string
33     // and the parent class finds the related primitive.
34     foreach ($this->derivatives as $plugin_id => $derivative) {
35       $this->derivatives[$plugin_id]['data_type'] = 'language';
36     }
37     return $this->derivatives;
38   }
39
40 }