<?php namespace MailPoet\Util\Notices; if (!defined('ABSPATH')) exit; use MailPoet\Config\Menu; use MailPoet\Settings\SettingsController; use MailPoet\Settings\TrackingConfig; use MailPoet\Subscribers\SubscribersRepository; use MailPoet\WP\Functions as WPFunctions; class PermanentNotices { /** @var WPFunctions */ private $wp; /** @var PHPVersionWarnings */ private $phpVersionWarnings; /** @var AfterMigrationNotice */ private $afterMigrationNotice; /** @var UnauthorizedEmailNotice */ private $unauthorizedEmailsNotice; /** @var UnauthorizedEmailInNewslettersNotice */ private $unauthorizedEmailsInNewslettersNotice; /** @var InactiveSubscribersNotice */ private $inactiveSubscribersNotice; /** @var BlackFridayNotice */ private $blackFridayNotice; /** @var HeadersAlreadySentNotice */ private $headersAlreadySentNotice; /** @var EmailWithInvalidSegmentNotice */ private $emailWithInvalidListNotice; /** @var ChangedTrackingNotice */ private $changedTrackingNotice; /** @var DeprecatedFilterNotice */ private $deprecatedFilterNotice; public function __construct( WPFunctions $wp, TrackingConfig $trackingConfig, SubscribersRepository $subscribersRepository, SettingsController $settings ) { $this->wp = $wp; $this->phpVersionWarnings = new PHPVersionWarnings(); $this->afterMigrationNotice = new AfterMigrationNotice(); $this->unauthorizedEmailsNotice = new UnauthorizedEmailNotice($wp, $settings); $this->unauthorizedEmailsInNewslettersNotice = new UnauthorizedEmailInNewslettersNotice($settings, $wp); $this->inactiveSubscribersNotice = new InactiveSubscribersNotice($settings, $subscribersRepository, $wp); $this->blackFridayNotice = new BlackFridayNotice($subscribersRepository); $this->headersAlreadySentNotice = new HeadersAlreadySentNotice($settings, $trackingConfig, $wp); $this->emailWithInvalidListNotice = new EmailWithInvalidSegmentNotice($wp); $this->changedTrackingNotice = new ChangedTrackingNotice($wp); $this->deprecatedFilterNotice = new DeprecatedFilterNotice($wp); } public function init() { $excludeWizard = [ 'mailpoet-welcome-wizard', 'mailpoet-woocommerce-setup', ]; $this->wp->addAction('wp_ajax_dismissed_notice_handler', [ $this, 'ajaxDismissNoticeHandler', ]); $this->phpVersionWarnings->init( phpversion(), Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->afterMigrationNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->unauthorizedEmailsNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->unauthorizedEmailsInNewslettersNotice->init( Menu::isOnMailPoetAdminPage($exclude = null, $pageId = 'mailpoet-newsletters') ); $this->inactiveSubscribersNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->blackFridayNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->headersAlreadySentNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->emailWithInvalidListNotice->init( Menu::isOnMailPoetAdminPage($exclude = null, $pageId = 'mailpoet-newsletters') ); $this->changedTrackingNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); $this->deprecatedFilterNotice->init( Menu::isOnMailPoetAdminPage($excludeWizard) ); } public function ajaxDismissNoticeHandler() { if (!isset($_POST['type'])) return; switch ($_POST['type']) { case (PHPVersionWarnings::OPTION_NAME): $this->phpVersionWarnings->disable(); break; case (AfterMigrationNotice::OPTION_NAME): $this->afterMigrationNotice->disable(); break; case (BlackFridayNotice::OPTION_NAME): $this->blackFridayNotice->disable(); break; case (HeadersAlreadySentNotice::OPTION_NAME): $this->headersAlreadySentNotice->disable(); break; case (InactiveSubscribersNotice::OPTION_NAME): $this->inactiveSubscribersNotice->disable(); break; case (EmailWithInvalidSegmentNotice::OPTION_NAME): $this->emailWithInvalidListNotice->disable(); break; case (ChangedTrackingNotice::OPTION_NAME): $this->changedTrackingNotice->disable(); break; case (DeprecatedFilterNotice::OPTION_NAME): $this->deprecatedFilterNotice->disable(); break; } } }