/** * Do shortcode * @param array $args Attributes from shortcode * @return string Field content */ function jcf_do_shortcode($args) { extract(shortcode_atts(array('field' => '', 'post_id' => ''), $args)); //init registered fields jcf_shortcode_init_fields(); //get post id $post_id = !empty($args['post_id']) ? $args['post_id'] : get_the_ID(); //get post type $post_type = get_post_type($post_id); //set post type for fields jcf_set_post_type($post_type); //get field settings $field_settings = jcf_field_settings_get(); //get field id foreach ($field_settings as $key_field => $field) { if (strcmp($args['field'], $field['slug']) === 0) { $field_id = $key_field; break; } } // init field object and do shortcode if ($field_id) { $field_obj = jcf_init_field_object($field_id); $field_obj->set_post_ID($post_id); unset($args['field']); return $field_obj->do_shortcode($args); } else { return false; } }
/** * set class propreties "id", "number" * load instance and entries for this field * @param string $id field id (cosist of id_base + number) */ function set_id($id) { $this->id = $id; // this is add request. so number is 0 if ($this->id == $this->id_base) { $this->number = 0; $this->is_new = true; } else { $this->number = str_replace($this->id_base . '-', '', $this->id); // load instance data $this->instance = jcf_field_settings_get($this->id); if (!empty($this->instance)) { $this->slug = $this->instance['slug']; } } }
/** * callback function for hook "add_meta_boxes" * call add_meta_box for each fieldset */ function jcf_post_load_custom_fields($post_type = '') { // set global post type jcf_set_post_type($post_type); // get read settings $jcf_read_settings = jcf_get_read_settings(); // get fieldsets if ($jcf_read_settings == JCF_CONF_SOURCE_DB) { $fieldsets = jcf_fieldsets_get(); $field_settings = jcf_field_settings_get(); } else { $jcf_settings = jcf_get_all_settings_from_file(); $fieldsets = $jcf_settings['fieldsets'][$post_type]; $field_settings = $jcf_settings['field_settings'][$post_type]; } if (!empty($fieldsets)) { // remove fieldsets without fields foreach ($fieldsets as $f_id => $fieldset) { // check $enabled; add custom js/css for components foreach ($fieldset['fields'] as $field_id => $enabled) { if (!$enabled) { unset($fieldset['fields'][$field_id]); continue; } $field_obj = jcf_init_field_object($field_id, $fieldset['id']); $field_obj->do_add_js(); $field_obj->do_add_css(); } // if all fields disabled -> remove fieldset if (empty($fieldset['fields'])) { unset($fieldsets[$f_id]); } } if (!empty($field_obj)) { unset($field_obj); } if (empty($fieldsets)) { return false; } // add custom styles and scripts add_action('admin_print_styles', 'jcf_edit_post_styles'); add_action('admin_print_scripts', 'jcf_edit_post_scripts'); foreach ($fieldsets as $f_id => $fieldset) { add_meta_box('jcf_fieldset-' . $f_id, $fieldset['title'], 'jcf_post_show_custom_fields', $post_type, 'advanced', 'default', array($fieldset)); } } }
/** * Save fields from import to file config or db * @param array $data Array with fieldsets and fields settings from import file * @return boolean|int Return save status */ function jcf_admin_save_settings($data) { foreach ($data as $key => $post_type) { jcf_set_post_type($key); if (is_array($post_type) && !empty($post_type['fieldsets'])) { foreach ($post_type['fieldsets'] as $fieldset_id => $fieldset) { $status_fieldset = jcf_import_add_fieldset($fieldset['title'], $fieldset_id); if (empty($status_fieldset)) { $notice = array('error' => 'Error! Please check <strong>import file</strong>'); do_action('admin_notices', $notice); return false; } else { $fieldset_id = $status_fieldset; if (!empty($fieldset['fields'])) { $old_fields = jcf_field_settings_get(); if (!empty($old_fields)) { foreach ($old_fields as $old_field_id => $old_field) { $old_slugs[] = $old_field['slug']; $old_field_ids[$old_field['slug']] = $old_field_id; } } foreach ($fieldset['fields'] as $field_id => $field) { $slug_checking = !empty($old_slugs) ? in_array($field['slug'], $old_slugs) : false; if ($slug_checking) { $status_field = jcf_import_add_field($old_field_ids[$field['slug']], $fieldset_id, $field); } else { $status_field = jcf_import_add_field($field_id, $fieldset_id, $field); } } } } } if (!empty($status_fieldset)) { if ($_POST['file_name']) { unlink($_POST['file_name']); } } } } return $status_fieldset; }
/** * Fields UI page */ function jcf_admin_fields_page($post_type) { jcf_set_post_type($post_type->name); $fieldsets = jcf_fieldsets_get(); $field_settings = jcf_field_settings_get(); //pa($fieldsets); //pa($field_settings,1); // load template include JCF_ROOT . '/templates/fields_ui.tpl.php'; }
/** * Fields UI page */ function jcf_admin_fields_page($post_type) { jcf_set_post_type($post_type->name); $jcf_read_settings = jcf_get_read_settings(); if ($jcf_read_settings == JCF_CONF_SOURCE_DB) { $fieldsets = jcf_fieldsets_get(); $field_settings = jcf_field_settings_get(); } else { $jcf_settings = jcf_get_all_settings_from_file(); $fieldsets = $jcf_settings['fieldsets'][$post_type->name]; $field_settings = $jcf_settings['field_settings'][$post_type->name]; } // load template include JCF_ROOT . '/templates/fields_ui.tpl.php'; }
/** * create custom table on jcf settings fields */ public static function settings_row($collection_id, $fieldset_id) { $jcf_read_settings = jcf_get_read_settings(); if ($jcf_read_settings == JCF_CONF_SOURCE_DB) { $collection = jcf_field_settings_get($collection_id); } else { $post_type = jcf_get_post_type(); $jcf_settings = jcf_get_all_settings_from_file(); $collection = $jcf_settings['field_settings'][$post_type][$collection_id]; } $registered_fields = self::register_fields(); include JCF_ROOT . '/components/collection/templates/fields_ui.tpl.php'; }