Пример #1
0
 /**
  * Read custom document properties
  *
  * @param \PhpOffice\PhpWord\PhpWord $phpWord
  */
 public function read(PhpWord &$phpWord)
 {
     $xmlReader = new XMLReader();
     $xmlReader->getDomFromZip($this->docFile, $this->xmlFile);
     $docProps = $phpWord->getDocumentProperties();
     $nodes = $xmlReader->getElements('*');
     if ($nodes->length > 0) {
         foreach ($nodes as $node) {
             $propertyName = $xmlReader->getAttribute('name', $node);
             $attributeNode = $xmlReader->getElement('*', $node);
             $attributeType = $attributeNode->nodeName;
             $attributeValue = $attributeNode->nodeValue;
             $attributeValue = DocumentProperties::convertProperty($attributeValue, $attributeType);
             $attributeType = DocumentProperties::convertPropertyType($attributeType);
             $docProps->setCustomProperty($propertyName, $attributeValue, $attributeType);
         }
     }
 }
Пример #2
0
 /**
  * Convert property
  */
 public function testConvertProperty()
 {
     $this->assertEquals('', DocumentProperties::convertProperty('a', 'empty'));
     $this->assertEquals(null, DocumentProperties::convertProperty('a', 'null'));
     $this->assertEquals(8, DocumentProperties::convertProperty('8', 'int'));
     $this->assertEquals(8, DocumentProperties::convertProperty('8.3', 'uint'));
     $this->assertEquals(8.300000000000001, DocumentProperties::convertProperty('8.3', 'decimal'));
     $this->assertEquals('8.3', DocumentProperties::convertProperty('8.3', 'lpstr'));
     $this->assertEquals(strtotime('10/11/2013'), DocumentProperties::convertProperty('10/11/2013', 'date'));
     $this->assertEquals(true, DocumentProperties::convertProperty('true', 'bool'));
     $this->assertEquals(false, DocumentProperties::convertProperty('1', 'bool'));
     $this->assertEquals('1', DocumentProperties::convertProperty('1', 'array'));
     $this->assertEquals('1', DocumentProperties::convertProperty('1', ''));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_INTEGER, DocumentProperties::convertPropertyType('int'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_INTEGER, DocumentProperties::convertPropertyType('uint'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_FLOAT, DocumentProperties::convertPropertyType('decimal'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_STRING, DocumentProperties::convertPropertyType('lpstr'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_DATE, DocumentProperties::convertPropertyType('date'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_BOOLEAN, DocumentProperties::convertPropertyType('bool'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_UNKNOWN, DocumentProperties::convertPropertyType('array'));
     $this->assertEquals(DocumentProperties::PROPERTY_TYPE_UNKNOWN, DocumentProperties::convertPropertyType(''));
 }