<?php
/********************************************************************
 * Copyright (C) 2024 Darko Gjorgjijoski (https://darkog.com/)
 * Copyright (C) 2024 IDEOLOGIX MEDIA Dooel (https://ideologix.com/)
 *
 * This file is property of IDEOLOGIX MEDIA Dooel (https://ideologix.com)
 * This file is part of Vimeify Plugin - https://wordpress.org/plugins/vimeify/
 *
 * Vimeify - Formerly "WP Vimeo Videos" is free software: you can redistribute
 * it and/or modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 2 of the License,
 * or (at your option) any later version.
 *
 * Vimeify - Formerly "WP Vimeo Videos" is distributed in the hope that it
 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this plugin. If not, see <https://www.gnu.org/licenses/>.
 *
 * Code developed by Darko Gjorgjijoski <dg@darkog.com>.
 **********************************************************************/

namespace Vimeify\Core\Frontend;

use Vimeify\Core\Abstracts\BaseProvider;
use Vimeify\Core\Frontend\Views\GalleryView;

class Shortcodes extends BaseProvider {

	/**
	 * Registers specific piece of functionality
	 * @return void
	 */
	public function register() {
		add_shortcode( 'vimeify_gallery', [ $this, 'render_gallery_shortcode' ] );
	}

	/**
	 * Render gallery shortcode
	 *
	 * @param array $atts Shortcode attributes
	 *
	 * @return string
	 */
	public function render_gallery_shortcode( $atts ) {
		$atts = shortcode_atts( [
			'id' => 0,
		], $atts, 'vimeify_gallery' );

		$gallery_id = intval( $atts['id'] );

		if ( empty( $gallery_id ) ) {
			return '<p>' . esc_html__( 'Please provide a gallery ID.', 'vimeify' ) . '</p>';
		}

		// Render gallery using the view
		$view = new GalleryView( $this->plugin );
		return $view->output( [ 'id' => $gallery_id ] );
	}
}
