Backup of db before drupal security update
[yaffs-website] / web / core / lib / Drupal / Core / TypedData / Plugin / DataType / Language.php
1 <?php
2
3 namespace Drupal\Core\TypedData\Plugin\DataType;
4
5 use Drupal\Core\TypedData\TypedData;
6
7 /**
8  * Defines the 'language' data type.
9  *
10  * The plain value of a language is the language object, i.e. an instance of
11  * \Drupal\Core\Language\Language. For setting the value the language object or
12  * the language code as string may be passed.
13  *
14  * @DataType(
15  *   id = "language",
16  *   label = @Translation("Language"),
17  *   description = @Translation("A language object.")
18  * )
19  */
20 class Language extends TypedData {
21
22   /**
23    * The id of the language.
24    *
25    * @var string
26    */
27   protected $id;
28
29   /**
30    * @var \Drupal\Core\Language
31    */
32   protected $language;
33
34   /**
35    * Overrides TypedData::getValue().
36    *
37    * @return \Drupal\Core\Language\LanguageInterface|null
38    */
39   public function getValue() {
40     if (!isset($this->language) && $this->id) {
41       $this->language = \Drupal::languageManager()->getLanguage($this->id);
42     }
43     return $this->language;
44   }
45
46   /**
47    * Overrides TypedData::setValue().
48    *
49    * Both the langcode and the language object may be passed as value.
50    */
51   public function setValue($value, $notify = TRUE) {
52     // Support passing language objects.
53     if (is_object($value)) {
54       $this->id = $value->getId();
55       $this->language = $value;
56     }
57     elseif (isset($value) && !is_scalar($value)) {
58       throw new \InvalidArgumentException('Value is no valid langcode or language object.');
59     }
60     else {
61       $this->id = $value;
62       $this->language = NULL;
63     }
64     // Notify the parent of any changes.
65     if ($notify && isset($this->parent)) {
66       $this->parent->onChange($this->name);
67     }
68   }
69
70   /**
71    * {@inheritdoc}
72    */
73   public function getString() {
74     $language = $this->getValue();
75     return $language ? $language->getName() : '';
76   }
77
78   /**
79    * {@inheritdoc}
80    */
81   public function id() {
82     if (isset($this->id)) {
83       return $this->id;
84     }
85     elseif (isset($this->language)) {
86       return $this->language->getId();
87     }
88   }
89
90 }