403Webshell
Server IP : 81.19.159.101  /  Your IP : 216.73.217.178
Web Server : Apache
System : Linux www58.world4you.com 4.18.0-553.126.2.lve.el8.x86_64 #1 SMP Thu May 28 14:12:30 UTC 2026 x86_64
User : ftp8817043 ( 2681)
PHP Version : 8.4.21
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/.sites/103/site8817043/web/wp-content/plugins/google-calendar-events/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/.sites/103/site8817043/web/wp-content/plugins/google-calendar-events/includes/shortcodes.php
<?php
/**
 * Shortcodes
 *
 * @package SimpleCalendar
 */
namespace SimpleCalendar;

use SimpleCalendar\Abstracts\Calendar;

if (!defined('ABSPATH')) {
	exit();
}

/**
 * Shortcodes.
 *
 * Register and handle custom shortcodes.
 *
 * @since 3.0.0
 */
class Shortcodes
{
	/**
	 * Flag to track if assets have been loaded for shortcodes.
	 *
	 * @since 3.5.6
	 * @var bool
	 */
	private static $assets_loaded = false;

	/**
	 * Hook in tabs.
	 *
	 * @since 3.0.0
	 */
	public function __construct()
	{
		// Add shortcodes.
		add_action('init', [$this, 'register']);
	}

	/**
	 * Register shortcodes.
	 *
	 * @since 3.0.0
	 */
	public function register()
	{
		// `calendar` shortcode is conflict with other plugin so added new one.
		add_shortcode('simple_calendar', [$this, 'print_calendar']);
		add_shortcode('calendar', [$this, 'print_calendar']);
		// @deprecated legacy shortcode
		add_shortcode('gcal', [$this, 'print_calendar']);

		do_action('simcal_add_shortcodes');
	}

	/**
	 * Print a calendar.
	 *
	 * @since  3.0.0
	 *
	 * @param  array $attributes
	 *
	 * @return string
	 */
	public function print_calendar($attributes)
	{
		$args = shortcode_atts(
			[
				'id' => null,
			],
			$attributes
		);

		$id = absint($args['id']);

		if ($id > 0) {
			// Ensure assets are loaded when shortcode is rendered
			$this->ensure_assets_loaded();

			$calendar = simcal_get_calendar($id);

			if ($calendar instanceof Calendar) {
				ob_start();
				$calendar->html();
				return ob_get_clean();
			}
		}

		return '';
	}

	/**
	 * Ensure assets are loaded when shortcode is rendered.
	 *
	 * This is a fallback mechanism for cases where the early detection in
	 * Assets::check_load_assets() might have missed shortcodes in page builders.
	 * Works even if wp_enqueue_scripts has already fired.
	 *
	 * @since 3.5.6
	 */
	private function ensure_assets_loaded()
	{
		// Prevent duplicate loading
		if (self::$assets_loaded) {
			return;
		}

		// Try to schedule assets if wp_enqueue_scripts hasn't fired yet
		if (!did_action('wp_enqueue_scripts')) {
			add_action('wp_enqueue_scripts', [$this, 'load_shortcode_assets'], 5);
		} else {
			// wp_enqueue_scripts already fired - load assets immediately
			// This handles cases where page builders load content after wp_enqueue_scripts
			$this->load_shortcode_assets();
		}
	}

	/**
	 * Load assets for shortcode usage.
	 *
	 * @since 3.5.6
	 */
	public function load_shortcode_assets()
	{
		// Prevent duplicate loading
		if (self::$assets_loaded) {
			return;
		}

		// Get the Assets instance and load the assets
		$assets = new \SimpleCalendar\Assets();
		$assets->load();

		// Mark as loaded
		self::$assets_loaded = true;

		// Trigger action for other plugins/themes to hook into
		do_action('simcal_shortcode_assets_loaded');
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit