<?php
/**
 * SMOF Interface
 *
 * @package     WordPress
 * @subpackage  SMOF
 * @since       1.4.0
 * @author      Syamil MJ
 */


/**
 * Admin Init
 *
 * @uses wp_verify_nonce()
 * @uses header()
 *
 * @since 1.0.0
 */
function optionsframework_admin_init()
{
    // Rev up the Options Machine
    global $of_options, $options_machine;
    $options_machine = new Options_Machine($of_options);

    $smof_data = of_get_options();
    $data = $smof_data;
    do_action('optionsframework_admin_init_before', array(
        'of_options'		=> $of_options,
        'options_machine'	=> $options_machine,
        'smof_data'			=> $smof_data
    ));
    if (empty($smof_data['smof_init'])) { // Let's set the values if the theme's already been active
        of_save_options($options_machine->Defaults);
        of_save_options(date('r'), 'smof_init');
        $smof_data = of_get_options();
        $options_machine = new Options_Machine($of_options);
    }
    do_action('optionsframework_admin_init_after', array(
        'of_options'		=> $of_options,
        'options_machine'	=> $options_machine,
        'smof_data'			=> $smof_data
    ));

}

/**
 * Create Options page
 *
 * @uses add_theme_page()
 * @uses add_action()
 *
 * @since 1.0.0
 */
function optionsframework_add_admin() {

    $of_page = add_theme_page( 'wp_nuvo', 'Theme Options', 'edit_theme_options', 'optionsframework', 'optionsframework_options_page');

    // Add framework functionaily to the head individually
    add_action("admin_print_scripts-$of_page", 'of_load_only');
    add_action("admin_print_styles-$of_page",'of_style_only');

}


/**
 * Build Options page
 *
 * @since 1.0.0
 */
function optionsframework_options_page(){

    global $options_machine;

    /*
    //for debugging

    $smof_data = of_get_options();
    print_r($smof_data);

    */

    include_once( ADMIN_PATH . 'front-end/options.php' );

}

/**
 * Create Options page
 *
 * @uses wp_enqueue_style()
 *
 * @since 1.0.0
 */
function of_style_only(){
    wp_enqueue_style('admin-style', ADMIN_DIR . 'assets/css/admin-style.css');
    //wp_enqueue_style('color-picker', ADMIN_DIR . 'assets/css/colorpicker.css');
    wp_enqueue_style('jquery-ui-custom-admin', ADMIN_DIR .'assets/css/jquery-ui-custom.css');

    if ( !wp_style_is( 'wp-color-picker','registered' ) ) {
        wp_register_style( 'wp-color-picker', ADMIN_DIR . 'assets/css/color-picker.min.css' );
    }
    wp_enqueue_style( 'wp-color-picker' );

}

/**
 * Create Options page
 *
 * @uses add_action()
 * @uses wp_enqueue_script()
 *
 * @since 1.0.0
 */
function of_load_only()
{
    //add_action('admin_head', 'smof_admin_head');

    wp_enqueue_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui-sortable');
    wp_enqueue_script('jquery-ui-slider');
    wp_enqueue_script('jquery-input-mask', ADMIN_DIR .'assets/js/jquery.maskedinput-1.2.2.js', array( 'jquery' ));
    wp_enqueue_script('tipsy', ADMIN_DIR .'assets/js/jquery.tipsy.js', array( 'jquery' ));
    //wp_enqueue_script('color-picker', ADMIN_DIR .'assets/js/colorpicker.js', array('jquery'));
    wp_enqueue_script('cookie', ADMIN_DIR . 'assets/js/cookie.js', 'jquery');
    wp_enqueue_script('smof', ADMIN_DIR .'assets/js/smof.js', array( 'jquery' ));
    wp_enqueue_script( 'preset-js', ADMIN_DIR .'assets/js/action.js', array() );
    //wp_enqueue_script( 'google-fonts', ADMIN_DIR .'assets/js/google.fonts.js', array(),'1.0.0');

    // Enqueue colorpicker scripts for versions below 3.5 for compatibility
    if ( !wp_script_is( 'wp-color-picker', 'registered' ) ) {
        wp_register_script( 'iris', ADMIN_DIR .'assets/js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), false, 1 );
        wp_register_script( 'wp-color-picker', ADMIN_DIR .'assets/js/color-picker.min.js', array( 'jquery', 'iris' ) );
    }
    wp_enqueue_script( 'wp-color-picker' );


    /**
     * Enqueue scripts for file uploader
     */

    if ( function_exists( 'wp_enqueue_media' ) )
        wp_enqueue_media();

}


/**
 * Ajax Save Options
 *
 * @uses get_option()
 *
 * @since 1.0.0
 */
function of_ajax_callback()
{
    global $options_machine, $of_options;

    $nonce=$_POST['security'];

    if (! wp_verify_nonce($nonce, 'of_ajax_nonce') ) die('-1');

    //get options array from db
    $all = of_get_options();

    $save_type = $_POST['type'];

    //echo $_POST['data'];

    //Uploads
    if($save_type == 'upload')
    {

        $clickedID = $_POST['data']; // Acts as the name
        $filename = $_FILES[$clickedID];
        $filename['name'] = preg_replace('/[^a-zA-Z0-9._\-]/', '', $filename['name']);

        $override['test_form'] = false;
        $override['action'] = 'wp_handle_upload';
        $uploaded_file = wp_handle_upload($filename,$override);

        $upload_tracking[] = $clickedID;

        //update $options array w/ image URL
        $upload_image = $all; //preserve current data

        $upload_image[$clickedID] = $uploaded_file['url'];

        of_save_options($upload_image);


        if(!empty($uploaded_file['error'])) {echo 'Upload Error: ' . $uploaded_file['error']; }
        else { echo $uploaded_file['url']; } // Is the Response

    }
    elseif($save_type == 'image_reset')
    {

        $id = $_POST['data']; // Acts as the name

        $delete_image = $all; //preserve rest of data
        $delete_image[$id] = ''; //update array key with empty value
        of_save_options($delete_image ) ;

    }
    elseif($save_type == 'backup_options')
    {

        $backup = $all;
        $backup['backup_log'] = date('r');

        of_save_options($backup, BACKUPS) ;

        die('1');
    }
    elseif($save_type == 'restore_options')
    {

        $smof_data = get_option(BACKUPS);

        update_option(OPTIONS, $smof_data);

        of_save_options($smof_data);

        die('1');
    }
    elseif($save_type == 'import_options'){


        $smof_data = unserialize(base64_decode($smof_data)); //100% safe - ignore theme check nag
        of_save_options($smof_data);


        die('1');
    }
    elseif ($save_type == 'save')
    {

        wp_parse_str(stripslashes($_POST['data']), $smof_data);
        unset($smof_data['security']);
        unset($smof_data['of_save']);
        of_save_options($smof_data);
        die('1');
    }
    elseif ($save_type == 'reset')
    {
        $theme_name='wp-consilium'.get_option('cs-body-class','');

        $option_json = get_template_directory_uri() . '/admin/sample/'.$theme_name.'/option.txt';
        $option_json = wp_remote_get( $option_json );
        $option_data = $option_json['body'];
        of_save_options(unserialize(base64_decode($option_data)));

        die('1'); //options reset
    }
    elseif ($save_type == 'of_add_params')
    {
        $current_option = of_get_options();
        $current_option = of_get_options();
        $default = $options_machine->Defaults;
        foreach($default as $k => $option){
            if(isset($current_option[$k])){
                $default[$k]=$current_option[$k];
            }
        }
        of_save_options($default);

        die('1'); //options reset
    }

    die();
}