<?php

/**
 * Chrisporate metabox file.
 *
 * This is the template that includes all the other files for metaboxes of Chrisporate theme
 *
 * @package Theme Palace
 * @subpackage Chrisporate
 * @since Chrisporate 1.0.0
 */ 

/**
 * Class to Renders and save metabox options
 *
 * @since Chrisporate 1.0.0
 */
class Chrisporate_MetaBox {
    private $meta_box;

    private $fields;

    /**
    * Constructor
    *
    * @since Chrisporate 1.0.0
    *
    * @access public
    *
    */
    public function __construct( $meta_box_id, $meta_box_title, $post_type ) {
        
        $this->meta_box = array (
                            'id'        => $meta_box_id,
                            'title'     => $meta_box_title,
                            'post_type' => $post_type,
                            );

        $this->fields = array(
                            'chrisporate-post-icon',
                            'chrisporate-sidebar-position',
                            'chrisporate-selected-sidebar',
                            'chrisporate-header-image',
                            );


        // Add metaboxes
        add_action( 'add_meta_boxes', array( $this, 'add' ) );
        
        add_action( 'save_post', array( $this, 'save' ) );  
    }

    /**
    * Add Meta Box for multiple post types.
    *
    * @since Chrisporate 1.0.0
    *
    * @access public
    */
    public function add($postType) {
        if( in_array( $postType, $this->meta_box['post_type'] ) ) {
            add_meta_box( $this->meta_box['id'], $this->meta_box['title'], array( $this, 'show' ), $postType, 'side' );
        }
    }

    /**
    * Renders metabox
    *
    * @since Chrisporate 1.0.0
    *
    * @access public
    */
    public function show() {
        global $post;

        $layout_options         = chrisporate_sidebar_position();
        $sidebar_options        = chrisporate_selected_sidebar();
        $header_image_options   = chrisporate_header_image();
        
        
        // Use nonce for verification  
        wp_nonce_field( basename( __FILE__ ), 'chrisporate_custom_meta_box_nonce' );

        // Begin the field table and loop  ?>  
        <div id="chrisporate-ui-tabs" class="ui-tabs">
            <ul class="chrisporate-ui-tabs-nav" id="chrisporate-ui-tabs-nav">
                <li><a href="#frag4"><?php esc_html_e( 'Icon Options', 'chrisporate' ); ?></a></li>
                <li><a href="#frag1"><?php esc_html_e( 'Layout Options', 'chrisporate' ); ?></a></li>
                <li><a href="#frag3"><?php esc_html_e( 'Header Image Options', 'chrisporate' ); ?></a></li>
                <li><a href="#frag2"><?php esc_html_e( 'Select Sidebar', 'chrisporate' ); ?></a></li>
            </ul> 

            <div id="frag4" class="catch_ad_tabhead">
                <table id="layout-options" class="form-table" width="100%">
                    <tbody>
                        <tr>
                            <p>
                            <?php printf( '%1$s <a target="_blank" href="' . esc_url( 'http://fontawesome.io/icons/' ) . '"> %2$s </a>', esc_html__( 'Select Icon ie: fa-check. See more at ', 'chrisporate' ), esc_html__( 'Font awesome', 'chrisporate' ) ); ?>
                            </p>
                            <?php 
                            $icon_value = get_post_meta( $post->ID, 'chrisporate-post-icon', true ); 
                            $icon_value = ! empty( $icon_value ) ? $icon_value : 'fa-tint';
                            ?>
                            <input type="text" name="chrisporate-post-icon" id="custom_element_grid_class" value="<?php echo esc_attr( $icon_value ); ?>" >
                        </tr>
                    </tbody>
                </table>
            </div>

            <div id="frag1" class="catch_ad_tabhead">
                <table id="layout-options" class="form-table" width="100%">
                    <tbody>
                        <tr>
                            <?php  
                                $metalayout = get_post_meta( $post->ID, 'chrisporate-sidebar-position', true );
                                if( empty( $metalayout ) ){
                                    $metalayout='right-sidebar';
                                }

                                foreach ( $layout_options as $value => $url ) :
                                    echo '<label>';
                                    echo '<input type="radio" name="chrisporate-sidebar-position" value="' . esc_attr( $value ) . '" ' . checked( $metalayout, $value, false ) . ' />';
                                    echo '<img src="' . esc_url( $url ) . '"/>';
                                    echo '</label>';
                                endforeach;
                            ?>
                        </tr>
                    </tbody>
                </table>
            </div>

            <div id="frag2" class="catch_ad_tabhead">
                <table id="sidebar-metabox" class="form-table" width="100%">
                    <tbody> 
                        <tr>
                            <?php
                            $metasidebar = get_post_meta( $post->ID, 'chrisporate-selected-sidebar', true );
                            if ( empty( $metasidebar ) ){
                                $metasidebar='sidebar-1';
                            } 
                            foreach ( $sidebar_options as $field => $value ) {  
                            ?>
                                <td style="vertical-align: top;">
                                    <label class="description">
                                        <input type="radio" name="chrisporate-selected-sidebar" value="<?php echo esc_attr( $field ); ?>" <?php checked( $field, $metasidebar ); ?>/>&nbsp;&nbsp;<?php echo esc_html( $value ); ?>
                                    </label>
                                </td>
                                
                            <?php
                            } // end foreach 
                            ?>
                        </tr>
                    </tbody>
                </table>        
            </div>

            <div id="frag3" class="catch_ad_tabhead">
                <table id="header-image-metabox" class="form-table" width="100%">
                    <tbody> 
                        <tr>                
                            <?php  
                            $metaheader = get_post_meta( $post->ID, 'chrisporate-header-image', true );
                            if ( empty( $metaheader ) ){
                                $metaheader='show-both';
                            }
                            foreach ( $header_image_options as $field => $value ) { 
                            ?>
                                <td style="width: 100px;">
                                    <label class="description">
                                        <input type="radio" name="chrisporate-header-image" value="<?php echo esc_attr( $field ); ?>" <?php checked( $field, $metaheader ); ?>/>&nbsp;&nbsp;<?php echo esc_html( $value ); ?>
                                    </label>
                                </td>
                                
                            <?php
                            } // end foreach 
                            ?>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    <?php 
    }

    /**
     * Save custom metabox data
     * 
     * @action save_post
     *
     * @since Chrisporate 1.0.0
     *
     * @access public
     */
    public function save( $post_id ) { 
    
        // Checks save status
        $is_autosave = wp_is_post_autosave( $post_id );
        $is_revision = wp_is_post_revision( $post_id );
        $is_valid_nonce = ( isset( $_POST[ 'chrisporate_nonce' ] ) && wp_verify_nonce( sanitize_key( $_POST[ 'chrisporate_nonce' ] ), basename( __FILE__ ) ) ) ? 'true' : 'false';

        // Exits script depending on save status
        if ( $is_autosave || $is_revision || ! $is_valid_nonce ) {
            return;
        }
      
        foreach ( $this->fields as $field ) {      
            // Checks for input and sanitizes/saves if needed
            if( isset( $_POST[ $field ] ) ) {
                update_post_meta( $post_id, $field, sanitize_text_field( wp_unslash( $_POST[ $field ] ) ) );
            }
        } // end foreach         
    }
}
$post_types = array( 'page', 'post' );

$chrisporate_metabox = new Chrisporate_MetaBox( 
                                    'chrisporate-options',     //metabox id
                                    esc_html__( 'Chrisporate Meta Options', 'chrisporate' ), //metabox title
                                    $post_types            //metabox post types
                                    );

/**
 * Enqueue scripts and styles for Metaboxes
 * @uses wp_enqueue_script, and  wp_enqueue_style
 *
 * @since Chrisporate 1.0.0
 */
function chrisporate_enqueue_metabox_scripts( $hook ) {

    if( $hook == 'post.php' || $hook == 'post-new.php'  ){
        //Scripts
        wp_enqueue_script( 'chrisporate-metabox', get_template_directory_uri() . '/assets/js/metabox' . chrisporate_min() . '.js', array( 'jquery', 'jquery-ui-tabs' ), '2013-10-05' );
        //CSS Styles
        wp_enqueue_style( 'chrisporate-metabox-tabs', get_template_directory_uri() . '/assets/css/metabox-tabs' . chrisporate_min() . '.css' );
    }
    return;
}
add_action( 'admin_enqueue_scripts', 'chrisporate_enqueue_metabox_scripts', 11 );
