Files
Roman Pyrih c2e100a763 first commit
2023-07-24 08:30:51 +02:00

160 lines
2.9 KiB
PHP

<?php
use \BrizyPlaceholders\ContentPlaceholder;
use BrizyPlaceholders\ContextInterface;
use \BrizyPlaceholders\PlaceholderInterface;
abstract class Brizy_Content_Placeholders_Abstract extends Brizy_Admin_Serializable implements PlaceholderInterface
{
const DISPLAY_INLINE = 'inline';
const DISPLAY_BLOCK = 'block';
/**
* @return string
*/
protected $label;
/**
* @return string
*/
protected $placeholder;
/**
* @var string
*/
protected $display = self::DISPLAY_INLINE;
protected $group = '';
/**
* It should return an unique identifier of the placeholder
*
* @return mixed
*/
public function getUid()
{
return md5(microtime());
}
public function support($placeholderName) {
return $this->getPlaceholder()==$placeholderName;
}
public function shouldFallbackValue($value, ContextInterface $context, ContentPlaceholder $placeholder)
{
return empty($value);
}
public function getFallbackValue(ContextInterface $context, ContentPlaceholder $placeholder)
{
$attributes = $placeholder->getAttributes();
return isset($attributes[PlaceholderInterface::FALLBACK_KEY]) ? $attributes[PlaceholderInterface::FALLBACK_KEY] : '';
}
/**
* @return mixed
*/
public function getLabel() {
return $this->label;
}
/**
* @param mixed $label
*
* @return Brizy_Content_Placeholders_Abstract
*/
public function setLabel( $label ) {
$this->label = $label;
return $this;
}
/**
* @return string
*/
public function getDisplay() {
return $this->display;
}
/**
* @param string $display
*
* @return Brizy_Content_Placeholders_Abstract
*/
public function setDisplay( $display ) {
$this->display = $display;
return $this;
}
/**
* @return string
*/
public function getGroup()
{
return $this->group;
}
/**
* @param string $group
* @return Brizy_Content_Placeholders_Abstract
*/
public function setGroup($group)
{
$this->group = $group;
return $this;
}
/**
* @return mixed
*/
public function getPlaceholder() {
return $this->placeholder;
}
/**
* @param mixed $placeholder
*
* @return Brizy_Content_Placeholders_Abstract
*/
public function setPlaceholder( $placeholder ) {
$this->placeholder = $placeholder;
return $this;
}
/**
* @return array
*/
public function convertToOptionValue() {
return array(
'label' => $this->getLabel(),
'placeholder' => $this->getPlaceholder(),
'display' => $this->getDisplay(),
);
}
public function jsonSerialize() {
return array(
'label' => $this->getLabel(),
'placeholder' => $this->getReplacePlaceholder(),
'display' => $this->getDisplay(),
);
}
/**
* @return string
*/
public function getReplacePlaceholder() {
$placeholder = $this->getPlaceholder();
if ( ! empty( $placeholder ) ) {
return "{{" . $placeholder . "}}";
}
return "";
}
}