/**
 *	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;
}
/**
 *	Admin main page
 */
function jcf_admin_settings_page()
{
    $post_types = jcf_get_post_types('object');
    // edit page
    if (!empty($_GET['pt']) && isset($post_types[$_GET['pt']])) {
        jcf_admin_fields_page($post_types[$_GET['pt']]);
        return;
    }
    // load template
    include JCF_ROOT . '/templates/settings_page.tpl.php';
}
 /**
  *	autocomplete
  */
 function autocomplete()
 {
     $term = $_POST['term'];
     if (empty($term)) {
         die('');
     }
     $post_type = $_POST['post_types'];
     $post_types = jcf_get_post_types('object');
     if ($post_type != 'any') {
         $post_type_where = " post_type = '{$post_type}' ";
     } else {
         // get all post types
         $post_type_where = "( post_type = '" . implode("' OR post_type = '", array_keys($post_types)) . "' )";
     }
     global $wpdb;
     $query = "SELECT ID, post_title, post_status, post_type\n\t\t\tFROM {$wpdb->posts}\n\t\t\tWHERE {$post_type_where} AND (post_status = 'publish' OR post_status = 'draft') AND post_title LIKE '%{$term}%'\n\t\t\tORDER BY post_title";
     $posts = $wpdb->get_results($query);
     $response = array();
     foreach ($posts as $p) {
         $draft = $p->post_status == 'draft' ? ' (DRAFT)' : '';
         $type_label = $post_type != 'any' ? '' : ' / ' . $post_types[$p->post_type]->labels->singular_name;
         $response[] = array('id' => $p->ID, 'label' => $p->post_title . $draft . $type_label, 'value' => $p->post_title . $draft . $type_label, 'type' => $p->post_type, 'status' => $p->post_status);
     }
     $json = json_encode($response);
     header("Content-Type: application/json");
     echo $json;
     exit;
 }
/**
 * 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;
}
/**
 *	Admin main page
 */
function jcf_admin_settings_page()
{
    $post_types = jcf_get_post_types('object');
    $jcf_read_settings = jcf_get_read_settings();
    $jcf_multisite_settings = jcf_get_multisite_settings();
    $jcf_tabs = !isset($_GET['tab']) ? 'fields' : $_GET['tab'];
    // edit page
    if (!empty($_GET['pt']) && isset($post_types[$_GET['pt']])) {
        jcf_admin_fields_page($post_types[$_GET['pt']]);
        return;
    }
    if (!empty($_POST['save_import'])) {
        $saved = jcf_admin_save_settings($_POST['import_data']);
        $notice = $saved ? array('notice', __('<strong>Import</strong> has been completed successfully!', JCF_TEXTDOMAIN)) : array('error', __('<strong>Import failed!</strong> Please check that your import file has right format.', JCF_TEXTDOMAIN));
        jcf_add_admin_notice($notice[0], $notice[1]);
    }
    if (!empty($_POST['jcf_update_settings'])) {
        if (MULTISITE) {
            $jcf_multisite_settings = jcf_save_multisite_settings($_POST['jcf_multisite_setting']);
        }
        $jcf_read_settings = jcf_update_read_settings();
    }
    // load template
    include JCF_ROOT . '/templates/settings_page.tpl.php';
}