<?php

/**
 * Manage the Squat Radar plugin.
 *
 * @package Squat_Radar
 */

defined( 'ABSPATH' ) || exit;

/**
 * Singleton for managing Squat Radar.
 */
class Squat_Radar_Instance {

	private static $instance = null;

	/**
	 * Creates or returns an instance of this class.
	 *
	 * @return	A single instance of this class.
	 */
	public static function get_instance() {
		return null == self::$instance ? self::$instance = new self : self::$instance;
	}

	private function __construct() {
		include SQUAT_RADAR_DIR . 'includes/squat-radar-widget.php';
		include SQUAT_RADAR_DIR . 'includes/squat-radar-connector.php';
		include SQUAT_RADAR_DIR . 'includes/squat-radar-formatter.php';

		add_shortcode( 'squat_radar_sidebar', [$this, 'print_sidebar'] );
		add_action( 'plugins_loaded', [$this, 'i18n'], 5 );
		add_action( 'widgets_init', [ $this, 'add_sidebar'], 20 );
		add_action( 'widgets_init', ['Squat_Radar_Widget', 'register_widget'] );

		Squat_Radar_Formatter::register();
	}

	/**
	 * Load translation files
	 *
	 * @since 0.2.4
	 */
	function i18n() {
		load_plugin_textdomain( 'squat-radar', false, '/languages' );
	}

	function print_sidebar() {
		ob_start();

		if (is_active_sidebar('squat_radar_widget_shortcode')) {
			dynamic_sidebar('squat_radar_widget_shortcode');
		}

		return ob_get_clean();
	}



	function add_sidebar() {

		register_sidebar([
			'name'          => __( 'Squat Radar Shortcodes'),
			'description'=> __( 'This widget area is not by default displayed on frontend. It can be displayed with all its widgets with the [squat_radar_sidebar] shortcode.', 'squat-radar' ),
			'id'            => 'squat_radar_widget_shortcode',
			'before_widget' => '<div class="widget %2$s">',
			'after_widget'  => '</div>',
			'before_title'  => '<h3 class="widget-title">',
			'after_title'   => '</h3>',
		]);

	}

}