1<?php 2 3namespace dokuwiki\plugin\totext\Extractor; 4 5/** 6 * Shared metadata reader for the OpenDocument family (ODT/ODS/ODP). 7 * 8 * All three store their document metadata in a single meta.xml part inside 9 * <office:meta>. The element local name => canonical key map is declared here 10 * once; subclasses only implement extractText(). The meta:keyword element may 11 * appear multiple times, so Keywords accumulates. 12 */ 13abstract class AbstractOdfExtractor extends AbstractZipXmlExtractor 14{ 15 /** 16 * meta.xml element local name => canonical metadata key. 17 * 18 * @var array<string, string> 19 */ 20 protected const META_MAP = [ 21 'title' => 'Title', 22 'creator' => 'Author', 23 'subject' => 'Subject', 24 'keyword' => 'Keywords', 25 'description' => 'Description', 26 'creation-date' => 'Created', 27 'date' => 'Modified', 28 'language' => 'Language', 29 'generator' => 'Producer', 30 ]; 31 32 /** @inheritDoc */ 33 protected function extractMetadata(): array 34 { 35 $meta = $this->readPart('meta.xml'); 36 if ($meta === null) { 37 return []; 38 } 39 return $this->mapMetadataFromXml($meta, self::META_MAP, ['Keywords']); 40 } 41} 42