File "field.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woo-product-filter/classes/field.php
File size: 7.22 KB
MIME-type: text/x-php
Charset: utf-8
<?php
class FieldWpf {
public $name = '';
public $html = '';
public $type = '';
public $default = '';
public $value = '';
public $label = '';
public $maxlen = 0;
public $id = 0;
public $htmlParams = array();
public $validate = array();
public $description = '';
/**
* Wheter or not add error html element right after input field
* if bool - will be added standard element
* if string - it will be add this string
*/
public $errorEl = false;
/**
* Name of method in table object to prepare data before insert / update operations
*/
public $adapt = array( 'HtmlWpf' => '', 'dbFrom' => '', 'dbTo' => '' );
/**
* Init database field representation
*
* @param string $html html type of field (text, textarea, etc. @see html class)
* @param string $type database type (int, varcahr, etc.)
* @param mixed $default default value for this field
*/
public function __construct( $name, $html = 'text', $type = 'other', $default = '', $label = '', $maxlen = 0, $adaption = array(), $validate = '', $description = '' ) {
$this->name = $name;
$this->html = $html;
$this->type = $type;
$this->default = $default;
$this->value = $default; //Init field value same as default
$this->label = $label;
$this->maxlen = $maxlen;
$this->description = $description;
if ($adaption) {
$this->adapt = $adaption;
}
if ($validate) {
$this->setValidation($validate);
}
if (( 'varchar' == $type ) && !empty($maxlen) && !in_array('validLen', $this->validate)) {
$this->addValidation('validLen');
}
}
/**
* Function setErrorEl
*
* @param mixed $errorEl - if bool and "true" - than we will use standard error element, if string - we will use this string as error element
*/
public function setErrorEl( $errorEl ) {
$this->errorEl = $errorEl;
}
public function getErrorEl() {
return $this->errorEl;
}
public function setValidation( $validate ) {
if (is_array($validate)) {
$this->validate = $validate;
} else {
if (strpos($validate, ',')) {
$this->validate = array_map('trim', explode(',', $validate));
} else {
$this->validate = array(trim($validate));
}
}
}
public function addValidation( $validate ) {
$this->validate[] = $validate;
}
/**
* Set $value property.
* Sure - it is public and can be set directly, but it can be more
* comfortable to use this method in future
*
* @param mixed $value value to be set
*/
public function setValue( $value, $fromDB = false ) {
if (isset($this->adapt['dbFrom']) && $this->adapt['dbFrom'] && $fromDB) {
$value = FieldAdapterWpf::_($value, $this->adapt['dbFrom'], FieldAdapterWpf::DB);
}
$this->value = $value;
}
public function setLabel( $label ) {
$this->label = $label;
}
public function setHtml( $html ) {
$this->html = $html;
}
public function getHtml() {
return $this->html;
}
public function setName( $name ) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function getValue() {
return $this->value;
}
public function getLabel() {
return $this->label;
}
public function setID( $id ) {
$this->id = $id;
}
public function getID() {
return $this->id;
}
public function setAdapt( $adapt ) {
$this->adapt = $adapt;
}
public function displayValue() {
$value = '';
switch ($this->html) {
case 'checkboxlist':
$options = $this->getHtmlParam('OptionsWpf');
$value = array();
if (!empty($options) && is_array($options)) {
foreach ($options as $opt) {
if (isset($opt['checked']) && $opt['checked']) {
$value[] = $opt['text'];
}
}
}
if (empty($value)) {
$value = esc_html__('N/A', 'woo-product-filter');
} else {
$value = implode('<br />', $value);
}
break;
case 'selectbox':
case 'radiobuttons':
$options = $this->getHtmlParam('OptionsWpf');
if (!empty($options) && !empty($options[ $this->value ])) {
$value = $options[ $this->value ];
} else {
$value = esc_html__('N/A', 'woo-product-filter');
}
break;
default:
if ('' == $this->value) {
$value = esc_html__('N/A', 'woo-product-filter');
} else {
if (is_array($this->value)) {
$options = $this->getHtmlParam('OptionsWpf');
if (!empty($options) && is_array($options)) {
$valArr = array();
foreach ($this->value as $v) {
$valArr[] = $options[$v];
}
$value = recImplodeWpf('<br />', $valArr);
} else {
$value = recImplodeWpf('<br />', $this->value);
}
} else {
$value = $this->value;
}
}
break;
}
return $value;
}
public function showValue() {
HtmlWpf::echoEscapedHtml($this->displayValue());
}
public function addHtmlParam( $name, $value ) {
$this->htmlParams[$name] = $value;
}
/**
* Alias for addHtmlParam();
*/
public function setHtmlParam( $name, $value ) {
$this->addHtmlParam($name, $value);
}
public function setHtmlParams( $params ) {
$this->htmlParams = $params;
}
public function getHtmlParam( $name ) {
return isset($this->htmlParams[$name]) ? $this->htmlParams[$name] : false;
}
/**
* Check if the element exists in array
*
* @param array $param
*/
public function checkVarFromParam( $param, $element ) {
return UtilsWpf::xmlAttrToStr($param, $element);
}
/**
* Prepares configuration options
*
* @param file $xml
* @return array $config_params
*/
public function prepareConfigOptions( $xml ) {
// load xml structure of parameters
$config = simplexml_load_file($xml);
$config_params = array();
foreach ($config->params->param as $param) {
// read the variables
$name = $this->checkVarFromParam($param, 'name');
$type = $this->checkVarFromParam($param, 'type');
$label = $this->checkVarFromParam($param, 'label');
$helper = $this->checkVarFromParam($param, 'HelperWpf');
$module = $this->checkVarFromParam($param, 'ModuleWpf');
$values = $this->checkVarFromParam($param, 'values');
$default = $this->checkVarFromParam($param, 'default');
$description = $this->checkVarFromParam($param, 'description');
if ('' == $name) {
continue;
}
// fill in the variables to configuration array
$config_params[$name] = array(
'type' => $type,
'label' => $label,
'HelperWpf' => $helper,
'ModuleWpf' => $module,
'values' => $values,
'default' => $default,
'description' => $description,
);
}
return $config_params;
}
public function setDescription( $desc ) {
$this->description = $desc;
}
public function getDescription() {
return $this->description;
}
/**
* This method will prepare internal value to it's type
*
* @see $this->type
* @return mixed - prepared value on the basis of $this->type
*/
public function valToType() {
switch ($this->type) {
case 'int':
case 'mediumint':
case 'smallint':
$this->value = (int) $this->value;
break;
case 'float':
$this->value = (float) $this->value;
break;
case 'double':
case 'decimal':
$this->value = (float) $this->value;
break;
}
return $this->type;
}
}