<?php
namespace App\Blocks;
abstract class AbstractBaseBlock implements BlockInterface
{
abstract public function getData(array $rawGutenbergBlockData): array;
public function buildTemplateContext(array $rawGutenbergBlockData): array
{
$data = $this->getData($rawGutenbergBlockData);
$id = $rawGutenbergBlockData['anchor'] ?? $rawGutenbergBlockData['id'];
$className = $rawGutenbergBlockData['class'];
if (!empty($rawGutenbergBlockData['className'])) {
$className .= ' ' . $rawGutenbergBlockData['className'];
}
if (!empty($rawGutenbergBlockData['align'])) {
$className .= ' align' . $rawGutenbergBlockData['align'];
}
if (!empty($rawGutenbergBlockData['gradient'])) {
$className .= ' has-' . $rawGutenbergBlockData['gradient'];
}
$style = '';
if (!empty($rawGutenbergBlockData['style']) or !empty($rawGutenbergBlockData['gradient']) or !empty($rawGutenbergBlockData['backgroundColor']) or !empty($rawGutenbergBlockData['textColor'])) {
if (!empty($rawGutenbergBlockData['style']['color']['background'])) {
$style .= '#' . $id . '{background-color:' . $rawGutenbergBlockData['style']['color']['background'] . ';}';
}
if (!empty($rawGutenbergBlockData['backgroundColor'])) {
$style .= '#' . $id . '{background-color:' . $rawGutenbergBlockData['backgroundColor'] . ';}';
}
if (!empty($rawGutenbergBlockData['style']['color']['gradient'])) {
$style .= '#' . $id . ',#' . $id . ' .gradient-background{background:' . $rawGutenbergBlockData['style']['color']['gradient'] . ';}';
}
if (!empty($rawGutenbergBlockData['gradient'])) {
$style .= '#' . $id . '.has-' . $rawGutenbergBlockData['gradient'] . ',#' . $id . '.has-' . $rawGutenbergBlockData['gradient'] . ' .gradient-background{background:var(--wp--preset--gradient--' . $rawGutenbergBlockData['gradient'] . ') !important;}';
}
if (!empty($rawGutenbergBlockData['style']['color']['text'])) {
$style .= '#' . $id . ' *{color:' . $rawGutenbergBlockData['style']['color']['text'] . ';border-color:' . $rawGutenbergBlockData['style']['color']['text'] . ';}';
}
if (!empty($rawGutenbergBlockData['textColor'])) {
$style .= '#' . $id . ' *{color:' . $rawGutenbergBlockData['textColor'] . ';border-color:' . $rawGutenbergBlockData['textColor'] . ';}';
}
if (!empty($rawGutenbergBlockData['style']['spacing']['padding'])) {
$style .= '#' . $id . '{';
if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['top'])) {
$style .= 'padding-top:' . $rawGutenbergBlockData['style']['spacing']['padding']['top'] . ';';
}
if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['right'])) {
$style .= 'padding-right:' . $rawGutenbergBlockData['style']['spacing']['padding']['right'] . ';';
}
if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['bottom'])) {
$style .= 'padding-bottom:' . $rawGutenbergBlockData['style']['spacing']['padding']['bottom'] . ';';
}
if (!empty($rawGutenbergBlockData['style']['spacing']['padding']['left'])) {
$style .= 'padding-left:' . $rawGutenbergBlockData['style']['spacing']['padding']['left'] . ';';
}
$style .= '}';
}
}
return [
'id' => $id,
'className' => $className,
'data' => $data,
'style' => $style
];
}
}