| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- namespace MailPoet\AdminPages\Pages;
- if (!defined('ABSPATH')) exit;
- use MailPoet\AdminPages\PageRenderer;
- use MailPoet\Cache\TransientCache;
- use MailPoet\Config\ServicesChecker;
- use MailPoet\Form\Block;
- use MailPoet\Listing\PageLimit;
- use MailPoet\Models\CustomField;
- use MailPoet\Segments\SegmentsSimpleListRepository;
- use MailPoet\Services\Bridge;
- use MailPoet\Settings\SettingsController;
- use MailPoet\Subscribers\ConfirmationEmailMailer;
- use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
- use MailPoet\Util\License\License;
- use MailPoet\WP\Functions as WPFunctions;
- use MailPoetVendor\Carbon\Carbon;
- class Subscribers {
- /** @var PageRenderer */
- private $pageRenderer;
- /** @var PageLimit */
- private $listingPageLimit;
- /** @var SubscribersFeature */
- private $subscribersFeature;
- /** @var WPFunctions */
- private $wp;
- /** @var Block\Date */
- private $dateBlock;
- /** @var ServicesChecker */
- private $servicesChecker;
- /** @var SegmentsSimpleListRepository */
- private $segmentsListRepository;
- /** @var SettingsController */
- private $settings;
- /** @var TransientCache */
- private $transientCache;
- public function __construct(
- PageRenderer $pageRenderer,
- PageLimit $listingPageLimit,
- SubscribersFeature $subscribersFeature,
- WPFunctions $wp,
- ServicesChecker $servicesChecker,
- Block\Date $dateBlock,
- SettingsController $settings,
- SegmentsSimpleListRepository $segmentsListRepository,
- TransientCache $transientCache
- ) {
- $this->pageRenderer = $pageRenderer;
- $this->listingPageLimit = $listingPageLimit;
- $this->subscribersFeature = $subscribersFeature;
- $this->wp = $wp;
- $this->dateBlock = $dateBlock;
- $this->servicesChecker = $servicesChecker;
- $this->segmentsListRepository = $segmentsListRepository;
- $this->settings = $settings;
- $this->transientCache = $transientCache;
- }
- public function render() {
- $data = [];
- $data['items_per_page'] = $this->listingPageLimit->getLimitPerPage('subscribers');
- $data['segments'] = $this->segmentsListRepository->getListWithSubscribedSubscribersCounts();
- $data['custom_fields'] = array_map(function($field) {
- $field['params'] = unserialize($field['params']);
- if (!empty($field['params']['values'])) {
- $values = [];
- foreach ($field['params']['values'] as $value) {
- $values[$value['value']] = $value['value'];
- }
- $field['params']['values'] = $values;
- }
- return $field;
- }, CustomField::findArray());
- $data['date_formats'] = $this->dateBlock->getDateFormats();
- $data['month_names'] = $this->dateBlock->getMonthNames();
- $data['premium_plugin_active'] = License::getLicense();
- $data['mss_active'] = Bridge::isMPSendingServiceEnabled();
- $data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false);
- $data['max_confirmation_emails'] = ConfirmationEmailMailer::MAX_CONFIRMATION_EMAILS;
- $data['subscribers_limit'] = $this->subscribersFeature->getSubscribersLimit();
- $data['subscribers_limit_reached'] = $this->subscribersFeature->check();
- $data['has_valid_api_key'] = $this->subscribersFeature->hasValidApiKey();
- $data['subscriber_count'] = $this->subscribersFeature->getSubscribersCount();
- $data['has_premium_support'] = $this->subscribersFeature->hasPremiumSupport();
- $data['link_premium'] = $this->wp->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-premium');
- $data['tracking_enabled'] = $this->settings->get('tracking.enabled');
- $subscribersCacheCreatedAt = $this->transientCache->getOldestCreatedAt(TransientCache::SUBSCRIBERS_STATISTICS_COUNT_KEY);
- $subscribersCacheCreatedAt = $subscribersCacheCreatedAt ?: Carbon::now();
- $data['subscribers_counts_cache_created_at'] = $subscribersCacheCreatedAt->format('Y-m-d\TH:i:sO');
- $this->pageRenderer->displayPage('subscribers/subscribers.html', $data);
- }
- }
|