| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace MailPoet\AdminPages;
- if (!defined('ABSPATH')) exit;
- use MailPoet\Config\Renderer;
- use MailPoet\Cron\Workers\SubscribersCountCacheRecalculation;
- use MailPoet\Entities\SegmentEntity;
- use MailPoet\Features\FeaturesController;
- use MailPoet\Referrals\ReferralDetector;
- use MailPoet\Segments\SegmentsRepository;
- use MailPoet\Settings\SettingsController;
- use MailPoet\Settings\UserFlagsController;
- use MailPoet\Tracy\DIPanel\DIPanel;
- use MailPoet\WP\Notice as WPNotice;
- use Tracy\Debugger;
- class PageRenderer {
- /** @var Renderer */
- private $renderer;
- /** @var FeaturesController */
- private $featuresController;
- /** @var SettingsController */
- private $settings;
- /** @var UserFlagsController */
- private $userFlags;
- /** @var SegmentsRepository */
- private $segmentRepository;
- /** @var SubscribersCountCacheRecalculation */
- private $subscribersCountCacheRecalculation;
- public function __construct(
- Renderer $renderer,
- FeaturesController $featuresController,
- SettingsController $settings,
- UserFlagsController $userFlags,
- SegmentsRepository $segmentRepository,
- SubscribersCountCacheRecalculation $subscribersCountCacheRecalculation
- ) {
- $this->renderer = $renderer;
- $this->featuresController = $featuresController;
- $this->settings = $settings;
- $this->userFlags = $userFlags;
- $this->segmentRepository = $segmentRepository;
- $this->subscribersCountCacheRecalculation = $subscribersCountCacheRecalculation;
- }
- /**
- * Set common data for template and display template
- * @param string $template
- * @param array $data
- */
- public function displayPage($template, array $data = []) {
- $lastAnnouncementDate = $this->settings->get('last_announcement_date');
- $lastAnnouncementSeen = $this->userFlags->get('last_announcement_seen');
- $wpSegment = $this->segmentRepository->getWPUsersSegment();
- $wpSegmentState = ($wpSegment instanceof SegmentEntity) && $wpSegment->getDeletedAt() === null ?
- SegmentEntity::SEGMENT_ENABLED : SegmentEntity::SEGMENT_DISABLED;
- $defaults = [
- 'feature_flags' => $this->featuresController->getAllFlags(),
- 'referral_id' => $this->settings->get(ReferralDetector::REFERRAL_SETTING_NAME),
- 'mailpoet_api_key_state' => $this->settings->get('mta.mailpoet_api_key_state'),
- 'premium_key_state' => $this->settings->get('premium.premium_key_state'),
- 'last_announcement_seen' => $lastAnnouncementSeen,
- 'feature_announcement_has_news' => (empty($lastAnnouncementSeen) || $lastAnnouncementSeen < $lastAnnouncementDate),
- 'wp_segment_state' => $wpSegmentState,
- ];
- try {
- if (
- class_exists(Debugger::class)
- && class_exists(DIPanel::class)
- ) {
- DIPanel::init();
- }
- if (is_admin() && $this->subscribersCountCacheRecalculation->shouldBeScheduled()) {
- $this->subscribersCountCacheRecalculation->schedule();
- }
- echo $this->renderer->render($template, $data + $defaults);
- } catch (\Exception $e) {
- $notice = new WPNotice(WPNotice::TYPE_ERROR, $e->getMessage());
- $notice->displayWPNotice();
- }
- }
- }
|