PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / EmailEditor / Integrations / MailPoet / Logger.php
mailpoet / lib / EmailEditor / Integrations / MailPoet Last commit date
Blocks 10 months ago Coupons 1 month ago Endpoints 2 months ago Patterns 1 month ago PersonalizationTags 4 days ago ProductCollection 1 month ago Templates 2 months ago AutomationEmailContextProvider.php 2 months ago AutomationEmailPreviewOrderProvider.php 2 months ago BlockEmailContentDetector.php 2 months ago Cli.php 2 weeks ago DependencyNotice.php 11 months ago EditorPageRenderer.php 1 week ago EmailApiController.php 1 week ago EmailEditor.php 2 months ago EmailEditorPreviewEmail.php 9 months ago Logger.php 10 months ago MailPoetCssInliner.php 8 months ago MailpoetCssInlinerFactory.php 1 year ago PersonalizationTagManager.php 5 days ago index.php 2 years ago
Logger.php
183 lines
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\EmailEditor\Integrations\MailPoet;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use Automattic\WooCommerce\EmailEditor\Engine\Logger\Email_Editor_Logger_Interface;
9 use MailPoet\Logging\LoggerFactory;
10 use MailPoet\Settings\SettingsController;
11 use MailPoetVendor\Monolog\Logger as MonologLogger;
12
13 /**
14 * MailPoet logger adapter for the email editor.
15 *
16 * This class adapts the a logger instance from the factory to work with the email editor logging interface.
17 */
18 class Logger implements Email_Editor_Logger_Interface {
19
20 private MonologLogger $mailpoetLogger;
21 private SettingsController $settings;
22
23 public function __construct() {
24 $this->mailpoetLogger = LoggerFactory::getInstance()->getLogger(LoggerFactory::TOPIC_EMAIL_EDITOR);
25 $this->settings = SettingsController::getInstance();
26 }
27
28 /**
29 * Determines if a log level should be logged based on MailPoet settings and WP_DEBUG.
30 *
31 * @param int $level The Monolog log level constant
32 * @return bool True if the log level should be logged, false otherwise
33 */
34 private function shouldLogLevel(int $level): bool {
35 $mailpoetLogLevel = $this->settings->get('logging', 'errors');
36
37 if ($mailpoetLogLevel === 'nothing') {
38 return false;
39 }
40
41 if ($mailpoetLogLevel === 'errors') {
42 return $level >= MonologLogger::ERROR;
43 }
44
45 if ($mailpoetLogLevel === 'everything') {
46 if (defined('WP_DEBUG') && WP_DEBUG) {
47 return $level >= MonologLogger::DEBUG;
48 }
49
50 // If WP_DEBUG is disabled, log INFO level and above to reduce log entries.
51 return $level >= MonologLogger::INFO;
52 }
53
54 return $level >= MonologLogger::ERROR;
55 }
56
57 /**
58 * Adds emergency level log message.
59 *
60 * @param string $message The log message.
61 * @param array $context The log context.
62 * @return void
63 */
64 public function emergency(string $message, array $context = []): void {
65 if ($this->shouldLogLevel(MonologLogger::EMERGENCY)) {
66 $this->mailpoetLogger->emergency($message, $context);
67 }
68 }
69
70 /**
71 * Adds alert level log message.
72 *
73 * @param string $message The log message.
74 * @param array $context The log context.
75 * @return void
76 */
77 public function alert(string $message, array $context = []): void {
78 if ($this->shouldLogLevel(MonologLogger::ALERT)) {
79 $this->mailpoetLogger->alert($message, $context);
80 }
81 }
82
83 /**
84 * Adds critical level log message.
85 *
86 * @param string $message The log message.
87 * @param array $context The log context.
88 * @return void
89 */
90 public function critical(string $message, array $context = []): void {
91 if ($this->shouldLogLevel(MonologLogger::CRITICAL)) {
92 $this->mailpoetLogger->critical($message, $context);
93 }
94 }
95
96 /**
97 * Adds error level log message.
98 *
99 * @param string $message The log message.
100 * @param array $context The log context.
101 * @return void
102 */
103 public function error(string $message, array $context = []): void {
104 if ($this->shouldLogLevel(MonologLogger::ERROR)) {
105 $this->mailpoetLogger->error($message, $context);
106 }
107 }
108
109 /**
110 * Adds warning level log message.
111 *
112 * @param string $message The log message.
113 * @param array $context The log context.
114 * @return void
115 */
116 public function warning(string $message, array $context = []): void {
117 if ($this->shouldLogLevel(MonologLogger::WARNING)) {
118 $this->mailpoetLogger->warning($message, $context);
119 }
120 }
121
122 /**
123 * Adds notice level log message.
124 *
125 * @param string $message The log message.
126 * @param array $context The log context.
127 * @return void
128 */
129 public function notice(string $message, array $context = []): void {
130 if ($this->shouldLogLevel(MonologLogger::NOTICE)) {
131 $this->mailpoetLogger->notice($message, $context);
132 }
133 }
134
135 /**
136 * Adds info level log message.
137 *
138 * @param string $message The log message.
139 * @param array $context The log context.
140 * @return void
141 */
142 public function info(string $message, array $context = []): void {
143 if ($this->shouldLogLevel(MonologLogger::INFO)) {
144 $this->mailpoetLogger->info($message, $context);
145 }
146 }
147
148 /**
149 * Adds debug level log message.
150 *
151 * @param string $message The log message.
152 * @param array $context The log context.
153 * @return void
154 */
155 public function debug(string $message, array $context = []): void {
156 if ($this->shouldLogLevel(MonologLogger::DEBUG)) {
157 $this->mailpoetLogger->debug($message, $context);
158 }
159 }
160
161 /**
162 * Logs with an arbitrary level.
163 *
164 * @param string $level The log level.
165 * @param string $message The log message.
166 * @param array $context The log context.
167 * @return void
168 */
169 public function log(string $level, string $message, array $context = []): void {
170 try {
171 /** @phpstan-ignore-next-line toMonologLevel expects specific string or numeric values, but we handle invalid values gracefully with fallback */
172 $monologLevel = MonologLogger::toMonologLevel($level);
173 } catch (\Exception $e) {
174 $monologLevel = MonologLogger::DEBUG;
175 }
176
177 if ($this->shouldLogLevel($monologLevel)) {
178 /** @phpstan-ignore-next-line PHPStan reports string in level as an error but it's okay */
179 $this->mailpoetLogger->log($level, $message, $context);
180 }
181 }
182 }
183