Нет описания

Column.php 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace MailPoet\Form\Block;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\WP\Functions as WPFunctions;
  5. class Column {
  6. /** @var WPFunctions */
  7. private $wp;
  8. public function __construct(
  9. WPFunctions $wp
  10. ) {
  11. $this->wp = $wp;
  12. }
  13. public function render(array $block, string $content): string {
  14. return "<div {$this->getClass($block['params'])}{$this->getStyles($block['params'])}>$content</div>";
  15. }
  16. private function getStyles(array $params): string {
  17. $styles = [];
  18. if (
  19. !empty($params['width']) &&
  20. (strlen($params['width']) > 0 && ctype_digit(substr($params['width'], 0, 1)))
  21. ) {
  22. $widthValue = $this->wp->escAttr($params['width']) . (is_numeric($params['width']) ? '%' : '');
  23. $styles[] = "flex-basis:{$widthValue}";
  24. }
  25. if (!empty($params['padding']) && is_array($params['padding'])) {
  26. $styles[] = $this->wp->escAttr(
  27. "padding:{$params['padding']['top']} {$params['padding']['right']} {$params['padding']['bottom']} {$params['padding']['left']}"
  28. );
  29. }
  30. if (isset($params['text_color'])) {
  31. $styles[] = "color:{$params['text_color']};";
  32. }
  33. if (!empty($params['background_color'])) {
  34. $styles[] = "background-color:{$params['background_color']};";
  35. }
  36. if (isset($params['gradient'])) {
  37. $styles[] = "background:{$params['gradient']};";
  38. }
  39. if (!count($styles)) {
  40. return '';
  41. }
  42. return ' style="' . implode(';', $styles) . ';"';
  43. }
  44. private function getClass(array $params): string {
  45. $classes = ['mailpoet_form_column'];
  46. if (!empty($params['vertical_alignment'])) {
  47. $classes[] = "mailpoet_vertically_align_{$params['vertical_alignment']}";
  48. }
  49. if (!empty($params['class_name'])) {
  50. $classes[] = $params['class_name'];
  51. }
  52. $classes = implode(' ', $classes);
  53. return "class=\"{$this->wp->escAttr($classes)}\"";
  54. }
  55. }