From c7e4ed0c182ec0470701cda65e9db0e894063dca Mon Sep 17 00:00:00 2001 From: Ivan Lanin Date: Sun, 11 May 2014 19:41:48 +0700 Subject: [PATCH] Type check in element writers --- src/PhpWord/Writer/HTML/Element/Container.php | 3 ++ src/PhpWord/Writer/HTML/Element/Footnote.php | 4 ++ src/PhpWord/Writer/HTML/Element/Image.php | 4 ++ src/PhpWord/Writer/HTML/Element/Link.php | 4 ++ src/PhpWord/Writer/HTML/Element/ListItem.php | 4 ++ src/PhpWord/Writer/HTML/Element/Table.php | 4 ++ src/PhpWord/Writer/HTML/Element/Title.php | 4 ++ src/PhpWord/Writer/ODText/Element/Image.php | 3 ++ src/PhpWord/Writer/ODText/Element/Link.php | 3 ++ src/PhpWord/Writer/ODText/Element/Table.php | 3 ++ src/PhpWord/Writer/ODText/Element/Text.php | 3 ++ src/PhpWord/Writer/RTF/Element/Container.php | 3 ++ src/PhpWord/Writer/RTF/Element/Text.php | 21 +++++---- .../Writer/Word2007/Element/CheckBox.php | 3 ++ .../Writer/Word2007/Element/Container.php | 3 ++ .../Writer/Word2007/Element/Footnote.php | 3 ++ src/PhpWord/Writer/Word2007/Element/Image.php | 19 ++++---- src/PhpWord/Writer/Word2007/Element/Link.php | 3 ++ .../Writer/Word2007/Element/ListItem.php | 3 ++ .../Writer/Word2007/Element/ListItemRun.php | 3 ++ .../Writer/Word2007/Element/Object.php | 3 ++ .../Writer/Word2007/Element/PreserveText.php | 3 ++ src/PhpWord/Writer/Word2007/Element/TOC.php | 3 ++ src/PhpWord/Writer/Word2007/Element/Table.php | 16 +++---- src/PhpWord/Writer/Word2007/Element/Text.php | 3 ++ .../Writer/Word2007/Element/TextBox.php | 3 ++ .../Writer/Word2007/Element/TextBreak.php | 3 ++ src/PhpWord/Writer/Word2007/Element/Title.php | 3 ++ .../PhpWord/Tests/Writer/HTML/ElementTest.php | 41 +++++++++++++++++ .../Tests/Writer/ODText/ElementTest.php | 42 +++++++++++++++++ .../PhpWord/Tests/Writer/RTF/ElementTest.php | 41 +++++++++++++++++ .../Tests/Writer/Word2007/ElementTest.php | 45 +++++++++++++++++++ 32 files changed, 281 insertions(+), 25 deletions(-) create mode 100644 tests/PhpWord/Tests/Writer/HTML/ElementTest.php create mode 100644 tests/PhpWord/Tests/Writer/ODText/ElementTest.php create mode 100644 tests/PhpWord/Tests/Writer/RTF/ElementTest.php create mode 100644 tests/PhpWord/Tests/Writer/Word2007/ElementTest.php diff --git a/src/PhpWord/Writer/HTML/Element/Container.php b/src/PhpWord/Writer/HTML/Element/Container.php index 6249426a..c55a7921 100644 --- a/src/PhpWord/Writer/HTML/Element/Container.php +++ b/src/PhpWord/Writer/HTML/Element/Container.php @@ -32,6 +32,9 @@ class Container extends AbstractElement public function write() { $container = $this->element; + if (!$this->element instanceof \PhpOffice\PhpWord\Element\AbstractContainer) { + return; + } $containerClass = substr(get_class($container), strrpos(get_class($container), '\\') + 1); $withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote')) ? true : false; $content = ''; diff --git a/src/PhpWord/Writer/HTML/Element/Footnote.php b/src/PhpWord/Writer/HTML/Element/Footnote.php index cd1baacb..30398b17 100644 --- a/src/PhpWord/Writer/HTML/Element/Footnote.php +++ b/src/PhpWord/Writer/HTML/Element/Footnote.php @@ -38,6 +38,10 @@ class Footnote extends AbstractElement */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Footnote) { + return; + } + $noteId = count($this->parentWriter->getNotes()) + 1; $noteMark = $this->noteType . '-' . $this->element->getRelationId(); $content = "{$noteId}"; diff --git a/src/PhpWord/Writer/HTML/Element/Image.php b/src/PhpWord/Writer/HTML/Element/Image.php index 2ae87865..5c2edbb2 100644 --- a/src/PhpWord/Writer/HTML/Element/Image.php +++ b/src/PhpWord/Writer/HTML/Element/Image.php @@ -34,6 +34,10 @@ class Image extends Text */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Image) { + return; + } + $content = ''; if (!$this->parentWriter->isPdf()) { $imageData = $this->getBase64ImageData($this->element); diff --git a/src/PhpWord/Writer/HTML/Element/Link.php b/src/PhpWord/Writer/HTML/Element/Link.php index 6f1977f8..820a1526 100644 --- a/src/PhpWord/Writer/HTML/Element/Link.php +++ b/src/PhpWord/Writer/HTML/Element/Link.php @@ -31,6 +31,10 @@ class Link extends Text */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } + $content = ''; $content .= $this->writeOpening(); $content .= "element->getTarget()}\">{$this->element->getText()}"; diff --git a/src/PhpWord/Writer/HTML/Element/ListItem.php b/src/PhpWord/Writer/HTML/Element/ListItem.php index 722d920a..8e302b03 100644 --- a/src/PhpWord/Writer/HTML/Element/ListItem.php +++ b/src/PhpWord/Writer/HTML/Element/ListItem.php @@ -31,6 +31,10 @@ class ListItem extends AbstractElement */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\ListItem) { + return; + } + $text = htmlspecialchars($this->element->getTextObject()->getText()); $content = '

' . $text . '

' . PHP_EOL; diff --git a/src/PhpWord/Writer/HTML/Element/Table.php b/src/PhpWord/Writer/HTML/Element/Table.php index a92deea6..bd7795ef 100644 --- a/src/PhpWord/Writer/HTML/Element/Table.php +++ b/src/PhpWord/Writer/HTML/Element/Table.php @@ -31,6 +31,10 @@ class Table extends AbstractElement */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } + $content = ''; $rows = $this->element->getRows(); $rowCount = count($rows); diff --git a/src/PhpWord/Writer/HTML/Element/Title.php b/src/PhpWord/Writer/HTML/Element/Title.php index 2a33a282..64d47ec2 100644 --- a/src/PhpWord/Writer/HTML/Element/Title.php +++ b/src/PhpWord/Writer/HTML/Element/Title.php @@ -31,6 +31,10 @@ class Title extends AbstractElement */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Title) { + return; + } + $tag = 'h' . $this->element->getDepth(); $text = htmlspecialchars($this->element->getText()); $content = "<{$tag}>{$text}" . PHP_EOL; diff --git a/src/PhpWord/Writer/ODText/Element/Image.php b/src/PhpWord/Writer/ODText/Element/Image.php index 909a9aed..3229b59c 100644 --- a/src/PhpWord/Writer/ODText/Element/Image.php +++ b/src/PhpWord/Writer/ODText/Element/Image.php @@ -33,6 +33,9 @@ class Image extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Image) { + return; + } $mediaIndex = $element->getMediaIndex(); $target = 'Pictures/' . $element->getTarget(); diff --git a/src/PhpWord/Writer/ODText/Element/Link.php b/src/PhpWord/Writer/ODText/Element/Link.php index 1ccac435..79d3aa24 100644 --- a/src/PhpWord/Writer/ODText/Element/Link.php +++ b/src/PhpWord/Writer/ODText/Element/Link.php @@ -31,6 +31,9 @@ class Link extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } if (!$this->withoutP) { $xmlWriter->startElement('text:p'); // text:p diff --git a/src/PhpWord/Writer/ODText/Element/Table.php b/src/PhpWord/Writer/ODText/Element/Table.php index 411f1f38..19e5b408 100644 --- a/src/PhpWord/Writer/ODText/Element/Table.php +++ b/src/PhpWord/Writer/ODText/Element/Table.php @@ -31,6 +31,9 @@ class Table extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } $rows = $element->getRows(); $rowCount = count($rows); $colCount = $element->countColumns(); diff --git a/src/PhpWord/Writer/ODText/Element/Text.php b/src/PhpWord/Writer/ODText/Element/Text.php index e960dea8..6baf3200 100644 --- a/src/PhpWord/Writer/ODText/Element/Text.php +++ b/src/PhpWord/Writer/ODText/Element/Text.php @@ -31,6 +31,9 @@ class Text extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } $fontStyle = $element->getFontStyle(); $paragraphStyle = $element->getParagraphStyle(); diff --git a/src/PhpWord/Writer/RTF/Element/Container.php b/src/PhpWord/Writer/RTF/Element/Container.php index 57127eb8..4ce4334c 100644 --- a/src/PhpWord/Writer/RTF/Element/Container.php +++ b/src/PhpWord/Writer/RTF/Element/Container.php @@ -32,6 +32,9 @@ class Container extends \PhpOffice\PhpWord\Writer\HTML\Element\Container public function write() { $container = $this->element; + if (!$this->element instanceof \PhpOffice\PhpWord\Element\AbstractContainer) { + return; + } $containerClass = substr(get_class($container), strrpos(get_class($container), '\\') + 1); $withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote')) ? true : false; $content = ''; diff --git a/src/PhpWord/Writer/RTF/Element/Text.php b/src/PhpWord/Writer/RTF/Element/Text.php index a52b2071..701a5be1 100644 --- a/src/PhpWord/Writer/RTF/Element/Text.php +++ b/src/PhpWord/Writer/RTF/Element/Text.php @@ -17,6 +17,7 @@ namespace PhpOffice\PhpWord\Writer\RTF\Element; +use PhpOffice\PhpWord\Element\Text as TextElement; use PhpOffice\PhpWord\Style; use PhpOffice\PhpWord\Style\Font as FontStyle; use PhpOffice\PhpWord\Writer\RTF\Style\Font as FontStyleWriter; @@ -34,10 +35,14 @@ class Text extends AbstractElement */ public function write() { - $fontStyle = $this->getFontStyle(); + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } + + $fontStyle = $this->getFontStyle($this->element); $content = ''; - $content .= $this->writeParagraphStyle(); + $content .= $this->writeParagraphStyle($this->element); $content .= $this->writeFontStyleBegin($fontStyle); if ($this->parentWriter->getLastParagraphStyle() != '' || $fontStyle) { $content .= ' '; @@ -57,22 +62,22 @@ class Text extends AbstractElement * * @return string */ - private function writeParagraphStyle() + private function writeParagraphStyle(TextElement $element) { $content = ''; // Get paragraph style - $paragraphStyle = $this->element->getParagraphStyle(); + $paragraphStyle = $element->getParagraphStyle(); if (is_string($paragraphStyle)) { $paragraphStyle = Style::getStyle($paragraphStyle); } // Write style when applicable if ($paragraphStyle && !$this->withoutP) { - if ($this->parentWriter->getLastParagraphStyle() != $this->element->getParagraphStyle()) { + if ($this->parentWriter->getLastParagraphStyle() != $element->getParagraphStyle()) { $styleWriter = new ParagraphStyleWriter($paragraphStyle); $content = $styleWriter->write(); - $this->parentWriter->setLastParagraphStyle($this->element->getParagraphStyle()); + $this->parentWriter->setLastParagraphStyle($element->getParagraphStyle()); } else { $this->parentWriter->setLastParagraphStyle(); } @@ -139,9 +144,9 @@ class Text extends AbstractElement * * @return \PhpOffice\PhpWord\Style\Font */ - private function getFontStyle() + private function getFontStyle(TextElement $element) { - $fontStyle = $this->element->getFontStyle(); + $fontStyle = $element->getFontStyle(); if (is_string($fontStyle)) { $fontStyle = Style::getStyle($fontStyle); } diff --git a/src/PhpWord/Writer/Word2007/Element/CheckBox.php b/src/PhpWord/Writer/Word2007/Element/CheckBox.php index 96e210b5..1d7811cd 100644 --- a/src/PhpWord/Writer/Word2007/Element/CheckBox.php +++ b/src/PhpWord/Writer/Word2007/Element/CheckBox.php @@ -33,6 +33,9 @@ class CheckBox extends Text { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\CheckBox) { + return; + } $name = htmlspecialchars($element->getName()); $name = String::controlCharacterPHP2OOXML($name); diff --git a/src/PhpWord/Writer/Word2007/Element/Container.php b/src/PhpWord/Writer/Word2007/Element/Container.php index 150cb324..57a27208 100644 --- a/src/PhpWord/Writer/Word2007/Element/Container.php +++ b/src/PhpWord/Writer/Word2007/Element/Container.php @@ -40,6 +40,9 @@ class Container extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $container = $this->getElement(); + if (!$container instanceof \PhpOffice\PhpWord\Element\AbstractContainer) { + return; + } $containerClass = substr(get_class($container), strrpos(get_class($container), '\\') + 1); $withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote', 'ListItemRun')) ? true : false; diff --git a/src/PhpWord/Writer/Word2007/Element/Footnote.php b/src/PhpWord/Writer/Word2007/Element/Footnote.php index 646f70ed..d33a0dc9 100644 --- a/src/PhpWord/Writer/Word2007/Element/Footnote.php +++ b/src/PhpWord/Writer/Word2007/Element/Footnote.php @@ -38,6 +38,9 @@ class Footnote extends Text { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Footnote) { + return; + } $this->writeOpeningWP(); diff --git a/src/PhpWord/Writer/Word2007/Element/Image.php b/src/PhpWord/Writer/Word2007/Element/Image.php index c7bd8d7d..1b4284d2 100644 --- a/src/PhpWord/Writer/Word2007/Element/Image.php +++ b/src/PhpWord/Writer/Word2007/Element/Image.php @@ -17,6 +17,8 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Element; +use PhpOffice\PhpWord\Element\Image as ImageElement; +use PhpOffice\PhpWord\Shared\XMLWriter; use PhpOffice\PhpWord\Writer\Word2007\Style\Image as ImageStyleWriter; /** @@ -31,22 +33,24 @@ class Image extends AbstractElement */ public function write() { + $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Image) { + return; + } if ($element->isWatermark()) { - $this->writeWatermark(); + $this->writeWatermark($xmlWriter, $element); } else { - $this->writeImage(); + $this->writeImage($xmlWriter, $element); } } /** * Write image element */ - private function writeImage() + private function writeImage(XMLWriter $xmlWriter, ImageElement $element) { - $xmlWriter = $this->getXmlWriter(); - $element = $this->getElement(); $rId = $element->getRelationId() + ($element->isInSection() ? 6 : 0); $style = $element->getStyle(); @@ -84,11 +88,8 @@ class Image extends AbstractElement /** * Write watermark element */ - private function writeWatermark() + private function writeWatermark(XMLWriter $xmlWriter, ImageElement $element) { - $xmlWriter = $this->getXmlWriter(); - $element = $this->getElement(); - $rId = $element->getRelationId(); $style = $element->getStyle(); $style->setPositioning('absolute'); diff --git a/src/PhpWord/Writer/Word2007/Element/Link.php b/src/PhpWord/Writer/Word2007/Element/Link.php index 517e276d..3b595b4c 100644 --- a/src/PhpWord/Writer/Word2007/Element/Link.php +++ b/src/PhpWord/Writer/Word2007/Element/Link.php @@ -31,6 +31,9 @@ class Link extends Text { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } $rId = $element->getRelationId() + ($element->isInSection() ? 6 : 0); diff --git a/src/PhpWord/Writer/Word2007/Element/ListItem.php b/src/PhpWord/Writer/Word2007/Element/ListItem.php index e625114c..7b86efae 100644 --- a/src/PhpWord/Writer/Word2007/Element/ListItem.php +++ b/src/PhpWord/Writer/Word2007/Element/ListItem.php @@ -33,6 +33,9 @@ class ListItem extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\ListItem) { + return; + } $textObject = $element->getTextObject(); diff --git a/src/PhpWord/Writer/Word2007/Element/ListItemRun.php b/src/PhpWord/Writer/Word2007/Element/ListItemRun.php index 4431ffe6..747c2625 100644 --- a/src/PhpWord/Writer/Word2007/Element/ListItemRun.php +++ b/src/PhpWord/Writer/Word2007/Element/ListItemRun.php @@ -33,6 +33,9 @@ class ListItemRun extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\ListItemRun) { + return; + } $xmlWriter->startElement('w:p'); diff --git a/src/PhpWord/Writer/Word2007/Element/Object.php b/src/PhpWord/Writer/Word2007/Element/Object.php index 5f56a704..07580a42 100644 --- a/src/PhpWord/Writer/Word2007/Element/Object.php +++ b/src/PhpWord/Writer/Word2007/Element/Object.php @@ -31,6 +31,9 @@ class Object extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Object) { + return; + } $rIdObject = $element->getRelationId() + ($element->isInSection() ? 6 : 0); $rIdImage = $element->getImageRelationId() + ($element->isInSection() ? 6 : 0); diff --git a/src/PhpWord/Writer/Word2007/Element/PreserveText.php b/src/PhpWord/Writer/Word2007/Element/PreserveText.php index b3b00d16..97693d9b 100644 --- a/src/PhpWord/Writer/Word2007/Element/PreserveText.php +++ b/src/PhpWord/Writer/Word2007/Element/PreserveText.php @@ -33,6 +33,9 @@ class PreserveText extends Text { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\PreserveText) { + return; + } $texts = $element->getText(); if (!is_array($texts)) { diff --git a/src/PhpWord/Writer/Word2007/Element/TOC.php b/src/PhpWord/Writer/Word2007/Element/TOC.php index 28d7bc31..98486b01 100644 --- a/src/PhpWord/Writer/Word2007/Element/TOC.php +++ b/src/PhpWord/Writer/Word2007/Element/TOC.php @@ -36,6 +36,9 @@ class TOC extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\TOC) { + return; + } $titles = $element->getTitles(); $writeFieldMark = true; diff --git a/src/PhpWord/Writer/Word2007/Element/Table.php b/src/PhpWord/Writer/Word2007/Element/Table.php index 5c82114a..4ce97d10 100644 --- a/src/PhpWord/Writer/Word2007/Element/Table.php +++ b/src/PhpWord/Writer/Word2007/Element/Table.php @@ -19,6 +19,7 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Element; use PhpOffice\PhpWord\Element\Cell as CellElement; use PhpOffice\PhpWord\Element\Row as RowElement; +use PhpOffice\PhpWord\Shared\XMLWriter; use PhpOffice\PhpWord\Style\Cell as CellStyle; use PhpOffice\PhpWord\Style\Table as TableStyle; use PhpOffice\PhpWord\Writer\Word2007\Style\Cell as CellStyleWriter; @@ -38,6 +39,9 @@ class Table extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } $rows = $element->getRows(); $rowCount = count($rows); @@ -94,7 +98,7 @@ class Table extends AbstractElement // Table rows for ($i = 0; $i < $rowCount; $i++) { - $this->writeRow($rows[$i]); + $this->writeRow($xmlWriter, $rows[$i]); } $xmlWriter->endElement(); } @@ -103,10 +107,8 @@ class Table extends AbstractElement /** * Write row */ - private function writeRow(RowElement $row) + private function writeRow(XMLWriter $xmlWriter, RowElement $row) { - $xmlWriter = $this->getXmlWriter(); - $height = $row->getHeight(); $rowStyle = $row->getStyle(); @@ -132,7 +134,7 @@ class Table extends AbstractElement $xmlWriter->endElement(); } foreach ($row->getCells() as $cell) { - $this->writeCell($cell); + $this->writeCell($xmlWriter, $cell); } $xmlWriter->endElement(); // w:tr } @@ -140,10 +142,8 @@ class Table extends AbstractElement /** * Write cell */ - private function writeCell(CellElement $cell) + private function writeCell(XMLWriter $xmlWriter, CellElement $cell) { - $xmlWriter = $this->getXmlWriter(); - $cellStyle = $cell->getStyle(); $xmlWriter->startElement('w:tc'); diff --git a/src/PhpWord/Writer/Word2007/Element/Text.php b/src/PhpWord/Writer/Word2007/Element/Text.php index d6402dbf..1385e6e6 100644 --- a/src/PhpWord/Writer/Word2007/Element/Text.php +++ b/src/PhpWord/Writer/Word2007/Element/Text.php @@ -35,6 +35,9 @@ class Text extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } $text = htmlspecialchars($element->getText()); $text = String::controlCharacterPHP2OOXML($text); diff --git a/src/PhpWord/Writer/Word2007/Element/TextBox.php b/src/PhpWord/Writer/Word2007/Element/TextBox.php index 6b63c31a..bb1629bc 100644 --- a/src/PhpWord/Writer/Word2007/Element/TextBox.php +++ b/src/PhpWord/Writer/Word2007/Element/TextBox.php @@ -33,6 +33,9 @@ class TextBox extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\TextBox) { + return; + } $style = $element->getStyle(); $styleWriter = new TextBoxStyleWriter($xmlWriter, $style); diff --git a/src/PhpWord/Writer/Word2007/Element/TextBreak.php b/src/PhpWord/Writer/Word2007/Element/TextBreak.php index 05de2917..c74cdc7a 100644 --- a/src/PhpWord/Writer/Word2007/Element/TextBreak.php +++ b/src/PhpWord/Writer/Word2007/Element/TextBreak.php @@ -31,6 +31,9 @@ class TextBreak extends Text { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\TextBreak) { + return; + } if (!$this->withoutP) { $hasStyle = $element->hasStyle(); diff --git a/src/PhpWord/Writer/Word2007/Element/Title.php b/src/PhpWord/Writer/Word2007/Element/Title.php index c5eda5fd..703188ef 100644 --- a/src/PhpWord/Writer/Word2007/Element/Title.php +++ b/src/PhpWord/Writer/Word2007/Element/Title.php @@ -33,6 +33,9 @@ class Title extends AbstractElement { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); + if (!$element instanceof \PhpOffice\PhpWord\Element\Title) { + return; + } $bookmarkId = $element->getBookmarkId(); $anchor = '_Toc' . ($bookmarkId + 252634154); diff --git a/tests/PhpWord/Tests/Writer/HTML/ElementTest.php b/tests/PhpWord/Tests/Writer/HTML/ElementTest.php new file mode 100644 index 00000000..d2ed70ea --- /dev/null +++ b/tests/PhpWord/Tests/Writer/HTML/ElementTest.php @@ -0,0 +1,41 @@ +assertEquals('', $object->write()); + } + } +} diff --git a/tests/PhpWord/Tests/Writer/ODText/ElementTest.php b/tests/PhpWord/Tests/Writer/ODText/ElementTest.php new file mode 100644 index 00000000..6354520a --- /dev/null +++ b/tests/PhpWord/Tests/Writer/ODText/ElementTest.php @@ -0,0 +1,42 @@ +write(); + + $this->assertEquals('', $xmlWriter->getData()); + } + } +} diff --git a/tests/PhpWord/Tests/Writer/RTF/ElementTest.php b/tests/PhpWord/Tests/Writer/RTF/ElementTest.php new file mode 100644 index 00000000..9f597c15 --- /dev/null +++ b/tests/PhpWord/Tests/Writer/RTF/ElementTest.php @@ -0,0 +1,41 @@ +assertEquals('', $object->write()); + } + } +} diff --git a/tests/PhpWord/Tests/Writer/Word2007/ElementTest.php b/tests/PhpWord/Tests/Writer/Word2007/ElementTest.php new file mode 100644 index 00000000..0a9eb4ce --- /dev/null +++ b/tests/PhpWord/Tests/Writer/Word2007/ElementTest.php @@ -0,0 +1,45 @@ +write(); + + $this->assertEquals('', $xmlWriter->getData()); + } + } +}