Refactoring for code quality improvement (based on Scrutinizer)
This commit is contained in:
parent
1f5e58a317
commit
c4e8fdac84
|
|
@ -138,7 +138,7 @@ class Title extends AbstractElement
|
||||||
*/
|
*/
|
||||||
public function setAnchor($anchor)
|
public function setAnchor($anchor)
|
||||||
{
|
{
|
||||||
$anchor = null;
|
$this->anchor = $anchor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -441,4 +441,40 @@ class Table extends Border
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Has borders?
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function hasBorders()
|
||||||
|
{
|
||||||
|
$hasBorders = false;
|
||||||
|
$borders = $this->getBorderSize();
|
||||||
|
for ($i = 0; $i < 6; $i++) {
|
||||||
|
if (!is_null($borders[$i])) {
|
||||||
|
$hasBorders = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $hasBorders;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Has margins?
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function hasMargins()
|
||||||
|
{
|
||||||
|
$hasMargins = false;
|
||||||
|
$margins = $this->getCellMargin();
|
||||||
|
for ($i = 0; $i < 4; $i++) {
|
||||||
|
if (!is_null($margins[$i])) {
|
||||||
|
$hasMargins = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $hasMargins;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,117 +35,13 @@ class TOC extends Element
|
||||||
public function write()
|
public function write()
|
||||||
{
|
{
|
||||||
$titles = $this->element->getTitles();
|
$titles = $this->element->getTitles();
|
||||||
$tocStyle = $this->element->getStyleTOC();
|
$writeFieldMark = true;
|
||||||
$fontStyle = $this->element->getStyleFont();
|
|
||||||
$isObject = ($fontStyle instanceof Font) ? true : false;
|
|
||||||
|
|
||||||
$tocFieldWritten = false;
|
|
||||||
foreach ($titles as $title) {
|
foreach ($titles as $title) {
|
||||||
$indent = ($title->getDepth() - 1) * $tocStyle->getIndent();
|
$this->writeTitle($title, $writeFieldMark);
|
||||||
$anchor = '_Toc' . ($title->getBookmarkId() + 252634154);
|
if ($writeFieldMark) {
|
||||||
|
$writeFieldMark = false;
|
||||||
$this->xmlWriter->startElement('w:p');
|
|
||||||
|
|
||||||
// Style
|
|
||||||
$this->xmlWriter->startElement('w:pPr');
|
|
||||||
|
|
||||||
// Paragraph
|
|
||||||
if ($isObject && !is_null($fontStyle->getParagraphStyle())) {
|
|
||||||
$styleWriter = new ParagraphStyleWriter($this->xmlWriter, $fontStyle->getParagraphStyle());
|
|
||||||
$styleWriter->write();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Font
|
|
||||||
if (!empty($fontStyle) && !$isObject) {
|
|
||||||
$this->xmlWriter->startElement('w:rPr');
|
|
||||||
$this->xmlWriter->startElement('w:rStyle');
|
|
||||||
$this->xmlWriter->writeAttribute('w:val', $fontStyle);
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement(); // w:rPr
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tab
|
|
||||||
$this->xmlWriter->startElement('w:tabs');
|
|
||||||
$styleWriter = new TabStyleWriter($this->xmlWriter, $tocStyle);
|
|
||||||
$styleWriter->write();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
// Indent
|
|
||||||
if ($indent > 0) {
|
|
||||||
$this->xmlWriter->startElement('w:ind');
|
|
||||||
$this->xmlWriter->writeAttribute('w:left', $indent);
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->xmlWriter->endElement(); // w:pPr
|
|
||||||
|
|
||||||
if ($tocFieldWritten !== true) {
|
|
||||||
$tocFieldWritten = true;
|
|
||||||
$minDepth = $this->element->getMinDepth();
|
|
||||||
$maxDepth = $this->element->getMaxDepth();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:fldChar');
|
|
||||||
$this->xmlWriter->writeAttribute('w:fldCharType', 'begin');
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:instrText');
|
|
||||||
$this->xmlWriter->writeAttribute('xml:space', 'preserve');
|
|
||||||
$this->xmlWriter->writeRaw("TOC \o {$minDepth}-{$maxDepth} \h \z \u");
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:fldChar');
|
|
||||||
$this->xmlWriter->writeAttribute('w:fldCharType', 'separate');
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:hyperlink');
|
|
||||||
$this->xmlWriter->writeAttribute('w:anchor', $anchor);
|
|
||||||
$this->xmlWriter->writeAttribute('w:history', '1');
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
|
|
||||||
if ($isObject) {
|
|
||||||
$styleWriter = new FontStyleWriter($this->xmlWriter, $fontStyle);
|
|
||||||
$styleWriter->write();
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:t');
|
|
||||||
$this->xmlWriter->writeRaw($title->getText());
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->writeElement('w:tab', null);
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:fldChar');
|
|
||||||
$this->xmlWriter->writeAttribute('w:fldCharType', 'begin');
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:instrText');
|
|
||||||
$this->xmlWriter->writeAttribute('xml:space', 'preserve');
|
|
||||||
$this->xmlWriter->writeRaw('PAGEREF ' . $anchor . ' \h');
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:r');
|
|
||||||
$this->xmlWriter->startElement('w:fldChar');
|
|
||||||
$this->xmlWriter->writeAttribute('w:fldCharType', 'end');
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
$this->xmlWriter->endElement();
|
|
||||||
|
|
||||||
$this->xmlWriter->endElement(); // w:hyperlink
|
|
||||||
|
|
||||||
$this->xmlWriter->endElement(); // w:p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:p');
|
$this->xmlWriter->startElement('w:p');
|
||||||
|
|
@ -156,4 +52,137 @@ class TOC extends Element
|
||||||
$this->xmlWriter->endElement();
|
$this->xmlWriter->endElement();
|
||||||
$this->xmlWriter->endElement();
|
$this->xmlWriter->endElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write title
|
||||||
|
*/
|
||||||
|
private function writeTitle($title, $writeFieldMark)
|
||||||
|
{
|
||||||
|
$tocStyle = $this->element->getStyleTOC();
|
||||||
|
$fontStyle = $this->element->getStyleFont();
|
||||||
|
$isObject = ($fontStyle instanceof Font) ? true : false;
|
||||||
|
$anchor = '_Toc' . ($title->getBookmarkId() + 252634154);
|
||||||
|
$indent = ($title->getDepth() - 1) * $tocStyle->getIndent();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:p');
|
||||||
|
|
||||||
|
// Write style and field mark
|
||||||
|
$this->writeStyle($indent);
|
||||||
|
if ($writeFieldMark) {
|
||||||
|
$this->writeFieldMark();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hyperlink
|
||||||
|
$this->xmlWriter->startElement('w:hyperlink');
|
||||||
|
$this->xmlWriter->writeAttribute('w:anchor', $anchor);
|
||||||
|
$this->xmlWriter->writeAttribute('w:history', '1');
|
||||||
|
|
||||||
|
// Title text
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
if ($isObject) {
|
||||||
|
$styleWriter = new FontStyleWriter($this->xmlWriter, $fontStyle);
|
||||||
|
$styleWriter->write();
|
||||||
|
}
|
||||||
|
$this->xmlWriter->startElement('w:t');
|
||||||
|
$this->xmlWriter->writeRaw($title->getText());
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->writeElement('w:tab', null);
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:fldChar');
|
||||||
|
$this->xmlWriter->writeAttribute('w:fldCharType', 'begin');
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:instrText');
|
||||||
|
$this->xmlWriter->writeAttribute('xml:space', 'preserve');
|
||||||
|
$this->xmlWriter->writeRaw('PAGEREF ' . $anchor . ' \h');
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:fldChar');
|
||||||
|
$this->xmlWriter->writeAttribute('w:fldCharType', 'end');
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->endElement(); // w:hyperlink
|
||||||
|
|
||||||
|
$this->xmlWriter->endElement(); // w:p
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write style
|
||||||
|
*/
|
||||||
|
private function writeStyle($indent)
|
||||||
|
{
|
||||||
|
$tocStyle = $this->element->getStyleTOC();
|
||||||
|
$fontStyle = $this->element->getStyleFont();
|
||||||
|
$isObject = ($fontStyle instanceof Font) ? true : false;
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:pPr');
|
||||||
|
|
||||||
|
// Paragraph
|
||||||
|
if ($isObject && !is_null($fontStyle->getParagraphStyle())) {
|
||||||
|
$styleWriter = new ParagraphStyleWriter($this->xmlWriter, $fontStyle->getParagraphStyle());
|
||||||
|
$styleWriter->write();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Font
|
||||||
|
if (!empty($fontStyle) && !$isObject) {
|
||||||
|
$this->xmlWriter->startElement('w:rPr');
|
||||||
|
$this->xmlWriter->startElement('w:rStyle');
|
||||||
|
$this->xmlWriter->writeAttribute('w:val', $fontStyle);
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement(); // w:rPr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tab
|
||||||
|
$this->xmlWriter->startElement('w:tabs');
|
||||||
|
$styleWriter = new TabStyleWriter($this->xmlWriter, $tocStyle);
|
||||||
|
$styleWriter->write();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
// Indent
|
||||||
|
if ($indent > 0) {
|
||||||
|
$this->xmlWriter->startElement('w:ind');
|
||||||
|
$this->xmlWriter->writeAttribute('w:left', $indent);
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->xmlWriter->endElement(); // w:pPr
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write TOC Field
|
||||||
|
*/
|
||||||
|
private function writeFieldMark()
|
||||||
|
{
|
||||||
|
$minDepth = $this->element->getMinDepth();
|
||||||
|
$maxDepth = $this->element->getMaxDepth();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:fldChar');
|
||||||
|
$this->xmlWriter->writeAttribute('w:fldCharType', 'begin');
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:instrText');
|
||||||
|
$this->xmlWriter->writeAttribute('xml:space', 'preserve');
|
||||||
|
$this->xmlWriter->writeRaw("TOC \o {$minDepth}-{$maxDepth} \h \z \u");
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
|
||||||
|
$this->xmlWriter->startElement('w:r');
|
||||||
|
$this->xmlWriter->startElement('w:fldChar');
|
||||||
|
$this->xmlWriter->writeAttribute('w:fldCharType', 'separate');
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
$this->xmlWriter->endElement();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,30 +40,14 @@ class Table extends AbstractStyle
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$brdCol = $this->style->getBorderColor();
|
$hasBorders = $this->style->hasBorders();
|
||||||
$brdSz = $this->style->getBorderSize();
|
$hasMargins = $this->style->hasMargins();
|
||||||
$cellMargin = $this->style->getCellMargin();
|
|
||||||
|
|
||||||
// If any of the borders/margins is set, process them
|
|
||||||
$hasBorders = false;
|
|
||||||
for ($i = 0; $i < 6; $i++) {
|
|
||||||
if (!is_null($brdSz[$i])) {
|
|
||||||
$hasBorders = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$hasMargins = false;
|
|
||||||
for ($i = 0; $i < 4; $i++) {
|
|
||||||
if (!is_null($cellMargin[$i])) {
|
|
||||||
$hasMargins = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($hasMargins || $hasBorders) {
|
if ($hasMargins || $hasBorders) {
|
||||||
$this->xmlWriter->startElement('w:tblPr');
|
$this->xmlWriter->startElement('w:tblPr');
|
||||||
if ($hasMargins) {
|
if ($hasMargins) {
|
||||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||||
$mbWriter->setSizes($cellMargin);
|
$mbWriter->setSizes($this->style->getCellMargin());
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:tblCellMar');
|
$this->xmlWriter->startElement('w:tblCellMar');
|
||||||
$mbWriter->write();
|
$mbWriter->write();
|
||||||
|
|
@ -71,8 +55,8 @@ class Table extends AbstractStyle
|
||||||
}
|
}
|
||||||
if ($hasBorders) {
|
if ($hasBorders) {
|
||||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||||
$mbWriter->setSizes($brdSz);
|
$mbWriter->setSizes($this->style->getBorderSize());
|
||||||
$mbWriter->setColors($brdCol);
|
$mbWriter->setColors($this->style->getBorderColor());
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:tblBorders');
|
$this->xmlWriter->startElement('w:tblBorders');
|
||||||
$mbWriter->write();
|
$mbWriter->write();
|
||||||
|
|
@ -123,18 +107,10 @@ class Table extends AbstractStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
// Borders
|
// Borders
|
||||||
$brdSz = $style->getBorderSize();
|
if ($style->hasBorders()) {
|
||||||
$brdCol = $style->getBorderColor();
|
|
||||||
$hasBorders = false;
|
|
||||||
for ($i = 0; $i < 6; $i++) {
|
|
||||||
if (!is_null($brdSz[$i])) {
|
|
||||||
$hasBorders = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($hasBorders) {
|
|
||||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||||
$mbWriter->setSizes($brdSz);
|
$mbWriter->setSizes($style->getBorderSize());
|
||||||
$mbWriter->setColors($brdCol);
|
$mbWriter->setColors($style->getBorderColor());
|
||||||
|
|
||||||
$this->xmlWriter->startElement('w:tcBorders');
|
$this->xmlWriter->startElement('w:tcBorders');
|
||||||
$mbWriter->write();
|
$mbWriter->write();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue