Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Reader\Xml\Style;
   4  
   5  use PhpOffice\PhpSpreadsheet\Style\Fill as FillStyles;
   6  use SimpleXMLElement;
   7  
   8  class Fill extends StyleBase
   9  {
  10      /**
  11       * @var array
  12       */
  13      public const FILL_MAPPINGS = [
  14          'fillType' => [
  15              'solid' => FillStyles::FILL_SOLID,
  16              'gray75' => FillStyles::FILL_PATTERN_DARKGRAY,
  17              'gray50' => FillStyles::FILL_PATTERN_MEDIUMGRAY,
  18              'gray25' => FillStyles::FILL_PATTERN_LIGHTGRAY,
  19              'gray125' => FillStyles::FILL_PATTERN_GRAY125,
  20              'gray0625' => FillStyles::FILL_PATTERN_GRAY0625,
  21              'horzstripe' => FillStyles::FILL_PATTERN_DARKHORIZONTAL, // horizontal stripe
  22              'vertstripe' => FillStyles::FILL_PATTERN_DARKVERTICAL, // vertical stripe
  23              'reversediagstripe' => FillStyles::FILL_PATTERN_DARKUP, // reverse diagonal stripe
  24              'diagstripe' => FillStyles::FILL_PATTERN_DARKDOWN, // diagonal stripe
  25              'diagcross' => FillStyles::FILL_PATTERN_DARKGRID, // diagoanl crosshatch
  26              'thickdiagcross' => FillStyles::FILL_PATTERN_DARKTRELLIS, // thick diagonal crosshatch
  27              'thinhorzstripe' => FillStyles::FILL_PATTERN_LIGHTHORIZONTAL,
  28              'thinvertstripe' => FillStyles::FILL_PATTERN_LIGHTVERTICAL,
  29              'thinreversediagstripe' => FillStyles::FILL_PATTERN_LIGHTUP,
  30              'thindiagstripe' => FillStyles::FILL_PATTERN_LIGHTDOWN,
  31              'thinhorzcross' => FillStyles::FILL_PATTERN_LIGHTGRID, // thin horizontal crosshatch
  32              'thindiagcross' => FillStyles::FILL_PATTERN_LIGHTTRELLIS, // thin diagonal crosshatch
  33          ],
  34      ];
  35  
  36      public function parseStyle(SimpleXMLElement $styleAttributes): array
  37      {
  38          $style = [];
  39  
  40          foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValuex) {
  41              $styleAttributeValue = (string) $styleAttributeValuex;
  42              switch ($styleAttributeKey) {
  43                  case 'Color':
  44                      $style['fill']['endColor']['rgb'] = substr($styleAttributeValue, 1);
  45                      $style['fill']['startColor']['rgb'] = substr($styleAttributeValue, 1);
  46  
  47                      break;
  48                  case 'PatternColor':
  49                      $style['fill']['startColor']['rgb'] = substr($styleAttributeValue, 1);
  50  
  51                      break;
  52                  case 'Pattern':
  53                      $lcStyleAttributeValue = strtolower((string) $styleAttributeValue);
  54                      $style['fill']['fillType']
  55                          = self::FILL_MAPPINGS['fillType'][$lcStyleAttributeValue] ?? FillStyles::FILL_NONE;
  56  
  57                      break;
  58              }
  59          }
  60  
  61          return $style;
  62      }
  63  }