<?php
/**
 * Class for adding font awesome icons
 *
 * @package Canyon Themes
 * @subpackage Sewa
 * @since 1.0.0
 */
if( !class_exists( 'Sewa_Font_Awesome_Class_Metabox') ){
    class Sewa_Font_Awesome_Class_Metabox {

        public function __construct()
        {

            add_action( 'add_meta_boxes', array( $this, 'sewa_icon_metabox') );

            add_action( 'save_post', array( $this, 'sewa_save_icon_value') );
        }


        public function sewa_icon_metabox()
        {

            add_meta_box(
                    'sewa_icon',
                    esc_html__('Font Awesome Class For Features', 'sewa'),
                    array(
                            $this, 'sewa_generate_icon'),
                    'page',
                    'side',
                    'low'
            );
        }

        public function sewa_generate_icon($post)
        {
            $values = get_post_meta( $post->ID, 'sewa_icon', true );
            wp_nonce_field( basename(__FILE__), 'sewa_fontawesome_fields_nonce');
            ?>
            <input type="text" name="icon" value="<?php echo esc_html($values) ?>" placeholder="<?php esc_attr_e('fa fa-mobile', 'sewa'); ?>" />
            <?php
        }

        public function sewa_save_icon_value($post_id)
        {

            /*
                * A Guide to Writing Secure Themes – Part 4: Securing Post Meta
                *https://make.wordpress.org/themes/2015/06/09/a-guide-to-writing-secure-themes-part-4-securing-post-meta/
                * */
            if (
                !isset($_POST['sewa_fontawesome_fields_nonce']) ||
                !wp_verify_nonce($_POST['sewa_fontawesome_fields_nonce'], basename(__FILE__)) || /*Protecting against unwanted requests*/
                (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) || /*Dealing with autosaves*/
                !current_user_can('edit_post', $post_id)/*Verifying access rights*/
            ) {
                return;
            }

            //Execute this saving function
            if (isset($_POST['icon']) && !empty($_POST['icon'])) {
                $fontawesomeclass = sanitize_text_field( $_POST['icon'] );
                update_post_meta($post_id, 'sewa_icon', $fontawesomeclass);
            }
        }
    }
}
$productsMetabox = new Sewa_Font_Awesome_Class_Metabox;