container = $container; } /** * Run the plugin. * * @return void */ public function run(): void { // Check requirements $checker = new RequirementsChecker(); if (!$checker->check()) { $checker->displayAdminNotices(); return; } // Register and boot service providers $this->registerProviders(); $this->bootProviders(); // Capture and persist UTM and click identifier parameters in cookies add_action('init', function (): void { $utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; $clickKeys = ['gclid', 'fbclid', 'msclkid', 'ttclid', 'yclid', 'wbraid', 'gbraid', 'gad_source']; $allKeys = array_merge($utmKeys, $clickKeys); foreach ($allKeys as $key) { if (isset($_GET[$key])) { $value = sanitize_text_field(wp_unslash($_GET[$key])); setcookie( 'oneclickformsync_' . $key, $value, time() + 30 * DAY_IN_SECONDS, COOKIEPATH ?: '/', COOKIE_DOMAIN, is_ssl(), true ); } } }); } /** * Get the DI container. * * @return Container */ public function getContainer(): Container { return $this->container; } /** * Register all module service providers. * * @return void */ private function registerProviders(): void { $providerClasses = [ \OneClickFormSync\Database\DatabaseServiceProvider::class, \OneClickFormSync\Connections\ConnectionServiceProvider::class, \OneClickFormSync\Google\GoogleServiceProvider::class, \OneClickFormSync\Queue\QueueServiceProvider::class, \OneClickFormSync\Logging\LoggingServiceProvider::class, \OneClickFormSync\Forms\FormsServiceProvider::class, \OneClickFormSync\Admin\AdminServiceProvider::class, ]; foreach ($providerClasses as $providerClass) { if (class_exists($providerClass)) { $provider = new $providerClass($this->container); $provider->register(); $this->providers[] = $provider; } } } /** * Boot all registered service providers. * * @return void */ private function bootProviders(): void { foreach ($this->providers as $provider) { $provider->boot(); } } }