REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 7.46 KB
Close
/home/nshryvcy/himaltourism.com/wp-content/plugins/mailpoet/lib/Util/Notices/DisabledMailFunctionNotice.php
Text
Base64
<?php declare(strict_types = 1); namespace MailPoet\Util\Notices; if (!defined('ABSPATH')) exit; use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes; use MailPoet\Mailer\Mailer; use MailPoet\Mailer\MailerFactory; use MailPoet\Settings\SettingsController; use MailPoet\Util\Helpers; use MailPoet\Util\License\Features\Subscribers as SubscribersFeature; use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Notice; class DisabledMailFunctionNotice { const DISABLED_MAIL_FUNCTION_CHECK = 'disabled_mail_function_check'; const QUEUE_DISABLED_MAIL_FUNCTION_CHECK = 'queue_disabled_mail_function_check'; /** @var SettingsController */ private $settings; /** @var WPFunctions */ private $wp; /** @var SubscribersFeature */ private $subscribersFeature; /** @var MailerFactory */ private $mailerFactory; private $isInQueueForChecking = false; public function __construct( WPFunctions $wp, SettingsController $settings, SubscribersFeature $subscribersFeature, MailerFactory $mailerFactory ) { $this->settings = $settings; $this->wp = $wp; $this->subscribersFeature = $subscribersFeature; $this->mailerFactory = $mailerFactory; } public function init($shouldDisplay): ?string { $shouldDisplay = $shouldDisplay && $this->shouldCheckMisconfiguredFunction() && $this->checkRequirements(); if (!$shouldDisplay) { return null; } return $this->display(); } private function checkRequirements(): bool { if ($this->isInQueueForChecking) { $this->settings->set(self::QUEUE_DISABLED_MAIL_FUNCTION_CHECK, false); } $sendingMethod = $this->settings->get('mta.method', SettingsController::DEFAULT_SENDING_METHOD); $isPhpMailSendingMethod = $sendingMethod === Mailer::METHOD_PHPMAIL; if (!$isPhpMailSendingMethod) { return false; // fails requirements check } $functionName = 'mail'; $isMailFunctionDisabled = $this->isFunctionDisabled($functionName); if ($isMailFunctionDisabled) { $this->settings->set(DisabledMailFunctionNotice::DISABLED_MAIL_FUNCTION_CHECK, true); return true; } $isMailFunctionProperlyConfigured = $this->testMailFunctionIsCorrectlyConfigured(); return !$isMailFunctionProperlyConfigured; } /* * Check MisConfigured Function * * This method will cause this class to only display the notice if the settings option * * disabled_mail_function_check === true * or * queue_disabled_mail_function_check === true * or * Totally disabled when wp filter `mailpoet_display_disabled_mail_function_notice` === false * */ public function shouldCheckMisconfiguredFunction(): bool { $shouldCheck = $this->wp->applyFilters('mailpoet_display_disabled_mail_function_notice', true); $this->isInQueueForChecking = $this->settings->get(self::QUEUE_DISABLED_MAIL_FUNCTION_CHECK, false); return $shouldCheck && ( $this->settings->get(self::DISABLED_MAIL_FUNCTION_CHECK, false) || $this->isInQueueForChecking ); } public function isFunctionDisabled(string $function): bool { $result = function_exists($function) && is_callable($function, false); return !$result; } private function display(): string { $header = $this->getHeader(); $body = $this->getBody(); $button = $this->getConnectMailPoetButton(); $message = $header . $body . $button; Notice::displayWarning($message, '', self::DISABLED_MAIL_FUNCTION_CHECK, false); return $message; } private function getHeader(): string { return '<h4>' . __('Get ready to send your first campaign.', 'mailpoet') . '</h4>'; } private function getBody(): string { $bodyText = __('Connect your website with MailPoet, and start sending for free. Reach inboxes, not spam boxes. [link]Why am I seeing this?[/link]', 'mailpoet'); $bodyWithReplacedLink = Helpers::replaceLinkTags($bodyText, 'https://kb.mailpoet.com/article/396-disabled-mail-function', [ 'target' => '_blank', ]); return '<p>' . $bodyWithReplacedLink . '</p>'; } private function getConnectMailPoetButton(): string { $subscribersCount = $this->subscribersFeature->getSubscribersCount(); $buttonLink = "https://account.mailpoet.com/?s={$subscribersCount}&utm_source=mailpoet&utm_medium=plugin&utm_campaign=disabled_mail_function"; $link = $this->wp->escAttr($buttonLink); return '<p><a target="_blank" href="' . $link . '" class="button button-primary">' . __('Connect MailPoet', 'mailpoet') . '</a></p>'; } /* * Test Mail Function Is Correctly Configured * * This is a workaround for detecting the user PHP mail() function is Correctly Configured and not disabled by the host */ private function testMailFunctionIsCorrectlyConfigured(): bool { if ($this->settings->get(DisabledMailFunctionNotice::DISABLED_MAIL_FUNCTION_CHECK, false)) { return false; // skip sending mail again } $replyToAddress = $this->settings->get('reply_to.address'); $senderAddress = $this->settings->get('sender.address'); $mailBody = "Hi there! \n Your website ([site:homepage_link]) sent you this email to confirm that it can send emails. If you're reading this email, then it works! You can now continue sending marketing emails with MailPoet! \n MailPoet on [site:homepage_link]"; $body = Shortcodes::process($mailBody, null, null, null, null); $sendTestMailData = [ 'mailer' => $this->settings->get('mta'), 'newsletter' => [ 'subject' => 'MailPoet can deliver your marketing emails!', 'body' => [ 'html' => nl2br($body), 'text' => $body, ], ], 'subscriber' => empty($replyToAddress) ? $senderAddress : $replyToAddress, ]; $sendMailResult = $this->sendTestMail($sendTestMailData); if (!$sendMailResult) { // Error with PHP mail() function // keep displaying notice $this->settings->set(DisabledMailFunctionNotice::DISABLED_MAIL_FUNCTION_CHECK, true); } return $sendMailResult; } /* * Send Test Mail * used to check for valid PHP mail() * * returns true if valid and okay * else returns false if invalid. * * We determine the mail function is invalid by checking against the Exception error thrown by PHPMailer * error message: Could not instantiate mail function. * * if the error is not equal to error message, we consider it okay. */ public function sendTestMail($data = []): bool { try { $mailer = $this->mailerFactory->buildMailer( $data['mailer'] ?? null, $data['sender'] ?? null, $data['reply_to'] ?? null ); // report this as 'sending_test' in metadata since this endpoint is only used to test sending methods for now $extraParams = [ 'meta' => [ 'email_type' => 'sending_test', 'subscriber_status' => 'unknown', 'subscriber_source' => 'administrator', ], ]; $result = $mailer->send($data['newsletter'], $data['subscriber'], $extraParams); if ($result['response'] === false) { $errorMessage = $result['error']->getMessage(); return !$this->checkForErrorMessage($errorMessage); } } catch (\Exception $e) { $errorMessage = $e->getMessage(); return !$this->checkForErrorMessage($errorMessage); } return true; } private function checkForErrorMessage($errorMessage): bool { $phpmailerError = 'Could not instantiate mail function'; $substringIndex = stripos($errorMessage, $phpmailerError); return $substringIndex !== false; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 15
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
AfterMigrationNotice.php
1.40 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
BlackFridayNotice.php
1.92 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ChangedTrackingNotice.php
1.14 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
DeprecatedFilterNotice.php
1.54 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
DisabledMailFunctionNotice.php
7.46 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
EmailWithInvalidSegmentNotice.php
1.34 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
HeadersAlreadySentNotice.php
3.03 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
InactiveSubscribersNotice.php
2.79 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
index.php
0 B
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PendingApprovalNotice.php
2.39 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PermanentNotices.php
5.60 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PHPVersionWarnings.php
1.59 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
UnauthorizedEmailInNewslettersNotice.php
2.61 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
UnauthorizedEmailNotice.php
3.24 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
WooCommerceVersionWarning.php
2.57 KB
lrw-r--r--
2023-04-04 05:35:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).