Ejemplo n.º 1
0
 /**
  * Constructor.
  *
  * @param   array  $config  Field declaration.
  * @param   array  $merge   Array of property should be merged.
  *
  * @return  void
  */
 public function __construct($config, $merge = array('attributes', 'choices'))
 {
     // Get all post types
     $post_types = get_post_types(array('public' => true), 'objects');
     // Prepare post types
     foreach ($post_types as $slug => $defines) {
         $post_types[$slug] = $defines->labels->name;
     }
     // Update choices
     $this->choices = $post_types;
     // Call parent method to do remaining initialization
     parent::__construct($config, $merge);
     // Prepare value
     if ('all' == $this->value) {
         $this->value = array_map('strlen', $this->choices);
     }
 }
Ejemplo n.º 2
0
 /**
  * Add fields.
  *
  * @param   string  $field_id      Field object.
  * @param   array   $field_attrs   Fieldset attributes, e.g. array( 'title' => 'Title', 'class' => 'Some classes' )
  * @param   string  $section_id    Section to add field to.
  * @param   string  $fieldset_id   Fieldset to add field to.
  * @param   string  $tab_id        Tab to add field to.
  * @param   string  $accordion_id  Accordion to add field to.
  *
  * @return  void
  */
 protected function add_field($field_id, $field_attrs = null, $section_id = 'default', $fieldset_id = null, $tab_id = null, $accordion_id = null)
 {
     if (is_array($field_id)) {
         foreach ($field_id as $id => $attrs) {
             // Build arguments
             $args = array($id, $attrs);
             $args[] = isset($attrs['section_id']) ? $attrs['section_id'] : $section_id;
             $args[] = isset($attrs['fieldset_id']) ? $attrs['fieldset_id'] : $fieldset_id;
             $args[] = isset($attrs['tab_id']) ? $attrs['tab_id'] : $tab_id;
             $args[] = isset($attrs['accordion_id']) ? $attrs['accordion_id'] : $accordion_id;
             // Add field
             call_user_func_array(array($this, 'add_field'), $args);
         }
     } else {
         // Prepare field attributes
         if (!isset($field_attrs['name'])) {
             $field_attrs['name'] = $field_id;
         }
         if (!empty($this->name_space)) {
             $field_attrs['name'] = "{$this->name_space}[{$field_attrs['name']}]";
         }
         if (!isset($field_attrs['text_domain']) && IG_LIBRARY_TEXTDOMAIN != $this->text_domain) {
             $field_attrs['text_domain'] = $this->text_domain;
         }
         if (strpos($field_id, 'ig-form-field-') === false) {
             $field_id = "ig-form-field-{$field_id}";
         }
         if (!isset($field_attrs['id'])) {
             $field_attrs['id'] = $field_id;
         } else {
             $field_id = $field_attrs['id'];
         }
         // Instantiate field renderer
         $field = IG_Form_Field::get_instance($field_attrs);
         if (empty($tab_id)) {
             if (empty($accordion_id)) {
                 if (empty($fieldset_id)) {
                     $this->fields[$section_id]['fields'][$field_id] = $field;
                 } else {
                     $this->fields[$section_id]['fieldsets'][$fieldset_id]['fields'][$field_id] = $field;
                 }
             } else {
                 if (empty($fieldset_id)) {
                     $this->fields[$section_id]['accordion'][$accordion_id]['fields'][$field_id] = $field;
                 } else {
                     if (isset($this->fields[$section_id]['accordion'][$accordion_id]['fieldsets'][$fieldset_id])) {
                         $this->fields[$section_id]['accordion'][$accordion_id]['fieldsets'][$fieldset_id]['fields'][$field_id] = $field;
                     } elseif (isset($this->fields[$section_id]['fieldsets'][$fieldset_id]['accordion'][$accordion_id])) {
                         $this->fields[$section_id]['fieldsets'][$fieldset_id]['accordion'][$accordion_id]['fields'][$field_id] = $field;
                     }
                 }
             }
         } else {
             if (empty($accordion_id)) {
                 if (empty($fieldset_id)) {
                     $this->fields[$section_id]['tabs'][$tab_id]['fields'][$field_id] = $field;
                 } else {
                     $this->fields[$section_id]['tabs'][$tab_id]['fieldsets'][$fieldset_id]['fields'][$field_id] = $field;
                 }
             } else {
                 if (empty($fieldset_id)) {
                     $this->fields[$section_id]['tabs'][$tab_id]['accordion'][$accordion_id]['fields'][$field_id] = $field;
                 } else {
                     if (isset($this->fields[$section_id]['tabs'][$tab_id]['accordion'][$accordion_id]['fieldsets'][$fieldset_id])) {
                         $this->fields[$section_id]['tabs'][$tab_id]['accordion'][$accordion_id]['fieldsets'][$fieldset_id]['fields'][$field_id] = $field;
                     } elseif (isset($this->fields[$section_id]['tabs'][$tab_id]['fieldsets'][$fieldset_id]['accordion'][$accordion_id])) {
                         $this->fields[$section_id]['tabs'][$tab_id]['fieldsets'][$fieldset_id]['accordion'][$accordion_id]['fields'][$field_id] = $field;
                     }
                 }
             }
         }
     }
 }