diff --git a/src/PhpWord/Writer/HTML/Element/Footnote.php b/src/PhpWord/Writer/HTML/Element/Footnote.php index 888ba411..f1570ed0 100644 --- a/src/PhpWord/Writer/HTML/Element/Footnote.php +++ b/src/PhpWord/Writer/HTML/Element/Footnote.php @@ -38,6 +38,10 @@ class Footnote extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Footnote) { + return; + } + $noteId = count($this->parentWriter->getNotes()) + 1; $noteMark = $this->noteType . '-' . $this->element->getRelationId(); $this->parentWriter->addNote($noteId, $noteMark); diff --git a/src/PhpWord/Writer/HTML/Element/Image.php b/src/PhpWord/Writer/HTML/Element/Image.php index 6ba272d9..3813146d 100644 --- a/src/PhpWord/Writer/HTML/Element/Image.php +++ b/src/PhpWord/Writer/HTML/Element/Image.php @@ -34,10 +34,11 @@ class Image extends Element */ public function write() { - $html = ''; - if (!$this->element instanceof ImageElement) { - return $html; + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; } + + $html = ''; if (!$this->parentWriter->isPdf()) { $imageData = $this->getBase64ImageData($this->element); if (!is_null($imageData)) { diff --git a/src/PhpWord/Writer/HTML/Element/Link.php b/src/PhpWord/Writer/HTML/Element/Link.php index 5906205f..2792eb67 100644 --- a/src/PhpWord/Writer/HTML/Element/Link.php +++ b/src/PhpWord/Writer/HTML/Element/Link.php @@ -31,6 +31,10 @@ class Link extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } + $html = "element->getTarget()}\">{$this->element->getText()}" . PHP_EOL; if (!$this->withoutP) { $html = '

' . $html . '

' . PHP_EOL; diff --git a/src/PhpWord/Writer/HTML/Element/ListItem.php b/src/PhpWord/Writer/HTML/Element/ListItem.php index 42675bbf..89f2ad69 100644 --- a/src/PhpWord/Writer/HTML/Element/ListItem.php +++ b/src/PhpWord/Writer/HTML/Element/ListItem.php @@ -31,6 +31,10 @@ class ListItem extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\ListItem) { + return; + } + $text = htmlspecialchars($this->element->getTextObject()->getText()); $html = '

' . $text . '

' . PHP_EOL; diff --git a/src/PhpWord/Writer/HTML/Element/Table.php b/src/PhpWord/Writer/HTML/Element/Table.php index 2c96a97a..b3974554 100644 --- a/src/PhpWord/Writer/HTML/Element/Table.php +++ b/src/PhpWord/Writer/HTML/Element/Table.php @@ -31,6 +31,10 @@ class Table extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } + $html = ''; $rows = $this->element->getRows(); $rowCount = count($rows); diff --git a/src/PhpWord/Writer/HTML/Element/Text.php b/src/PhpWord/Writer/HTML/Element/Text.php index 20b6ce79..dceb7a4d 100644 --- a/src/PhpWord/Writer/HTML/Element/Text.php +++ b/src/PhpWord/Writer/HTML/Element/Text.php @@ -36,6 +36,10 @@ class Text extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } + $html = ''; // Paragraph style $paragraphStyle = $this->element->getParagraphStyle(); @@ -44,6 +48,8 @@ class Text extends Element $styleWriter = new ParagraphStyleWriter($paragraphStyle); $paragraphStyle = $styleWriter->write(); } + $hasParagraphStyle = $paragraphStyle && !$this->withoutP; + // Font style $fontStyle = $this->element->getFontStyle(); $fontStyleIsObject = ($fontStyle instanceof Font); @@ -52,7 +58,7 @@ class Text extends Element $fontStyle = $styleWriter->write(); } - if ($paragraphStyle && !$this->withoutP) { + if ($hasParagraphStyle) { $attribute = $pStyleIsObject ? 'style' : 'class'; $html .= "

"; } @@ -64,7 +70,7 @@ class Text extends Element if ($fontStyle) { $html .= ''; } - if ($paragraphStyle && !$this->withoutP) { + if ($hasParagraphStyle) { $html .= '

' . PHP_EOL; } diff --git a/src/PhpWord/Writer/HTML/Element/TextRun.php b/src/PhpWord/Writer/HTML/Element/TextRun.php index 02b24488..b6848d8f 100644 --- a/src/PhpWord/Writer/HTML/Element/TextRun.php +++ b/src/PhpWord/Writer/HTML/Element/TextRun.php @@ -34,6 +34,10 @@ class TextRun extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\TextRun) { + return; + } + $html = ''; $elements = $this->element->getElements(); if (count($elements) > 0) { diff --git a/src/PhpWord/Writer/HTML/Element/Title.php b/src/PhpWord/Writer/HTML/Element/Title.php index 68633f1f..e2252241 100644 --- a/src/PhpWord/Writer/HTML/Element/Title.php +++ b/src/PhpWord/Writer/HTML/Element/Title.php @@ -31,6 +31,10 @@ class Title extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Title) { + return; + } + $tag = 'h' . $this->element->getDepth(); $text = htmlspecialchars($this->element->getText()); $html = "<{$tag}>{$text}" . PHP_EOL; diff --git a/src/PhpWord/Writer/ODText/Element/Image.php b/src/PhpWord/Writer/ODText/Element/Image.php index 14408d66..ffe2d094 100644 --- a/src/PhpWord/Writer/ODText/Element/Image.php +++ b/src/PhpWord/Writer/ODText/Element/Image.php @@ -31,6 +31,10 @@ class Image extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Image) { + return; + } + $mediaIndex = $this->element->getMediaIndex(); $target = 'Pictures/' . $this->element->getTarget(); $style = $this->element->getStyle(); diff --git a/src/PhpWord/Writer/ODText/Element/Link.php b/src/PhpWord/Writer/ODText/Element/Link.php index 9914b1cd..4ff094d2 100644 --- a/src/PhpWord/Writer/ODText/Element/Link.php +++ b/src/PhpWord/Writer/ODText/Element/Link.php @@ -29,6 +29,10 @@ class Link extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } + if (!$this->withoutP) { $this->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 fcd1461a..dbe5b14c 100644 --- a/src/PhpWord/Writer/ODText/Element/Table.php +++ b/src/PhpWord/Writer/ODText/Element/Table.php @@ -32,6 +32,10 @@ class Table extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } + $rows = $this->element->getRows(); $rowCount = count($rows); $colCount = $this->element->countColumns(); diff --git a/src/PhpWord/Writer/ODText/Element/Text.php b/src/PhpWord/Writer/ODText/Element/Text.php index 0c94bf0b..ee2fafab 100644 --- a/src/PhpWord/Writer/ODText/Element/Text.php +++ b/src/PhpWord/Writer/ODText/Element/Text.php @@ -29,6 +29,10 @@ class Text extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } + $fontStyle = $this->element->getFontStyle(); $paragraphStyle = $this->element->getParagraphStyle(); diff --git a/src/PhpWord/Writer/ODText/Element/TextRun.php b/src/PhpWord/Writer/ODText/Element/TextRun.php index 3627f148..b03fc353 100644 --- a/src/PhpWord/Writer/ODText/Element/TextRun.php +++ b/src/PhpWord/Writer/ODText/Element/TextRun.php @@ -17,6 +17,7 @@ namespace PhpOffice\PhpWord\Writer\ODText\Element; +use PhpOffice\PhpWord\Element\Link as LinkElement; use PhpOffice\PhpWord\Element\Text as TextElement; /** @@ -31,6 +32,10 @@ class TextRun extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\TextRun) { + return; + } + $elements = $this->element->getElements(); $this->xmlWriter->startElement('text:p'); if (count($elements) > 0) { @@ -38,7 +43,7 @@ class TextRun extends Element if ($element instanceof TextElement) { $elementWriter = new Text($this->xmlWriter, $this->parentWriter, $element, true); $elementWriter->write(); - } elseif ($element instanceof Link) { + } elseif ($element instanceof LinkElement) { $elementWriter = new Link($this->xmlWriter, $this->parentWriter, $element, true); $elementWriter->write(); } diff --git a/src/PhpWord/Writer/RTF/Element/Text.php b/src/PhpWord/Writer/RTF/Element/Text.php index 83ade9d2..8b71b390 100644 --- a/src/PhpWord/Writer/RTF/Element/Text.php +++ b/src/PhpWord/Writer/RTF/Element/Text.php @@ -33,6 +33,10 @@ class Text extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } + $rtfText = ''; $fontStyle = $this->element->getFontStyle(); diff --git a/src/PhpWord/Writer/RTF/Element/TextRun.php b/src/PhpWord/Writer/RTF/Element/TextRun.php index 775282e0..f5df5d96 100644 --- a/src/PhpWord/Writer/RTF/Element/TextRun.php +++ b/src/PhpWord/Writer/RTF/Element/TextRun.php @@ -33,7 +33,12 @@ class TextRun extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\TextRun) { + return; + } + $rtfText = ''; + $elements = $this->element->getElements(); if (count($elements) > 0) { $rtfText .= '\pard\nowidctlpar' . PHP_EOL; diff --git a/src/PhpWord/Writer/RTF/Element/Title.php b/src/PhpWord/Writer/RTF/Element/Title.php index 524c005d..5915c42e 100644 --- a/src/PhpWord/Writer/RTF/Element/Title.php +++ b/src/PhpWord/Writer/RTF/Element/Title.php @@ -31,7 +31,12 @@ class Title extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Title) { + return; + } + $rtfText = ''; + $rtfText .= '\pard\nowidctlpar' . PHP_EOL; $rtfText .= $this->element->getText(); $rtfText .= '\par' . PHP_EOL; diff --git a/src/PhpWord/Writer/Word2007/Element/CheckBox.php b/src/PhpWord/Writer/Word2007/Element/CheckBox.php index 543a49b4..ef8c166d 100644 --- a/src/PhpWord/Writer/Word2007/Element/CheckBox.php +++ b/src/PhpWord/Writer/Word2007/Element/CheckBox.php @@ -33,6 +33,10 @@ class CheckBox extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\CheckBox) { + return; + } + $name = htmlspecialchars($this->element->getName()); $name = String::controlCharacterPHP2OOXML($name); $text = htmlspecialchars($this->element->getText()); diff --git a/src/PhpWord/Writer/Word2007/Element/Footnote.php b/src/PhpWord/Writer/Word2007/Element/Footnote.php index b5d88727..f1f276aa 100644 --- a/src/PhpWord/Writer/Word2007/Element/Footnote.php +++ b/src/PhpWord/Writer/Word2007/Element/Footnote.php @@ -36,6 +36,10 @@ class Footnote extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Footnote) { + return; + } + if (!$this->withoutP) { $this->xmlWriter->startElement('w:p'); } diff --git a/src/PhpWord/Writer/Word2007/Element/Image.php b/src/PhpWord/Writer/Word2007/Element/Image.php index 214b8a2a..6b948f1e 100644 --- a/src/PhpWord/Writer/Word2007/Element/Image.php +++ b/src/PhpWord/Writer/Word2007/Element/Image.php @@ -43,6 +43,10 @@ class Image extends Element */ private function writeImage() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Image) { + return; + } + $rId = $this->element->getRelationId() + ($this->element->isInSection() ? 6 : 0); $style = $this->element->getStyle(); $styleWriter = new ImageStyleWriter($this->xmlWriter, $style); diff --git a/src/PhpWord/Writer/Word2007/Element/Link.php b/src/PhpWord/Writer/Word2007/Element/Link.php index 2342b312..2e53b1a8 100644 --- a/src/PhpWord/Writer/Word2007/Element/Link.php +++ b/src/PhpWord/Writer/Word2007/Element/Link.php @@ -32,6 +32,10 @@ class Link extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Link) { + return; + } + $rId = $this->element->getRelationId() + ($this->element->isInSection() ? 6 : 0); $fontStyle = $this->element->getFontStyle(); $paragraphStyle = $this->element->getParagraphStyle(); diff --git a/src/PhpWord/Writer/Word2007/Element/ListItem.php b/src/PhpWord/Writer/Word2007/Element/ListItem.php index df8621ff..e4394862 100644 --- a/src/PhpWord/Writer/Word2007/Element/ListItem.php +++ b/src/PhpWord/Writer/Word2007/Element/ListItem.php @@ -32,6 +32,10 @@ class ListItem extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\ListItem) { + return; + } + $textObject = $this->element->getTextObject(); $depth = $this->element->getDepth(); $numId = $this->element->getStyle()->getNumId(); diff --git a/src/PhpWord/Writer/Word2007/Element/Object.php b/src/PhpWord/Writer/Word2007/Element/Object.php index 6e6a1cbb..db90d78c 100644 --- a/src/PhpWord/Writer/Word2007/Element/Object.php +++ b/src/PhpWord/Writer/Word2007/Element/Object.php @@ -29,6 +29,10 @@ class Object extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Object) { + return; + } + $rIdObject = $this->element->getRelationId() + ($this->element->isInSection() ? 6 : 0); $rIdImage = $this->element->getImageRelationId() + ($this->element->isInSection() ? 6 : 0); $shapeId = md5($rIdObject . '_' . $rIdImage); diff --git a/src/PhpWord/Writer/Word2007/Element/PreserveText.php b/src/PhpWord/Writer/Word2007/Element/PreserveText.php index f09af49c..63c03899 100644 --- a/src/PhpWord/Writer/Word2007/Element/PreserveText.php +++ b/src/PhpWord/Writer/Word2007/Element/PreserveText.php @@ -33,6 +33,10 @@ class PreserveText extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\PreserveText) { + return; + } + $fontStyle = $this->element->getFontStyle(); $paragraphStyle = $this->element->getParagraphStyle(); $texts = $this->element->getText(); diff --git a/src/PhpWord/Writer/Word2007/Element/TOC.php b/src/PhpWord/Writer/Word2007/Element/TOC.php index 1ebde1a9..e4542bcb 100644 --- a/src/PhpWord/Writer/Word2007/Element/TOC.php +++ b/src/PhpWord/Writer/Word2007/Element/TOC.php @@ -34,6 +34,10 @@ class TOC extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\TOC) { + return; + } + $titles = $this->element->getTitles(); $writeFieldMark = true; @@ -55,6 +59,9 @@ class TOC extends Element /** * Write title + * + * @param \PhpOffice\PhpWord\Element\Title $title + * @param bool $writeFieldMark */ private function writeTitle($title, $writeFieldMark) { diff --git a/src/PhpWord/Writer/Word2007/Element/Table.php b/src/PhpWord/Writer/Word2007/Element/Table.php index 07863979..3a29f410 100644 --- a/src/PhpWord/Writer/Word2007/Element/Table.php +++ b/src/PhpWord/Writer/Word2007/Element/Table.php @@ -36,6 +36,10 @@ class Table extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Table) { + return; + } + $rows = $this->element->getRows(); $rowCount = count($rows); diff --git a/src/PhpWord/Writer/Word2007/Element/Text.php b/src/PhpWord/Writer/Word2007/Element/Text.php index a6621a05..c271174f 100644 --- a/src/PhpWord/Writer/Word2007/Element/Text.php +++ b/src/PhpWord/Writer/Word2007/Element/Text.php @@ -33,6 +33,10 @@ class Text extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Text) { + return; + } + $fontStyle = $this->element->getFontStyle(); $paragraphStyle = $this->element->getParagraphStyle(); $text = htmlspecialchars($this->element->getText()); diff --git a/src/PhpWord/Writer/Word2007/Element/TextRun.php b/src/PhpWord/Writer/Word2007/Element/TextRun.php index 6d761b4f..d4b2d291 100644 --- a/src/PhpWord/Writer/Word2007/Element/TextRun.php +++ b/src/PhpWord/Writer/Word2007/Element/TextRun.php @@ -31,6 +31,10 @@ class TextRun extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\TextRun) { + return; + } + $paragraphStyle = $this->element->getParagraphStyle(); $styleWriter = new ParagraphStyleWriter($this->xmlWriter, $paragraphStyle); $styleWriter->setIsInline(true); diff --git a/src/PhpWord/Writer/Word2007/Element/Title.php b/src/PhpWord/Writer/Word2007/Element/Title.php index c55a60a7..e1c7a0ae 100644 --- a/src/PhpWord/Writer/Word2007/Element/Title.php +++ b/src/PhpWord/Writer/Word2007/Element/Title.php @@ -31,6 +31,10 @@ class Title extends Element */ public function write() { + if (!$this->element instanceof \PhpOffice\PhpWord\Element\Title) { + return; + } + $bookmarkId = $this->element->getBookmarkId(); $anchor = '_Toc' . ($bookmarkId + 252634154); $style = $this->element->getStyle(); diff --git a/src/PhpWord/Writer/Word2007/Part/Rels.php b/src/PhpWord/Writer/Word2007/Part/Rels.php index 22480ce2..95ac32b1 100644 --- a/src/PhpWord/Writer/Word2007/Part/Rels.php +++ b/src/PhpWord/Writer/Word2007/Part/Rels.php @@ -72,7 +72,7 @@ class Rels extends AbstractPart } // Media relationships - if (!is_null($mediaRels) && is_array($mediaRels)) { + if (is_array($mediaRels)) { $mapping = array('image' => 'image', 'object' => 'oleObject', 'link' => 'hyperlink'); $targetPaths = array('image' => 'media/', 'object' => 'embeddings/'); foreach ($mediaRels as $mediaRel) {