From 65a33577fda072ace4df41d2e8ae439f3b86c0bb Mon Sep 17 00:00:00 2001 From: madflow Date: Wed, 17 Aug 2016 13:59:43 +0200 Subject: [PATCH] Fixed shared border definitions across different styles #267 --- src/Spout/Writer/XLSX/Helper/StyleHelper.php | 13 ++++--------- tests/Spout/Writer/XLSX/WriterWithStyleTest.php | 6 +++--- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/Spout/Writer/XLSX/Helper/StyleHelper.php b/src/Spout/Writer/XLSX/Helper/StyleHelper.php index 2dd44fe..a917fd2 100644 --- a/src/Spout/Writer/XLSX/Helper/StyleHelper.php +++ b/src/Spout/Writer/XLSX/Helper/StyleHelper.php @@ -92,18 +92,17 @@ class StyleHelper extends AbstractStyleHelper $styleId = $style->getId(); if ($style->shouldApplyBorder()) { - $border = $style->getBorder(); $serializedBorder = serialize($border); - if (!isset($this->registeredBorders[$serializedBorder])) { - + if (isset($this->registeredBorders[$serializedBorder])) { + $this->styleIdToBorderMappingTable[$styleId] = $this->registeredBorders[$serializedBorder]; + } else { $this->registeredBorders[$serializedBorder] = $styleId; $this->styleIdToBorderMappingTable[$styleId] = count($this->registeredBorders); - } - } else { + } else { // If no border should be applied - the mapping is the default border: 0 $this->styleIdToBorderMappingTable[$styleId] = 0; } } @@ -189,7 +188,6 @@ EOD; // The other fills are actually registered by setting a background color foreach ($this->registeredFills as $styleId) { - /** @var Style $style */ $style = $this->styleIdToStyleMappingTable[$styleId]; @@ -222,7 +220,6 @@ EOD; $content .= ''; foreach ($this->registeredBorders as $styleId) { - /** @var \Box\Spout\Writer\Style\Style $style */ $style = $this->styleIdToStyleMappingTable[$styleId]; $border = $style->getBorder(); @@ -232,7 +229,6 @@ EOD; $sortOrder = ['left', 'right', 'top', 'bottom']; foreach ($sortOrder as $partName) { - if ($border->hasPart($partName)) { /** @var $part \Box\Spout\Writer\Style\BorderPart */ $part = $border->getPart($partName); @@ -275,7 +271,6 @@ EOD; $content = ''; foreach ($registeredStyles as $style) { - $styleId = $style->getId(); $fillId = $this->styleIdToFillMappingTable[$styleId]; $borderId = $this->styleIdToBorderMappingTable[$styleId]; diff --git a/tests/Spout/Writer/XLSX/WriterWithStyleTest.php b/tests/Spout/Writer/XLSX/WriterWithStyleTest.php index dbf4090..cd209df 100644 --- a/tests/Spout/Writer/XLSX/WriterWithStyleTest.php +++ b/tests/Spout/Writer/XLSX/WriterWithStyleTest.php @@ -420,8 +420,8 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase // Where a border is applied - the borderId attribute has to be greater than 0 $bordersApplied = 0; /** @var \DOMElement $node */ - foreach($styleXfsElements->childNodes as $node) { - if($node->getAttribute('applyBorder') == 1) { + foreach ($styleXfsElements->childNodes as $node) { + if ($node->getAttribute('applyBorder') == 1) { $bordersApplied++; $this->assertTrue((int)$node->getAttribute('borderId') > 0, 'BorderId is greater than 0'); } else { @@ -429,7 +429,7 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase } } - $this->assertEquals(2, $bordersApplied, 'Two borders have been applied'); + $this->assertEquals(3, $bordersApplied, 'Three borders have been applied'); } /**