From 72fca30e8cd553a33185cca9b91e680cef7df698 Mon Sep 17 00:00:00 2001 From: Gabriel Bull Date: Tue, 11 Mar 2014 14:19:33 -0400 Subject: [PATCH] Fixed bug with footer preserve text --- Classes/PHPWord/Writer/Word2007/Base.php | 3 +++ Tests/PHPWord/Writer/Word2007/BaseTest.php | 17 ++++++++++++++++- Tests/_inc/TestHelperDOCX.php | 14 +++++++------- composer.json | 2 +- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Classes/PHPWord/Writer/Word2007/Base.php b/Classes/PHPWord/Writer/Word2007/Base.php index 77f4d0d7..fcbf71d8 100755 --- a/Classes/PHPWord/Writer/Word2007/Base.php +++ b/Classes/PHPWord/Writer/Word2007/Base.php @@ -285,6 +285,9 @@ class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false; $arrText = $textrun->getText(); + if (!is_array($arrText)) { + $arrText = array($arrText); + } $objWriter->startElement('w:p'); diff --git a/Tests/PHPWord/Writer/Word2007/BaseTest.php b/Tests/PHPWord/Writer/Word2007/BaseTest.php index 534dd2a6..cb8fa578 100644 --- a/Tests/PHPWord/Writer/Word2007/BaseTest.php +++ b/Tests/PHPWord/Writer/Word2007/BaseTest.php @@ -108,4 +108,19 @@ class BaseTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $element->getAttribute('w:val')); } } -} + + public function testWritePreserveText() + { + $PHPWord = new PHPWord(); + $section = $PHPWord->createSection(); + $footer = $section->createFooter(); + + $footer->addPreserveText('{PAGE}'); + + $doc = TestHelperDOCX::getDocument($PHPWord); + $preserve = $doc->getElement("w:p/w:r[2]/w:instrText", 'word/footer1.xml'); + + $this->assertEquals('PAGE', $preserve->nodeValue); + $this->assertEquals('preserve', $preserve->getAttribute('xml:space')); + } +} \ No newline at end of file diff --git a/Tests/_inc/TestHelperDOCX.php b/Tests/_inc/TestHelperDOCX.php index 5c603b0b..965835d0 100644 --- a/Tests/_inc/TestHelperDOCX.php +++ b/Tests/_inc/TestHelperDOCX.php @@ -15,8 +15,8 @@ class TestHelperDOCX public static function getDocument(PHPWord $PHPWord) { self::$file = tempnam(sys_get_temp_dir(), 'PHPWord'); - if(!is_dir(sys_get_temp_dir().'/PHPWord_Unit_Test/')){ - mkdir(sys_get_temp_dir().'/PHPWord_Unit_Test/'); + if (!is_dir(sys_get_temp_dir() . '/PHPWord_Unit_Test/')) { + mkdir(sys_get_temp_dir() . '/PHPWord_Unit_Test/'); } $objWriter = \PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); @@ -29,16 +29,16 @@ class TestHelperDOCX $zip->close(); } - return new Xml_Document(sys_get_temp_dir().'/PHPWord_Unit_Test/'); + return new Xml_Document(sys_get_temp_dir() . '/PHPWord_Unit_Test/'); } public static function clear() { - if(file_exists(self::$file)){ - unlink(self::$file); + if (file_exists(self::$file)) { + unlink(self::$file); } - if(is_dir(sys_get_temp_dir().'/PHPWord_Unit_Test/')){ - self::deleteDir(sys_get_temp_dir().'/PHPWord_Unit_Test/'); + if (is_dir(sys_get_temp_dir() . '/PHPWord_Unit_Test/')) { + self::deleteDir(sys_get_temp_dir() . '/PHPWord_Unit_Test/'); } } diff --git a/composer.json b/composer.json index 8a73f471..7aaeb411 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "ext-xml": "*" }, "require-dev": { - "phpunit/phpunit": "3.7.28" + "phpunit/phpunit": "3.7.*" }, "recommend": { "ext-zip": "*",