示例#1
0
 function _get_simple_input($var, $options, $override_value)
 {
     if (empty($options['type'])) {
         return "<!-- _get_simple_input called without a type option set. -->\n";
     }
     $scrublist['textarea']['value'] = true;
     $scrublist['file']['value'] = true;
     $scrublist['dropdown']['value'] = true;
     $scrublist['dropdown']['type'] = true;
     $defaults = array();
     if (isset($this->_args['widget_instance']) && @method_exists($this->_args['widget_instance'], 'get_field_name')) {
         $defaults['name'] = $this->_args['widget_instance']->get_field_name($var);
     } else {
         if (empty($this->_args['prefix'])) {
             $defaults['name'] = $var;
         } else {
             $defaults['name'] = "{$this->_args['prefix']}-{$var}";
         }
     }
     $input_group_name = $defaults['name'];
     $var = str_replace('[]', '', $var);
     $clean_var = trim(preg_replace('/[^a-z0-9_]+/i', '-', $var), '-');
     if (!empty($this->_input_group)) {
         if (false === strpos($defaults['name'], '[')) {
             $defaults['name'] = "[{$defaults['name']}]";
         } else {
             $defaults['name'] = preg_replace('/^([^\\[]+)\\[/', '[$1][', $defaults['name']);
         }
         $input_group_name = $defaults['name'];
         $defaults['name'] = "{$this->_input_group}{$defaults['name']}";
         $clean_var = trim(preg_replace('/[^a-z0-9_]+/i', '-', $defaults['name']), '-');
     }
     if (isset($this->_args['widget_instance']) && @method_exists($this->_args['widget_instance'], 'get_field_id')) {
         $defaults['id'] = $this->_args['widget_instance']->get_field_id($var);
     } else {
         $defaults['id'] = $clean_var;
     }
     if (!empty($options['append_val_to_id']) && true === $options['append_val_to_id'] && !empty($options['value'])) {
         unset($options['append_val_to_id']);
         $defaults['id'] .= '-' . trim(preg_replace('/[^a-z0-9_]+/i', '-', $options['value']), '-');
     }
     $options = ITUtility::merge_defaults($options, $defaults);
     if (false === $override_value && isset($this->_options[$var])) {
         if (in_array($options['type'], array('checkbox', 'radio'))) {
             if (is_array($this->_options[$var]) && in_array($options['value'], $this->_options[$var]) || !is_array($this->_options[$var]) && (string) $this->_options[$var] === (string) $options['value']) {
                 $options['checked'] = 'checked';
             }
         } else {
             if ('dropdown' !== $options['type']) {
                 $options['value'] = $this->_options[$var];
             }
         }
     }
     if (!empty($this->_args['prefix']) && preg_match("|^{$this->_args['prefix']}-|", $options['name']) || empty($this->_args['prefix'])) {
         if (!isset($this->_used_inputs[$this->_input_group]) || !in_array($input_group_name, $this->_used_inputs[$this->_input_group])) {
             $this->_used_inputs[$this->_input_group][] = $input_group_name;
         }
     }
     $attributes = '';
     if (false !== $options) {
         foreach ((array) $options as $name => $val) {
             if (!is_array($val) && (!isset($scrublist[$options['type']][$name]) || true !== $scrublist[$options['type']][$name])) {
                 if ('value' == $name) {
                     $val = ITForm::esc_value_attr($val);
                 } else {
                     if (!in_array($options['type'], array('submit', 'button'))) {
                         $val = esc_attr($val);
                     }
                 }
                 $attributes .= "{$name}=\"{$val}\" ";
             }
         }
     }
     $retval = '';
     if ('textarea' === $options['type']) {
         if (!isset($options['value'])) {
             $options['value'] = '';
         }
         $retval = "<textarea {$attributes} >" . ITForm::esc_value_attr($options['value']) . '</textarea>';
     } else {
         if ('dropdown' === $options['type']) {
             $retval = "<select {$attributes}>\n";
             if (isset($options['value']) && is_array($options['value'])) {
                 foreach ((array) $options['value'] as $val => $name) {
                     if (is_array($name)) {
                         $options = $name;
                         if (preg_match('/^__optgroup_\\d+$/', $val)) {
                             $retval .= "<optgroup class='it-classes-optgroup-separator'>\n";
                         } else {
                             $retval .= "<optgroup label='" . esc_attr($val) . "'>\n";
                         }
                         foreach ((array) $options as $val => $name) {
                             $selected = isset($this->_options[$var]) && (string) $this->_options[$var] === (string) $val ? ' selected="selected"' : '';
                             $retval .= "<option value=\"" . ITForm::esc_value_attr($val) . "\"{$selected}>{$name}</option>\n";
                         }
                         $retval .= "</optgroup>\n";
                     } else {
                         $selected = isset($this->_options[$var]) && (string) $this->_options[$var] === (string) $val ? ' selected="selected"' : '';
                         $retval .= "<option value=\"" . ITForm::esc_value_attr($val) . "\"{$selected}>{$name}</option>\n";
                     }
                 }
             }
             $retval .= "</select>\n";
         } else {
             $retval = '<input ' . $attributes . '/>';
         }
     }
     return $retval;
 }