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 / Util / Helpers.php
mailpoet / lib / Util Last commit date
DataInconsistency 2 weeks ago License 2 months ago Notices 2 months ago pQuery 2 months ago APIPermissionHelper.php 1 year ago CdnAssetUrl.php 3 years ago ConflictResolver.php 1 month ago Cookies.php 2 months ago DBCollationChecker.php 2 months ago DOM.php 2 years ago DateConverter.php 3 years ago FreeDomains.php 3 years ago Headers.php 1 year ago Helpers.php 1 month ago Installation.php 1 year ago LegacyDatabase.php 1 year ago Request.php 2 months ago SecondLevelDomainNames.php 3 years ago Security.php 2 months ago ThirdPartyOutput.php 1 month ago Url.php 2 months ago index.php 3 years ago
Helpers.php
150 lines
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Util;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 class Helpers {
9 const DIVIDER = '***MailPoet***';
10 const LINK_TAG = 'link';
11
12 public static function isJson($string) {
13 if (!is_string($string)) return false;
14 json_decode($string);
15 return json_last_error() == JSON_ERROR_NONE;
16 }
17
18 public static function replaceLinkTags(
19 string $source,
20 string $link,
21 array $attributes = [],
22 string $linkTag = self::LINK_TAG
23 ) {
24 if (empty($link)) return $source;
25
26 $attributes = array_map(function($key) use ($attributes) {
27 return sprintf('%s="%s"', $key, $attributes[$key]);
28 }, array_keys($attributes));
29 $source = str_replace(
30 '[' . $linkTag . ']',
31 sprintf(
32 '<a %s href="%s">',
33 join(' ', $attributes),
34 $link
35 ),
36 $source
37 );
38 $source = str_replace('[/' . $linkTag . ']', '</a>', $source);
39 return preg_replace('/\s+/', ' ', $source);
40 }
41
42 public static function getMaxPostSize($bytes = false) {
43 $maxPostSize = ini_get('post_max_size');
44 if (!$bytes) return $maxPostSize;
45 if ($maxPostSize === false) {
46 return 0;
47 }
48 switch (substr($maxPostSize, -1)) {
49 case 'M':
50 case 'm':
51 return (int)$maxPostSize * 1048576;
52 case 'K':
53 case 'k':
54 return (int)$maxPostSize * 1024;
55 case 'G':
56 case 'g':
57 return (int)$maxPostSize * 1073741824;
58 default:
59 return $maxPostSize;
60 }
61 }
62
63 public static function flattenArray($array) {
64 if (!$array) return;
65 $flattenedArray = [];
66 array_walk_recursive($array, function ($a) use (&$flattenedArray) {
67 $flattenedArray[] = $a;
68 });
69 return $flattenedArray;
70 }
71
72 public static function underscoreToCamelCase($str, $capitaliseFirstChar = false) {
73 if ($capitaliseFirstChar) {
74 $str[0] = strtoupper($str[0]);
75 }
76 return preg_replace_callback('/_([a-z])/', function ($c) {
77 return strtoupper($c[1]);
78 }, $str);
79 }
80
81 public static function camelCaseToUnderscore($str) {
82 $str[0] = strtolower($str[0]);
83 return preg_replace_callback('/([A-Z])/', function ($c) {
84 return "_" . strtolower($c[1]);
85 }, $str);
86 }
87
88 public static function camelCaseToKebabCase($str) {
89 $str[0] = strtolower($str[0]);
90 return preg_replace_callback('/([A-Z])/', function ($c) {
91 return "-" . strtolower($c[1]);
92 }, $str);
93 }
94
95 public static function joinObject($object = []) {
96 return implode(self::DIVIDER, $object);
97 }
98
99 public static function splitObject($object = []) {
100 return explode(self::DIVIDER, $object);
101 }
102
103 public static function getIP() {
104 return (isset($_SERVER['REMOTE_ADDR']) && is_string($_SERVER['REMOTE_ADDR']))
105 ? sanitize_text_field(wp_unslash($_SERVER['REMOTE_ADDR']))
106 : null;
107 }
108
109 public static function recursiveTrim($value) {
110 if (is_array($value))
111 return array_map([__CLASS__, 'recursiveTrim'], $value);
112 if (is_string($value))
113 return trim($value);
114 return $value;
115 }
116
117 public static function escapeSearch(string $search): string {
118 return str_replace(['\\', '%', '_'], ['\\\\', '\\%', '\\_'], trim($search)); // escape for 'LIKE'
119 }
120
121 public static function extractEmailDomain(string $email = ''): string {
122 $arrayOfItems = explode('@', trim($email));
123 return strtolower(array_pop($arrayOfItems));
124 }
125
126 public static function mySqlGoneAwayExceptionHandler(\Throwable $err): string {
127 $errorMessage = $err->getMessage() ? $err->getMessage() : '';
128 $mySqlGoneAwayCheck = strpos(strtolower($errorMessage), 'mysql server has gone away') !== false;
129
130 if ($mySqlGoneAwayCheck) {
131 $customErrorMessage = sprintf(
132 // translators: the %1$s is the link, the %2$s is the error message.
133 __('Please see %1$s for more information. %2$s.', 'mailpoet'),
134 'https://kb.mailpoet.com/article/307-how-to-fix-general-error-2006-mysql-server-has-gone-away',
135 $errorMessage
136 );
137 // logging to the php log
138 if (function_exists('error_log')) {
139 // phpcs:disable QITStandard.PHP.DebugCode.DebugFunctionFound
140 error_log($customErrorMessage); // phpcs:ignore Squiz.PHP.DiscouragedFunctions
141 // phpcs:enable QITStandard.PHP.DebugCode.DebugFunctionFound
142 }
143
144 return $customErrorMessage;
145 }
146
147 return '';
148 }
149 }
150