Differences Between: [Versions 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 310 and 403]
1 <?php 2 3 namespace PhpOffice\PhpSpreadsheet\Reader\Ods; 4 5 use PhpOffice\PhpSpreadsheet\Document\Properties as DocumentProperties; 6 use PhpOffice\PhpSpreadsheet\Spreadsheet; 7 8 class Properties 9 { 10 private $spreadsheet; 11 12 public function __construct(Spreadsheet $spreadsheet) 13 { 14 $this->spreadsheet = $spreadsheet; 15 } 16 17 public function load(\SimpleXMLElement $xml, $namespacesMeta) 18 { 19 $docProps = $this->spreadsheet->getProperties(); 20 $officeProperty = $xml->children($namespacesMeta['office']); 21 foreach ($officeProperty as $officePropertyData) { 22 // @var \SimpleXMLElement $officePropertyData 23 if (isset($namespacesMeta['dc'])) { 24 $officePropertiesDC = $officePropertyData->children($namespacesMeta['dc']); 25 $this->setCoreProperties($docProps, $officePropertiesDC); 26 } 27 28 $officePropertyMeta = (object) []; 29 if (isset($namespacesMeta['dc'])) { 30 $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']); 31 } 32 foreach ($officePropertyMeta as $propertyName => $propertyValue) { 33 $this->setMetaProperties($namespacesMeta, $propertyValue, $propertyName, $docProps); 34 } 35 } 36 } 37 38 private function setCoreProperties(DocumentProperties $docProps, \SimpleXMLElement $officePropertyDC) 39 { 40 foreach ($officePropertyDC as $propertyName => $propertyValue) { 41 $propertyValue = (string) $propertyValue; 42 switch ($propertyName) { 43 case 'title': 44 $docProps->setTitle($propertyValue); 45 46 break; 47 case 'subject': 48 $docProps->setSubject($propertyValue); 49 50 break; 51 case 'creator': 52 $docProps->setCreator($propertyValue); 53 $docProps->setLastModifiedBy($propertyValue); 54 55 break; 56 case 'creation-date': 57 $creationDate = strtotime($propertyValue); 58 $docProps->setCreated($creationDate); 59 $docProps->setModified($creationDate); 60 61 break; 62 case 'keyword': 63 $docProps->setKeywords($propertyValue); 64 65 break; 66 case 'description': 67 $docProps->setDescription($propertyValue); 68 69 break; 70 } 71 } 72 } 73 74 private function setMetaProperties( 75 $namespacesMeta, 76 \SimpleXMLElement $propertyValue, 77 $propertyName, 78 DocumentProperties $docProps 79 ) { 80 $propertyValueAttributes = $propertyValue->attributes($namespacesMeta['meta']); 81 $propertyValue = (string) $propertyValue; 82 switch ($propertyName) { 83 case 'initial-creator': 84 $docProps->setCreator($propertyValue); 85 86 break; 87 case 'keyword': 88 $docProps->setKeywords($propertyValue); 89 90 break; 91 case 'creation-date': 92 $creationDate = strtotime($propertyValue); 93 $docProps->setCreated($creationDate); 94 95 break; 96 case 'user-defined': 97 $this->setUserDefinedProperty($propertyValueAttributes, $propertyValue, $docProps); 98 99 break; 100 } 101 } 102 103 private function setUserDefinedProperty($propertyValueAttributes, $propertyValue, DocumentProperties $docProps) 104 { 105 $propertyValueName = ''; 106 $propertyValueType = DocumentProperties::PROPERTY_TYPE_STRING; 107 foreach ($propertyValueAttributes as $key => $value) { 108 if ($key == 'name') { 109 $propertyValueName = (string) $value; 110 } elseif ($key == 'value-type') { 111 switch ($value) { 112 case 'date': 113 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'date'); 114 $propertyValueType = DocumentProperties::PROPERTY_TYPE_DATE; 115 116 break; 117 case 'boolean': 118 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'bool'); 119 $propertyValueType = DocumentProperties::PROPERTY_TYPE_BOOLEAN; 120 121 break; 122 case 'float': 123 $propertyValue = DocumentProperties::convertProperty($propertyValue, 'r4'); 124 $propertyValueType = DocumentProperties::PROPERTY_TYPE_FLOAT; 125 126 break; 127 default: 128 $propertyValueType = DocumentProperties::PROPERTY_TYPE_STRING; 129 } 130 } 131 } 132 133 $docProps->setCustomProperty($propertyValueName, $propertyValue, $propertyValueType); 134 } 135 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body