Keine Beschreibung

Settings.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace MailPoet\AdminPages\Pages;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\AdminPages\PageRenderer;
  5. use MailPoet\Config\Installer;
  6. use MailPoet\Config\ServicesChecker;
  7. use MailPoet\Segments\SegmentsSimpleListRepository;
  8. use MailPoet\Settings\Hosts;
  9. use MailPoet\Settings\Pages;
  10. use MailPoet\Settings\SettingsController;
  11. use MailPoet\Subscription\Captcha;
  12. use MailPoet\Util\Installation;
  13. use MailPoet\WooCommerce\Helper as WooCommerceHelper;
  14. use MailPoet\WP\Functions as WPFunctions;
  15. use MailPoet\WP\Notice as WPNotice;
  16. class Settings {
  17. /** @var PageRenderer */
  18. private $pageRenderer;
  19. /** @var SettingsController */
  20. private $settings;
  21. /** @var WooCommerceHelper */
  22. private $woocommerceHelper;
  23. /** @var WPFunctions */
  24. private $wp;
  25. /** @var ServicesChecker */
  26. private $servicesChecker;
  27. /** @var Captcha */
  28. private $captcha;
  29. /** @var Installation */
  30. private $installation;
  31. /** @var SegmentsSimpleListRepository */
  32. private $segmentsListRepository;
  33. public function __construct(
  34. PageRenderer $pageRenderer,
  35. SettingsController $settings,
  36. WooCommerceHelper $woocommerceHelper,
  37. WPFunctions $wp,
  38. ServicesChecker $servicesChecker,
  39. Installation $installation,
  40. Captcha $captcha,
  41. SegmentsSimpleListRepository $segmentsListRepository
  42. ) {
  43. $this->pageRenderer = $pageRenderer;
  44. $this->settings = $settings;
  45. $this->woocommerceHelper = $woocommerceHelper;
  46. $this->wp = $wp;
  47. $this->servicesChecker = $servicesChecker;
  48. $this->installation = $installation;
  49. $this->captcha = $captcha;
  50. $this->segmentsListRepository = $segmentsListRepository;
  51. }
  52. public function render() {
  53. $settings = $this->settings->getAll();
  54. $premiumKeyValid = $this->servicesChecker->isPremiumKeyValid(false);
  55. // force MSS key check even if the method isn't active
  56. $mpApiKeyValid = $this->servicesChecker->isMailPoetAPIKeyValid(false, true);
  57. $installer = new Installer(Installer::PREMIUM_PLUGIN_SLUG);
  58. $pluginInformation = $installer->retrievePluginInformation();
  59. $data = [
  60. 'settings' => $settings,
  61. 'segments' => $this->segmentsListRepository->getListWithSubscribedSubscribersCounts(),
  62. 'premium_key_valid' => !empty($premiumKeyValid),
  63. 'mss_key_valid' => !empty($mpApiKeyValid),
  64. 'pages' => Pages::getAll(),
  65. 'current_user' => $this->wp->wpGetCurrentUser(),
  66. 'is_woocommerce_active' => $this->woocommerceHelper->isWooCommerceActive(),
  67. 'is_members_plugin_active' => $this->wp->isPluginActive('members/members.php'),
  68. 'premium_plugin_download_url' => $pluginInformation->download_link ?? null, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
  69. 'hosts' => [
  70. 'web' => Hosts::getWebHosts(),
  71. 'smtp' => Hosts::getSMTPHosts(),
  72. ],
  73. 'paths' => [
  74. 'root' => ABSPATH,
  75. 'plugin' => dirname(dirname(dirname(__DIR__))),
  76. ],
  77. 'built_in_captcha_supported' => $this->captcha->isSupported(),
  78. ];
  79. $data['is_new_user'] = $this->installation->isNewInstallation();
  80. $data = array_merge($data, Installer::getPremiumStatus());
  81. if (isset($_GET['enable-customizer-notice'])) {
  82. $notice = new WPNotice(WPNotice::TYPE_ERROR, $this->wp->_x(
  83. 'You need to have WooCommerce active to access the MailPoet email customizer for WooCommerce.',
  84. 'Notice in Settings when WooCommerce is not enabled'
  85. ), 'mailpoet');
  86. $notice->displayWPNotice();
  87. }
  88. $this->pageRenderer->displayPage('settings.html', $data);
  89. }
  90. }