/**
 *	Get all settings from db
 *	@return array Return all settings for fieldsets and fields
 */
function jcf_get_all_settings_from_db()
{
    $post_types = jcf_get_post_types();
    $jcf_settings = array();
    $fieldsets = array();
    $field_settings = array();
    $field_options = array();
    foreach ($post_types as $key => $value) {
        jcf_set_post_type($key);
        $fieldsets[$key] = jcf_fieldsets_get();
        $field_settings[$key] = jcf_field_settings_get('', true);
    }
    $jcf_settings = array('post_types' => $post_types, 'fieldsets' => $fieldsets, 'field_settings' => $field_settings);
    return $jcf_settings;
}
 /**
  *	function to delete field from the database
  */
 public function do_delete()
 {
     // remove from fieldset:
     $fieldset = jcf_fieldsets_get($this->fieldset_id);
     if (isset($fieldset['fields'][$this->id])) {
         unset($fieldset['fields'][$this->id]);
     }
     jcf_fieldsets_update($this->fieldset_id, $fieldset);
     // remove from fields array
     jcf_field_settings_update($this->id, NULL, $this->fieldset_id);
 }
/**
 *	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 order change callback
 */
function jcf_ajax_fields_order()
{
    $fieldset_id = $_POST['fieldset_id'];
    $order = trim($_POST['fields_order'], ',');
    $fieldset = jcf_fieldsets_get($fieldset_id);
    $new_fields = explode(',', $order);
    $fieldset['fields'] = array();
    foreach ($new_fields as $field_id) {
        $fieldset['fields'][$field_id] = $field_id;
    }
    jcf_fieldsets_update($fieldset_id, $fieldset);
    $resp = array('status' => '1');
    jcf_ajax_reposnse($resp, 'json');
}
/**
 *	callback function for "save_post" action
 */
function jcf_post_save_custom_fields($post_ID = 0, $post = null)
{
    // do not save anything on autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    // verify this came from the our screen and with proper authorization,
    // because save_post can be triggered at other times
    if (!wp_verify_nonce($_POST['justcustomfields_noncename'], plugin_basename(__FILE__))) {
        return;
    }
    // check permissions
    $permission = 'page' == $_POST['post_type'] ? 'edit_page' : 'edit_post';
    if (!current_user_can($permission, $post_ID)) {
        return;
    }
    // OK, we're authenticated: we need to find and save the data
    // set global post type
    jcf_set_post_type($_POST['post_type']);
    // get fieldsets
    $fieldsets = jcf_fieldsets_get();
    // create field class objects and call save function
    foreach ($fieldsets as $f_id => $fieldset) {
        foreach ($fieldset['fields'] as $field_id => $tmp) {
            $field_obj = jcf_init_field_object($field_id, $fieldset['id']);
            $field_obj->set_post_ID($post->ID);
            $field_obj->do_save();
        }
    }
    //pa('stop',1);
    return false;
}
/**
 *	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';
}