null, 1 => null, 2 => null, 3 => null, ); foreach (array_keys($_arg) as $key) { $_arg[$key] = array_shift($arg); } $arg = $_arg; $glue = '_'; $method = sprintf('%s%s', $glue, $name); if (false === strpos($name, $glue)) { if (method_exists(__CLASS__, $method)) { $data = call_user_func(array(__CLASS__, $method), $arg[0], $arg[1], $arg[2], $arg[3]); echo $data; // WPCS: xss ok. } } else { if (method_exists(__CLASS__, $name)) { return call_user_func(array(__CLASS__, $name), $arg[0], $arg[1], $arg[2], $arg[3]); } } return ''; } /** * Call method for returm or output * * @param string $name Name function. * @param array $arg Parameter function. * * @return mixed */ public static function __callStatic($name, $arg) { if (empty(self::$_name)) { self::$_name = TINVWL_PREFIX; } $_arg = array( 0 => null, 1 => null, 2 => null, 3 => null, ); foreach (array_keys($_arg) as $key) { $_arg[$key] = array_shift($arg); } $arg = $_arg; $glue = '_'; $method = sprintf('%s%s', $glue, $name); if (false === strpos($name, $glue)) { if (method_exists(__CLASS__, $method)) { $data = call_user_func(array(__CLASS__, $method), $arg[0], $arg[1], $arg[2], $arg[3]); echo $data; // WPCS: xss ok. } } else { if (method_exists(__CLASS__, $name)) { return call_user_func(array(__CLASS__, $name), $arg[0], $arg[1], $arg[2], $arg[3]); } } return ''; } /** * Create input html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _text($data, $value = '', $extra = '') { $load = true; if (is_array($extra)) { if (isset($extra['load'])) { $load = (bool)$extra['load']; unset($extra['load']); } } if ($load) { $value = esc_attr(self::getvalue((is_array($data) ? @$data['name'] : $data), $value)); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged } $defaults = array( 'type' => is_array($data) ? @$data['type'] : 'text', 'name' => is_array($data) ? @$data['name'] : $data, 'value' => $value, ); return sprintf('', self::__parseatr($data, $defaults), self::__atrtostr($extra)); } /** * Create input html element with type number * * @param mixed $data Name field or array attributes. * @param integer|float $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _number($data, $value = 0, $extra = '') { $class = sprintf(' %s-form-number', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s" ', $class); } if (!is_array($data)) { $data = array('name' => $data); } $data['type'] = 'number'; return self::_text($data, $value, $extra); } /** * Create color picker * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string * @see colorpicker * */ public static function _color($data = '', $value = '', $extra = '') { $class = sprintf(' %s-form-color', self::$_name); $load = true; if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } if (isset($extra['load'])) { $load = (bool)$extra['load']; unset($extra['load']); } } else { $extra .= sprintf(' class="%s" ', $class); } if ($load) { $value = self::getvalue((is_array($data) ? @$data['name'] : $data), $value); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged } $defaults = array( 'type' => 'text', 'name' => is_array($data) ? '' : $data, 'value' => $value, ); return sprintf('
', self::__parseatr($data, $defaults), self::__atrtostr($extra)); } /** * Create date input * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string * @see jquery-ui-datepicker * */ public static function _date($data = '', $value = '', $extra = '') { if (!is_array($data)) { $data = array('name' => $data); } $extra_js = ''; $value = self::getvalue($data['name'], $value); $class = sprintf(' %s-date', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s" ', $class); } if (is_array($extra)) { if (isset($extra['date'])) { $extra_js = $extra['date']; unset($extra['date']); } } $data['id'] = self::__createid($data['name']); return sprintf("%s", self::_text($data, $value, $extra), $data['id'], self::__atrtostrjs($extra_js)); } /** * Create select html element with time period * * @param mixed $data Name field or array attributes. * @param int $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _time($data = '', $value = '', $extra = '') { $class = sprintf(' %s-time', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s"', $class); } $options = array(); for ($i = 0; $i < 24; $i++) { $options[$i] = sprintf('%02d:00', $i); } return self::_select($data, intval($value), $extra, $options); } /** * Create textarea html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _textarea($data = '', $value = '', $extra = '') { $value = self::getvalue((is_array($data) ? @$data['name'] : $data), $value); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged $defaults = array( 'name' => is_array($data) ? '' : $data, 'cols' => '40', 'rows' => '20', ); return sprintf('', self::__parseatr($data, $defaults), self::__atrtostr($extra), esc_textarea($value)); } /** * Output wysiwyg editor * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param array $extra Styling or Custom variable. */ public static function editor($data = '', $value = '', $extra = array()) { if (!is_array($data)) { $data = array('name' => $data); } $value = self::getvalue($data['name'], $value); $data['id'] = self::__createid($data['name']); $extra['textarea_name'] = $data['name']; wp_editor($value, $data['id'], $extra); } /** * Create input html element with type checkbox * * @param mixed $data Name field or array attributes. * @param boolean $checked Value. * @param mixed $extra Styling or Custom variable. * @param string $value Value for form. * * @return string */ public static function _checkbox($data = '', $checked = false, $extra = '', $value = '') { $load = true; if (is_array($extra)) { if (isset($extra['load'])) { $load = (bool)$extra['load']; unset($extra['load']); } } if ($load) { $checked = self::getvalue((is_array($data) ? @$data['name'] : $data), $checked); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged $value = self::getoption((is_array($data) ? @$data['name'] : $data), $value); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged } if (is_array($value)) { $value = array_shift($value); } if (!is_bool($checked)) { $checked = ($checked == $value) ? true : false; // WPCS: loose comparison ok. } $defaults = array( 'type' => 'checkbox', 'name' => (!is_array($data) ? $data : ''), 'value' => esc_html($value), ); if (is_array($data) && array_key_exists('checked', $data)) { $checked = $data['checked']; if (false == $checked) { // WPCS: loose comparison ok. unset($data['checked']); } else { $data['checked'] = 'checked'; } } if (true == $checked) { // WPCS: loose comparison ok. $defaults['checked'] = 'checked'; } else { unset($defaults['checked']); } return sprintf('', self::__parseatr($data, $defaults), self::__atrtostr($extra)); } /** * Create input html element with type radio * * @param mixed $data Name field or array attributes. * @param boolean $checked Value. * @param mixed $extra Styling or Custom variable. * @param string $value Value for form. * * @return string */ public static function _radio($data = '', $checked = false, $extra = '', $value = '') { if (!is_array($data)) { $data = array('name' => $data); } $data['type'] = 'radio'; return self::_checkbox($data, $checked, $extra, $value); } /** * Create select html element * * @param mixed $data Name field or array attributes. * @param mixed $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _select($data = '', $value = array(), $extra = '', $options = array()) { $defaults = array(); if (!is_array($data)) { $data = array('name' => $data); $defaults = array('name' => $data); } $load = true; if (is_array($extra)) { if (isset($extra['load'])) { $load = (bool)$extra['load']; unset($extra['load']); } } if ($load) { $value = self::getvalue($data['name'], $value); } $options = self::getoption($data['name'], $options); if (!is_array($value)) { $value = array($value); } if (!is_array($options)) { $options = array($options); } $extra = self::__atrtostr($extra); $multiple = (count($value) > 1 && false === stripos($extra, 'multiple')) ? ' multiple="multiple"' : ''; if ($multiple || strpos($extra, 'multiple') > -1) { $data['name'] = $data['name'] . '[]'; } $form = ''; foreach ($options as $key => $val) { $key = (string)$key; if (is_array($val)) { if (empty($val)) { continue; } $opt = ''; foreach ($val as $opt_key => $opt_val) { $sel = in_array($opt_key, $value) ? ' selected="selected"' : ''; // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict $opt .= sprintf('', esc_attr($opt_key), $sel, esc_html($opt_val)); } $form .= sprintf('%s', esc_attr($key), esc_html($opt)); } else { $sel = in_array($key, $value) ? ' selected="selected"' : ''; // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict $form .= sprintf('', esc_attr($key), $sel, esc_html($val)); } } return sprintf('', rtrim(self::__parseatr($data, $defaults)), $extra, $multiple, $form); } /** * Create select html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _previewselect($data = '', $value = '', $extra = '', $options = array()) { if (!is_array($data)) { $data = array('name' => $data); } $class = sprintf(' %s-form-preview-select', self::$_name); $extra_select = array('class' => 'form-control'); $extra_button = array(); $extra_url = ''; $load = true; if (is_array($extra)) { if (isset($extra['load'])) { $load = (bool)$extra['load']; unset($extra['load']); } } if ($load) { $value = self::getvalue($data['name'], $value); } if (is_array($extra)) { if (isset($extra['select'])) { $extra_select = $extra['select']; unset($extra['select']); } if (isset($extra['button'])) { $extra_button = $extra['button']; unset($extra['button']); } if (isset($extra['url'])) { $extra_url = (string)$extra['url']; unset($extra['url']); } } else { $extra_select = $extra_button = $extra; } $extra_url = str_replace('%25', '%', $extra_url); if (is_array($extra_select)) { $extra_select['onchange'] = 'jQuery(this).next().find(\'.tinvwl-btn\').attr(\'href\', \'' . esc_attr($extra_url) . '\'.replace(/\%s/i, jQuery(this).val().trim()));'; } else { $extra_select .= ' onchange="jQuery(this).next().find(\'.tinvwl-btn\').attr(\'href\', \'' . esc_attr($extra_url) . '\'.replace(/\%s/i, jQuery(this).val().trim()));"'; } if (is_array($extra_button)) { $extra_button['class'] = 'tinvwl-btn smaller'; $extra_button['href'] = sprintf($extra_url, $value); } else { $extra_button .= ' class="tinvwl-btn smaller" href="' . sprintf($extra_url, $value); } return sprintf('
%s
%s
', $class, self::_select($data, $value, $extra_select, $options), self::_button($data, __('Preview', 'ti-woocommerce-wishlist'), $extra_button)); } /** * Create upload file elements * * @param string $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _uploadfile($data = '', $value = '', $extra = '') { if (!is_array($data)) { $data = array('name' => $data); } $value = self::getvalue($data['name'], $value); $extra_field = ''; $extra_button = ''; $value_button = ''; $mimefiles = ''; if (is_array($extra)) { if (isset($extra['type'])) { $mimefiles = $extra['type']; unset($extra['type']); } if (isset($extra['field'])) { if (is_array($extra['field'])) { $extra_field = $extra['field']; } unset($extra['field']); } if (isset($extra['button'])) { $extra_button = $extra['button']; unset($extra['button']); } if (is_array($extra_field)) { foreach ($extra as $key => $val) { $extra_field[$key] = $val; } } else { $extra_field .= self::__atrtostr($extra); } if (is_array($extra_button)) { if (isset($extra_button['value'])) { $value_button = $extra_button['value']; unset($extra_button['value']); } elseif (isset($extra_button['name'])) { $value_button = $extra_button['name']; unset($extra_button['name']); } foreach ($extra as $key => $val) { $extra_button[$key] = $val; } } else { $extra_button .= self::__atrtostr($extra); } } else { $extra_button = $extra_field = $extra; } // End if(). if (!is_array($mimefiles)) { $mimefiles = array($mimefiles); } $mimefiles = array_filter($mimefiles); $mimefiles = wp_json_encode($mimefiles); $data['type'] = 'text'; wp_enqueue_media(); return sprintf("
%s%s
%s
", // @codingStandardsIgnoreLine Squiz.Strings.DoubleQuoteUsage.NotRequired '
', self::_text($data, $value, $extra_field), self::_text(array( 'name' => $data['name'] . '-btn', 'type' => 'button', 'class' => 'tinvwl-btn white smaller', ), $value_button, $extra_button), $data['name'] ); } /** * Create select html element with attribute multiple * * @param mixed $data Name field or array attributes. * @param mixed $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _multiselect($data = '', $value = array(), $extra = '', $options = array()) { $extra = self::__atrtostr($extra); if (stripos($extra, 'multiple') === false) { $extra .= ' multiple="multiple"'; } return self::_select($data, $value, $extra, $options); } /** * Create group input html element with type checkbox * * @param mixed $data Name field or array attributes. * @param mixed $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _multicheckbox($data = '', $value = array(), $extra = '', $options = array()) { $class = sprintf(' %s-multicheckbox', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s" ', $class); } if (!is_array($data)) { $data = array('name' => $data); } $value = self::getvalue($data['name'], $value); $options = self::getoption($data['name'], $options); if (!is_array($value)) { $value = array($value); } $value = array_filter($value); if (!is_array($options)) { $options = array($options); } $before = ''; $after = ''; if (is_array($extra)) { if (isset($extra['before'])) { $before = sprintf('
%s
', self::$_name, $extra['before']); unset($extra['before']); } if (isset($extra['after'])) { $after = sprintf('
%s
', self::$_name, $extra['after']); unset($extra['after']); } } $i = 0; $name = $data['name']; foreach ($options as $key => $_data) { $data['name'] = $name . '[' . $i . ']'; $i++; $data['id'] = self::__createid($data['name'] . $key); $_form = self::_checkbox($data, in_array($key, $value), array('load' => false), esc_html($key)); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict $options [$key] = self::_label($data['id'], $_data, array( 'before' => $_form, )); } $glue = '
  • '; return sprintf('
    %s%s
    ', self::__atrtostr($extra), $before, implode($glue, $options), $after); } /** * Create group input html element with type radio * * @param mixed $data Name field or array attributes. * @param mixed $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _multiradio($data = '', $value = '', $extra = '', $options = array()) { if (!is_array($data)) { $data = array('name' => $data); } $value = self::getvalue($data['name'], $value); $options = self::getoption($data['name'], $options); if (!is_array($value)) { $value = array($value); } if (!is_array($options)) { $options = array($options); } $separator = ' '; if (is_array($extra)) { if (isset($extra['separator'])) { $separator = $extra['separator']; unset($extra['separator']); } $extra['load'] = false; } else { $extra = array('load' => false); } $form = ''; foreach ($options as $key => $_data) { $data['id'] = self::__createid($data['name'] . $key); $_form = self::_radio($data, in_array($key, $value), $extra, esc_html($key)); // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict $form .= self::_label($data['id'], $_data, array( 'before' => $_form, )); $form .= $separator; } return $form; } /** * Create group select html element with time period * * @param mixed $data Name field or array attributes. * @param array $value Value. * @param array $extra Styling or Custom variable. * * @return string */ public static function _timeperiod($data = '', $value = array(), $extra = array()) { if (!is_array($data)) { $data = array('name' => $data); } $label = array('', ''); $label_extra = array('', ''); $value = (array)self::getvalue($data['name'], $value); $separator = ' '; if (is_array($extra)) { if (isset($extra['separator'])) { $separator = $extra['separator']; unset($extra['separator']); } if (isset($extra['label'])) { $label_extra = $extra['label']; unset($extra['label']); for ($i = 0; $i < count($label); $i++) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed if (isset($label_extra[$i]['text'])) { $label[$i] = $label_extra[$i]['text']; unset($label_extra[$i]['text']); } } } $extra['load'] = false; } else { $extra = array('load' => false); } $form = array(); for ($i = 0; $i < count($label); $i++) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed $_data = $data; $_data['name'] .= "[$i]"; $label_extra[$i]['after'] = self::_time($_data, (isset($value[$i]) ? $value[$i] : ''), $extra); $form[] = self::_label($_data['name'], $label[$i], $label_extra[$i]); } $form = sprintf('
    %s
    ', self::$_name, implode($separator, $form)); return $form; } /** * Create group input html element with date period * * @param mixed $data Name field or array attributes. * @param array $value Value. * @param array $extra Styling or Custom variable. * * @return string */ public static function _dateperiod($data = '', $value = array(), $extra = array()) { if (!is_array($data)) { $data = array('name' => $data); } $label = array('', ''); $label_extra = array('', ''); $value = (array)self::getvalue($data['name'], $value); $separator = ' '; if (is_array($extra)) { if (isset($extra['separator'])) { $separator = $extra['separator']; unset($extra['separator']); } if (isset($extra['label'])) { $label_extra = $extra['label']; unset($extra['label']); for ($i = 0; $i < count($label); $i++) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed if (isset($label_extra[$i]['text'])) { $label[$i] = $label_extra[$i]['text']; unset($label_extra[$i]['text']); } } } $extra['load'] = false; } else { $extra = array('load' => false); } $form = array(); for ($i = 0; $i < count($label); $i++) { // @codingStandardsIgnoreLine Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed $_data = $data; $_data['name'] .= "[$i]"; $_data['id'] = self::__createid($data['name'] . '[' . ($i ? 0 : 1) . ']'); $extra['date']['onClose'] = sprintf("function(selectedDate){ $('#%s').datepicker('option','%sDate',selectedDate);}", $_data['id'], ($i ? 'max' : 'min')); $label_extra[$i]['after'] = self::_date($_data, (isset($value[$i]) ? $value[$i] : ''), $extra); $form[] = self::_label($_data['name'], $label[$i], $label_extra[$i]); } $form = sprintf('
    %s
    ', self::$_name, implode($separator, $form)); return $form; } /** * Create HTML field * * @param string $data Name field or array attributes. * @param string $html HTML text. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _html($data = '', $html = '', $extra = '') { if (is_array($extra)) { foreach ($extra as $key => $value) { $html = str_replace('{' . $key . '}', (string)$value, $html); } } return $html; } /** * Create button html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _button($data = '', $value = '', $extra = '') { $defaults = array( 'type' => 'button', 'name' => is_array($data) ? '' : $data, 'value' => esc_attr($value), ); return sprintf('', self::__parseatr($data, $defaults), self::__atrtostr($extra), $value); } /** * Create quick submit button html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _button_submit_quick($data = '', $value = '', $extra = '') { return sprintf('
    %s
    ', self::$_name, self::_button_submit($data, $value, $extra)); } /** * Create submit button html element * * @param mixed $data Name field or array attributes. * @param string $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _button_submit($data = '', $value = '', $extra = '') { if (!is_array($data)) { $data = array('name' => $data); } $data['type'] = 'submit'; return self::_button($data, $value, $extra); } /** * Create label html element * * @param string $data Name field or array attributes. * @param string $value Value. * @param array $extra Styling or Custom variable. * * @return string */ public static function _label($data = '', $value = '', $extra = array()) { $attr = ''; if (!empty($data)) { $attr .= ' for="' . self::__createid($data) . '"'; } $before = ''; if (isset($extra['before'])) { $before = $extra['before']; unset($extra['before']); } $after = ''; if (isset($extra['after'])) { $after = $extra['after']; unset($extra['after']); } if (is_array($extra) && count($extra) > 0) { foreach ($extra as $key => $val) { if ('for' == $key) { // WPCS: loose comparison ok. continue; } $attr .= sprintf(' %s="%s"', $key, $val); } } return sprintf('', $attr, $before, $value, $after); } /** * Create tag id for html elements by using name * * @param string $name Name field. * @param string $separator Separator name. * * @return string */ private static function __createid($name = '', $separator = '_') { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore $name = preg_replace('/[^A-Za-z0-9_-]{1}/i', $separator, $name); if (false === strpos($name, self::$_name)) { $name = self::$_name . $separator . $name; } return $name; } /** * Helper function for this Class. * Merge attribute array and create attribute string for html element * * @param mixed $attributes New attributes for element. * @param array $default Default attributes for element. * * @return string */ private static function __parseatr($attributes, $default) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore if (is_array($attributes)) { foreach ($default as $key => $val) { if (isset($attributes[$key])) { $default[$key] = $attributes[$key]; unset($attributes[$key]); } } if (count($attributes) > 0) { $default = array_merge($default, $attributes); } } if (!isset($default['name'])) { $default['name'] = self::__rndmane(); } $default['id'] = self::__createid((!isset($default['id']) ? $default['name'] : $default['id'])); $att = ''; foreach ($default as $key => $val) { if (is_array($val)) { $val = implode(', ', $val); } $att .= sprintf('%s="%s" ', $key, $val); } return $att; } /** * Helper function for this Class. * Create attribute string for html element * * @param mixed $attributes New attributes for element. * * @return string */ static function __atrtostr($attributes) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore if (empty($attributes)) { return ''; } if (is_string($attributes)) { return sprintf('%s ', $attributes); } if (is_object($attributes)) { $attributes = (array)$attributes; } if (is_array($attributes)) { $atts = ''; foreach ($attributes as $key => $val) { if (is_array($val)) { $val = implode(', ', $val); } $atts .= sprintf('%s="%s" ', $key, $val); } return $atts; } return ''; } /** * Helper function for this Class. * Create attribute string for javascript object. * * @param mixed $attributes New attributes for element. * * @return string */ static function __atrtostrjs($attributes) { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore if (empty($attributes)) { return ''; } if (is_string($attributes)) { return sprintf('%s ', $attributes); } if (is_object($attributes)) { $attributes = (array)$attributes; } if (is_array($attributes)) { $atts = ''; foreach ($attributes as $key => $val) { if (is_array($val)) { $val = implode(', ', $val); } $atts .= sprintf('%s: %s,', $key, $val); } return $atts; } return ''; } /** * Generate random name if thies empty * * @return string */ private static function __rndmane() { // @codingStandardsIgnoreLine WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $data = ''; $length = rand(4, 10); for ($i = 0; $i < $length; $i++) { $data .= $characters[rand(0, strlen($characters) - 1)]; } return $data; } /** * Using for get value for element * * @param string $data Name value or array values. * @param mixed $value Value. * * @return mixed */ static function getvalue($data, $value = '') { if (isset(self::$value[$data])) { return self::$value[$data]; } else { $_value = filter_input(INPUT_POST, $data); if (is_null($_value)) { return $value; } else { return $_value; } } } /** * Set value for form element * * @param string $data Name value or array values. * @param mixed $value Value. * * @return mixed */ public static function setvalue($data, $value = '') { $_value = $value; if (is_array($data)) { foreach (array_keys(self::$value) as $key) { if (isset($data[$key])) { self::$value[$key] = $data[$key]; unset($data[$key]); } } if (count($data) > 0) { self::$value = array_merge(self::$value, $data); } } else { self::$value[$data] = $value; } return $_value; } /** * Remove value for element * * @param string $data Name value or array values. * @param void $value Value. * * @return mixed */ public static function removevalue($data, $value = '') { if (is_array($data)) { foreach ($data as $val) { if (isset(self::$value[$val])) { unset(self::$value[$val]); } } } else { unset(self::$value[$data]); } return $value; } /** * Using for get options for element * * @param string $data Name value or array values. * @param array $option Value. * * @return array */ static function getoption($data, $option = array()) { if (isset(self::$option[$data])) { return self::$option[$data]; } return $option; } /** * Set options for form element * * @param string $data Name value or array values. * @param array $option Value. * * @return array */ public static function setoptions($data, $option = array()) { $_option = $option; if (is_array($data)) { foreach (array_keys(self::$option) as $key) { if (isset($data[$key])) { self::$option[$key] = $data[$key]; unset($data[$key]); } } if (count($data) > 0) { self::$option = array_merge(self::$option, $data); } } else { self::$option[$data] = $option; } return $_option; } /** * Remove options for element * * @param string $data Name value or array values. * @param void $option Value. * * @return mixed */ public static function removeoptions($data, $option = array()) { if (is_array($data)) { foreach ($data as $val) { if (isset(self::$option[$val])) { unset(self::$option[$val]); } } } else { unset(self::$option[$data]); } return $option; } /** * Create input html element with type checkbox and class on/off * * @param mixed $data Name field or array attributes. * @param boolean $checked Value. * @param mixed $extra Styling or Custom variable. * @param string $value Value for form. * * @return string */ public static function _checkboxonoff($data = '', $checked = false, $extra = '', $value = 'on') { $class = sprintf(' %s-form-onoff', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s" ', $class); } return self::_checkbox($data, $checked, $extra, $value); } /** * Create group input html element with type radio and class box * * @param mixed $data Name field or array attributes. * @param mixed $value Value. * @param mixed $extra Styling or Custom variable. * @param array $options Options for form. * * @return string */ public static function _multiradiobox($data = '', $value = '', $extra = '', $options = array()) { if (!is_array($data)) { $data = array('name' => $data); } $extra_input = ''; $class = sprintf(' %s-form-multirbox', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] .= $class; } else { $extra['class'] = $class; } if (isset($extra['input'])) { $extra_input = $extra['input']; unset($extra['input']); } } else { $extra .= sprintf(' class="%s" ', $class); } return sprintf('
    %s
    ', self::__createid($data['name']), self::__atrtostr($extra), self::_multiradio($data, $value, $extra_input, $options)); } /** * Create input html element with type range * * @param mixed $data Name field or array attributes. * @param integer|float $value Value. * @param mixed $extra Styling or Custom variable. * * @return string */ public static function _numberrange($data = '', $value = 0, $extra = array()) { if (!is_array($data)) { $data = array('name' => $data); } $data['type'] = 'range'; $class = sprintf(' %s-form-range', self::$_name); if (is_array($extra)) { if (isset($extra['class'])) { $extra['class'] = $class; } else { $extra['class'] = $class; } } else { $extra .= sprintf(' class="%s" ', $class); } return self::_text($data, $value, $extra); } }