License
6 years ago
Notices
6 years ago
pQuery
6 years ago
ConflictResolver.php
6 years ago
Cookies.php
6 years ago
DOM.php
6 years ago
DateConverter.php
6 years ago
FreeDomains.php
6 years ago
Helpers.php
6 years ago
Installation.php
6 years ago
ProgressBar.php
6 years ago
SecondLevelDomainNames.php
6 years ago
Security.php
6 years ago
Url.php
6 years ago
index.php
9 years ago
Helpers.php
105 lines
| 1 | <?php |
| 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($source, $link = false, $attributes = [], $linkTag = false) { |
| 19 | if (!$link) return $source; |
| 20 | $linkTag = ($linkTag) ? $linkTag : self::LINK_TAG; |
| 21 | $attributes = array_map(function($key) use ($attributes) { |
| 22 | return sprintf('%s="%s"', $key, $attributes[$key]); |
| 23 | }, array_keys($attributes)); |
| 24 | $source = str_replace( |
| 25 | '[' . $linkTag . ']', |
| 26 | sprintf( |
| 27 | '<a %s href="%s">', |
| 28 | join(' ', $attributes), |
| 29 | $link |
| 30 | ), |
| 31 | $source |
| 32 | ); |
| 33 | $source = str_replace('[/' . $linkTag . ']', '</a>', $source); |
| 34 | return preg_replace('/\s+/', ' ', $source); |
| 35 | } |
| 36 | |
| 37 | public static function getMaxPostSize($bytes = false) { |
| 38 | $maxPostSize = ini_get('post_max_size'); |
| 39 | if (!$bytes) return $maxPostSize; |
| 40 | if ($maxPostSize === false) { |
| 41 | return 0; |
| 42 | } |
| 43 | switch (substr($maxPostSize, -1)) { |
| 44 | case 'M': |
| 45 | case 'm': |
| 46 | return (int)$maxPostSize * 1048576; |
| 47 | case 'K': |
| 48 | case 'k': |
| 49 | return (int)$maxPostSize * 1024; |
| 50 | case 'G': |
| 51 | case 'g': |
| 52 | return (int)$maxPostSize * 1073741824; |
| 53 | default: |
| 54 | return $maxPostSize; |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | public static function flattenArray($array) { |
| 59 | if (!$array) return; |
| 60 | $flattenedArray = []; |
| 61 | array_walk_recursive($array, function ($a) use (&$flattenedArray) { |
| 62 | $flattenedArray[] = $a; |
| 63 | }); |
| 64 | return $flattenedArray; |
| 65 | } |
| 66 | |
| 67 | public static function underscoreToCamelCase($str, $capitaliseFirstChar = false) { |
| 68 | if ($capitaliseFirstChar) { |
| 69 | $str[0] = strtoupper($str[0]); |
| 70 | } |
| 71 | return preg_replace_callback('/_([a-z])/', function ($c) { |
| 72 | return strtoupper($c[1]); |
| 73 | }, $str); |
| 74 | } |
| 75 | |
| 76 | public static function camelCaseToUnderscore($str) { |
| 77 | $str[0] = strtolower($str[0]); |
| 78 | return preg_replace_callback('/([A-Z])/', function ($c) { |
| 79 | return "_" . strtolower($c[1]); |
| 80 | }, $str); |
| 81 | } |
| 82 | |
| 83 | public static function joinObject($object = []) { |
| 84 | return implode(self::DIVIDER, $object); |
| 85 | } |
| 86 | |
| 87 | public static function splitObject($object = []) { |
| 88 | return explode(self::DIVIDER, $object); |
| 89 | } |
| 90 | |
| 91 | public static function getIP() { |
| 92 | return (isset($_SERVER['REMOTE_ADDR'])) |
| 93 | ? $_SERVER['REMOTE_ADDR'] |
| 94 | : null; |
| 95 | } |
| 96 | |
| 97 | public static function recursiveTrim($value) { |
| 98 | if (is_array($value)) |
| 99 | return array_map([__CLASS__, 'recursiveTrim'], $value); |
| 100 | if (is_string($value)) |
| 101 | return trim($value); |
| 102 | return $value; |
| 103 | } |
| 104 | } |
| 105 |