Нема описа

Subscribers.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace MailPoet\AdminPages\Pages;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\AdminPages\PageRenderer;
  5. use MailPoet\Cache\TransientCache;
  6. use MailPoet\Config\ServicesChecker;
  7. use MailPoet\Form\Block;
  8. use MailPoet\Listing\PageLimit;
  9. use MailPoet\Models\CustomField;
  10. use MailPoet\Segments\SegmentsSimpleListRepository;
  11. use MailPoet\Services\Bridge;
  12. use MailPoet\Settings\SettingsController;
  13. use MailPoet\Subscribers\ConfirmationEmailMailer;
  14. use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
  15. use MailPoet\Util\License\License;
  16. use MailPoet\WP\Functions as WPFunctions;
  17. use MailPoetVendor\Carbon\Carbon;
  18. class Subscribers {
  19. /** @var PageRenderer */
  20. private $pageRenderer;
  21. /** @var PageLimit */
  22. private $listingPageLimit;
  23. /** @var SubscribersFeature */
  24. private $subscribersFeature;
  25. /** @var WPFunctions */
  26. private $wp;
  27. /** @var Block\Date */
  28. private $dateBlock;
  29. /** @var ServicesChecker */
  30. private $servicesChecker;
  31. /** @var SegmentsSimpleListRepository */
  32. private $segmentsListRepository;
  33. /** @var SettingsController */
  34. private $settings;
  35. /** @var TransientCache */
  36. private $transientCache;
  37. public function __construct(
  38. PageRenderer $pageRenderer,
  39. PageLimit $listingPageLimit,
  40. SubscribersFeature $subscribersFeature,
  41. WPFunctions $wp,
  42. ServicesChecker $servicesChecker,
  43. Block\Date $dateBlock,
  44. SettingsController $settings,
  45. SegmentsSimpleListRepository $segmentsListRepository,
  46. TransientCache $transientCache
  47. ) {
  48. $this->pageRenderer = $pageRenderer;
  49. $this->listingPageLimit = $listingPageLimit;
  50. $this->subscribersFeature = $subscribersFeature;
  51. $this->wp = $wp;
  52. $this->dateBlock = $dateBlock;
  53. $this->servicesChecker = $servicesChecker;
  54. $this->segmentsListRepository = $segmentsListRepository;
  55. $this->settings = $settings;
  56. $this->transientCache = $transientCache;
  57. }
  58. public function render() {
  59. $data = [];
  60. $data['items_per_page'] = $this->listingPageLimit->getLimitPerPage('subscribers');
  61. $data['segments'] = $this->segmentsListRepository->getListWithSubscribedSubscribersCounts();
  62. $data['custom_fields'] = array_map(function($field) {
  63. $field['params'] = unserialize($field['params']);
  64. if (!empty($field['params']['values'])) {
  65. $values = [];
  66. foreach ($field['params']['values'] as $value) {
  67. $values[$value['value']] = $value['value'];
  68. }
  69. $field['params']['values'] = $values;
  70. }
  71. return $field;
  72. }, CustomField::findArray());
  73. $data['date_formats'] = $this->dateBlock->getDateFormats();
  74. $data['month_names'] = $this->dateBlock->getMonthNames();
  75. $data['premium_plugin_active'] = License::getLicense();
  76. $data['mss_active'] = Bridge::isMPSendingServiceEnabled();
  77. $data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false);
  78. $data['max_confirmation_emails'] = ConfirmationEmailMailer::MAX_CONFIRMATION_EMAILS;
  79. $data['subscribers_limit'] = $this->subscribersFeature->getSubscribersLimit();
  80. $data['subscribers_limit_reached'] = $this->subscribersFeature->check();
  81. $data['has_valid_api_key'] = $this->subscribersFeature->hasValidApiKey();
  82. $data['subscriber_count'] = $this->subscribersFeature->getSubscribersCount();
  83. $data['has_premium_support'] = $this->subscribersFeature->hasPremiumSupport();
  84. $data['link_premium'] = $this->wp->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-premium');
  85. $data['tracking_enabled'] = $this->settings->get('tracking.enabled');
  86. $subscribersCacheCreatedAt = $this->transientCache->getOldestCreatedAt(TransientCache::SUBSCRIBERS_STATISTICS_COUNT_KEY);
  87. $subscribersCacheCreatedAt = $subscribersCacheCreatedAt ?: Carbon::now();
  88. $data['subscribers_counts_cache_created_at'] = $subscribersCacheCreatedAt->format('Y-m-d\TH:i:sO');
  89. $this->pageRenderer->displayPage('subscribers/subscribers.html', $data);
  90. }
  91. }