src/Blocks/AbstractBaseBlock.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Blocks;
  3. abstract class AbstractBaseBlock implements BlockInterface
  4. {
  5.     abstract public function getData(array $rawGutenbergBlockData): array;
  6.     public function buildTemplateContext(array $rawGutenbergBlockData): array
  7.     {
  8.         $data $this->getData($rawGutenbergBlockData);
  9.         $id $rawGutenbergBlockData['anchor'] ?? $rawGutenbergBlockData['id'];
  10.         $className $rawGutenbergBlockData['class'];
  11.         if (!empty($rawGutenbergBlockData['className'])) {
  12.             $className .= ' ' $rawGutenbergBlockData['className'];
  13.         }
  14.         if (!empty($rawGutenbergBlockData['align'])) {
  15.             $className .= ' align' $rawGutenbergBlockData['align'];
  16.         }
  17.         if (!empty($rawGutenbergBlockData['gradient'])) {
  18.             $className .= ' has-' $rawGutenbergBlockData['gradient'];
  19.         }
  20.         $style '';
  21.         if (!empty($rawGutenbergBlockData['style']) or !empty($rawGutenbergBlockData['gradient']) or !empty($rawGutenbergBlockData['backgroundColor']) or !empty($rawGutenbergBlockData['textColor'])) {
  22.             if (!empty($rawGutenbergBlockData['style']['color']['background'])) {
  23.                 $style .= '#' $id '{background-color:' $rawGutenbergBlockData['style']['color']['background'] . ';}';
  24.             }
  25.             if (!empty($rawGutenbergBlockData['backgroundColor'])) {
  26.                 $style .= '#' $id '{background-color:' $rawGutenbergBlockData['backgroundColor'] . ';}';
  27.             }
  28.             if (!empty($rawGutenbergBlockData['style']['color']['gradient'])) {
  29.                 $style .= '#' $id ',#' $id ' .gradient-background{background:' $rawGutenbergBlockData['style']['color']['gradient'] . ';}';
  30.             }
  31.             if (!empty($rawGutenbergBlockData['gradient'])) {
  32.                 $style .= '#' $id '.has-' $rawGutenbergBlockData['gradient'] . ',#' $id '.has-' $rawGutenbergBlockData['gradient'] . ' .gradient-background{background:var(--wp--preset--gradient--' $rawGutenbergBlockData['gradient'] . ') !important;}';
  33.             }
  34.             if (!empty($rawGutenbergBlockData['style']['color']['text'])) {
  35.                 $style .= '#' $id ' *{color:' $rawGutenbergBlockData['style']['color']['text'] . ';border-color:' $rawGutenbergBlockData['style']['color']['text'] . ';}';
  36.             }
  37.             if (!empty($rawGutenbergBlockData['textColor'])) {
  38.                 $style .= '#' $id ' *{color:' $rawGutenbergBlockData['textColor'] . ';border-color:' $rawGutenbergBlockData['textColor'] . ';}';
  39.             }
  40.             if (!empty($rawGutenbergBlockData['style']['spacing']['padding'])) {
  41.                 $style .= '#' $id '{';
  42.                 if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['top'])) {
  43.                     $style .= 'padding-top:' $rawGutenbergBlockData['style']['spacing']['padding']['top'] . ';';
  44.                 }
  45.                 if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['right'])) {
  46.                     $style .= 'padding-right:' $rawGutenbergBlockData['style']['spacing']['padding']['right'] . ';';
  47.                 }
  48.                 if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['bottom'])) {
  49.                     $style .= 'padding-bottom:' $rawGutenbergBlockData['style']['spacing']['padding']['bottom'] . ';';
  50.                 }
  51.                 if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['left'])) {
  52.                     $style .= 'padding-left:' $rawGutenbergBlockData['style']['spacing']['padding']['left'] . ';';
  53.                 }
  54.                 $style .= '}';
  55.             }
  56.         }
  57.         return [
  58.             'id' => $id,
  59.             'className' => $className,
  60.             'data' => $data,
  61.             'style' => $style
  62.         ];
  63.     }
  64. }