/**
 *	get fields from wp-options
 */
function jcf_field_settings_get($id = '', $select_from_db = false)
{
    $option_name = jcf_fields_get_option_name();
    $jcf_read_settings = jcf_get_read_settings();
    if (empty($select_from_db) && $jcf_read_settings != JCF_CONF_SOURCE_DB) {
        $jcf_settings = jcf_get_all_settings_from_file();
        $post_type = str_replace('jcf_fields-', '', $option_name);
        $field_settings = $jcf_settings['field_settings'][$post_type];
    } else {
        $field_settings = jcf_get_options($option_name);
    }
    if (!empty($id)) {
        return @$field_settings[$id];
    }
    return $field_settings;
}
Ejemplo n.º 2
0
/**
 *	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));
        }
    }
}
/**
 * update order fieldsets
 * @param array $keys Fieldsets keys
 */
function jcf_fieldsets_order($keys = array())
{
    $option_name = jcf_fieldsets_get_option_name();
    $new_fieldsets = array();
    $jcf_read_settings = jcf_get_read_settings();
    if ($jcf_read_settings != JCF_CONF_SOURCE_DB) {
        $jcf_settings = jcf_get_all_settings_from_file();
        $post_type = jcf_get_post_type();
        foreach ($keys as $key) {
            $new_fieldsets[$key] = $jcf_settings['fieldsets'][$post_type][$key];
            unset($jcf_settings['fieldsets'][$post_type][$key]);
        }
        $jcf_settings['fieldsets'][$post_type] = $new_fieldsets;
        jcf_save_all_settings_in_file($jcf_settings);
    } else {
        $fieldsets = jcf_get_options($option_name);
        foreach ($keys as $key) {
            $new_fieldsets[$key] = $fieldsets[$key];
            unset($fieldsets[$key]);
        }
        jcf_update_options($option_name, $new_fieldsets);
    }
}
Ejemplo n.º 4
0
/**
 * export fields from form callback
 */
function jcf_ajax_export_fields_form()
{
    $jcf_read_settings = jcf_get_read_settings();
    if ($jcf_read_settings != JCF_CONF_SOURCE_DB) {
        $jcf_settings = jcf_get_all_settings_from_file();
    } else {
        $jcf_settings = jcf_get_all_settings_from_db();
    }
    $post_types = !empty($jcf_settings['post_types']) ? $jcf_settings['post_types'] : jcf_get_post_types();
    $fieldsets = $jcf_settings['fieldsets'];
    $field_settings = $jcf_settings['field_settings'];
    $registered_fields = jcf_get_registered_fields();
    // load template
    header('Content-Type: text/html; charset=utf-8');
    include JCF_ROOT . '/templates/export.tpl.php';
    exit;
}
/**
 *	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';
}
Ejemplo n.º 6
0
 /**
  * delete field from collection
  */
 public function delete_field($field_id)
 {
     $option_name = jcf_fields_get_option_name();
     $jcf_read_settings = jcf_get_read_settings();
     if ($jcf_read_settings != JCF_CONF_SOURCE_DB) {
         $jcf_settings = jcf_get_all_settings_from_file();
         $post_type = jcf_get_post_type();
         $fieldset = $jcf_settings['fieldsets'][$post_type][$this->fieldset_id];
         $field_settings = $jcf_settings['field_settings'][$post_type];
         if (isset($field_settings[$this->id]['fields'][$field_id])) {
             unset($field_settings[$this->id]['fields'][$field_id]);
         }
         $jcf_settings['fieldsets'][$post_type][$this->fieldset_id] = $fieldset;
         $jcf_settings['field_settings'][$post_type] = $field_settings;
         jcf_save_all_settings_in_file($jcf_settings);
     } else {
         $field_settings = jcf_get_options($option_name);
         if (isset($field_settings[$this->id]['fields'][$field_id])) {
             unset($field_settings[$this->id]['fields'][$field_id]);
         }
         jcf_update_options($option_name, $field_settings);
     }
 }