Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
<?php

namespace PhpOffice\PhpSpreadsheet\Writer\Xlsx;

> use PhpOffice\PhpSpreadsheet\Reader\Xlsx\Namespaces;
use PhpOffice\PhpSpreadsheet\Shared\XMLWriter; use PhpOffice\PhpSpreadsheet\Spreadsheet;
> use PhpOffice\PhpSpreadsheet\Theme as SpreadsheetTheme;
< /** < * @category PhpSpreadsheet < * < * @copyright Copyright (c) 2006 - 2016 PhpSpreadsheet (https://github.com/PHPOffice/PhpSpreadsheet) < */
class Theme extends WriterPart { /**
< * Map of Major fonts to write. < * < * @var array of string < */ < private static $majorFonts = [ < 'Jpan' => 'MS Pゴシック', < 'Hang' => '맑은 고딕', < 'Hans' => '宋体', < 'Hant' => '新細明體', < 'Arab' => 'Times New Roman', < 'Hebr' => 'Times New Roman', < 'Thai' => 'Tahoma', < 'Ethi' => 'Nyala', < 'Beng' => 'Vrinda', < 'Gujr' => 'Shruti', < 'Khmr' => 'MoolBoran', < 'Knda' => 'Tunga', < 'Guru' => 'Raavi', < 'Cans' => 'Euphemia', < 'Cher' => 'Plantagenet Cherokee', < 'Yiii' => 'Microsoft Yi Baiti', < 'Tibt' => 'Microsoft Himalaya', < 'Thaa' => 'MV Boli', < 'Deva' => 'Mangal', < 'Telu' => 'Gautami', < 'Taml' => 'Latha', < 'Syrc' => 'Estrangelo Edessa', < 'Orya' => 'Kalinga', < 'Mlym' => 'Kartika', < 'Laoo' => 'DokChampa', < 'Sinh' => 'Iskoola Pota', < 'Mong' => 'Mongolian Baiti', < 'Viet' => 'Times New Roman', < 'Uigh' => 'Microsoft Uighur', < 'Geor' => 'Sylfaen', < ]; < < /** < * Map of Minor fonts to write. < * < * @var array of string < */ < private static $minorFonts = [ < 'Jpan' => 'MS Pゴシック', < 'Hang' => '맑은 고딕', < 'Hans' => '宋体', < 'Hant' => '新細明體', < 'Arab' => 'Arial', < 'Hebr' => 'Arial', < 'Thai' => 'Tahoma', < 'Ethi' => 'Nyala', < 'Beng' => 'Vrinda', < 'Gujr' => 'Shruti', < 'Khmr' => 'DaunPenh', < 'Knda' => 'Tunga', < 'Guru' => 'Raavi', < 'Cans' => 'Euphemia', < 'Cher' => 'Plantagenet Cherokee', < 'Yiii' => 'Microsoft Yi Baiti', < 'Tibt' => 'Microsoft Himalaya', < 'Thaa' => 'MV Boli', < 'Deva' => 'Mangal', < 'Telu' => 'Gautami', < 'Taml' => 'Latha', < 'Syrc' => 'Estrangelo Edessa', < 'Orya' => 'Kalinga', < 'Mlym' => 'Kartika', < 'Laoo' => 'DokChampa', < 'Sinh' => 'Iskoola Pota', < 'Mong' => 'Mongolian Baiti', < 'Viet' => 'Arial', < 'Uigh' => 'Microsoft Uighur', < 'Geor' => 'Sylfaen', < ]; < < /** < * Map of core colours. < * < * @var array of string < */ < private static $colourScheme = [ < 'dk2' => '1F497D', < 'lt2' => 'EEECE1', < 'accent1' => '4F81BD', < 'accent2' => 'C0504D', < 'accent3' => '9BBB59', < 'accent4' => '8064A2', < 'accent5' => '4BACC6', < 'accent6' => 'F79646', < 'hlink' => '0000FF', < 'folHlink' => '800080', < ]; < < /**
* Write theme to XML format. *
< * @param Spreadsheet $spreadsheet < * < * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception < *
* @return string XML Output */ public function writeTheme(Spreadsheet $spreadsheet) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY); }
> $theme = $spreadsheet->getTheme();
// XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // a:theme $objWriter->startElement('a:theme');
< $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
> $objWriter->writeAttribute('xmlns:a', Namespaces::DRAWINGML);
$objWriter->writeAttribute('name', 'Office Theme'); // a:themeElements $objWriter->startElement('a:themeElements'); // a:clrScheme $objWriter->startElement('a:clrScheme');
< $objWriter->writeAttribute('name', 'Office'); < < // a:dk1 < $objWriter->startElement('a:dk1'); < < // a:sysClr < $objWriter->startElement('a:sysClr'); < $objWriter->writeAttribute('val', 'windowText'); < $objWriter->writeAttribute('lastClr', '000000'); < $objWriter->endElement(); < < $objWriter->endElement(); < < // a:lt1 < $objWriter->startElement('a:lt1');
> $objWriter->writeAttribute('name', $theme->getThemeColorName());
< // a:sysClr < $objWriter->startElement('a:sysClr'); < $objWriter->writeAttribute('val', 'window'); < $objWriter->writeAttribute('lastClr', 'FFFFFF'); < $objWriter->endElement(); < < $objWriter->endElement(); < < // a:dk2 < $this->writeColourScheme($objWriter);
> $this->writeColourScheme($objWriter, $theme);
$objWriter->endElement(); // a:fontScheme $objWriter->startElement('a:fontScheme');
< $objWriter->writeAttribute('name', 'Office');
> $objWriter->writeAttribute('name', $theme->getThemeFontName());
// a:majorFont $objWriter->startElement('a:majorFont');
< $this->writeFonts($objWriter, 'Cambria', self::$majorFonts); < $objWriter->endElement();
> $this->writeFonts( > $objWriter, > $theme->getMajorFontLatin(), > $theme->getMajorFontEastAsian(), > $theme->getMajorFontComplexScript(), > $theme->getMajorFontSubstitutions() > ); > $objWriter->endElement(); // a:majorFont
// a:minorFont $objWriter->startElement('a:minorFont');
< $this->writeFonts($objWriter, 'Calibri', self::$minorFonts); < $objWriter->endElement();
> $this->writeFonts( > $objWriter, > $theme->getMinorFontLatin(), > $theme->getMinorFontEastAsian(), > $theme->getMinorFontComplexScript(), > $theme->getMinorFontSubstitutions() > ); > $objWriter->endElement(); // a:minorFont
< $objWriter->endElement();
> $objWriter->endElement(); // a:fontScheme
// a:fmtScheme $objWriter->startElement('a:fmtScheme'); $objWriter->writeAttribute('name', 'Office'); // a:fillStyleLst $objWriter->startElement('a:fillStyleLst'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '50000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '35000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '37000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '15000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lin $objWriter->startElement('a:lin'); $objWriter->writeAttribute('ang', '16200000'); $objWriter->writeAttribute('scaled', '1'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '51000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '80000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '93000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '94000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '135000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lin $objWriter->startElement('a:lin'); $objWriter->writeAttribute('ang', '16200000'); $objWriter->writeAttribute('scaled', '0'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lnStyleLst $objWriter->startElement('a:lnStyleLst'); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '9525'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '95000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '105000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '25400'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '38100'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyleLst $objWriter->startElement('a:effectStyleLst'); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '20000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '38000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '23000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '35000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '23000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '35000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:scene3d $objWriter->startElement('a:scene3d'); // a:camera $objWriter->startElement('a:camera'); $objWriter->writeAttribute('prst', 'orthographicFront'); // a:rot $objWriter->startElement('a:rot'); $objWriter->writeAttribute('lat', '0'); $objWriter->writeAttribute('lon', '0'); $objWriter->writeAttribute('rev', '0'); $objWriter->endElement(); $objWriter->endElement(); // a:lightRig $objWriter->startElement('a:lightRig'); $objWriter->writeAttribute('rig', 'threePt'); $objWriter->writeAttribute('dir', 't'); // a:rot $objWriter->startElement('a:rot'); $objWriter->writeAttribute('lat', '0'); $objWriter->writeAttribute('lon', '0'); $objWriter->writeAttribute('rev', '1200000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:sp3d $objWriter->startElement('a:sp3d'); // a:bevelT $objWriter->startElement('a:bevelT'); $objWriter->writeAttribute('w', '63500'); $objWriter->writeAttribute('h', '25400'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:bgFillStyleLst $objWriter->startElement('a:bgFillStyleLst'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '40000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '40000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '45000'); $objWriter->endElement(); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '99000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '20000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '255000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:path $objWriter->startElement('a:path'); $objWriter->writeAttribute('path', 'circle'); // a:fillToRect $objWriter->startElement('a:fillToRect'); $objWriter->writeAttribute('l', '50000'); $objWriter->writeAttribute('t', '-80000'); $objWriter->writeAttribute('r', '50000'); $objWriter->writeAttribute('b', '180000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '80000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '30000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '200000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:path $objWriter->startElement('a:path'); $objWriter->writeAttribute('path', 'circle'); // a:fillToRect $objWriter->startElement('a:fillToRect'); $objWriter->writeAttribute('l', '50000'); $objWriter->writeAttribute('t', '50000'); $objWriter->writeAttribute('r', '50000'); $objWriter->writeAttribute('b', '50000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:objectDefaults $objWriter->writeElement('a:objectDefaults', null); // a:extraClrSchemeLst $objWriter->writeElement('a:extraClrSchemeLst', null); $objWriter->endElement(); // Return return $objWriter->getData(); } /** * Write fonts to XML format. *
< * @param XMLWriter $objWriter < * @param string $latinFont < * @param array of string $fontSet < * < * @return string XML Output
> * @param string[] $fontSet
*/
< private function writeFonts($objWriter, $latinFont, $fontSet)
> private function writeFonts(XMLWriter $objWriter, string $latinFont, string $eastAsianFont, string $complexScriptFont, array $fontSet): void
{ // a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', $latinFont); $objWriter->endElement(); // a:ea $objWriter->startElement('a:ea');
< $objWriter->writeAttribute('typeface', '');
> $objWriter->writeAttribute('typeface', $eastAsianFont);
$objWriter->endElement(); // a:cs $objWriter->startElement('a:cs');
< $objWriter->writeAttribute('typeface', '');
> $objWriter->writeAttribute('typeface', $complexScriptFont);
$objWriter->endElement(); foreach ($fontSet as $fontScript => $typeface) { $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', $fontScript); $objWriter->writeAttribute('typeface', $typeface); $objWriter->endElement(); } } /** * Write colour scheme to XML format.
< * < * @param XMLWriter $objWriter < * < * @return string XML Output
*/
< private function writeColourScheme($objWriter)
> private function writeColourScheme(XMLWriter $objWriter, SpreadsheetTheme $theme): void
{
< foreach (self::$colourScheme as $colourName => $colourValue) { < $objWriter->startElement('a:' . $colourName);
> $themeArray = $theme->getThemeColors(); > // a:dk1 > $objWriter->startElement('a:dk1'); > $objWriter->startElement('a:sysClr'); > $objWriter->writeAttribute('val', 'windowText'); > $objWriter->writeAttribute('lastClr', $themeArray['dk1'] ?? '000000'); > $objWriter->endElement(); // a:sysClr > $objWriter->endElement(); // a:dk1
> // a:lt1 $objWriter->startElement('a:srgbClr'); > $objWriter->startElement('a:lt1'); $objWriter->writeAttribute('val', $colourValue); > $objWriter->startElement('a:sysClr'); $objWriter->endElement(); > $objWriter->writeAttribute('val', 'window'); > $objWriter->writeAttribute('lastClr', $themeArray['lt1'] ?? 'FFFFFF'); $objWriter->endElement(); > $objWriter->endElement(); // a:sysClr } > $objWriter->endElement(); // a:lt1 } > } > foreach ($themeArray as $colourName => $colourValue) { > if ($colourName !== 'dk1' && $colourName !== 'lt1') { > $objWriter->startElement('a:' . $colourName);
< $objWriter->endElement(); < < $objWriter->endElement();
> $objWriter->endElement(); // a:srgbClr > $objWriter->endElement(); // a:$colourName > }