/** * 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; } } } } } }