PATH:
home
/
lab2454c
/
caimegroup.com
/
wp-content
/
plugins
/
mailpoet
/
lib
/
Config
<?php declare(strict_types = 1); namespace MailPoet\Config; if (!defined('ABSPATH')) exit; use MailPoet\Entities\SubscriberEntity; use MailPoet\WP\Functions as WPFunctions; use MailPoetVendor\Carbon\Carbon; class SubscriberChangesNotifier { /** @var array<int, int> */ private $createdSubscriberIds = []; /** @var array<int, int> */ private $deletedSubscriberIds = []; /** @var array<int, int> */ private $updatedSubscriberIds = []; /** @var array<int, int> */ private $statusChangedSubscriberIds = []; /** @var array<int, int> */ private $createdSubscriberBatches = []; /** @var array<int, int> */ private $updatedSubscriberBatches = []; /** @var WPFunctions */ private $wp; public function __construct( WPFunctions $wp ) { $this->wp = $wp; } public function notify() { $this->notifyCreations(); $this->notifyUpdates(); $this->notifyDeletes(); } private function notifyCreations(): void { if (count($this->createdSubscriberIds) > 1) { $minTimestamp = min($this->createdSubscriberIds); if ($minTimestamp) { $this->createdSubscriberBatches[] = $minTimestamp; $this->createdSubscriberIds = []; // reset created subscribers } } foreach ($this->createdSubscriberIds as $subscriberId => $updatedAt) { $this->wp->doAction(SubscriberEntity::HOOK_SUBSCRIBER_CREATED, $subscriberId); } if ($this->createdSubscriberBatches) { $minTimestamp = min($this->createdSubscriberBatches); if ($minTimestamp) { $this->wp->doAction(SubscriberEntity::HOOK_MULTIPLE_SUBSCRIBERS_CREATED, $minTimestamp); } } } private function notifyUpdates(): void { // unset updated subscribers if subscriber is created foreach ($this->createdSubscriberIds as $subscriberId => $timestamp) { unset($this->updatedSubscriberIds[$subscriberId]); unset($this->statusChangedSubscriberIds[$subscriberId]); } if (count($this->updatedSubscriberIds) > 1) { $minTimestamp = min($this->updatedSubscriberIds); if ($minTimestamp) { $this->updatedSubscriberBatches[] = $minTimestamp; $this->updatedSubscriberIds = []; // reset updated subscribers $this->statusChangedSubscriberIds = []; // reset status changed subscribers } } foreach ($this->updatedSubscriberIds as $subscriberId => $updatedAt) { $this->wp->doAction(SubscriberEntity::HOOK_SUBSCRIBER_UPDATED, $subscriberId); } foreach ($this->statusChangedSubscriberIds as $subscriberId => $updatedAt) { $this->wp->doAction(SubscriberEntity::HOOK_SUBSCRIBER_STATUS_CHANGED, $subscriberId); } if ($this->updatedSubscriberBatches) { $minTimestamp = min($this->updatedSubscriberBatches); if ($minTimestamp) { $this->wp->doAction(SubscriberEntity::HOOK_MULTIPLE_SUBSCRIBERS_UPDATED, $minTimestamp); } } } private function notifyDeletes(): void { if (count($this->deletedSubscriberIds) === 1) { foreach ($this->deletedSubscriberIds as $subscriberId => $updatedAt) { $this->wp->doAction(SubscriberEntity::HOOK_SUBSCRIBER_DELETED, $subscriberId); } } elseif ($this->deletedSubscriberIds) { $this->wp->doAction(SubscriberEntity::HOOK_MULTIPLE_SUBSCRIBERS_DELETED, array_keys($this->deletedSubscriberIds)); } } public function subscriberCreated(int $subscriberId): void { // store id as a key and timestamp change as the value $this->createdSubscriberIds[$subscriberId] = $this->getTimestamp(); } public function subscriberUpdated(int $subscriberId): void { // store id as a key and timestamp change as the value $this->updatedSubscriberIds[$subscriberId] = $this->getTimestamp(); } public function subscriberStatusChanged(int $subscriberId): void { // store id as a key and timestamp change as the value $this->statusChangedSubscriberIds[$subscriberId] = $this->getTimestamp(); } public function subscriberDeleted(int $subscriberId): void { // store id as a key and timestamp change as the value $this->deletedSubscriberIds[$subscriberId] = $this->getTimestamp(); } public function subscribersCreated(array $subscriberIds): void { foreach ($subscriberIds as $subscriberId) { $this->subscriberCreated((int)$subscriberId); } } public function subscribersUpdated(array $subscriberIds): void { foreach ($subscriberIds as $subscriberId) { $this->subscriberUpdated((int)$subscriberId); } } public function subscribersDeleted(array $subscriberIds): void { foreach ($subscriberIds as $subscriberId) { $this->subscriberDeleted((int)$subscriberId); } } public function subscribersBatchCreate(): void { $this->createdSubscriberBatches[] = $this->getTimestamp(); } public function subscribersBatchUpdate(): void { $this->updatedSubscriberBatches[] = $this->getTimestamp(); } private function getTimestamp(): int { $dateTime = Carbon::createFromTimestamp($this->wp->currentTime('timestamp', true), 'UTC'); return $dateTime->getTimestamp(); } }
[-] Localizer.php
[edit]
[-] TwigFileSystemCache.php
[edit]
[-] SubscriberChangesNotifier.php
[edit]
[-] Activator.php
[edit]
[-] DatabaseInitializer.php
[edit]
[-] index.php
[edit]
[+]
..
[+]
PopulatorData
[-] SilentUpgraderSkin.php
[edit]
[-] AssetsLoader.php
[edit]
[-] Shortcodes.php
[edit]
[-] ServicesChecker.php
[edit]
[-] Changelog.php
[edit]
[-] Hooks.php
[edit]
[-] TwigEnvironment.php
[edit]
[-] PrivacyPolicy.php
[edit]
[-] Updater.php
[edit]
[-] Capabilities.php
[edit]
[-] AccessControl.php
[edit]
[-] Populator.php
[edit]
[-] DeactivationPoll.php
[edit]
[-] Renderer.php
[edit]
[-] PluginActivatedHook.php
[edit]
[-] TranslationUpdater.php
[edit]
[-] PersonalDataErasers.php
[edit]
[-] Installer.php
[edit]
[-] DeferredAdminNotices.php
[edit]
[-] HooksWooCommerce.php
[edit]
[-] Database.php
[edit]
[-] Menu.php
[edit]
[-] Env.php
[edit]
[-] Initializer.php
[edit]
[-] RequirementsChecker.php
[edit]
[-] RendererFactory.php
[edit]
[-] Router.php
[edit]
[-] PersonalDataExporters.php
[edit]