ACC SHELL
<?php
/**
* Option object
* @package Simple Lightbox
* @subpackage Options
* @author Archetyped
*/
class SLB_Option extends SLB_Field {
/* Properties */
public $hook_prefix = 'option';
/**
* Determines whether option will be sent to client
* @var bool
*/
var $in_client = false;
/**
* Child mapping
* @see SLB_Field_Base::map
* @var array
*/
var $map = array (
'default' => 'data',
'attr' => 'properties'
);
var $property_priority = array ('id', 'data', 'parent');
/* Init */
/**
* @see SLB_Field::__construct()
* @uses parent::__construct() to initialize instance
* @param $id
* @param $title
* @param $default
*/
function __construct($id, $title = '', $default = '') {
// Normalize properties
$args = func_get_args();
$defaults = array ('title' => '', 'default' => '');
$props = $this->make_properties($args, $defaults);
// Validate
if ( is_scalar($id) )
$props['id'] = $id;
if ( !is_string($props['title']) )
$props['title'] = '';
// Send to parent constructor
parent::__construct($props);
}
/* Getters/Setters */
/**
* Retrieve default value for option
* @return mixed Default option value
*/
function get_default($context = '') {
return $this->get_data($context, false);
}
/**
* Sets parent based on default value
*/
function set_parent($parent = null) {
$p = $this->get_parent();
if ( empty($parent) && empty($p) ) {
$parent = 'text';
$d = $this->get_default();
if ( is_bool($d) )
$parent = 'checkbox';
$parent = 'option_' . $parent;
} elseif ( !empty($p) && !is_object($p) ) {
$parent =& $p;
}
parent::set_parent($parent);
}
/**
* Set in_client property
* @uses this::in_client
* @param bool Whether or not option should be included in client output (Default: false)
* @return void
*/
function set_in_client($in_client = false) {
$this->in_client = !!$in_client;
}
/**
* Determines whether option should be included in client output
* @uses this::in_client
* @return bool TRUE if option is included in client output
*/
function get_in_client() {
return $this->in_client;
}
/* Formatting */
/**
* Format data as string for browser output
* @see SLB_Field_Base::format()
* @param mixed $value Data to format
* @param string $context (optional) Current context
* @return string Formatted value
*/
function format_display($value, $context = '') {
if ( !is_string($value) ) {
if ( is_bool($value) ) {
$value = ( $value ) ? __('Enabled', 'simple-lightbox') : __('Disabled', 'simple-lightbox');
}
elseif ( is_null($value) )
$value = '';
else
$value = strval($value);
} elseif ( empty($value) ) {
$value = 'empty';
}
return htmlentities($value);
}
/**
* Format data using same format as default value
* @see SLB_Field_Base::format()
* @param mixed $value Data to format
* @param string $context (optional) Current context
* @return mixed Formatted option value
*/
function format_default($value, $context = '') {
// Get default value
$d = $this->get_default();
if ( empty($d) )
return $value;
if ( is_bool($d) )
$value = $this->format_bool($value);
elseif ( is_string($d) )
$value = $this->format_string($value);
return $value;
}
/**
* Format data as boolean (true/false)
* @see SLB_Field_Base::format()
* @param mixed $value Data to format
* @param string $context (optional) Current context
* @return bool Option value
*/
function format_bool($value, $context = '') {
if ( !is_bool($value) )
$value = !!$value;
return $value;
}
/**
* Format data as string
* @see SLB_Field_Base::format()
* @param mixed $value Data to format
* @param string $context (optional) Current context
* @return string Option string value
*/
function format_string($value, $context = '') {
if ( is_bool($value) ) {
$value = ( $value ) ? 'true' : 'false';
}
elseif ( is_object($value) ) {
$value = get_class($value);
}
elseif ( is_array($value) ) {
$value = implode(' ', $value);
}
else {
$value = strval($value);
}
return $value;
}
}
ACC SHELL 2018