Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / file / src / Plugin / Field / FieldType / FileUriItem.php
diff --git a/web/core/modules/file/src/Plugin/Field/FieldType/FileUriItem.php b/web/core/modules/file/src/Plugin/Field/FieldType/FileUriItem.php
new file mode 100644 (file)
index 0000000..33bc15e
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\file\Plugin\Field\FieldType;
+
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\Field\Plugin\Field\FieldType\UriItem;
+use Drupal\Core\TypedData\DataDefinition;
+use Drupal\file\ComputedFileUrl;
+
+/**
+ * File-specific plugin implementation of a URI item to provide a full URL.
+ *
+ * @FieldType(
+ *   id = "file_uri",
+ *   label = @Translation("File URI"),
+ *   description = @Translation("An entity field containing a file URI, and a computed root-relative file URL."),
+ *   no_ui = TRUE,
+ *   default_formatter = "file_uri",
+ *   default_widget = "uri",
+ * )
+ */
+class FileUriItem extends UriItem {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
+    $properties = parent::propertyDefinitions($field_definition);
+
+    $properties['url'] = DataDefinition::create('string')
+      ->setLabel(t('Root-relative file URL'))
+      ->setComputed(TRUE)
+      ->setInternal(FALSE)
+      ->setClass(ComputedFileUrl::class);
+
+    return $properties;
+  }
+
+}