Use new controller with subscribers counts

[MAILPOET-3646]
This commit is contained in:
Jan Lysý
2021-07-08 13:40:17 +02:00
committed by Veljko V
parent ac2a70f39b
commit a6dc552cdc
10 changed files with 172 additions and 122 deletions

View File

@ -4,7 +4,6 @@ namespace MailPoet\API\JSON\v1;
use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError;
use MailPoet\Cache\TransientCache;
use MailPoet\Config\AccessControl;
use MailPoet\Config\ServicesChecker;
use MailPoet\Cron\Workers\InactiveSubscribers;
@ -15,11 +14,11 @@ use MailPoet\Form\FormMessageController;
use MailPoet\Mailer\MailerLog;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Segments\SegmentSubscribersRepository;
use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
use MailPoet\Statistics\StatisticsOpensRepository;
use MailPoet\Subscribers\SubscribersCountsController;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
@ -57,14 +56,11 @@ class Settings extends APIEndpoint {
/** @var FormMessageController */
private $messageController;
/** @var TransientCache */
private $transientCache;
/** @var SegmentsRepository */
private $segmentsRepository;
/** @var SegmentSubscribersRepository */
private $segmentSubscribersRepository;
/** @var SubscribersCountsController */
private $subscribersCountsController;
public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_SETTINGS,
@ -81,9 +77,8 @@ class Settings extends APIEndpoint {
ScheduledTasksRepository $scheduledTasksRepository,
FormMessageController $messageController,
ServicesChecker $servicesChecker,
TransientCache $transientCache,
SegmentsRepository $segmentsRepository,
SegmentSubscribersRepository $segmentSubscribersRepository
SubscribersCountsController $subscribersCountsController
) {
$this->settings = $settings;
$this->bridge = $bridge;
@ -95,9 +90,8 @@ class Settings extends APIEndpoint {
$this->statisticsOpensRepository = $statisticsOpensRepository;
$this->scheduledTasksRepository = $scheduledTasksRepository;
$this->messageController = $messageController;
$this->transientCache = $transientCache;
$this->segmentsRepository = $segmentsRepository;
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
$this->subscribersCountsController = $subscribersCountsController;
}
public function get() {
@ -257,12 +251,14 @@ class Settings extends APIEndpoint {
}
public function recalculateSubscribersCountsCache() {
$this->transientCache->invalidateItems(TransientCache::SUBSCRIBERS_STATISTICS_COUNT_KEY);
$segments = $this->segmentsRepository->findAll();
foreach ($segments as $segment) {
$this->segmentSubscribersRepository->getSubscribersStatisticsCount($segment);
$this->subscribersCountsController->recalculateSegmentStatisticsCache($segment);
if ($segment->isStatic()) {
$this->subscribersCountsController->recalculateSegmentGlobalStatusStatisticsCache($segment);
}
}
$this->segmentSubscribersRepository->getSubscribersWithoutSegmentStatisticsCount();
$this->subscribersCountsController->recalculateSubscribersWithoutSegmentStatisticsCache();
return $this->successResponse();
}
}