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)
|
||||
{
|
||||
$anchor = null;
|
||||
$this->anchor = $anchor;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -441,4 +441,40 @@ class Table extends Border
|
|||
|
||||
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()
|
||||
{
|
||||
$titles = $this->element->getTitles();
|
||||
$tocStyle = $this->element->getStyleTOC();
|
||||
$fontStyle = $this->element->getStyleFont();
|
||||
$isObject = ($fontStyle instanceof Font) ? true : false;
|
||||
$writeFieldMark = true;
|
||||
|
||||
$tocFieldWritten = false;
|
||||
foreach ($titles as $title) {
|
||||
$indent = ($title->getDepth() - 1) * $tocStyle->getIndent();
|
||||
$anchor = '_Toc' . ($title->getBookmarkId() + 252634154);
|
||||
|
||||
$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();
|
||||
$this->writeTitle($title, $writeFieldMark);
|
||||
if ($writeFieldMark) {
|
||||
$writeFieldMark = false;
|
||||
}
|
||||
|
||||
// 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');
|
||||
|
|
@ -156,4 +52,137 @@ class TOC extends Element
|
|||
$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;
|
||||
}
|
||||
|
||||
$brdCol = $this->style->getBorderColor();
|
||||
$brdSz = $this->style->getBorderSize();
|
||||
$cellMargin = $this->style->getCellMargin();
|
||||
$hasBorders = $this->style->hasBorders();
|
||||
$hasMargins = $this->style->hasMargins();
|
||||
|
||||
// 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) {
|
||||
$this->xmlWriter->startElement('w:tblPr');
|
||||
if ($hasMargins) {
|
||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||
$mbWriter->setSizes($cellMargin);
|
||||
$mbWriter->setSizes($this->style->getCellMargin());
|
||||
|
||||
$this->xmlWriter->startElement('w:tblCellMar');
|
||||
$mbWriter->write();
|
||||
|
|
@ -71,8 +55,8 @@ class Table extends AbstractStyle
|
|||
}
|
||||
if ($hasBorders) {
|
||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||
$mbWriter->setSizes($brdSz);
|
||||
$mbWriter->setColors($brdCol);
|
||||
$mbWriter->setSizes($this->style->getBorderSize());
|
||||
$mbWriter->setColors($this->style->getBorderColor());
|
||||
|
||||
$this->xmlWriter->startElement('w:tblBorders');
|
||||
$mbWriter->write();
|
||||
|
|
@ -123,18 +107,10 @@ class Table extends AbstractStyle
|
|||
}
|
||||
|
||||
// Borders
|
||||
$brdSz = $style->getBorderSize();
|
||||
$brdCol = $style->getBorderColor();
|
||||
$hasBorders = false;
|
||||
for ($i = 0; $i < 6; $i++) {
|
||||
if (!is_null($brdSz[$i])) {
|
||||
$hasBorders = true;
|
||||
}
|
||||
}
|
||||
if ($hasBorders) {
|
||||
if ($style->hasBorders()) {
|
||||
$mbWriter = new MarginBorder($this->xmlWriter);
|
||||
$mbWriter->setSizes($brdSz);
|
||||
$mbWriter->setColors($brdCol);
|
||||
$mbWriter->setSizes($style->getBorderSize());
|
||||
$mbWriter->setColors($style->getBorderColor());
|
||||
|
||||
$this->xmlWriter->startElement('w:tcBorders');
|
||||
$mbWriter->write();
|
||||
|
|
|
|||
Loading…
Reference in New Issue