X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ffile%2Fsrc%2FPlugin%2FField%2FFieldFormatter%2FFileExtensionFormatter.php;fp=web%2Fcore%2Fmodules%2Ffile%2Fsrc%2FPlugin%2FField%2FFieldFormatter%2FFileExtensionFormatter.php;h=afe1b7efc0a7b226c1b22c7dd9e49733039213e1;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/file/src/Plugin/Field/FieldFormatter/FileExtensionFormatter.php b/web/core/modules/file/src/Plugin/Field/FieldFormatter/FileExtensionFormatter.php new file mode 100644 index 000000000..afe1b7efc --- /dev/null +++ b/web/core/modules/file/src/Plugin/Field/FieldFormatter/FileExtensionFormatter.php @@ -0,0 +1,75 @@ + 'checkbox', + '#title' => $this->t('Include tar in extension'), + '#description' => $this->t("If the part of the filename just before the extension is '.tar', include this in the extension output."), + '#default_value' => $this->getSetting('extension_detect_tar'), + ]; + return $form; + } + + /** + * {@inheritdoc} + */ + protected function viewValue(FieldItemInterface $item) { + $filename = $item->value; + if (!$this->getSetting('extension_detect_tar')) { + return pathinfo($filename, PATHINFO_EXTENSION); + } + else { + $file_parts = explode('.', basename($filename)); + if (count($file_parts) > 1) { + $extension = array_pop($file_parts); + $last_part_in_name = array_pop($file_parts); + if ($last_part_in_name === 'tar') { + $extension = 'tar.' . $extension; + } + return $extension; + } + } + } + + /** + * {@inheritdoc} + */ + public static function isApplicable(FieldDefinitionInterface $field_definition) { + // Just show this file extension formatter on the filename field. + return parent::isApplicable($field_definition) && $field_definition->getName() === 'filename'; + } + +}