mirror of
				https://github.com/dwaxweiler/connector-mobilizon
				synced 2025-06-05 21:59:25 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Plugin Name:       <wordpress-nice-name>
 | |
|  * Author:            <wordpress-author-name>
 | |
|  * Author URI:        <wordpress-author-url>
 | |
|  * Description:       <wordpress-description>
 | |
|  * Version:           <wordpress-version>
 | |
|  * Requires at least: <wordpress-minimum-version>
 | |
|  * Requires PHP:      <wordpress-php-minimum-version>
 | |
|  * License:           <wordpress-license>
 | |
|  */
 | |
| 
 | |
| require_once __DIR__ . '/includes/constants.php';
 | |
| require_once __DIR__ . '/includes/settings.php';
 | |
| require_once __DIR__ . '/includes/date-time-wrapper.php';
 | |
| require_once __DIR__ . '/includes/formatter.php';
 | |
| require_once __DIR__ . '/includes/graphql-client.php';
 | |
| require_once __DIR__ . '/includes/events-list-block.php';
 | |
| require_once __DIR__ . '/includes/events-list-shortcut.php';
 | |
| require_once __DIR__ . '/includes/events-list-widget.php';
 | |
| 
 | |
| // Exit if this file is called directly.
 | |
| if (!defined('ABSPATH')) {
 | |
|   exit;
 | |
| }
 | |
| 
 | |
| final class Mobilizon_Connector {
 | |
| 
 | |
|   private function __construct() {
 | |
|     add_action('init', [$this, 'register_blocks']);
 | |
|     add_action('init', [$this, 'register_settings'], 1); // required for register_blocks
 | |
|     add_action('init', [$this, 'register_shortcut']);
 | |
|     add_action('widgets_init', [$this, 'register_widget']);
 | |
|     add_action('wp_enqueue_scripts', [$this, 'register_scripts']);
 | |
|     register_activation_hook(__FILE__, [$this, 'enable_activation']);
 | |
|   }
 | |
| 
 | |
|   public static function init() {
 | |
|     // Create singleton instance.
 | |
|     static $instance = false;
 | |
|     if(!$instance) {
 | |
|         $instance = new self();
 | |
|     }
 | |
|     return $instance;
 | |
|   }
 | |
| 
 | |
|   public function enable_activation() {
 | |
|     MobilizonConnector\Settings::setDefaultOptions();
 | |
|   }
 | |
| 
 | |
|   private function load_settings_globally_before_script($scriptName) {
 | |
|     $settings = array(
 | |
|       'isShortOffsetNameShown' => MobilizonConnector\Settings::isShortOffsetNameShown(),
 | |
|       'locale' => str_replace('_', '-', get_locale()),
 | |
|       'timeZone' => wp_timezone_string(),
 | |
|       'url' => MobilizonConnector\Settings::getUrl()
 | |
|     );
 | |
|     wp_add_inline_script($scriptName, 'var MOBILIZON_CONNECTOR = ' . json_encode($settings), 'before');
 | |
|   }
 | |
| 
 | |
|   public function register_blocks() {
 | |
|     $scriptName = MobilizonConnector\EventsListBlock::initAndReturnScriptName();
 | |
|     $this->load_settings_globally_before_script($scriptName);
 | |
|   }
 | |
| 
 | |
|   public function register_settings() {
 | |
|     MobilizonConnector\Settings::init();
 | |
|   }
 | |
| 
 | |
|   public function register_scripts() {
 | |
|     $name = MobilizonConnector\NAME . '-js';
 | |
|     wp_enqueue_script($name, plugins_url('front/events-loader.js', __FILE__ ));
 | |
|     $this->load_settings_globally_before_script($name);
 | |
|   }
 | |
| 
 | |
|   public function register_shortcut() {
 | |
|     MobilizonConnector\EventsListShortcut::init();
 | |
|   }
 | |
| 
 | |
|   public function register_widget() {
 | |
|     register_widget('MobilizonConnector\EventsListWidget');
 | |
|   }
 | |
| }
 | |
| 
 | |
| function mobilizon_connector_run_plugin() {
 | |
|   return Mobilizon_Connector::init();
 | |
| }
 | |
| 
 | |
| mobilizon_connector_run_plugin();
 |