diff --git a/library/Opus/Model/Field.php b/library/Opus/Model/Field.php index 49d7e702..96f2cd59 100644 --- a/library/Opus/Model/Field.php +++ b/library/Opus/Model/Field.php @@ -965,10 +965,7 @@ public function setType($type) $this->type = $type; } - /** - * @return string|null - */ - public function getType() + public function getType(): string|null { return $this->type; } diff --git a/library/Opus/Model/Xml/AbstractVersion.php b/library/Opus/Model/Xml/AbstractVersion.php index b928f231..1c49afa5 100644 --- a/library/Opus/Model/Xml/AbstractVersion.php +++ b/library/Opus/Model/Xml/AbstractVersion.php @@ -394,6 +394,9 @@ public function getFieldValues($field) if ($fieldValues instanceof DateTimeZone) { $fieldValues = $fieldValues->getName(); } + if ($field->getType() === 'bool') { + $fieldValues = $fieldValues ? '1' : '0'; + } return trim($fieldValues ?? ''); } diff --git a/tests/Opus/Model/Xml/Version1Test.php b/tests/Opus/Model/Xml/Version1Test.php index 493026b9..6cafc3a8 100644 --- a/tests/Opus/Model/Xml/Version1Test.php +++ b/tests/Opus/Model/Xml/Version1Test.php @@ -949,8 +949,6 @@ public function testDateXml() $xml->setModel($document); $dom = $xml->getDomDocument(); - $output = $dom->saveXml(); - $elements = $dom->getElementsByTagName('CompletedDate'); $this->assertCount(1, $elements); @@ -971,4 +969,18 @@ public function testDateXml() $this->assertTrue($completedDate->hasAttribute('Timezone')); $this->assertTrue($completedDate->hasAttribute('UnixTimestamp')); } + + public function testOutputBelongsToBibliographyFalseAsZero() + { + $doc = Document::new(); + $doc->setBelongsToBibliography(false); + + $xml = new Xml(); + $xml->setStrategy(new Version1()); + $xml->setModel($doc); + $dom = $xml->getDomDocument(); + + $docElement = $dom->getElementsByTagName('Opus_Document')->item(0); + $this->assertEquals('0', $docElement->attributes->getNamedItem('BelongsToBibliography')->nodeValue); + } }