171 lines
3.1 KiB
PHP
171 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Control base class
|
|
*/
|
|
|
|
/**
|
|
* CX_Controls_Base abstract class
|
|
*/
|
|
if ( ! class_exists( 'CX_Controls_Base' ) ) {
|
|
|
|
/**
|
|
* CX_Controls_Base Abstract Class
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
abstract class CX_Controls_Base {
|
|
|
|
/**
|
|
* Base URL
|
|
*
|
|
* @var null
|
|
*/
|
|
public $base_url = null;
|
|
|
|
/**
|
|
* Settings list
|
|
*
|
|
* @since 1.0.0
|
|
* @var array
|
|
*/
|
|
protected $settings = array();
|
|
|
|
/**
|
|
* Default settings array
|
|
*
|
|
* @var array
|
|
*/
|
|
public $defaults_settings = array();
|
|
|
|
/**
|
|
* Constructor method for the CX_Controls_Base class.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function __construct( $args = array() ) {
|
|
|
|
$this->defaults_settings['id'] = 'cx-control-' . uniqid();
|
|
$this->settings = wp_parse_args( $args, $this->defaults_settings );
|
|
|
|
$this->init();
|
|
|
|
add_action( 'wp_enqueue_scripts', array( $this, 'register_depends' ) );
|
|
add_action( 'admin_enqueue_scripts', array( $this, 'register_depends' ) );
|
|
}
|
|
|
|
/**
|
|
* Render methos. Each UI element must implement own method
|
|
* @return [type] [description]
|
|
*/
|
|
abstract public function render();
|
|
|
|
/**
|
|
* Optional additional initializtion for control. Can be overriden from child class if needed.
|
|
* @return [type] [description]
|
|
*/
|
|
public function init() {}
|
|
|
|
/**
|
|
* Retrun scripts dependencies list for current control.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_script_depends() {
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Register required dependencies
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register_depends() {}
|
|
|
|
/**
|
|
* Retrun styles dependencies list for current control.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_style_depends() {
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Set up base URL for next usage
|
|
*
|
|
* @param string $url array
|
|
*/
|
|
public function set_base_url( $url = '' ) {
|
|
$this->base_url = $url;
|
|
}
|
|
|
|
/**
|
|
* Get control value
|
|
*
|
|
* @since 1.0.0
|
|
* @return string control value.
|
|
*/
|
|
public function get_value() {
|
|
return $this->settings['value'];
|
|
}
|
|
|
|
/**
|
|
* Set control value
|
|
*
|
|
* @since 1.0.0
|
|
* @param [type] $value new.
|
|
*/
|
|
public function set_value( $value ) {
|
|
$this->settings['value'] = $value;
|
|
}
|
|
|
|
/**
|
|
* Get control name
|
|
*
|
|
* @since 1.0.0
|
|
* @return string control name.
|
|
*/
|
|
public function get_name() {
|
|
return $this->settings['name'];
|
|
}
|
|
|
|
/**
|
|
* Set control name
|
|
*
|
|
* @since 1.0.0
|
|
* @param [type] $name new control name.
|
|
* @throws Exception Invalid control name.
|
|
*/
|
|
public function set_name( $name ) {
|
|
$name = (string) $name;
|
|
if ( '' !== $name ) {
|
|
$this->settings['name'] = $name;
|
|
} else {
|
|
throw new Exception( "Invalid control name '" . $name . "'. Name can't be empty." );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns attributes string from attributes array
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_attr_string( $attr = array() ) {
|
|
|
|
$result = array();
|
|
|
|
foreach ( $attr as $key => $value ) {
|
|
|
|
if ( $key === $value ) {
|
|
$result[] = $key;
|
|
} else {
|
|
$result[] = sprintf( '%1$s="%2$s"', $key, $value );
|
|
}
|
|
|
|
}
|
|
|
|
return implode( ' ', $result );
|
|
|
|
}
|
|
}
|
|
}
|