File "Plugin.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/common/src/Common/Event_Automator/Plugin.php
File size: 5.63 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* The main Event Automator plugin service provider: it bootstraps the plugin code.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @package TEC\Event_Automator
*/
namespace TEC\Event_Automator;
use TEC\Event_Automator\Hooks as Hooks_Provider;
use TEC\Event_Automator\Service_Providers\Context_Provider;
use TEC\Event_Automator\Zapier\Zapier_Provider;
use TEC\Event_Automator\Power_Automate\Power_Automate_Provider;
use Tribe__Autoloader;
use Tribe__Main;
/**
* Class Plugin
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @package TEC\Event_Automator
*/
class Plugin extends \tad_DI52_ServiceProvider {
/**
* Stores the version for the plugin.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string
*/
public const VERSION = '1.7.0';
/**
* Stores the base slug for the plugin.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string
*/
const SLUG = 'event-automator';
/**
* The slug that will be used to identify HTTP requests the plugin should handle.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string
*/
public static $request_slug = 'event_automator_request';
/**
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string Plugin Directory.
*/
public $plugin_dir;
/**
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string Plugin path.
*/
public $plugin_path;
/**
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var string Plugin URL.
*/
public $plugin_url;
/**
* Allows this class to be used as a singleton.
*
* Note this specifically doesn't have a typing, just a type hinting via Docblocks, it helps
* avoid problems with deprecation since this is loaded so early.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @var \Tribe__Container
*/
protected $container;
/**
* Plugin constructor.
*
* @since 6.0.0
*
* @param \tad_DI52_Container $container The container to use.
*/
public function __construct( \tad_DI52_Container $container ) {
$this->container = $container;
// Set up the plugin provider properties.
$this->plugin_path = trailingslashit( Tribe__Main::instance()->plugin_path );
$this->plugin_dir = trailingslashit( basename( $this->plugin_path ) );
$this->plugin_url = plugins_url( $this->plugin_dir, $this->plugin_path );
}
/**
* Sets the container for the class.
*
* Note this specifically doesn't have a typing for the container, just a type hinting via Docblocks, it helps
* avoid problems with deprecation since this is loaded so early.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @param ?\Tribe__Container $container The container to use, if any. If not provided, the global container will be used.
*
*/
public function set_container( $container = null ): void {
$this->container = $container ?: tribe();
}
/**
* Boots the plugin class and registers it as a singleton.
*
* Note this specifically doesn't have a typing for the container, just a type hinting via Docblocks, it helps
* avoid problems with deprecation since this is loaded so early.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @param ?\Tribe__Container $container The container to use, if any. If not provided, the global container will be used.
*/
public function boot( $container = null ): void {
$plugin = new static();
$plugin->register_autoloader();
$plugin->set_container( $container );
$plugin->container->singleton( static::class, $plugin );
$plugin->register();
}
/**
* Setup the Extension's properties.
*
* This always executes even if the required plugins are not present.
*/
public function register() {
// Register this provider as the main one and use a bunch of aliases.
$this->container->singleton( static::class, $this );
$this->container->singleton( 'event-automator', $this );
$this->container->singleton( 'event-automator.plugin', $this );
$this->container->register( Hooks_Provider::class );
$this->container->register( Context_Provider::class );
$this->container->register( Zapier_Provider::class );
$this->container->register( Power_Automate_Provider::class );
}
/**
* Register the Tribe Autoloader in Events Automator.
*
* @since 6.0.0 Migrated to Common from Event Automator
*/
protected function register_autoloader() {
$this->plugin_path = trailingslashit( Tribe__Main::instance()->plugin_path );
// Load Composer autoload file only if we've not included this file already.
require_once $this->plugin_path . '/vendor/autoload.php';
$autoloader = Tribe__Autoloader::instance();
// For namespaced classes.
$autoloader->register_prefix(
'\\TEC\\Event_Automator\\',
$this->plugin_path . 'src/Common/Event_Automator',
'event-automator'
);
}
/**
* Checks whether the plugin dependency manifest is satisfied or not.
*
* @since 6.0.0 Migrated to Common from Event Automator
*
* @return bool Whether the plugin dependency manifest is satisfied or not.
*/
protected function check_plugin_dependencies(): bool {
$this->register_plugin_dependencies();
if ( ! tribe_check_plugin( static::class ) ) {
return false;
}
return true;
}
/**
* Registers the plugin and dependency manifest among those managed by Event Automator.
*
* @since 6.0.0 Migrated to Common from Event Automator
*/
protected function register_plugin_dependencies() {
$plugin_register = new Plugin_Register();
$plugin_register->register_plugin();
$this->container->singleton( Plugin_Register::class, $plugin_register );
$this->container->singleton( 'event-automator.plugin_register', $plugin_register );
}
}