You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
2.4 KiB
PHP

<?php
/**
* Represent a simple value or a dynamic one.
* Used for module attributes and content.
*
* @package Divi
* @subpackage Builder
* @since 3.17.2
*/
/**
* Class ET_Builder_Value.
*/
class ET_Builder_Value {
/**
* Flag whether the value is static or dynamic.
*
* @since 3.17.2
*
* @var bool
*/
protected $dynamic = false;
/**
* Value content. Represents the dynamic content type when dynamic.
*
* @since 3.17.2
*
* @var string
*/
protected $content = '';
/**
* Array of dynamic content settings.
*
* @since 3.17.2
*
* @var mixed[]
*/
protected $settings = array();
/**
* ET_Builder_Value constructor.
*
* @since 3.17.2
*
* @param boolean $dynamic Whether content is dynamic.
* @param string $content Value content.
* @param array $settings Dynamic content settings.
*/
public function __construct( $dynamic, $content, $settings = array() ) {
$this->dynamic = $dynamic;
$this->content = $content;
$this->settings = $settings;
}
/**
* Check if the value is dynamic or not.
*
* @since 3.17.2
*
* @return bool
*/
public function is_dynamic() {
return $this->dynamic;
}
/**
* Retrieve the value content.
*
* @since 4.4.4
*
* @return string
*/
public function get_content() {
return $this->content;
}
/**
* Get the resolved content.
*
* @since 3.17.2
*
* @param integer $post_id Post id.
*
* @return string
*/
public function resolve( $post_id ) {
if ( ! $this->dynamic ) {
return $this->content;
}
return et_builder_resolve_dynamic_content( $this->content, $this->settings, $post_id, 'display' );
}
/**
* Get the static content or a serialized representation of the dynamic one.
*
* @since 3.17.2
*
* @return string
*/
public function serialize() {
if ( ! $this->dynamic ) {
return $this->content;
}
return et_builder_serialize_dynamic_content( $this->dynamic, $this->content, $this->settings );
}
/**
* Get ettings value.
*
* @since 4.23.2
*
* @param string $setting_name Setting name.
*
* @return mixed
*/
public function get_settings( $setting_name ) {
return $this->settings[ $setting_name ];
}
/**
* Set settings value.
*
* @since 4.23.2
*
* @param string $setting_name Setting name.
* @param mixed $setting_value Setting value.
*/
public function set_settings( $setting_name, $setting_value ) {
$this->settings[ $setting_name ] = $setting_value;
}
}