<?php
/** Event Posts Class
 *
 * @package Bw-Winners-Network
 */

namespace BwWinnersNetwork;

if ( ! class_exists( __NAMESPACE__ . '\Event_Posts' ) ) {
	/**
	 * Event_Posts class
	 */
	class Event_Posts {

		private $post_type = 'events';

		public function __construct() {
			add_action( 'init', [ $this, 'register' ] );
			add_action( 'add_meta_boxes', [ $this, 'add_meta_boxes' ] );
			add_action( 'save_post', [ $this, 'save_post' ], 10, 2 );
		}

		public function register () {

			// events

			$labels = [
				'name' => 'Events',
				'singular_name' => 'Event',
				'add_new' => 'Add New Event',
				'add_new_item' => 'Add New Event',
				'edit_item' => 'Edit Event',
				'new_item' => 'New Event',
				'all_items' => 'All Events',
				'view_item' => 'View Event',
				'search_items' => 'Search Events',
				'not_found' =>  'No Event Found',
				'not_found_in_trash' => 'No event found in Trash', 
				'parent_item_colon' => '',
				'menu_name' => 'Events',
			];

			$args = [
				'labels' => $labels,
				'public' => false,
				'has_archive' => true,
				'show_ui' => true,
				'capability_type' => 'post',
				'hierarchical' => false,
				'query_var' => true,
				'show_in_rest' => true,
				'menu_icon' => 'dashicons-admin-post',
				'supports' => [
					'title',
					'thumbnail'
				]
			];

			register_post_type( $this->post_type, $args );
		}


		public function add_meta_boxes () {
			add_meta_box(
				'event_link_meta_box',
				esc_html__( 'Event URL', 'bw-winners-network' ),
				[ $this, 'meta_box' ],
				$this->post_type,
				'normal',
				'high'
			);
		}

		public function meta_box ( $post ) {
			wp_nonce_field( basename( __FILE__ ), 'event_link_nonce' );
			?>
				<p>
					<label for="event_link_meta"><?php _e( "Add a custom URL link", 'bw-winners-network' ); ?></label>
					<br />
					<input class="widefat" type="text" name="event_link_meta" id="event_link_meta" value="<?php echo esc_attr( get_post_meta( $post->ID, 'event_link', true ) ); ?>" size="30" />
				</p>
			<?php
		}

		public function save_post ( $post_id, $post ) {
			if ( !isset( $_POST['event_link_nonce'] ) || !wp_verify_nonce( $_POST['event_link_nonce'], basename( __FILE__ ) ) ) {
				return $post_id;
			}

			$post_type = get_post_type_object( $post->post_type );

			if ( ! current_user_can( $post_type->cap->edit_post, $post_id ) ) {
				return $post_id;
			}

			$new_meta_value = ( isset( $_POST['event_link_meta'] ) ? esc_url( $_POST['event_link_meta'] ) : '' );

			$meta_key = 'event_link';

			$meta_value = get_post_meta( $post_id, $meta_key, true );

			if ( $new_meta_value ) {
				update_post_meta( $post_id, $meta_key, $new_meta_value );
			} else {
				delete_post_meta( $post_id, $meta_key );
			}
		}
	}
}
