Geen omschrijving

PageRenderer.php 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace MailPoet\AdminPages;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Config\Renderer;
  5. use MailPoet\Cron\Workers\SubscribersCountCacheRecalculation;
  6. use MailPoet\Entities\SegmentEntity;
  7. use MailPoet\Features\FeaturesController;
  8. use MailPoet\Referrals\ReferralDetector;
  9. use MailPoet\Segments\SegmentsRepository;
  10. use MailPoet\Settings\SettingsController;
  11. use MailPoet\Settings\UserFlagsController;
  12. use MailPoet\Tracy\DIPanel\DIPanel;
  13. use MailPoet\WP\Notice as WPNotice;
  14. use Tracy\Debugger;
  15. class PageRenderer {
  16. /** @var Renderer */
  17. private $renderer;
  18. /** @var FeaturesController */
  19. private $featuresController;
  20. /** @var SettingsController */
  21. private $settings;
  22. /** @var UserFlagsController */
  23. private $userFlags;
  24. /** @var SegmentsRepository */
  25. private $segmentRepository;
  26. /** @var SubscribersCountCacheRecalculation */
  27. private $subscribersCountCacheRecalculation;
  28. public function __construct(
  29. Renderer $renderer,
  30. FeaturesController $featuresController,
  31. SettingsController $settings,
  32. UserFlagsController $userFlags,
  33. SegmentsRepository $segmentRepository,
  34. SubscribersCountCacheRecalculation $subscribersCountCacheRecalculation
  35. ) {
  36. $this->renderer = $renderer;
  37. $this->featuresController = $featuresController;
  38. $this->settings = $settings;
  39. $this->userFlags = $userFlags;
  40. $this->segmentRepository = $segmentRepository;
  41. $this->subscribersCountCacheRecalculation = $subscribersCountCacheRecalculation;
  42. }
  43. /**
  44. * Set common data for template and display template
  45. * @param string $template
  46. * @param array $data
  47. */
  48. public function displayPage($template, array $data = []) {
  49. $lastAnnouncementDate = $this->settings->get('last_announcement_date');
  50. $lastAnnouncementSeen = $this->userFlags->get('last_announcement_seen');
  51. $wpSegment = $this->segmentRepository->getWPUsersSegment();
  52. $wpSegmentState = ($wpSegment instanceof SegmentEntity) && $wpSegment->getDeletedAt() === null ?
  53. SegmentEntity::SEGMENT_ENABLED : SegmentEntity::SEGMENT_DISABLED;
  54. $defaults = [
  55. 'feature_flags' => $this->featuresController->getAllFlags(),
  56. 'referral_id' => $this->settings->get(ReferralDetector::REFERRAL_SETTING_NAME),
  57. 'mailpoet_api_key_state' => $this->settings->get('mta.mailpoet_api_key_state'),
  58. 'premium_key_state' => $this->settings->get('premium.premium_key_state'),
  59. 'last_announcement_seen' => $lastAnnouncementSeen,
  60. 'feature_announcement_has_news' => (empty($lastAnnouncementSeen) || $lastAnnouncementSeen < $lastAnnouncementDate),
  61. 'wp_segment_state' => $wpSegmentState,
  62. ];
  63. try {
  64. if (
  65. class_exists(Debugger::class)
  66. && class_exists(DIPanel::class)
  67. ) {
  68. DIPanel::init();
  69. }
  70. if (is_admin() && $this->subscribersCountCacheRecalculation->shouldBeScheduled()) {
  71. $this->subscribersCountCacheRecalculation->schedule();
  72. }
  73. echo $this->renderer->render($template, $data + $defaults);
  74. } catch (\Exception $e) {
  75. $notice = new WPNotice(WPNotice::TYPE_ERROR, $e->getMessage());
  76. $notice->displayWPNotice();
  77. }
  78. }
  79. }