<?php
/**
 * Implement theme metabox.
 *
 * @package Classifyed
 */

if ( ! function_exists( 'classifyed_add_theme_meta_box' ) ) :

	/**
	 * Add the Meta Box
	 *
	 * @since 1.0.0
	 */
	function classifyed_add_theme_meta_box() {

		$apply_metabox_post_types = array( 'post', 'page' );

		foreach ( $apply_metabox_post_types as $key => $type ) {
			add_meta_box(
				'theme-settings',
				esc_html__( 'Theme Settings', 'classifyed' ),
				'classifyed_render_theme_settings_metabox',
				$type
			);
		}

	}

endif;

add_action( 'add_meta_boxes', 'classifyed_add_theme_meta_box' );

if ( ! function_exists( 'classifyed_render_theme_settings_metabox' ) ) :

	/**
	 * Render theme settings meta box.
	 *
	 * @since 1.0.0
	 */
	function classifyed_render_theme_settings_metabox() {

		global $post;
		$post_id = $post->ID;

		// Meta box nonce for verification.
		wp_nonce_field( basename( __FILE__ ), 'classifyed_theme_settings_meta_box_nonce' );

		// Fetch Options list.
		$global_layout_options = classifyed_get_global_layout_options();
		$image_size_options    = classifyed_get_image_sizes_options( true, array( 'disable', 'large' ), false );
		$image_alignment_options    = classifyed_get_image_alignment_options();

		// Fetch values of current post meta.
		$values = get_post_meta( $post_id, 'classifyed_theme_settings', true );
		$classifyed_theme_settings_post_layout = isset( $values['post_layout'] ) ? esc_attr( $values['post_layout'] ) : '';
		$classifyed_theme_settings_single_image = isset( $values['single_image'] ) ? esc_attr( $values['single_image'] ) : '';
		$classifyed_theme_settings_single_image_alignment = isset( $values['single_image_alignment'] ) ? esc_attr( $values['single_image_alignment'] ) : '';
	?>
    <!-- Layout option -->
    <p><strong><?php echo esc_html__( 'Choose Layout', 'classifyed' ); ?></strong></p>
    <select name="classifyed_theme_settings[post_layout]" id="classifyed_theme_settings_post_layout">
      <option value=""><?php echo esc_html__( 'Default', 'classifyed' ); ?></option>
		<?php if ( ! empty( $global_layout_options ) ) :  ?>
        <?php foreach ( $global_layout_options as $key => $val ) :  ?>

          <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $classifyed_theme_settings_post_layout, $key ); ?> ><?php echo esc_html( $val ); ?></option>

        <?php endforeach ?>
		<?php endif ?>
    </select>
    <!-- Image in single post/page -->
    <p><strong><?php echo esc_html__( 'Choose Image Size in Single Post/Page', 'classifyed' ); ?></strong></p>
    <select name="classifyed_theme_settings[single_image]" id="classifyed_theme_settings_single_image">
      <option value=""><?php echo esc_html__( 'Default', 'classifyed' ); ?></option>
		<?php if ( ! empty( $image_size_options ) ) :  ?>
        <?php foreach ( $image_size_options as $key => $val ) :  ?>

          <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $classifyed_theme_settings_single_image, $key ); ?> ><?php echo esc_html( $val ); ?></option>

        <?php endforeach ?>
		<?php endif ?>
    </select>
    <!-- Image Alignment in single post/page -->
    <p><strong><?php echo esc_html__( 'Alignment of Image in Single Post/Page', 'classifyed' ); ?></strong></p>
    <select name="classifyed_theme_settings[single_image_alignment]" id="classifyed_theme_settings_single_image_alignment">
      <option value=""><?php echo esc_html__( 'Default', 'classifyed' ); ?></option>
		<?php if ( ! empty( $image_alignment_options ) ) :  ?>
        <?php foreach ( $image_alignment_options as $key => $val ) :  ?>

          <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $classifyed_theme_settings_single_image_alignment, $key ); ?> ><?php echo esc_html( $val ); ?></option>

        <?php endforeach ?>
		<?php endif ?>
    </select>
    <?php
	}

endif;



if ( ! function_exists( 'classifyed_save_theme_settings_meta' ) ) :

	/**
	 * Save theme settings meta box value.
	 *
	 * @since 1.0.0
	 *
	 * @param int     $post_id Post ID.
	 * @param WP_Post $post Post object.
	 */
	function classifyed_save_theme_settings_meta( $post_id, $post ) {

		// Verify nonce.
		if ( ! isset( $_POST['classifyed_theme_settings_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['classifyed_theme_settings_meta_box_nonce'], basename( __FILE__ ) ) ) {
			  return; }

		// Bail if auto save or revision.
		if ( defined( 'DOING_AUTOSAVE' ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
			return;
		}

		// Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
		if ( empty( $_POST['post_ID'] ) || $_POST['post_ID'] != $post_id ) {
			return;
		}

		// Check permission.
		if ( 'page' === $_POST['post_type'] ) {
			if ( ! current_user_can( 'edit_page', $post_id ) ) {
				return; }
		} else if ( ! current_user_can( 'edit_post', $post_id ) ) {
			return;
		}

		if ( ! array_filter( $_POST['classifyed_theme_settings'] ) ) {
			// No value.
			delete_post_meta( $post_id, 'classifyed_theme_settings' );
		} else {
			update_post_meta( $post_id, 'classifyed_theme_settings', $_POST['classifyed_theme_settings'] );
		}

	}

endif;

add_action( 'save_post', 'classifyed_save_theme_settings_meta', 10, 3 );
