@@ -4,186 +4,186 @@ |
||
| 4 | 4 | |
| 5 | 5 | class Str |
| 6 | 6 | { |
| 7 | - /** |
|
| 8 | - * @param string $subject |
|
| 9 | - * @param string $search |
|
| 10 | - * @return string |
|
| 11 | - */ |
|
| 12 | - public static function afterLast($subject, $search) |
|
| 13 | - { |
|
| 14 | - return '' === $search |
|
| 15 | - ? $subject |
|
| 16 | - : array_reverse(explode($search, $subject))[0]; |
|
| 17 | - } |
|
| 7 | + /** |
|
| 8 | + * @param string $subject |
|
| 9 | + * @param string $search |
|
| 10 | + * @return string |
|
| 11 | + */ |
|
| 12 | + public static function afterLast($subject, $search) |
|
| 13 | + { |
|
| 14 | + return '' === $search |
|
| 15 | + ? $subject |
|
| 16 | + : array_reverse(explode($search, $subject))[0]; |
|
| 17 | + } |
|
| 18 | 18 | |
| 19 | - /** |
|
| 20 | - * @param string $string |
|
| 21 | - * @return string |
|
| 22 | - */ |
|
| 23 | - public static function camelCase($string) |
|
| 24 | - { |
|
| 25 | - $string = ucwords(str_replace(['-', '_'], ' ', trim($string))); |
|
| 26 | - return str_replace(' ', '', $string); |
|
| 27 | - } |
|
| 19 | + /** |
|
| 20 | + * @param string $string |
|
| 21 | + * @return string |
|
| 22 | + */ |
|
| 23 | + public static function camelCase($string) |
|
| 24 | + { |
|
| 25 | + $string = ucwords(str_replace(['-', '_'], ' ', trim($string))); |
|
| 26 | + return str_replace(' ', '', $string); |
|
| 27 | + } |
|
| 28 | 28 | |
| 29 | - /** |
|
| 30 | - * @param string $haystack |
|
| 31 | - * @param string $needle |
|
| 32 | - * @return bool |
|
| 33 | - */ |
|
| 34 | - public static function contains($haystack, $needle) |
|
| 35 | - { |
|
| 36 | - return false !== strpos($haystack, $needle); |
|
| 37 | - } |
|
| 29 | + /** |
|
| 30 | + * @param string $haystack |
|
| 31 | + * @param string $needle |
|
| 32 | + * @return bool |
|
| 33 | + */ |
|
| 34 | + public static function contains($haystack, $needle) |
|
| 35 | + { |
|
| 36 | + return false !== strpos($haystack, $needle); |
|
| 37 | + } |
|
| 38 | 38 | |
| 39 | - /** |
|
| 40 | - * @param string $name |
|
| 41 | - * @param string $nameType first|first_initial|initials|last|last_initial |
|
| 42 | - * @param string $initialType period|period_space|space |
|
| 43 | - * @return string |
|
| 44 | - */ |
|
| 45 | - public static function convertName($name, $nameType = '', $initialType = '') |
|
| 46 | - { |
|
| 47 | - $names = preg_split('/\W/', $name, 0, PREG_SPLIT_NO_EMPTY); |
|
| 48 | - $firstName = array_shift($names); |
|
| 49 | - $lastName = array_pop($names); |
|
| 50 | - $initialTypes = [ |
|
| 51 | - 'period' => '.', |
|
| 52 | - 'period_space' => '. ', |
|
| 53 | - 'space' => ' ', |
|
| 54 | - ]; |
|
| 55 | - $initialPunctuation = (string) Arr::get($initialTypes, $initialType, ' '); |
|
| 56 | - if ('initials' == $nameType) { |
|
| 57 | - return static::convertToInitials($name, $initialPunctuation); |
|
| 58 | - } |
|
| 59 | - $nameTypes = [ |
|
| 60 | - 'first' => $firstName, |
|
| 61 | - 'first_initial' => substr($firstName, 0, 1).$initialPunctuation.$lastName, |
|
| 62 | - 'last' => $lastName, |
|
| 63 | - 'last_initial' => $firstName.' '.substr($lastName, 0, 1).$initialPunctuation, |
|
| 64 | - ]; |
|
| 65 | - return trim((string) Arr::get($nameTypes, $nameType, $name)); |
|
| 66 | - } |
|
| 39 | + /** |
|
| 40 | + * @param string $name |
|
| 41 | + * @param string $nameType first|first_initial|initials|last|last_initial |
|
| 42 | + * @param string $initialType period|period_space|space |
|
| 43 | + * @return string |
|
| 44 | + */ |
|
| 45 | + public static function convertName($name, $nameType = '', $initialType = '') |
|
| 46 | + { |
|
| 47 | + $names = preg_split('/\W/', $name, 0, PREG_SPLIT_NO_EMPTY); |
|
| 48 | + $firstName = array_shift($names); |
|
| 49 | + $lastName = array_pop($names); |
|
| 50 | + $initialTypes = [ |
|
| 51 | + 'period' => '.', |
|
| 52 | + 'period_space' => '. ', |
|
| 53 | + 'space' => ' ', |
|
| 54 | + ]; |
|
| 55 | + $initialPunctuation = (string) Arr::get($initialTypes, $initialType, ' '); |
|
| 56 | + if ('initials' == $nameType) { |
|
| 57 | + return static::convertToInitials($name, $initialPunctuation); |
|
| 58 | + } |
|
| 59 | + $nameTypes = [ |
|
| 60 | + 'first' => $firstName, |
|
| 61 | + 'first_initial' => substr($firstName, 0, 1).$initialPunctuation.$lastName, |
|
| 62 | + 'last' => $lastName, |
|
| 63 | + 'last_initial' => $firstName.' '.substr($lastName, 0, 1).$initialPunctuation, |
|
| 64 | + ]; |
|
| 65 | + return trim((string) Arr::get($nameTypes, $nameType, $name)); |
|
| 66 | + } |
|
| 67 | 67 | |
| 68 | - /** |
|
| 69 | - * @param string $path |
|
| 70 | - * @param string $prefix |
|
| 71 | - * @return string |
|
| 72 | - */ |
|
| 73 | - public static function convertPathToId($path, $prefix = '') |
|
| 74 | - { |
|
| 75 | - return str_replace(['[', ']'], ['-', ''], static::convertPathToName($path, $prefix)); |
|
| 76 | - } |
|
| 68 | + /** |
|
| 69 | + * @param string $path |
|
| 70 | + * @param string $prefix |
|
| 71 | + * @return string |
|
| 72 | + */ |
|
| 73 | + public static function convertPathToId($path, $prefix = '') |
|
| 74 | + { |
|
| 75 | + return str_replace(['[', ']'], ['-', ''], static::convertPathToName($path, $prefix)); |
|
| 76 | + } |
|
| 77 | 77 | |
| 78 | - /** |
|
| 79 | - * @param string $path |
|
| 80 | - * @param string $prefix |
|
| 81 | - * @return string |
|
| 82 | - */ |
|
| 83 | - public static function convertPathToName($path, $prefix = '') |
|
| 84 | - { |
|
| 85 | - $levels = explode('.', $path); |
|
| 86 | - return array_reduce($levels, function ($result, $value) { |
|
| 87 | - return $result .= '['.$value.']'; |
|
| 88 | - }, $prefix); |
|
| 89 | - } |
|
| 78 | + /** |
|
| 79 | + * @param string $path |
|
| 80 | + * @param string $prefix |
|
| 81 | + * @return string |
|
| 82 | + */ |
|
| 83 | + public static function convertPathToName($path, $prefix = '') |
|
| 84 | + { |
|
| 85 | + $levels = explode('.', $path); |
|
| 86 | + return array_reduce($levels, function ($result, $value) { |
|
| 87 | + return $result .= '['.$value.']'; |
|
| 88 | + }, $prefix); |
|
| 89 | + } |
|
| 90 | 90 | |
| 91 | - /** |
|
| 92 | - * @param string $name |
|
| 93 | - * @param string $initialPunctuation |
|
| 94 | - * @return string |
|
| 95 | - */ |
|
| 96 | - public static function convertToInitials($name, $initialPunctuation = '') |
|
| 97 | - { |
|
| 98 | - preg_match_all('/(?<=\s|\b)\pL/u', $name, $matches); |
|
| 99 | - return array_reduce($matches[0], function ($carry, $word) use ($initialPunctuation) { |
|
| 100 | - return $carry.strtoupper(substr($word, 0, 1)).$initialPunctuation; |
|
| 101 | - }); |
|
| 102 | - } |
|
| 91 | + /** |
|
| 92 | + * @param string $name |
|
| 93 | + * @param string $initialPunctuation |
|
| 94 | + * @return string |
|
| 95 | + */ |
|
| 96 | + public static function convertToInitials($name, $initialPunctuation = '') |
|
| 97 | + { |
|
| 98 | + preg_match_all('/(?<=\s|\b)\pL/u', $name, $matches); |
|
| 99 | + return array_reduce($matches[0], function ($carry, $word) use ($initialPunctuation) { |
|
| 100 | + return $carry.strtoupper(substr($word, 0, 1)).$initialPunctuation; |
|
| 101 | + }); |
|
| 102 | + } |
|
| 103 | 103 | |
| 104 | - /** |
|
| 105 | - * @param string $string |
|
| 106 | - * @return string |
|
| 107 | - */ |
|
| 108 | - public static function dashCase($string) |
|
| 109 | - { |
|
| 110 | - return str_replace('_', '-', static::snakeCase($string)); |
|
| 111 | - } |
|
| 104 | + /** |
|
| 105 | + * @param string $string |
|
| 106 | + * @return string |
|
| 107 | + */ |
|
| 108 | + public static function dashCase($string) |
|
| 109 | + { |
|
| 110 | + return str_replace('_', '-', static::snakeCase($string)); |
|
| 111 | + } |
|
| 112 | 112 | |
| 113 | - /** |
|
| 114 | - * @param string $needle |
|
| 115 | - * @param string $haystack |
|
| 116 | - * @return bool |
|
| 117 | - */ |
|
| 118 | - public static function endsWith($needle, $haystack) |
|
| 119 | - { |
|
| 120 | - $length = strlen($needle); |
|
| 121 | - return 0 != $length |
|
| 122 | - ? substr($haystack, -$length) === $needle |
|
| 123 | - : true; |
|
| 124 | - } |
|
| 113 | + /** |
|
| 114 | + * @param string $needle |
|
| 115 | + * @param string $haystack |
|
| 116 | + * @return bool |
|
| 117 | + */ |
|
| 118 | + public static function endsWith($needle, $haystack) |
|
| 119 | + { |
|
| 120 | + $length = strlen($needle); |
|
| 121 | + return 0 != $length |
|
| 122 | + ? substr($haystack, -$length) === $needle |
|
| 123 | + : true; |
|
| 124 | + } |
|
| 125 | 125 | |
| 126 | - /** |
|
| 127 | - * @param string $prefix |
|
| 128 | - * @param string $string |
|
| 129 | - * @param string|null $trim |
|
| 130 | - * @return string |
|
| 131 | - */ |
|
| 132 | - public static function prefix($prefix, $string, $trim = null) |
|
| 133 | - { |
|
| 134 | - if (null === $trim) { |
|
| 135 | - $trim = $prefix; |
|
| 136 | - } |
|
| 137 | - return $prefix.trim(static::removePrefix($trim, $string)); |
|
| 138 | - } |
|
| 126 | + /** |
|
| 127 | + * @param string $prefix |
|
| 128 | + * @param string $string |
|
| 129 | + * @param string|null $trim |
|
| 130 | + * @return string |
|
| 131 | + */ |
|
| 132 | + public static function prefix($prefix, $string, $trim = null) |
|
| 133 | + { |
|
| 134 | + if (null === $trim) { |
|
| 135 | + $trim = $prefix; |
|
| 136 | + } |
|
| 137 | + return $prefix.trim(static::removePrefix($trim, $string)); |
|
| 138 | + } |
|
| 139 | 139 | |
| 140 | - /** |
|
| 141 | - * @param string $prefix |
|
| 142 | - * @param string $string |
|
| 143 | - * @return string |
|
| 144 | - */ |
|
| 145 | - public static function removePrefix($prefix, $string) |
|
| 146 | - { |
|
| 147 | - return static::startsWith($prefix, $string) |
|
| 148 | - ? substr($string, strlen($prefix)) |
|
| 149 | - : $string; |
|
| 150 | - } |
|
| 140 | + /** |
|
| 141 | + * @param string $prefix |
|
| 142 | + * @param string $string |
|
| 143 | + * @return string |
|
| 144 | + */ |
|
| 145 | + public static function removePrefix($prefix, $string) |
|
| 146 | + { |
|
| 147 | + return static::startsWith($prefix, $string) |
|
| 148 | + ? substr($string, strlen($prefix)) |
|
| 149 | + : $string; |
|
| 150 | + } |
|
| 151 | 151 | |
| 152 | - /** |
|
| 153 | - * @param string $string |
|
| 154 | - * @return string |
|
| 155 | - */ |
|
| 156 | - public static function snakeCase($string) |
|
| 157 | - { |
|
| 158 | - if (!ctype_lower($string)) { |
|
| 159 | - $string = preg_replace('/\s+/u', '', $string); |
|
| 160 | - $string = preg_replace('/(.)(?=[A-Z])/u', '$1_', $string); |
|
| 161 | - $string = function_exists('mb_strtolower') |
|
| 162 | - ? mb_strtolower($string, 'UTF-8') |
|
| 163 | - : strtolower($string); |
|
| 164 | - } |
|
| 165 | - return str_replace('-', '_', $string); |
|
| 166 | - } |
|
| 152 | + /** |
|
| 153 | + * @param string $string |
|
| 154 | + * @return string |
|
| 155 | + */ |
|
| 156 | + public static function snakeCase($string) |
|
| 157 | + { |
|
| 158 | + if (!ctype_lower($string)) { |
|
| 159 | + $string = preg_replace('/\s+/u', '', $string); |
|
| 160 | + $string = preg_replace('/(.)(?=[A-Z])/u', '$1_', $string); |
|
| 161 | + $string = function_exists('mb_strtolower') |
|
| 162 | + ? mb_strtolower($string, 'UTF-8') |
|
| 163 | + : strtolower($string); |
|
| 164 | + } |
|
| 165 | + return str_replace('-', '_', $string); |
|
| 166 | + } |
|
| 167 | 167 | |
| 168 | - /** |
|
| 169 | - * @param string $needle |
|
| 170 | - * @param string $haystack |
|
| 171 | - * @return bool |
|
| 172 | - */ |
|
| 173 | - public static function startsWith($needle, $haystack) |
|
| 174 | - { |
|
| 175 | - return substr($haystack, 0, strlen($needle)) === $needle; |
|
| 176 | - } |
|
| 168 | + /** |
|
| 169 | + * @param string $needle |
|
| 170 | + * @param string $haystack |
|
| 171 | + * @return bool |
|
| 172 | + */ |
|
| 173 | + public static function startsWith($needle, $haystack) |
|
| 174 | + { |
|
| 175 | + return substr($haystack, 0, strlen($needle)) === $needle; |
|
| 176 | + } |
|
| 177 | 177 | |
| 178 | - /** |
|
| 179 | - * @param string $string |
|
| 180 | - * @param int $length |
|
| 181 | - * @return string |
|
| 182 | - */ |
|
| 183 | - public static function truncate($string, $length) |
|
| 184 | - { |
|
| 185 | - return strlen($string) > $length |
|
| 186 | - ? substr($string, 0, $length) |
|
| 187 | - : $string; |
|
| 188 | - } |
|
| 178 | + /** |
|
| 179 | + * @param string $string |
|
| 180 | + * @param int $length |
|
| 181 | + * @return string |
|
| 182 | + */ |
|
| 183 | + public static function truncate($string, $length) |
|
| 184 | + { |
|
| 185 | + return strlen($string) > $length |
|
| 186 | + ? substr($string, 0, $length) |
|
| 187 | + : $string; |
|
| 188 | + } |
|
| 189 | 189 | } |
@@ -8,266 +8,266 @@ |
||
| 8 | 8 | |
| 9 | 9 | class Updater |
| 10 | 10 | { |
| 11 | - /** |
|
| 12 | - * @var string |
|
| 13 | - */ |
|
| 14 | - protected $apiUrl; |
|
| 15 | - /** |
|
| 16 | - * @var array |
|
| 17 | - */ |
|
| 18 | - protected $data; |
|
| 19 | - /** |
|
| 20 | - * @var string |
|
| 21 | - */ |
|
| 22 | - protected $plugin; |
|
| 23 | - /** |
|
| 24 | - * @var string |
|
| 25 | - */ |
|
| 26 | - protected $transientName; |
|
| 11 | + /** |
|
| 12 | + * @var string |
|
| 13 | + */ |
|
| 14 | + protected $apiUrl; |
|
| 15 | + /** |
|
| 16 | + * @var array |
|
| 17 | + */ |
|
| 18 | + protected $data; |
|
| 19 | + /** |
|
| 20 | + * @var string |
|
| 21 | + */ |
|
| 22 | + protected $plugin; |
|
| 23 | + /** |
|
| 24 | + * @var string |
|
| 25 | + */ |
|
| 26 | + protected $transientName; |
|
| 27 | 27 | |
| 28 | - /** |
|
| 29 | - * @param string $apiUrl |
|
| 30 | - * @param string $file |
|
| 31 | - */ |
|
| 32 | - public function __construct($apiUrl, $file, array $data = []) |
|
| 33 | - { |
|
| 34 | - if (!function_exists('get_plugin_data')) { |
|
| 35 | - require_once ABSPATH.WPINC.'/plugin.php'; |
|
| 36 | - } |
|
| 37 | - $this->apiUrl = trailingslashit(apply_filters('site-reviews/addon/api-url', $apiUrl)); |
|
| 38 | - $this->data = wp_parse_args($data, get_plugin_data($file)); |
|
| 39 | - $this->plugin = plugin_basename($file); |
|
| 40 | - $this->transientName = Application::PREFIX.md5(Arr::get($data, 'TextDomain')); |
|
| 41 | - } |
|
| 28 | + /** |
|
| 29 | + * @param string $apiUrl |
|
| 30 | + * @param string $file |
|
| 31 | + */ |
|
| 32 | + public function __construct($apiUrl, $file, array $data = []) |
|
| 33 | + { |
|
| 34 | + if (!function_exists('get_plugin_data')) { |
|
| 35 | + require_once ABSPATH.WPINC.'/plugin.php'; |
|
| 36 | + } |
|
| 37 | + $this->apiUrl = trailingslashit(apply_filters('site-reviews/addon/api-url', $apiUrl)); |
|
| 38 | + $this->data = wp_parse_args($data, get_plugin_data($file)); |
|
| 39 | + $this->plugin = plugin_basename($file); |
|
| 40 | + $this->transientName = Application::PREFIX.md5(Arr::get($data, 'TextDomain')); |
|
| 41 | + } |
|
| 42 | 42 | |
| 43 | - /** |
|
| 44 | - * @return object |
|
| 45 | - */ |
|
| 46 | - public function activateLicense(array $data = []) |
|
| 47 | - { |
|
| 48 | - return $this->request('activate_license', $data); |
|
| 49 | - } |
|
| 43 | + /** |
|
| 44 | + * @return object |
|
| 45 | + */ |
|
| 46 | + public function activateLicense(array $data = []) |
|
| 47 | + { |
|
| 48 | + return $this->request('activate_license', $data); |
|
| 49 | + } |
|
| 50 | 50 | |
| 51 | - /** |
|
| 52 | - * @return object |
|
| 53 | - */ |
|
| 54 | - public function checkLicense(array $data = []) |
|
| 55 | - { |
|
| 56 | - $response = $this->request('check_license', $data); |
|
| 57 | - if ('valid' === Arr::get($response, 'license')) { |
|
| 58 | - $this->getPluginUpdate(true); |
|
| 59 | - } |
|
| 60 | - return $response; |
|
| 61 | - } |
|
| 51 | + /** |
|
| 52 | + * @return object |
|
| 53 | + */ |
|
| 54 | + public function checkLicense(array $data = []) |
|
| 55 | + { |
|
| 56 | + $response = $this->request('check_license', $data); |
|
| 57 | + if ('valid' === Arr::get($response, 'license')) { |
|
| 58 | + $this->getPluginUpdate(true); |
|
| 59 | + } |
|
| 60 | + return $response; |
|
| 61 | + } |
|
| 62 | 62 | |
| 63 | - /** |
|
| 64 | - * @return object |
|
| 65 | - */ |
|
| 66 | - public function deactivateLicense(array $data = []) |
|
| 67 | - { |
|
| 68 | - return $this->request('deactivate_license', $data); |
|
| 69 | - } |
|
| 63 | + /** |
|
| 64 | + * @return object |
|
| 65 | + */ |
|
| 66 | + public function deactivateLicense(array $data = []) |
|
| 67 | + { |
|
| 68 | + return $this->request('deactivate_license', $data); |
|
| 69 | + } |
|
| 70 | 70 | |
| 71 | - /** |
|
| 72 | - * @param false|object|array $result |
|
| 73 | - * @param string $action |
|
| 74 | - * @param object $args |
|
| 75 | - * @return mixed |
|
| 76 | - */ |
|
| 77 | - public function filterPluginUpdateDetails($result, $action, $args) |
|
| 78 | - { |
|
| 79 | - if ('plugin_information' != $action |
|
| 80 | - || Arr::get($this->data, 'TextDomain') != Arr::get($args, 'slug')) { |
|
| 81 | - return $result; |
|
| 82 | - } |
|
| 83 | - if ($updateInfo = $this->getPluginUpdate()) { |
|
| 84 | - return $this->modifyUpdateDetails($updateInfo); |
|
| 85 | - } |
|
| 86 | - return $result; |
|
| 87 | - } |
|
| 71 | + /** |
|
| 72 | + * @param false|object|array $result |
|
| 73 | + * @param string $action |
|
| 74 | + * @param object $args |
|
| 75 | + * @return mixed |
|
| 76 | + */ |
|
| 77 | + public function filterPluginUpdateDetails($result, $action, $args) |
|
| 78 | + { |
|
| 79 | + if ('plugin_information' != $action |
|
| 80 | + || Arr::get($this->data, 'TextDomain') != Arr::get($args, 'slug')) { |
|
| 81 | + return $result; |
|
| 82 | + } |
|
| 83 | + if ($updateInfo = $this->getPluginUpdate()) { |
|
| 84 | + return $this->modifyUpdateDetails($updateInfo); |
|
| 85 | + } |
|
| 86 | + return $result; |
|
| 87 | + } |
|
| 88 | 88 | |
| 89 | - /** |
|
| 90 | - * @param object $transient |
|
| 91 | - * @return object |
|
| 92 | - */ |
|
| 93 | - public function filterPluginUpdates($transient) |
|
| 94 | - { |
|
| 95 | - if ($updateInfo = $this->getPluginUpdate()) { |
|
| 96 | - return $this->modifyPluginUpdates($transient, $updateInfo); |
|
| 97 | - } |
|
| 98 | - return $transient; |
|
| 99 | - } |
|
| 89 | + /** |
|
| 90 | + * @param object $transient |
|
| 91 | + * @return object |
|
| 92 | + */ |
|
| 93 | + public function filterPluginUpdates($transient) |
|
| 94 | + { |
|
| 95 | + if ($updateInfo = $this->getPluginUpdate()) { |
|
| 96 | + return $this->modifyPluginUpdates($transient, $updateInfo); |
|
| 97 | + } |
|
| 98 | + return $transient; |
|
| 99 | + } |
|
| 100 | 100 | |
| 101 | - /** |
|
| 102 | - * @return object |
|
| 103 | - */ |
|
| 104 | - public function getVersion(array $data = []) |
|
| 105 | - { |
|
| 106 | - return $this->request('get_version', $data); |
|
| 107 | - } |
|
| 101 | + /** |
|
| 102 | + * @return object |
|
| 103 | + */ |
|
| 104 | + public function getVersion(array $data = []) |
|
| 105 | + { |
|
| 106 | + return $this->request('get_version', $data); |
|
| 107 | + } |
|
| 108 | 108 | |
| 109 | - /** |
|
| 110 | - * @return void |
|
| 111 | - */ |
|
| 112 | - public function init() |
|
| 113 | - { |
|
| 114 | - if ($this->apiUrl === trailingslashit(home_url())) { |
|
| 115 | - return; |
|
| 116 | - } |
|
| 117 | - add_filter('plugins_api', [$this, 'filterPluginUpdateDetails'], 10, 3); |
|
| 118 | - add_filter('pre_set_site_transient_update_plugins', [$this, 'filterPluginUpdates'], 999); |
|
| 119 | - add_action('load-update-core.php', [$this, 'onForceUpdateCheck'], 9); |
|
| 120 | - add_action('in_plugin_update_message-'.$this->plugin, [$this, 'renderLicenseMissingLink']); |
|
| 121 | - } |
|
| 109 | + /** |
|
| 110 | + * @return void |
|
| 111 | + */ |
|
| 112 | + public function init() |
|
| 113 | + { |
|
| 114 | + if ($this->apiUrl === trailingslashit(home_url())) { |
|
| 115 | + return; |
|
| 116 | + } |
|
| 117 | + add_filter('plugins_api', [$this, 'filterPluginUpdateDetails'], 10, 3); |
|
| 118 | + add_filter('pre_set_site_transient_update_plugins', [$this, 'filterPluginUpdates'], 999); |
|
| 119 | + add_action('load-update-core.php', [$this, 'onForceUpdateCheck'], 9); |
|
| 120 | + add_action('in_plugin_update_message-'.$this->plugin, [$this, 'renderLicenseMissingLink']); |
|
| 121 | + } |
|
| 122 | 122 | |
| 123 | - /** |
|
| 124 | - * @return bool |
|
| 125 | - */ |
|
| 126 | - public function isLicenseValid() |
|
| 127 | - { |
|
| 128 | - $result = $this->checkLicense(); |
|
| 129 | - return 'valid' === Arr::get($result, 'license'); |
|
| 130 | - } |
|
| 123 | + /** |
|
| 124 | + * @return bool |
|
| 125 | + */ |
|
| 126 | + public function isLicenseValid() |
|
| 127 | + { |
|
| 128 | + $result = $this->checkLicense(); |
|
| 129 | + return 'valid' === Arr::get($result, 'license'); |
|
| 130 | + } |
|
| 131 | 131 | |
| 132 | - /** |
|
| 133 | - * @return void |
|
| 134 | - */ |
|
| 135 | - public function onForceUpdateCheck() |
|
| 136 | - { |
|
| 137 | - if (!filter_input(INPUT_GET, 'force-check')) { |
|
| 138 | - return; |
|
| 139 | - } |
|
| 140 | - foreach (glsr()->addons as $addon) { |
|
| 141 | - try { |
|
| 142 | - glsr($addon)->updater->getPluginUpdate(true); |
|
| 143 | - } catch (\Exception $e) { |
|
| 144 | - glsr_log()->error($e->getMessage()); |
|
| 145 | - } |
|
| 146 | - } |
|
| 147 | - } |
|
| 132 | + /** |
|
| 133 | + * @return void |
|
| 134 | + */ |
|
| 135 | + public function onForceUpdateCheck() |
|
| 136 | + { |
|
| 137 | + if (!filter_input(INPUT_GET, 'force-check')) { |
|
| 138 | + return; |
|
| 139 | + } |
|
| 140 | + foreach (glsr()->addons as $addon) { |
|
| 141 | + try { |
|
| 142 | + glsr($addon)->updater->getPluginUpdate(true); |
|
| 143 | + } catch (\Exception $e) { |
|
| 144 | + glsr_log()->error($e->getMessage()); |
|
| 145 | + } |
|
| 146 | + } |
|
| 147 | + } |
|
| 148 | 148 | |
| 149 | - /** |
|
| 150 | - * @return void |
|
| 151 | - */ |
|
| 152 | - public function renderLicenseMissingLink() |
|
| 153 | - { |
|
| 154 | - if (!$this->isLicenseValid()) { |
|
| 155 | - glsr()->render('partials/addons/license-missing'); |
|
| 156 | - } |
|
| 157 | - } |
|
| 149 | + /** |
|
| 150 | + * @return void |
|
| 151 | + */ |
|
| 152 | + public function renderLicenseMissingLink() |
|
| 153 | + { |
|
| 154 | + if (!$this->isLicenseValid()) { |
|
| 155 | + glsr()->render('partials/addons/license-missing'); |
|
| 156 | + } |
|
| 157 | + } |
|
| 158 | 158 | |
| 159 | - /** |
|
| 160 | - * @return false|object |
|
| 161 | - */ |
|
| 162 | - protected function getCachedVersion() |
|
| 163 | - { |
|
| 164 | - return get_transient($this->transientName); |
|
| 165 | - } |
|
| 159 | + /** |
|
| 160 | + * @return false|object |
|
| 161 | + */ |
|
| 162 | + protected function getCachedVersion() |
|
| 163 | + { |
|
| 164 | + return get_transient($this->transientName); |
|
| 165 | + } |
|
| 166 | 166 | |
| 167 | - /** |
|
| 168 | - * @param bool $force |
|
| 169 | - * @return false|object |
|
| 170 | - */ |
|
| 171 | - protected function getPluginUpdate($force = false) |
|
| 172 | - { |
|
| 173 | - $version = $this->getCachedVersion(); |
|
| 174 | - if (false === $version || $force) { |
|
| 175 | - $version = $this->getVersion(); |
|
| 176 | - $this->setCachedVersion($version); |
|
| 177 | - } |
|
| 178 | - if (isset($version->error)) { |
|
| 179 | - glsr_log()->error($version->error); |
|
| 180 | - return false; |
|
| 181 | - } |
|
| 182 | - return $version; |
|
| 183 | - } |
|
| 167 | + /** |
|
| 168 | + * @param bool $force |
|
| 169 | + * @return false|object |
|
| 170 | + */ |
|
| 171 | + protected function getPluginUpdate($force = false) |
|
| 172 | + { |
|
| 173 | + $version = $this->getCachedVersion(); |
|
| 174 | + if (false === $version || $force) { |
|
| 175 | + $version = $this->getVersion(); |
|
| 176 | + $this->setCachedVersion($version); |
|
| 177 | + } |
|
| 178 | + if (isset($version->error)) { |
|
| 179 | + glsr_log()->error($version->error); |
|
| 180 | + return false; |
|
| 181 | + } |
|
| 182 | + return $version; |
|
| 183 | + } |
|
| 184 | 184 | |
| 185 | - /** |
|
| 186 | - * @param object $transient |
|
| 187 | - * @param object $updateInfo |
|
| 188 | - * @return object |
|
| 189 | - */ |
|
| 190 | - protected function modifyPluginUpdates($transient, $updateInfo) |
|
| 191 | - { |
|
| 192 | - $updateInfo->id = Application::ID.'/'.Arr::get($this->data, 'TextDomain'); |
|
| 193 | - $updateInfo->plugin = $this->plugin; |
|
| 194 | - $updateInfo->requires_php = Arr::get($this->data, 'RequiresPHP'); |
|
| 195 | - $updateInfo->tested = Arr::get($this->data, 'testedTo'); |
|
| 196 | - $transient->checked[$this->plugin] = Arr::get($this->data, 'Version'); |
|
| 197 | - $transient->last_checked = time(); |
|
| 198 | - if (Helper::isGreaterThan($updateInfo->new_version, Arr::get($this->data, 'Version'))) { |
|
| 199 | - unset($transient->no_update[$this->plugin]); |
|
| 200 | - $updateInfo->update = true; |
|
| 201 | - $transient->response[$this->plugin] = $updateInfo; |
|
| 202 | - } else { |
|
| 203 | - unset($transient->response[$this->plugin]); |
|
| 204 | - $transient->no_update[$this->plugin] = $updateInfo; |
|
| 205 | - } |
|
| 206 | - return $transient; |
|
| 207 | - } |
|
| 185 | + /** |
|
| 186 | + * @param object $transient |
|
| 187 | + * @param object $updateInfo |
|
| 188 | + * @return object |
|
| 189 | + */ |
|
| 190 | + protected function modifyPluginUpdates($transient, $updateInfo) |
|
| 191 | + { |
|
| 192 | + $updateInfo->id = Application::ID.'/'.Arr::get($this->data, 'TextDomain'); |
|
| 193 | + $updateInfo->plugin = $this->plugin; |
|
| 194 | + $updateInfo->requires_php = Arr::get($this->data, 'RequiresPHP'); |
|
| 195 | + $updateInfo->tested = Arr::get($this->data, 'testedTo'); |
|
| 196 | + $transient->checked[$this->plugin] = Arr::get($this->data, 'Version'); |
|
| 197 | + $transient->last_checked = time(); |
|
| 198 | + if (Helper::isGreaterThan($updateInfo->new_version, Arr::get($this->data, 'Version'))) { |
|
| 199 | + unset($transient->no_update[$this->plugin]); |
|
| 200 | + $updateInfo->update = true; |
|
| 201 | + $transient->response[$this->plugin] = $updateInfo; |
|
| 202 | + } else { |
|
| 203 | + unset($transient->response[$this->plugin]); |
|
| 204 | + $transient->no_update[$this->plugin] = $updateInfo; |
|
| 205 | + } |
|
| 206 | + return $transient; |
|
| 207 | + } |
|
| 208 | 208 | |
| 209 | - /** |
|
| 210 | - * @param object $updateInfo |
|
| 211 | - * @return object |
|
| 212 | - */ |
|
| 213 | - protected function modifyUpdateDetails($updateInfo) |
|
| 214 | - { |
|
| 215 | - $updateInfo->author = Arr::get($this->data, 'Author'); |
|
| 216 | - $updateInfo->author_profile = Arr::get($this->data, 'AuthorURI'); |
|
| 217 | - $updateInfo->requires = Arr::get($this->data, 'RequiresWP'); |
|
| 218 | - $updateInfo->requires_php = Arr::get($this->data, 'RequiresPHP'); |
|
| 219 | - $updateInfo->tested = Arr::get($this->data, 'testedTo'); |
|
| 220 | - $updateInfo->version = $updateInfo->new_version; |
|
| 221 | - return $updateInfo; |
|
| 222 | - } |
|
| 209 | + /** |
|
| 210 | + * @param object $updateInfo |
|
| 211 | + * @return object |
|
| 212 | + */ |
|
| 213 | + protected function modifyUpdateDetails($updateInfo) |
|
| 214 | + { |
|
| 215 | + $updateInfo->author = Arr::get($this->data, 'Author'); |
|
| 216 | + $updateInfo->author_profile = Arr::get($this->data, 'AuthorURI'); |
|
| 217 | + $updateInfo->requires = Arr::get($this->data, 'RequiresWP'); |
|
| 218 | + $updateInfo->requires_php = Arr::get($this->data, 'RequiresPHP'); |
|
| 219 | + $updateInfo->tested = Arr::get($this->data, 'testedTo'); |
|
| 220 | + $updateInfo->version = $updateInfo->new_version; |
|
| 221 | + return $updateInfo; |
|
| 222 | + } |
|
| 223 | 223 | |
| 224 | - /** |
|
| 225 | - * @param \WP_Error|array $response |
|
| 226 | - * @return object |
|
| 227 | - */ |
|
| 228 | - protected function normalizeResponse($response) |
|
| 229 | - { |
|
| 230 | - $body = wp_remote_retrieve_body($response); |
|
| 231 | - if ($data = json_decode($body)) { |
|
| 232 | - $data = array_map('maybe_unserialize', (array) $data); |
|
| 233 | - return (object) $data; |
|
| 234 | - } |
|
| 235 | - $error = is_wp_error($response) |
|
| 236 | - ? $response->get_error_message() |
|
| 237 | - : 'Update server not responding ('.Arr::get($this->data, 'TextDomain').')'; |
|
| 238 | - return (object) ['error' => $error]; |
|
| 239 | - } |
|
| 224 | + /** |
|
| 225 | + * @param \WP_Error|array $response |
|
| 226 | + * @return object |
|
| 227 | + */ |
|
| 228 | + protected function normalizeResponse($response) |
|
| 229 | + { |
|
| 230 | + $body = wp_remote_retrieve_body($response); |
|
| 231 | + if ($data = json_decode($body)) { |
|
| 232 | + $data = array_map('maybe_unserialize', (array) $data); |
|
| 233 | + return (object) $data; |
|
| 234 | + } |
|
| 235 | + $error = is_wp_error($response) |
|
| 236 | + ? $response->get_error_message() |
|
| 237 | + : 'Update server not responding ('.Arr::get($this->data, 'TextDomain').')'; |
|
| 238 | + return (object) ['error' => $error]; |
|
| 239 | + } |
|
| 240 | 240 | |
| 241 | - /** |
|
| 242 | - * @param string $action activate_license|check_license|deactivate_license|get_version |
|
| 243 | - * @return object |
|
| 244 | - */ |
|
| 245 | - protected function request($action, array $data = []) |
|
| 246 | - { |
|
| 247 | - $data = wp_parse_args($data, $this->data); |
|
| 248 | - $response = wp_remote_post($this->apiUrl, [ |
|
| 249 | - 'body' => [ |
|
| 250 | - 'edd_action' => $action, |
|
| 251 | - 'item_id' => Arr::get($data, 'item_id'), |
|
| 252 | - 'item_name' => Arr::get($data, 'Name'), |
|
| 253 | - 'license' => Arr::get($data, 'license'), |
|
| 254 | - 'slug' => Arr::get($data, 'TextDomain'), |
|
| 255 | - 'url' => home_url(), |
|
| 256 | - ], |
|
| 257 | - 'sslverify' => apply_filters('site-reviews/sslverify/post', false), |
|
| 258 | - 'timeout' => 15, |
|
| 259 | - ]); |
|
| 260 | - return $this->normalizeResponse($response); |
|
| 261 | - } |
|
| 241 | + /** |
|
| 242 | + * @param string $action activate_license|check_license|deactivate_license|get_version |
|
| 243 | + * @return object |
|
| 244 | + */ |
|
| 245 | + protected function request($action, array $data = []) |
|
| 246 | + { |
|
| 247 | + $data = wp_parse_args($data, $this->data); |
|
| 248 | + $response = wp_remote_post($this->apiUrl, [ |
|
| 249 | + 'body' => [ |
|
| 250 | + 'edd_action' => $action, |
|
| 251 | + 'item_id' => Arr::get($data, 'item_id'), |
|
| 252 | + 'item_name' => Arr::get($data, 'Name'), |
|
| 253 | + 'license' => Arr::get($data, 'license'), |
|
| 254 | + 'slug' => Arr::get($data, 'TextDomain'), |
|
| 255 | + 'url' => home_url(), |
|
| 256 | + ], |
|
| 257 | + 'sslverify' => apply_filters('site-reviews/sslverify/post', false), |
|
| 258 | + 'timeout' => 15, |
|
| 259 | + ]); |
|
| 260 | + return $this->normalizeResponse($response); |
|
| 261 | + } |
|
| 262 | 262 | |
| 263 | - /** |
|
| 264 | - * @param object $version |
|
| 265 | - * @return void |
|
| 266 | - */ |
|
| 267 | - protected function setCachedVersion($version) |
|
| 268 | - { |
|
| 269 | - if (!isset($version->error)) { |
|
| 270 | - set_transient($this->transientName, $version, 3 * HOUR_IN_SECONDS); |
|
| 271 | - } |
|
| 272 | - } |
|
| 263 | + /** |
|
| 264 | + * @param object $version |
|
| 265 | + * @return void |
|
| 266 | + */ |
|
| 267 | + protected function setCachedVersion($version) |
|
| 268 | + { |
|
| 269 | + if (!isset($version->error)) { |
|
| 270 | + set_transient($this->transientName, $version, 3 * HOUR_IN_SECONDS); |
|
| 271 | + } |
|
| 272 | + } |
|
| 273 | 273 | } |
@@ -7,160 +7,160 @@ |
||
| 7 | 7 | |
| 8 | 8 | class Migrate_3_0_0 |
| 9 | 9 | { |
| 10 | - const MAPPED_SETTINGS = [ |
|
| 11 | - 'settings.general.notification' => 'settings.general.notifications', // array |
|
| 12 | - 'settings.general.notification_email' => 'settings.general.notification_email', |
|
| 13 | - 'settings.general.notification_message' => 'settings.general.notification_message', |
|
| 14 | - 'settings.general.require.approval' => 'settings.general.require.approval', |
|
| 15 | - 'settings.general.require.login' => 'settings.general.require.login', |
|
| 16 | - 'settings.general.require.login_register' => 'settings.general.require.login_register', |
|
| 17 | - 'settings.general.webhook_url' => 'settings.general.notification_slack', |
|
| 18 | - 'settings.reviews-form.akismet' => 'settings.submissions.akismet', |
|
| 19 | - 'settings.reviews-form.blacklist.action' => 'settings.submissions.blacklist.action', |
|
| 20 | - 'settings.reviews-form.blacklist.entries' => 'settings.submissions.blacklist.entries', |
|
| 21 | - 'settings.reviews-form.recaptcha.integration' => 'settings.submissions.recaptcha.integration', |
|
| 22 | - 'settings.reviews-form.recaptcha.key' => 'settings.submissions.recaptcha.key', |
|
| 23 | - 'settings.reviews-form.recaptcha.position' => 'settings.submissions.recaptcha.position', |
|
| 24 | - 'settings.reviews-form.recaptcha.secret' => 'settings.submissions.recaptcha.secret', |
|
| 25 | - 'settings.reviews-form.required' => 'settings.submissions.required', // array |
|
| 26 | - 'settings.reviews.assigned_links.enabled' => 'settings.reviews.assigned_links', |
|
| 27 | - 'settings.reviews.avatars.enabled' => 'settings.reviews.avatars', |
|
| 28 | - 'settings.reviews.date.custom' => 'settings.reviews.date.custom', |
|
| 29 | - 'settings.reviews.date.format' => 'settings.reviews.date.format', |
|
| 30 | - 'settings.reviews.excerpt.enabled' => 'settings.reviews.excerpts', |
|
| 31 | - 'settings.reviews.excerpt.length' => 'settings.reviews.excerpts_length', |
|
| 32 | - 'settings.reviews.schema.address' => 'settings.schema.address', |
|
| 33 | - 'settings.reviews.schema.description.custom' => 'settings.schema.description.custom', |
|
| 34 | - 'settings.reviews.schema.description.default' => 'settings.schema.description.default', |
|
| 35 | - 'settings.reviews.schema.highprice' => 'settings.schema.highprice', |
|
| 36 | - 'settings.reviews.schema.image.custom' => 'settings.schema.image.custom', |
|
| 37 | - 'settings.reviews.schema.image.default' => 'settings.schema.image.default', |
|
| 38 | - 'settings.reviews.schema.lowprice' => 'settings.schema.lowprice', |
|
| 39 | - 'settings.reviews.schema.name.custom' => 'settings.schema.name.custom', |
|
| 40 | - 'settings.reviews.schema.name.default' => 'settings.schema.name.default', |
|
| 41 | - 'settings.reviews.schema.pricecurrency' => 'settings.schema.pricecurrency', |
|
| 42 | - 'settings.reviews.schema.pricerange' => 'settings.schema.pricerange', |
|
| 43 | - 'settings.reviews.schema.telephone' => 'settings.schema.telephone', |
|
| 44 | - 'settings.reviews.schema.type.custom' => 'settings.schema.type.custom', |
|
| 45 | - 'settings.reviews.schema.type.default' => 'settings.schema.type.default', |
|
| 46 | - 'settings.reviews.schema.url.custom' => 'settings.schema.url.custom', |
|
| 47 | - 'settings.reviews.schema.url.default' => 'settings.schema.url.default', |
|
| 48 | - 'version' => 'version_upgraded_from', |
|
| 49 | - ]; |
|
| 10 | + const MAPPED_SETTINGS = [ |
|
| 11 | + 'settings.general.notification' => 'settings.general.notifications', // array |
|
| 12 | + 'settings.general.notification_email' => 'settings.general.notification_email', |
|
| 13 | + 'settings.general.notification_message' => 'settings.general.notification_message', |
|
| 14 | + 'settings.general.require.approval' => 'settings.general.require.approval', |
|
| 15 | + 'settings.general.require.login' => 'settings.general.require.login', |
|
| 16 | + 'settings.general.require.login_register' => 'settings.general.require.login_register', |
|
| 17 | + 'settings.general.webhook_url' => 'settings.general.notification_slack', |
|
| 18 | + 'settings.reviews-form.akismet' => 'settings.submissions.akismet', |
|
| 19 | + 'settings.reviews-form.blacklist.action' => 'settings.submissions.blacklist.action', |
|
| 20 | + 'settings.reviews-form.blacklist.entries' => 'settings.submissions.blacklist.entries', |
|
| 21 | + 'settings.reviews-form.recaptcha.integration' => 'settings.submissions.recaptcha.integration', |
|
| 22 | + 'settings.reviews-form.recaptcha.key' => 'settings.submissions.recaptcha.key', |
|
| 23 | + 'settings.reviews-form.recaptcha.position' => 'settings.submissions.recaptcha.position', |
|
| 24 | + 'settings.reviews-form.recaptcha.secret' => 'settings.submissions.recaptcha.secret', |
|
| 25 | + 'settings.reviews-form.required' => 'settings.submissions.required', // array |
|
| 26 | + 'settings.reviews.assigned_links.enabled' => 'settings.reviews.assigned_links', |
|
| 27 | + 'settings.reviews.avatars.enabled' => 'settings.reviews.avatars', |
|
| 28 | + 'settings.reviews.date.custom' => 'settings.reviews.date.custom', |
|
| 29 | + 'settings.reviews.date.format' => 'settings.reviews.date.format', |
|
| 30 | + 'settings.reviews.excerpt.enabled' => 'settings.reviews.excerpts', |
|
| 31 | + 'settings.reviews.excerpt.length' => 'settings.reviews.excerpts_length', |
|
| 32 | + 'settings.reviews.schema.address' => 'settings.schema.address', |
|
| 33 | + 'settings.reviews.schema.description.custom' => 'settings.schema.description.custom', |
|
| 34 | + 'settings.reviews.schema.description.default' => 'settings.schema.description.default', |
|
| 35 | + 'settings.reviews.schema.highprice' => 'settings.schema.highprice', |
|
| 36 | + 'settings.reviews.schema.image.custom' => 'settings.schema.image.custom', |
|
| 37 | + 'settings.reviews.schema.image.default' => 'settings.schema.image.default', |
|
| 38 | + 'settings.reviews.schema.lowprice' => 'settings.schema.lowprice', |
|
| 39 | + 'settings.reviews.schema.name.custom' => 'settings.schema.name.custom', |
|
| 40 | + 'settings.reviews.schema.name.default' => 'settings.schema.name.default', |
|
| 41 | + 'settings.reviews.schema.pricecurrency' => 'settings.schema.pricecurrency', |
|
| 42 | + 'settings.reviews.schema.pricerange' => 'settings.schema.pricerange', |
|
| 43 | + 'settings.reviews.schema.telephone' => 'settings.schema.telephone', |
|
| 44 | + 'settings.reviews.schema.type.custom' => 'settings.schema.type.custom', |
|
| 45 | + 'settings.reviews.schema.type.default' => 'settings.schema.type.default', |
|
| 46 | + 'settings.reviews.schema.url.custom' => 'settings.schema.url.custom', |
|
| 47 | + 'settings.reviews.schema.url.default' => 'settings.schema.url.default', |
|
| 48 | + 'version' => 'version_upgraded_from', |
|
| 49 | + ]; |
|
| 50 | 50 | |
| 51 | - /** |
|
| 52 | - * @var array |
|
| 53 | - */ |
|
| 54 | - protected $newSettings; |
|
| 51 | + /** |
|
| 52 | + * @var array |
|
| 53 | + */ |
|
| 54 | + protected $newSettings; |
|
| 55 | 55 | |
| 56 | - /** |
|
| 57 | - * @var array |
|
| 58 | - */ |
|
| 59 | - protected $oldSettings; |
|
| 56 | + /** |
|
| 57 | + * @var array |
|
| 58 | + */ |
|
| 59 | + protected $oldSettings; |
|
| 60 | 60 | |
| 61 | - /** |
|
| 62 | - * @return void |
|
| 63 | - */ |
|
| 64 | - public function migrateSettings() |
|
| 65 | - { |
|
| 66 | - $this->newSettings = $this->getNewSettings(); |
|
| 67 | - $this->oldSettings = $this->getOldSettings(); |
|
| 68 | - if (empty($this->oldSettings) || empty($this->newSettings)) { |
|
| 69 | - return; |
|
| 70 | - } |
|
| 71 | - foreach (static::MAPPED_SETTINGS as $old => $new) { |
|
| 72 | - if (empty($this->oldSettings[$old])) { |
|
| 73 | - continue; |
|
| 74 | - } |
|
| 75 | - $this->newSettings[$new] = $this->oldSettings[$old]; |
|
| 76 | - } |
|
| 77 | - $this->migrateNotificationSettings(); |
|
| 78 | - $this->migrateRecaptchaSettings(); |
|
| 79 | - $this->migrateRequiredSettings(); |
|
| 80 | - $oldSettings = Arr::convertDotNotationArray($this->oldSettings); |
|
| 81 | - $newSettings = Arr::convertDotNotationArray($this->newSettings); |
|
| 82 | - if (isset($oldSettings['settings']['strings']) && is_array($oldSettings['settings']['strings'])) { |
|
| 83 | - $newSettings['settings']['strings'] = $oldSettings['settings']['strings']; |
|
| 84 | - } |
|
| 85 | - update_option(OptionManager::databaseKey(3), $newSettings); |
|
| 86 | - } |
|
| 61 | + /** |
|
| 62 | + * @return void |
|
| 63 | + */ |
|
| 64 | + public function migrateSettings() |
|
| 65 | + { |
|
| 66 | + $this->newSettings = $this->getNewSettings(); |
|
| 67 | + $this->oldSettings = $this->getOldSettings(); |
|
| 68 | + if (empty($this->oldSettings) || empty($this->newSettings)) { |
|
| 69 | + return; |
|
| 70 | + } |
|
| 71 | + foreach (static::MAPPED_SETTINGS as $old => $new) { |
|
| 72 | + if (empty($this->oldSettings[$old])) { |
|
| 73 | + continue; |
|
| 74 | + } |
|
| 75 | + $this->newSettings[$new] = $this->oldSettings[$old]; |
|
| 76 | + } |
|
| 77 | + $this->migrateNotificationSettings(); |
|
| 78 | + $this->migrateRecaptchaSettings(); |
|
| 79 | + $this->migrateRequiredSettings(); |
|
| 80 | + $oldSettings = Arr::convertDotNotationArray($this->oldSettings); |
|
| 81 | + $newSettings = Arr::convertDotNotationArray($this->newSettings); |
|
| 82 | + if (isset($oldSettings['settings']['strings']) && is_array($oldSettings['settings']['strings'])) { |
|
| 83 | + $newSettings['settings']['strings'] = $oldSettings['settings']['strings']; |
|
| 84 | + } |
|
| 85 | + update_option(OptionManager::databaseKey(3), $newSettings); |
|
| 86 | + } |
|
| 87 | 87 | |
| 88 | - /** |
|
| 89 | - * @return void |
|
| 90 | - */ |
|
| 91 | - public function run() |
|
| 92 | - { |
|
| 93 | - $this->migrateSettings(); |
|
| 94 | - } |
|
| 88 | + /** |
|
| 89 | + * @return void |
|
| 90 | + */ |
|
| 91 | + public function run() |
|
| 92 | + { |
|
| 93 | + $this->migrateSettings(); |
|
| 94 | + } |
|
| 95 | 95 | |
| 96 | - /** |
|
| 97 | - * @return array |
|
| 98 | - */ |
|
| 99 | - protected function getNewSettings() |
|
| 100 | - { |
|
| 101 | - return Arr::flattenArray(Arr::consolidateArray(OptionManager::databaseKey(3))); |
|
| 102 | - } |
|
| 96 | + /** |
|
| 97 | + * @return array |
|
| 98 | + */ |
|
| 99 | + protected function getNewSettings() |
|
| 100 | + { |
|
| 101 | + return Arr::flattenArray(Arr::consolidateArray(OptionManager::databaseKey(3))); |
|
| 102 | + } |
|
| 103 | 103 | |
| 104 | - /** |
|
| 105 | - * @return array |
|
| 106 | - */ |
|
| 107 | - protected function getOldSettings() |
|
| 108 | - { |
|
| 109 | - $defaults = array_fill_keys(array_keys(static::MAPPED_SETTINGS), ''); |
|
| 110 | - $settings = Arr::consolidateArray(get_option(OptionManager::databaseKey(2))); |
|
| 111 | - $settings = Arr::flattenArray($settings); |
|
| 112 | - return !empty($settings) |
|
| 113 | - ? wp_parse_args($settings, $defaults) |
|
| 114 | - : []; |
|
| 115 | - } |
|
| 104 | + /** |
|
| 105 | + * @return array |
|
| 106 | + */ |
|
| 107 | + protected function getOldSettings() |
|
| 108 | + { |
|
| 109 | + $defaults = array_fill_keys(array_keys(static::MAPPED_SETTINGS), ''); |
|
| 110 | + $settings = Arr::consolidateArray(get_option(OptionManager::databaseKey(2))); |
|
| 111 | + $settings = Arr::flattenArray($settings); |
|
| 112 | + return !empty($settings) |
|
| 113 | + ? wp_parse_args($settings, $defaults) |
|
| 114 | + : []; |
|
| 115 | + } |
|
| 116 | 116 | |
| 117 | - /** |
|
| 118 | - * @return void |
|
| 119 | - */ |
|
| 120 | - protected function migrateNotificationSettings() |
|
| 121 | - { |
|
| 122 | - $notifications = [ |
|
| 123 | - 'custom' => 'custom', |
|
| 124 | - 'default' => 'admin', |
|
| 125 | - 'webhook' => 'slack', |
|
| 126 | - ]; |
|
| 127 | - $this->newSettings['settings.general.notifications'] = []; |
|
| 128 | - foreach ($notifications as $old => $new) { |
|
| 129 | - if ($this->oldSettings['settings.general.notification'] != $old) { |
|
| 130 | - continue; |
|
| 131 | - } |
|
| 132 | - $this->newSettings['settings.general.notifications'][] = $new; |
|
| 133 | - } |
|
| 134 | - } |
|
| 117 | + /** |
|
| 118 | + * @return void |
|
| 119 | + */ |
|
| 120 | + protected function migrateNotificationSettings() |
|
| 121 | + { |
|
| 122 | + $notifications = [ |
|
| 123 | + 'custom' => 'custom', |
|
| 124 | + 'default' => 'admin', |
|
| 125 | + 'webhook' => 'slack', |
|
| 126 | + ]; |
|
| 127 | + $this->newSettings['settings.general.notifications'] = []; |
|
| 128 | + foreach ($notifications as $old => $new) { |
|
| 129 | + if ($this->oldSettings['settings.general.notification'] != $old) { |
|
| 130 | + continue; |
|
| 131 | + } |
|
| 132 | + $this->newSettings['settings.general.notifications'][] = $new; |
|
| 133 | + } |
|
| 134 | + } |
|
| 135 | 135 | |
| 136 | - /** |
|
| 137 | - * @return void |
|
| 138 | - */ |
|
| 139 | - protected function migrateRecaptchaSettings() |
|
| 140 | - { |
|
| 141 | - $recaptcha = [ |
|
| 142 | - 'BadgePosition' => $this->oldSettings['settings.reviews-form.recaptcha.position'], |
|
| 143 | - 'SecretKey' => $this->oldSettings['settings.reviews-form.recaptcha.secret'], |
|
| 144 | - 'SiteKey' => $this->oldSettings['settings.reviews-form.recaptcha.key'], |
|
| 145 | - ]; |
|
| 146 | - if (in_array($this->oldSettings['settings.reviews-form.recaptcha.integration'], ['custom', 'invisible-recaptcha'])) { |
|
| 147 | - $this->newSettings['settings.submissions.recaptcha.integration'] = 'all'; |
|
| 148 | - } |
|
| 149 | - if ('invisible-recaptcha' == $this->oldSettings['settings.reviews-form.recaptcha.integration']) { |
|
| 150 | - $recaptcha = wp_parse_args((array) get_site_option('ic-settings', [], false), $recaptcha); |
|
| 151 | - } |
|
| 152 | - $this->newSettings['settings.submissions.recaptcha.key'] = $recaptcha['SiteKey']; |
|
| 153 | - $this->newSettings['settings.submissions.recaptcha.secret'] = $recaptcha['SecretKey']; |
|
| 154 | - $this->newSettings['settings.submissions.recaptcha.position'] = $recaptcha['BadgePosition']; |
|
| 155 | - } |
|
| 136 | + /** |
|
| 137 | + * @return void |
|
| 138 | + */ |
|
| 139 | + protected function migrateRecaptchaSettings() |
|
| 140 | + { |
|
| 141 | + $recaptcha = [ |
|
| 142 | + 'BadgePosition' => $this->oldSettings['settings.reviews-form.recaptcha.position'], |
|
| 143 | + 'SecretKey' => $this->oldSettings['settings.reviews-form.recaptcha.secret'], |
|
| 144 | + 'SiteKey' => $this->oldSettings['settings.reviews-form.recaptcha.key'], |
|
| 145 | + ]; |
|
| 146 | + if (in_array($this->oldSettings['settings.reviews-form.recaptcha.integration'], ['custom', 'invisible-recaptcha'])) { |
|
| 147 | + $this->newSettings['settings.submissions.recaptcha.integration'] = 'all'; |
|
| 148 | + } |
|
| 149 | + if ('invisible-recaptcha' == $this->oldSettings['settings.reviews-form.recaptcha.integration']) { |
|
| 150 | + $recaptcha = wp_parse_args((array) get_site_option('ic-settings', [], false), $recaptcha); |
|
| 151 | + } |
|
| 152 | + $this->newSettings['settings.submissions.recaptcha.key'] = $recaptcha['SiteKey']; |
|
| 153 | + $this->newSettings['settings.submissions.recaptcha.secret'] = $recaptcha['SecretKey']; |
|
| 154 | + $this->newSettings['settings.submissions.recaptcha.position'] = $recaptcha['BadgePosition']; |
|
| 155 | + } |
|
| 156 | 156 | |
| 157 | - /** |
|
| 158 | - * @return void |
|
| 159 | - */ |
|
| 160 | - protected function migrateRequiredSettings() |
|
| 161 | - { |
|
| 162 | - $this->newSettings['settings.submissions.required'] = array_filter((array) $this->oldSettings['settings.reviews-form.required']); |
|
| 163 | - $this->newSettings['settings.submissions.required'][] = 'rating'; |
|
| 164 | - $this->newSettings['settings.submissions.required'][] = 'terms'; |
|
| 165 | - } |
|
| 157 | + /** |
|
| 158 | + * @return void |
|
| 159 | + */ |
|
| 160 | + protected function migrateRequiredSettings() |
|
| 161 | + { |
|
| 162 | + $this->newSettings['settings.submissions.required'] = array_filter((array) $this->oldSettings['settings.reviews-form.required']); |
|
| 163 | + $this->newSettings['settings.submissions.required'][] = 'rating'; |
|
| 164 | + $this->newSettings['settings.submissions.required'][] = 'terms'; |
|
| 165 | + } |
|
| 166 | 166 | } |
@@ -9,75 +9,75 @@ |
||
| 9 | 9 | |
| 10 | 10 | class Wpml implements Contract |
| 11 | 11 | { |
| 12 | - public $pluginName = 'WPML'; |
|
| 13 | - public $supportedVersion = '3.3.5'; |
|
| 12 | + public $pluginName = 'WPML'; |
|
| 13 | + public $supportedVersion = '3.3.5'; |
|
| 14 | 14 | |
| 15 | - /** |
|
| 16 | - * {@inheritdoc} |
|
| 17 | - */ |
|
| 18 | - public function getPostId($postId) |
|
| 19 | - { |
|
| 20 | - $postId = trim($postId); |
|
| 21 | - if (!is_numeric($postId)) { |
|
| 22 | - return 0; |
|
| 23 | - } |
|
| 24 | - if ($this->isEnabled()) { |
|
| 25 | - $postId = apply_filters('wpml_object_id', $postId, 'any', true); |
|
| 26 | - } |
|
| 27 | - return intval($postId); |
|
| 28 | - } |
|
| 15 | + /** |
|
| 16 | + * {@inheritdoc} |
|
| 17 | + */ |
|
| 18 | + public function getPostId($postId) |
|
| 19 | + { |
|
| 20 | + $postId = trim($postId); |
|
| 21 | + if (!is_numeric($postId)) { |
|
| 22 | + return 0; |
|
| 23 | + } |
|
| 24 | + if ($this->isEnabled()) { |
|
| 25 | + $postId = apply_filters('wpml_object_id', $postId, 'any', true); |
|
| 26 | + } |
|
| 27 | + return intval($postId); |
|
| 28 | + } |
|
| 29 | 29 | |
| 30 | - /** |
|
| 31 | - * {@inheritdoc} |
|
| 32 | - */ |
|
| 33 | - public function getPostIds(array $postIds) |
|
| 34 | - { |
|
| 35 | - if (!$this->isEnabled()) { |
|
| 36 | - return $postIds; |
|
| 37 | - } |
|
| 38 | - $newPostIds = []; |
|
| 39 | - foreach (Arr::unique($postIds) as $postId) { |
|
| 40 | - $postType = get_post_type($postId); |
|
| 41 | - if (!$postType) { |
|
| 42 | - continue; |
|
| 43 | - } |
|
| 44 | - $elementType = 'post_'.$postType; |
|
| 45 | - $trid = apply_filters('wpml_element_trid', null, $postId, $elementType); |
|
| 46 | - $translations = apply_filters('wpml_get_element_translations', null, $trid, $elementType); |
|
| 47 | - if (!is_array($translations)) { |
|
| 48 | - $translations = []; |
|
| 49 | - } |
|
| 50 | - $newPostIds = array_merge( |
|
| 51 | - $newPostIds, |
|
| 52 | - array_column($translations, 'element_id') |
|
| 53 | - ); |
|
| 54 | - } |
|
| 55 | - return Arr::unique($newPostIds); |
|
| 56 | - } |
|
| 30 | + /** |
|
| 31 | + * {@inheritdoc} |
|
| 32 | + */ |
|
| 33 | + public function getPostIds(array $postIds) |
|
| 34 | + { |
|
| 35 | + if (!$this->isEnabled()) { |
|
| 36 | + return $postIds; |
|
| 37 | + } |
|
| 38 | + $newPostIds = []; |
|
| 39 | + foreach (Arr::unique($postIds) as $postId) { |
|
| 40 | + $postType = get_post_type($postId); |
|
| 41 | + if (!$postType) { |
|
| 42 | + continue; |
|
| 43 | + } |
|
| 44 | + $elementType = 'post_'.$postType; |
|
| 45 | + $trid = apply_filters('wpml_element_trid', null, $postId, $elementType); |
|
| 46 | + $translations = apply_filters('wpml_get_element_translations', null, $trid, $elementType); |
|
| 47 | + if (!is_array($translations)) { |
|
| 48 | + $translations = []; |
|
| 49 | + } |
|
| 50 | + $newPostIds = array_merge( |
|
| 51 | + $newPostIds, |
|
| 52 | + array_column($translations, 'element_id') |
|
| 53 | + ); |
|
| 54 | + } |
|
| 55 | + return Arr::unique($newPostIds); |
|
| 56 | + } |
|
| 57 | 57 | |
| 58 | - /** |
|
| 59 | - * {@inheritdoc} |
|
| 60 | - */ |
|
| 61 | - public function isActive() |
|
| 62 | - { |
|
| 63 | - return defined('ICL_SITEPRESS_VERSION'); |
|
| 64 | - } |
|
| 58 | + /** |
|
| 59 | + * {@inheritdoc} |
|
| 60 | + */ |
|
| 61 | + public function isActive() |
|
| 62 | + { |
|
| 63 | + return defined('ICL_SITEPRESS_VERSION'); |
|
| 64 | + } |
|
| 65 | 65 | |
| 66 | - /** |
|
| 67 | - * {@inheritdoc} |
|
| 68 | - */ |
|
| 69 | - public function isEnabled() |
|
| 70 | - { |
|
| 71 | - return $this->isActive() |
|
| 72 | - && 'wpml' == glsr(OptionManager::class)->get('settings.general.multilingual'); |
|
| 73 | - } |
|
| 66 | + /** |
|
| 67 | + * {@inheritdoc} |
|
| 68 | + */ |
|
| 69 | + public function isEnabled() |
|
| 70 | + { |
|
| 71 | + return $this->isActive() |
|
| 72 | + && 'wpml' == glsr(OptionManager::class)->get('settings.general.multilingual'); |
|
| 73 | + } |
|
| 74 | 74 | |
| 75 | - /** |
|
| 76 | - * {@inheritdoc} |
|
| 77 | - */ |
|
| 78 | - public function isSupported() |
|
| 79 | - { |
|
| 80 | - return $this->isActive() |
|
| 81 | - && Helper::isGreaterThanOrEqual(ICL_SITEPRESS_VERSION, $this->supportedVersion); |
|
| 82 | - } |
|
| 75 | + /** |
|
| 76 | + * {@inheritdoc} |
|
| 77 | + */ |
|
| 78 | + public function isSupported() |
|
| 79 | + { |
|
| 80 | + return $this->isActive() |
|
| 81 | + && Helper::isGreaterThanOrEqual(ICL_SITEPRESS_VERSION, $this->supportedVersion); |
|
| 82 | + } |
|
| 83 | 83 | } |
@@ -9,71 +9,71 @@ |
||
| 9 | 9 | |
| 10 | 10 | class Polylang implements Contract |
| 11 | 11 | { |
| 12 | - public $pluginName = 'Polylang'; |
|
| 13 | - public $supportedVersion = '2.3'; |
|
| 12 | + public $pluginName = 'Polylang'; |
|
| 13 | + public $supportedVersion = '2.3'; |
|
| 14 | 14 | |
| 15 | - /** |
|
| 16 | - * {@inheritdoc} |
|
| 17 | - */ |
|
| 18 | - public function getPostId($postId) |
|
| 19 | - { |
|
| 20 | - $postId = trim($postId); |
|
| 21 | - if (!is_numeric($postId)) { |
|
| 22 | - return 0; |
|
| 23 | - } |
|
| 24 | - if ($this->isEnabled()) { |
|
| 25 | - $polylangPostId = pll_get_post($postId, pll_get_post_language(get_the_ID())); |
|
| 26 | - } |
|
| 27 | - if (!empty($polylangPostId)) { |
|
| 28 | - $postId = $polylangPostId; |
|
| 29 | - } |
|
| 30 | - return intval($postId); |
|
| 31 | - } |
|
| 15 | + /** |
|
| 16 | + * {@inheritdoc} |
|
| 17 | + */ |
|
| 18 | + public function getPostId($postId) |
|
| 19 | + { |
|
| 20 | + $postId = trim($postId); |
|
| 21 | + if (!is_numeric($postId)) { |
|
| 22 | + return 0; |
|
| 23 | + } |
|
| 24 | + if ($this->isEnabled()) { |
|
| 25 | + $polylangPostId = pll_get_post($postId, pll_get_post_language(get_the_ID())); |
|
| 26 | + } |
|
| 27 | + if (!empty($polylangPostId)) { |
|
| 28 | + $postId = $polylangPostId; |
|
| 29 | + } |
|
| 30 | + return intval($postId); |
|
| 31 | + } |
|
| 32 | 32 | |
| 33 | - /** |
|
| 34 | - * {@inheritdoc} |
|
| 35 | - */ |
|
| 36 | - public function getPostIds(array $postIds) |
|
| 37 | - { |
|
| 38 | - if (!$this->isEnabled()) { |
|
| 39 | - return $postIds; |
|
| 40 | - } |
|
| 41 | - $newPostIds = []; |
|
| 42 | - foreach (Arr::unique($postIds) as $postId) { |
|
| 43 | - $newPostIds = array_merge( |
|
| 44 | - $newPostIds, |
|
| 45 | - array_values(pll_get_post_translations($postId)) |
|
| 46 | - ); |
|
| 47 | - } |
|
| 48 | - return Arr::unique($newPostIds); |
|
| 49 | - } |
|
| 33 | + /** |
|
| 34 | + * {@inheritdoc} |
|
| 35 | + */ |
|
| 36 | + public function getPostIds(array $postIds) |
|
| 37 | + { |
|
| 38 | + if (!$this->isEnabled()) { |
|
| 39 | + return $postIds; |
|
| 40 | + } |
|
| 41 | + $newPostIds = []; |
|
| 42 | + foreach (Arr::unique($postIds) as $postId) { |
|
| 43 | + $newPostIds = array_merge( |
|
| 44 | + $newPostIds, |
|
| 45 | + array_values(pll_get_post_translations($postId)) |
|
| 46 | + ); |
|
| 47 | + } |
|
| 48 | + return Arr::unique($newPostIds); |
|
| 49 | + } |
|
| 50 | 50 | |
| 51 | - /** |
|
| 52 | - * {@inheritdoc} |
|
| 53 | - */ |
|
| 54 | - public function isActive() |
|
| 55 | - { |
|
| 56 | - return function_exists('PLL') |
|
| 57 | - && function_exists('pll_get_post') |
|
| 58 | - && function_exists('pll_get_post_language') |
|
| 59 | - && function_exists('pll_get_post_translations'); |
|
| 60 | - } |
|
| 51 | + /** |
|
| 52 | + * {@inheritdoc} |
|
| 53 | + */ |
|
| 54 | + public function isActive() |
|
| 55 | + { |
|
| 56 | + return function_exists('PLL') |
|
| 57 | + && function_exists('pll_get_post') |
|
| 58 | + && function_exists('pll_get_post_language') |
|
| 59 | + && function_exists('pll_get_post_translations'); |
|
| 60 | + } |
|
| 61 | 61 | |
| 62 | - /** |
|
| 63 | - * {@inheritdoc} |
|
| 64 | - */ |
|
| 65 | - public function isEnabled() |
|
| 66 | - { |
|
| 67 | - return $this->isActive() |
|
| 68 | - && 'polylang' == glsr(OptionManager::class)->get('settings.general.multilingual'); |
|
| 69 | - } |
|
| 62 | + /** |
|
| 63 | + * {@inheritdoc} |
|
| 64 | + */ |
|
| 65 | + public function isEnabled() |
|
| 66 | + { |
|
| 67 | + return $this->isActive() |
|
| 68 | + && 'polylang' == glsr(OptionManager::class)->get('settings.general.multilingual'); |
|
| 69 | + } |
|
| 70 | 70 | |
| 71 | - /** |
|
| 72 | - * {@inheritdoc} |
|
| 73 | - */ |
|
| 74 | - public function isSupported() |
|
| 75 | - { |
|
| 76 | - return defined('POLYLANG_VERSION') |
|
| 77 | - && Helper::isGreaterThanOrEqual(POLYLANG_VERSION, $this->supportedVersion); |
|
| 78 | - } |
|
| 71 | + /** |
|
| 72 | + * {@inheritdoc} |
|
| 73 | + */ |
|
| 74 | + public function isSupported() |
|
| 75 | + { |
|
| 76 | + return defined('POLYLANG_VERSION') |
|
| 77 | + && Helper::isGreaterThanOrEqual(POLYLANG_VERSION, $this->supportedVersion); |
|
| 78 | + } |
|
| 79 | 79 | } |
@@ -8,218 +8,218 @@ |
||
| 8 | 8 | |
| 9 | 9 | class Helper |
| 10 | 10 | { |
| 11 | - /** |
|
| 12 | - * @param string $name |
|
| 13 | - * @param string $path |
|
| 14 | - * @return string |
|
| 15 | - */ |
|
| 16 | - public static function buildClassName($name, $path = '') |
|
| 17 | - { |
|
| 18 | - $className = Str::camelCase($name); |
|
| 19 | - $path = ltrim(str_replace(__NAMESPACE__, '', $path), '\\'); |
|
| 20 | - return !empty($path) |
|
| 21 | - ? __NAMESPACE__.'\\'.$path.'\\'.$className |
|
| 22 | - : $className; |
|
| 23 | - } |
|
| 24 | - |
|
| 25 | - /** |
|
| 26 | - * @param string $name |
|
| 27 | - * @param string $prefix |
|
| 28 | - * @return string |
|
| 29 | - */ |
|
| 30 | - public static function buildMethodName($name, $prefix = '') |
|
| 31 | - { |
|
| 32 | - return lcfirst($prefix.static::buildClassName($name)); |
|
| 33 | - } |
|
| 34 | - |
|
| 35 | - /** |
|
| 36 | - * @param string $name |
|
| 37 | - * @return string |
|
| 38 | - */ |
|
| 39 | - public static function buildPropertyName($name) |
|
| 40 | - { |
|
| 41 | - return static::buildMethodName($name); |
|
| 42 | - } |
|
| 43 | - |
|
| 44 | - /** |
|
| 45 | - * @param string $cast |
|
| 46 | - * @param mixed $value |
|
| 47 | - * @return mixed |
|
| 48 | - */ |
|
| 49 | - public static function castTo($cast = '', $value) |
|
| 50 | - { |
|
| 51 | - $method = static::buildMethodName($cast, 'castTo'); |
|
| 52 | - return !empty($cast) && method_exists(__CLASS__, $method) |
|
| 53 | - ? static::$method($value) |
|
| 54 | - : $value; |
|
| 55 | - } |
|
| 56 | - |
|
| 57 | - /** |
|
| 58 | - * @param mixed $value |
|
| 59 | - * @return array |
|
| 60 | - */ |
|
| 61 | - public static function castToArray($value) |
|
| 62 | - { |
|
| 63 | - return (array) $value; |
|
| 64 | - } |
|
| 65 | - |
|
| 66 | - /** |
|
| 67 | - * @param mixed $value |
|
| 68 | - * @return bool |
|
| 69 | - */ |
|
| 70 | - public static function castToBool($value) |
|
| 71 | - { |
|
| 72 | - return filter_var($value, FILTER_VALIDATE_BOOLEAN); |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - /** |
|
| 76 | - * @param mixed $value |
|
| 77 | - * @return float |
|
| 78 | - */ |
|
| 79 | - public static function castToFloat($value) |
|
| 80 | - { |
|
| 81 | - return (float) filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND); |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - /** |
|
| 85 | - * @param mixed $value |
|
| 86 | - * @return int |
|
| 87 | - */ |
|
| 88 | - public static function castToInt($value) |
|
| 89 | - { |
|
| 90 | - return (int) filter_var($value, FILTER_VALIDATE_INT); |
|
| 91 | - } |
|
| 92 | - |
|
| 93 | - /** |
|
| 94 | - * @param mixed $value |
|
| 95 | - * @return object |
|
| 96 | - */ |
|
| 97 | - public static function castToObject($value) |
|
| 98 | - { |
|
| 99 | - return (object) (array) $value; |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - /** |
|
| 103 | - * @param mixed $value |
|
| 104 | - * @return string |
|
| 105 | - */ |
|
| 106 | - public static function castToString($value) |
|
| 107 | - { |
|
| 108 | - if (is_object($value) && in_array('__toString', get_class_methods($value))) { |
|
| 109 | - return (string) $value->__toString(); |
|
| 110 | - } |
|
| 111 | - if (is_array($value) || is_object($value)) { |
|
| 112 | - return serialize($value); |
|
| 113 | - } |
|
| 114 | - return (string) $value; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - /** |
|
| 118 | - * @param string $key |
|
| 119 | - * @return mixed |
|
| 120 | - */ |
|
| 121 | - public static function filterInput($key, array $request = []) |
|
| 122 | - { |
|
| 123 | - if (isset($request[$key])) { |
|
| 124 | - return $request[$key]; |
|
| 125 | - } |
|
| 126 | - $variable = filter_input(INPUT_POST, $key); |
|
| 127 | - if (is_null($variable) && isset($_POST[$key])) { |
|
| 128 | - $variable = $_POST[$key]; |
|
| 129 | - } |
|
| 130 | - return $variable; |
|
| 131 | - } |
|
| 132 | - |
|
| 133 | - /** |
|
| 134 | - * @param string $key |
|
| 135 | - * @return array |
|
| 136 | - */ |
|
| 137 | - public static function filterInputArray($key) |
|
| 138 | - { |
|
| 139 | - $variable = filter_input(INPUT_POST, $key, FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); |
|
| 140 | - if (empty($variable) && !empty($_POST[$key]) && is_array($_POST[$key])) { |
|
| 141 | - $variable = $_POST[$key]; |
|
| 142 | - } |
|
| 143 | - return (array) $variable; |
|
| 144 | - } |
|
| 145 | - |
|
| 146 | - /** |
|
| 147 | - * @return string |
|
| 148 | - */ |
|
| 149 | - public static function getIpAddress() |
|
| 150 | - { |
|
| 151 | - $whitelist = []; |
|
| 152 | - $isUsingCloudflare = !empty(filter_input(INPUT_SERVER, 'CF-Connecting-IP')); |
|
| 153 | - if (apply_filters('site-reviews/whip/whitelist/cloudflare', $isUsingCloudflare)) { |
|
| 154 | - $cloudflareIps = glsr(Cache::class)->getCloudflareIps(); |
|
| 155 | - $whitelist[Whip::CLOUDFLARE_HEADERS] = [Whip::IPV4 => $cloudflareIps['v4']]; |
|
| 156 | - if (defined('AF_INET6')) { |
|
| 157 | - $whitelist[Whip::CLOUDFLARE_HEADERS][Whip::IPV6] = $cloudflareIps['v6']; |
|
| 158 | - } |
|
| 159 | - } |
|
| 160 | - $whitelist = apply_filters('site-reviews/whip/whitelist', $whitelist); |
|
| 161 | - $methods = apply_filters('site-reviews/whip/methods', Whip::ALL_METHODS); |
|
| 162 | - $whip = new Whip($methods, $whitelist); |
|
| 163 | - do_action_ref_array('site-reviews/whip', [$whip]); |
|
| 164 | - if (false !== ($clientAddress = $whip->getValidIpAddress())) { |
|
| 165 | - return (string) $clientAddress; |
|
| 166 | - } |
|
| 167 | - glsr_log()->error('Unable to detect IP address.'); |
|
| 168 | - return 'unknown'; |
|
| 169 | - } |
|
| 170 | - |
|
| 171 | - /** |
|
| 172 | - * @param mixed $value |
|
| 173 | - * @param string|int $min |
|
| 174 | - * @param string|int $max |
|
| 175 | - * @return bool |
|
| 176 | - */ |
|
| 177 | - public static function inRange($value, $min, $max) |
|
| 178 | - { |
|
| 179 | - $inRange = filter_var($value, FILTER_VALIDATE_INT, ['options' => [ |
|
| 180 | - 'min_range' => intval($min), |
|
| 181 | - 'max_range' => intval($max), |
|
| 182 | - ]]); |
|
| 183 | - return false !== $inRange; |
|
| 184 | - } |
|
| 185 | - |
|
| 186 | - /** |
|
| 187 | - * @param int|string $value |
|
| 188 | - * @param int|string $compareWithValue |
|
| 189 | - * @return bool |
|
| 190 | - */ |
|
| 191 | - public static function isGreaterThan($value, $compareWithValue) |
|
| 192 | - { |
|
| 193 | - return version_compare($value, $compareWithValue, '>'); |
|
| 194 | - } |
|
| 195 | - |
|
| 196 | - /** |
|
| 197 | - * @param int|string $value |
|
| 198 | - * @param int|string $compareWithValue |
|
| 199 | - * @return bool |
|
| 200 | - */ |
|
| 201 | - public static function isGreaterThanOrEqual($value, $compareWithValue) |
|
| 202 | - { |
|
| 203 | - return version_compare($value, $compareWithValue, '>='); |
|
| 204 | - } |
|
| 205 | - |
|
| 206 | - /** |
|
| 207 | - * @param int|string $value |
|
| 208 | - * @param int|string $compareWithValue |
|
| 209 | - * @return bool |
|
| 210 | - */ |
|
| 211 | - public static function isLessThan($value, $compareWithValue) |
|
| 212 | - { |
|
| 213 | - return version_compare($value, $compareWithValue, '<'); |
|
| 214 | - } |
|
| 215 | - |
|
| 216 | - /** |
|
| 217 | - * @param int|string $value |
|
| 218 | - * @param int|string $compareWithValue |
|
| 219 | - * @return bool |
|
| 220 | - */ |
|
| 221 | - public static function isLessThanOrEqual($value, $compareWithValue) |
|
| 222 | - { |
|
| 223 | - return version_compare($value, $compareWithValue, '<='); |
|
| 224 | - } |
|
| 11 | + /** |
|
| 12 | + * @param string $name |
|
| 13 | + * @param string $path |
|
| 14 | + * @return string |
|
| 15 | + */ |
|
| 16 | + public static function buildClassName($name, $path = '') |
|
| 17 | + { |
|
| 18 | + $className = Str::camelCase($name); |
|
| 19 | + $path = ltrim(str_replace(__NAMESPACE__, '', $path), '\\'); |
|
| 20 | + return !empty($path) |
|
| 21 | + ? __NAMESPACE__.'\\'.$path.'\\'.$className |
|
| 22 | + : $className; |
|
| 23 | + } |
|
| 24 | + |
|
| 25 | + /** |
|
| 26 | + * @param string $name |
|
| 27 | + * @param string $prefix |
|
| 28 | + * @return string |
|
| 29 | + */ |
|
| 30 | + public static function buildMethodName($name, $prefix = '') |
|
| 31 | + { |
|
| 32 | + return lcfirst($prefix.static::buildClassName($name)); |
|
| 33 | + } |
|
| 34 | + |
|
| 35 | + /** |
|
| 36 | + * @param string $name |
|
| 37 | + * @return string |
|
| 38 | + */ |
|
| 39 | + public static function buildPropertyName($name) |
|
| 40 | + { |
|
| 41 | + return static::buildMethodName($name); |
|
| 42 | + } |
|
| 43 | + |
|
| 44 | + /** |
|
| 45 | + * @param string $cast |
|
| 46 | + * @param mixed $value |
|
| 47 | + * @return mixed |
|
| 48 | + */ |
|
| 49 | + public static function castTo($cast = '', $value) |
|
| 50 | + { |
|
| 51 | + $method = static::buildMethodName($cast, 'castTo'); |
|
| 52 | + return !empty($cast) && method_exists(__CLASS__, $method) |
|
| 53 | + ? static::$method($value) |
|
| 54 | + : $value; |
|
| 55 | + } |
|
| 56 | + |
|
| 57 | + /** |
|
| 58 | + * @param mixed $value |
|
| 59 | + * @return array |
|
| 60 | + */ |
|
| 61 | + public static function castToArray($value) |
|
| 62 | + { |
|
| 63 | + return (array) $value; |
|
| 64 | + } |
|
| 65 | + |
|
| 66 | + /** |
|
| 67 | + * @param mixed $value |
|
| 68 | + * @return bool |
|
| 69 | + */ |
|
| 70 | + public static function castToBool($value) |
|
| 71 | + { |
|
| 72 | + return filter_var($value, FILTER_VALIDATE_BOOLEAN); |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + /** |
|
| 76 | + * @param mixed $value |
|
| 77 | + * @return float |
|
| 78 | + */ |
|
| 79 | + public static function castToFloat($value) |
|
| 80 | + { |
|
| 81 | + return (float) filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND); |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + /** |
|
| 85 | + * @param mixed $value |
|
| 86 | + * @return int |
|
| 87 | + */ |
|
| 88 | + public static function castToInt($value) |
|
| 89 | + { |
|
| 90 | + return (int) filter_var($value, FILTER_VALIDATE_INT); |
|
| 91 | + } |
|
| 92 | + |
|
| 93 | + /** |
|
| 94 | + * @param mixed $value |
|
| 95 | + * @return object |
|
| 96 | + */ |
|
| 97 | + public static function castToObject($value) |
|
| 98 | + { |
|
| 99 | + return (object) (array) $value; |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + /** |
|
| 103 | + * @param mixed $value |
|
| 104 | + * @return string |
|
| 105 | + */ |
|
| 106 | + public static function castToString($value) |
|
| 107 | + { |
|
| 108 | + if (is_object($value) && in_array('__toString', get_class_methods($value))) { |
|
| 109 | + return (string) $value->__toString(); |
|
| 110 | + } |
|
| 111 | + if (is_array($value) || is_object($value)) { |
|
| 112 | + return serialize($value); |
|
| 113 | + } |
|
| 114 | + return (string) $value; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + /** |
|
| 118 | + * @param string $key |
|
| 119 | + * @return mixed |
|
| 120 | + */ |
|
| 121 | + public static function filterInput($key, array $request = []) |
|
| 122 | + { |
|
| 123 | + if (isset($request[$key])) { |
|
| 124 | + return $request[$key]; |
|
| 125 | + } |
|
| 126 | + $variable = filter_input(INPUT_POST, $key); |
|
| 127 | + if (is_null($variable) && isset($_POST[$key])) { |
|
| 128 | + $variable = $_POST[$key]; |
|
| 129 | + } |
|
| 130 | + return $variable; |
|
| 131 | + } |
|
| 132 | + |
|
| 133 | + /** |
|
| 134 | + * @param string $key |
|
| 135 | + * @return array |
|
| 136 | + */ |
|
| 137 | + public static function filterInputArray($key) |
|
| 138 | + { |
|
| 139 | + $variable = filter_input(INPUT_POST, $key, FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); |
|
| 140 | + if (empty($variable) && !empty($_POST[$key]) && is_array($_POST[$key])) { |
|
| 141 | + $variable = $_POST[$key]; |
|
| 142 | + } |
|
| 143 | + return (array) $variable; |
|
| 144 | + } |
|
| 145 | + |
|
| 146 | + /** |
|
| 147 | + * @return string |
|
| 148 | + */ |
|
| 149 | + public static function getIpAddress() |
|
| 150 | + { |
|
| 151 | + $whitelist = []; |
|
| 152 | + $isUsingCloudflare = !empty(filter_input(INPUT_SERVER, 'CF-Connecting-IP')); |
|
| 153 | + if (apply_filters('site-reviews/whip/whitelist/cloudflare', $isUsingCloudflare)) { |
|
| 154 | + $cloudflareIps = glsr(Cache::class)->getCloudflareIps(); |
|
| 155 | + $whitelist[Whip::CLOUDFLARE_HEADERS] = [Whip::IPV4 => $cloudflareIps['v4']]; |
|
| 156 | + if (defined('AF_INET6')) { |
|
| 157 | + $whitelist[Whip::CLOUDFLARE_HEADERS][Whip::IPV6] = $cloudflareIps['v6']; |
|
| 158 | + } |
|
| 159 | + } |
|
| 160 | + $whitelist = apply_filters('site-reviews/whip/whitelist', $whitelist); |
|
| 161 | + $methods = apply_filters('site-reviews/whip/methods', Whip::ALL_METHODS); |
|
| 162 | + $whip = new Whip($methods, $whitelist); |
|
| 163 | + do_action_ref_array('site-reviews/whip', [$whip]); |
|
| 164 | + if (false !== ($clientAddress = $whip->getValidIpAddress())) { |
|
| 165 | + return (string) $clientAddress; |
|
| 166 | + } |
|
| 167 | + glsr_log()->error('Unable to detect IP address.'); |
|
| 168 | + return 'unknown'; |
|
| 169 | + } |
|
| 170 | + |
|
| 171 | + /** |
|
| 172 | + * @param mixed $value |
|
| 173 | + * @param string|int $min |
|
| 174 | + * @param string|int $max |
|
| 175 | + * @return bool |
|
| 176 | + */ |
|
| 177 | + public static function inRange($value, $min, $max) |
|
| 178 | + { |
|
| 179 | + $inRange = filter_var($value, FILTER_VALIDATE_INT, ['options' => [ |
|
| 180 | + 'min_range' => intval($min), |
|
| 181 | + 'max_range' => intval($max), |
|
| 182 | + ]]); |
|
| 183 | + return false !== $inRange; |
|
| 184 | + } |
|
| 185 | + |
|
| 186 | + /** |
|
| 187 | + * @param int|string $value |
|
| 188 | + * @param int|string $compareWithValue |
|
| 189 | + * @return bool |
|
| 190 | + */ |
|
| 191 | + public static function isGreaterThan($value, $compareWithValue) |
|
| 192 | + { |
|
| 193 | + return version_compare($value, $compareWithValue, '>'); |
|
| 194 | + } |
|
| 195 | + |
|
| 196 | + /** |
|
| 197 | + * @param int|string $value |
|
| 198 | + * @param int|string $compareWithValue |
|
| 199 | + * @return bool |
|
| 200 | + */ |
|
| 201 | + public static function isGreaterThanOrEqual($value, $compareWithValue) |
|
| 202 | + { |
|
| 203 | + return version_compare($value, $compareWithValue, '>='); |
|
| 204 | + } |
|
| 205 | + |
|
| 206 | + /** |
|
| 207 | + * @param int|string $value |
|
| 208 | + * @param int|string $compareWithValue |
|
| 209 | + * @return bool |
|
| 210 | + */ |
|
| 211 | + public static function isLessThan($value, $compareWithValue) |
|
| 212 | + { |
|
| 213 | + return version_compare($value, $compareWithValue, '<'); |
|
| 214 | + } |
|
| 215 | + |
|
| 216 | + /** |
|
| 217 | + * @param int|string $value |
|
| 218 | + * @param int|string $compareWithValue |
|
| 219 | + * @return bool |
|
| 220 | + */ |
|
| 221 | + public static function isLessThanOrEqual($value, $compareWithValue) |
|
| 222 | + { |
|
| 223 | + return version_compare($value, $compareWithValue, '<='); |
|
| 224 | + } |
|
| 225 | 225 | } |
@@ -9,157 +9,157 @@ |
||
| 9 | 9 | |
| 10 | 10 | class OptionManager |
| 11 | 11 | { |
| 12 | - /** |
|
| 13 | - * @var array |
|
| 14 | - */ |
|
| 15 | - protected $options; |
|
| 12 | + /** |
|
| 13 | + * @var array |
|
| 14 | + */ |
|
| 15 | + protected $options; |
|
| 16 | 16 | |
| 17 | - /** |
|
| 18 | - * @return string |
|
| 19 | - */ |
|
| 20 | - public static function databaseKey($version = null) |
|
| 21 | - { |
|
| 22 | - if (1 == $version) { |
|
| 23 | - return 'geminilabs_site_reviews_settings'; |
|
| 24 | - } |
|
| 25 | - if (2 == $version) { |
|
| 26 | - return 'geminilabs_site_reviews-v2'; |
|
| 27 | - } |
|
| 28 | - if (null === $version) { |
|
| 29 | - $version = explode('.', glsr()->version); |
|
| 30 | - $version = array_shift($version); |
|
| 31 | - } |
|
| 32 | - return Str::snakeCase(Application::ID.'-v'.intval($version)); |
|
| 33 | - } |
|
| 17 | + /** |
|
| 18 | + * @return string |
|
| 19 | + */ |
|
| 20 | + public static function databaseKey($version = null) |
|
| 21 | + { |
|
| 22 | + if (1 == $version) { |
|
| 23 | + return 'geminilabs_site_reviews_settings'; |
|
| 24 | + } |
|
| 25 | + if (2 == $version) { |
|
| 26 | + return 'geminilabs_site_reviews-v2'; |
|
| 27 | + } |
|
| 28 | + if (null === $version) { |
|
| 29 | + $version = explode('.', glsr()->version); |
|
| 30 | + $version = array_shift($version); |
|
| 31 | + } |
|
| 32 | + return Str::snakeCase(Application::ID.'-v'.intval($version)); |
|
| 33 | + } |
|
| 34 | 34 | |
| 35 | - /** |
|
| 36 | - * @return array |
|
| 37 | - */ |
|
| 38 | - public function all() |
|
| 39 | - { |
|
| 40 | - if (empty($this->options)) { |
|
| 41 | - $this->reset(); |
|
| 42 | - } |
|
| 43 | - return $this->options; |
|
| 44 | - } |
|
| 35 | + /** |
|
| 36 | + * @return array |
|
| 37 | + */ |
|
| 38 | + public function all() |
|
| 39 | + { |
|
| 40 | + if (empty($this->options)) { |
|
| 41 | + $this->reset(); |
|
| 42 | + } |
|
| 43 | + return $this->options; |
|
| 44 | + } |
|
| 45 | 45 | |
| 46 | - /** |
|
| 47 | - * @param string $path |
|
| 48 | - * @return bool |
|
| 49 | - */ |
|
| 50 | - public function delete($path) |
|
| 51 | - { |
|
| 52 | - $keys = explode('.', $path); |
|
| 53 | - $last = array_pop($keys); |
|
| 54 | - $options = $this->all(); |
|
| 55 | - $pointer = &$options; |
|
| 56 | - foreach ($keys as $key) { |
|
| 57 | - if (!isset($pointer[$key]) || !is_array($pointer[$key])) { |
|
| 58 | - continue; |
|
| 59 | - } |
|
| 60 | - $pointer = &$pointer[$key]; |
|
| 61 | - } |
|
| 62 | - unset($pointer[$last]); |
|
| 63 | - return $this->set($options); |
|
| 64 | - } |
|
| 46 | + /** |
|
| 47 | + * @param string $path |
|
| 48 | + * @return bool |
|
| 49 | + */ |
|
| 50 | + public function delete($path) |
|
| 51 | + { |
|
| 52 | + $keys = explode('.', $path); |
|
| 53 | + $last = array_pop($keys); |
|
| 54 | + $options = $this->all(); |
|
| 55 | + $pointer = &$options; |
|
| 56 | + foreach ($keys as $key) { |
|
| 57 | + if (!isset($pointer[$key]) || !is_array($pointer[$key])) { |
|
| 58 | + continue; |
|
| 59 | + } |
|
| 60 | + $pointer = &$pointer[$key]; |
|
| 61 | + } |
|
| 62 | + unset($pointer[$last]); |
|
| 63 | + return $this->set($options); |
|
| 64 | + } |
|
| 65 | 65 | |
| 66 | - /** |
|
| 67 | - * @param string $path |
|
| 68 | - * @param mixed $fallback |
|
| 69 | - * @param string $cast |
|
| 70 | - * @return mixed |
|
| 71 | - */ |
|
| 72 | - public function get($path = '', $fallback = '', $cast = '') |
|
| 73 | - { |
|
| 74 | - $result = Arr::get($this->all(), $path, $fallback); |
|
| 75 | - return Helper::castTo($cast, $result); |
|
| 76 | - } |
|
| 66 | + /** |
|
| 67 | + * @param string $path |
|
| 68 | + * @param mixed $fallback |
|
| 69 | + * @param string $cast |
|
| 70 | + * @return mixed |
|
| 71 | + */ |
|
| 72 | + public function get($path = '', $fallback = '', $cast = '') |
|
| 73 | + { |
|
| 74 | + $result = Arr::get($this->all(), $path, $fallback); |
|
| 75 | + return Helper::castTo($cast, $result); |
|
| 76 | + } |
|
| 77 | 77 | |
| 78 | - /** |
|
| 79 | - * @param string $path |
|
| 80 | - * @return bool |
|
| 81 | - */ |
|
| 82 | - public function getBool($path) |
|
| 83 | - { |
|
| 84 | - return Helper::castToBool($this->get($path)); |
|
| 85 | - } |
|
| 78 | + /** |
|
| 79 | + * @param string $path |
|
| 80 | + * @return bool |
|
| 81 | + */ |
|
| 82 | + public function getBool($path) |
|
| 83 | + { |
|
| 84 | + return Helper::castToBool($this->get($path)); |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | - /** |
|
| 88 | - * @param string $path |
|
| 89 | - * @param mixed $fallback |
|
| 90 | - * @param string $cast |
|
| 91 | - * @return mixed |
|
| 92 | - */ |
|
| 93 | - public function getWP($path, $fallback = '', $cast = '') |
|
| 94 | - { |
|
| 95 | - $option = get_option($path, $fallback); |
|
| 96 | - if (empty($option)) { |
|
| 97 | - $option = $fallback; |
|
| 98 | - } |
|
| 99 | - return Helper::castTo($cast, $option); |
|
| 100 | - } |
|
| 87 | + /** |
|
| 88 | + * @param string $path |
|
| 89 | + * @param mixed $fallback |
|
| 90 | + * @param string $cast |
|
| 91 | + * @return mixed |
|
| 92 | + */ |
|
| 93 | + public function getWP($path, $fallback = '', $cast = '') |
|
| 94 | + { |
|
| 95 | + $option = get_option($path, $fallback); |
|
| 96 | + if (empty($option)) { |
|
| 97 | + $option = $fallback; |
|
| 98 | + } |
|
| 99 | + return Helper::castTo($cast, $option); |
|
| 100 | + } |
|
| 101 | 101 | |
| 102 | - /** |
|
| 103 | - * @return string |
|
| 104 | - */ |
|
| 105 | - public function json() |
|
| 106 | - { |
|
| 107 | - return json_encode($this->all()); |
|
| 108 | - } |
|
| 102 | + /** |
|
| 103 | + * @return string |
|
| 104 | + */ |
|
| 105 | + public function json() |
|
| 106 | + { |
|
| 107 | + return json_encode($this->all()); |
|
| 108 | + } |
|
| 109 | 109 | |
| 110 | - /** |
|
| 111 | - * @return array |
|
| 112 | - */ |
|
| 113 | - public function normalize(array $options = []) |
|
| 114 | - { |
|
| 115 | - $options = wp_parse_args( |
|
| 116 | - Arr::flattenArray($options), |
|
| 117 | - glsr(DefaultsManager::class)->defaults() |
|
| 118 | - ); |
|
| 119 | - array_walk($options, function (&$value) { |
|
| 120 | - if (!is_string($value)) { |
|
| 121 | - return; |
|
| 122 | - } |
|
| 123 | - $value = wp_kses($value, wp_kses_allowed_html('post')); |
|
| 124 | - }); |
|
| 125 | - return Arr::convertDotNotationArray($options); |
|
| 126 | - } |
|
| 110 | + /** |
|
| 111 | + * @return array |
|
| 112 | + */ |
|
| 113 | + public function normalize(array $options = []) |
|
| 114 | + { |
|
| 115 | + $options = wp_parse_args( |
|
| 116 | + Arr::flattenArray($options), |
|
| 117 | + glsr(DefaultsManager::class)->defaults() |
|
| 118 | + ); |
|
| 119 | + array_walk($options, function (&$value) { |
|
| 120 | + if (!is_string($value)) { |
|
| 121 | + return; |
|
| 122 | + } |
|
| 123 | + $value = wp_kses($value, wp_kses_allowed_html('post')); |
|
| 124 | + }); |
|
| 125 | + return Arr::convertDotNotationArray($options); |
|
| 126 | + } |
|
| 127 | 127 | |
| 128 | - /** |
|
| 129 | - * @return bool |
|
| 130 | - */ |
|
| 131 | - public function isRecaptchaEnabled() |
|
| 132 | - { |
|
| 133 | - $integration = $this->get('settings.submissions.recaptcha.integration'); |
|
| 134 | - return 'all' == $integration || ('guest' == $integration && !is_user_logged_in()); |
|
| 135 | - } |
|
| 128 | + /** |
|
| 129 | + * @return bool |
|
| 130 | + */ |
|
| 131 | + public function isRecaptchaEnabled() |
|
| 132 | + { |
|
| 133 | + $integration = $this->get('settings.submissions.recaptcha.integration'); |
|
| 134 | + return 'all' == $integration || ('guest' == $integration && !is_user_logged_in()); |
|
| 135 | + } |
|
| 136 | 136 | |
| 137 | - /** |
|
| 138 | - * @return array |
|
| 139 | - */ |
|
| 140 | - public function reset() |
|
| 141 | - { |
|
| 142 | - $options = $this->getWP(static::databaseKey(), []); |
|
| 143 | - if (!is_array($options) || empty($options)) { |
|
| 144 | - delete_option(static::databaseKey()); |
|
| 145 | - $options = glsr()->defaults ?: []; |
|
| 146 | - } |
|
| 147 | - $this->options = $options; |
|
| 148 | - } |
|
| 137 | + /** |
|
| 138 | + * @return array |
|
| 139 | + */ |
|
| 140 | + public function reset() |
|
| 141 | + { |
|
| 142 | + $options = $this->getWP(static::databaseKey(), []); |
|
| 143 | + if (!is_array($options) || empty($options)) { |
|
| 144 | + delete_option(static::databaseKey()); |
|
| 145 | + $options = glsr()->defaults ?: []; |
|
| 146 | + } |
|
| 147 | + $this->options = $options; |
|
| 148 | + } |
|
| 149 | 149 | |
| 150 | - /** |
|
| 151 | - * @param string|array $pathOrOptions |
|
| 152 | - * @param mixed $value |
|
| 153 | - * @return bool |
|
| 154 | - */ |
|
| 155 | - public function set($pathOrOptions, $value = '') |
|
| 156 | - { |
|
| 157 | - if (is_string($pathOrOptions)) { |
|
| 158 | - $pathOrOptions = Arr::set($this->all(), $pathOrOptions, $value); |
|
| 159 | - } |
|
| 160 | - if ($result = update_option(static::databaseKey(), (array) $pathOrOptions)) { |
|
| 161 | - $this->reset(); |
|
| 162 | - } |
|
| 163 | - return $result; |
|
| 164 | - } |
|
| 150 | + /** |
|
| 151 | + * @param string|array $pathOrOptions |
|
| 152 | + * @param mixed $value |
|
| 153 | + * @return bool |
|
| 154 | + */ |
|
| 155 | + public function set($pathOrOptions, $value = '') |
|
| 156 | + { |
|
| 157 | + if (is_string($pathOrOptions)) { |
|
| 158 | + $pathOrOptions = Arr::set($this->all(), $pathOrOptions, $value); |
|
| 159 | + } |
|
| 160 | + if ($result = update_option(static::databaseKey(), (array) $pathOrOptions)) { |
|
| 161 | + $this->reset(); |
|
| 162 | + } |
|
| 163 | + return $result; |
|
| 164 | + } |
|
| 165 | 165 | } |
@@ -9,25 +9,25 @@ discard block |
||
| 9 | 9 | * @return mixed |
| 10 | 10 | */ |
| 11 | 11 | add_filter('plugins_loaded', function () { |
| 12 | - $hooks = array( |
|
| 13 | - 'glsr_calculate_ratings' => 1, |
|
| 14 | - 'glsr_create_review' => 2, |
|
| 15 | - 'glsr_debug' => 10, |
|
| 16 | - 'glsr_get' => 4, |
|
| 17 | - 'glsr_get_option' => 4, |
|
| 18 | - 'glsr_get_options' => 1, |
|
| 19 | - 'glsr_get_review' => 2, |
|
| 20 | - 'glsr_get_reviews' => 2, |
|
| 21 | - 'glsr_log' => 3, |
|
| 22 | - 'glsr_star_rating' => 2, |
|
| 23 | - ); |
|
| 24 | - foreach ($hooks as $function => $acceptedArgs) { |
|
| 25 | - add_filter($function, function () use ($function) { |
|
| 26 | - $args = func_get_args(); |
|
| 27 | - array_shift($args); // remove the fallback value |
|
| 28 | - return call_user_func_array($function, $args); |
|
| 29 | - }, 10, $acceptedArgs); |
|
| 30 | - } |
|
| 12 | + $hooks = array( |
|
| 13 | + 'glsr_calculate_ratings' => 1, |
|
| 14 | + 'glsr_create_review' => 2, |
|
| 15 | + 'glsr_debug' => 10, |
|
| 16 | + 'glsr_get' => 4, |
|
| 17 | + 'glsr_get_option' => 4, |
|
| 18 | + 'glsr_get_options' => 1, |
|
| 19 | + 'glsr_get_review' => 2, |
|
| 20 | + 'glsr_get_reviews' => 2, |
|
| 21 | + 'glsr_log' => 3, |
|
| 22 | + 'glsr_star_rating' => 2, |
|
| 23 | + ); |
|
| 24 | + foreach ($hooks as $function => $acceptedArgs) { |
|
| 25 | + add_filter($function, function () use ($function) { |
|
| 26 | + $args = func_get_args(); |
|
| 27 | + array_shift($args); // remove the fallback value |
|
| 28 | + return call_user_func_array($function, $args); |
|
| 29 | + }, 10, $acceptedArgs); |
|
| 30 | + } |
|
| 31 | 31 | }); |
| 32 | 32 | |
| 33 | 33 | /** |
@@ -35,10 +35,10 @@ discard block |
||
| 35 | 35 | */ |
| 36 | 36 | function glsr($alias = null) |
| 37 | 37 | { |
| 38 | - $app = \GeminiLabs\SiteReviews\Application::load(); |
|
| 39 | - return !is_null($alias) |
|
| 40 | - ? $app->make($alias) |
|
| 41 | - : $app; |
|
| 38 | + $app = \GeminiLabs\SiteReviews\Application::load(); |
|
| 39 | + return !is_null($alias) |
|
| 40 | + ? $app->make($alias) |
|
| 41 | + : $app; |
|
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | /** |
@@ -48,15 +48,15 @@ discard block |
||
| 48 | 48 | */ |
| 49 | 49 | function glsr_array_column(array $array, $column) |
| 50 | 50 | { |
| 51 | - $result = array(); |
|
| 52 | - foreach ($array as $subarray) { |
|
| 53 | - $subarray = (array) $subarray; |
|
| 54 | - if (!isset($subarray[$column])) { |
|
| 55 | - continue; |
|
| 56 | - } |
|
| 57 | - $result[] = $subarray[$column]; |
|
| 58 | - } |
|
| 59 | - return $result; |
|
| 51 | + $result = array(); |
|
| 52 | + foreach ($array as $subarray) { |
|
| 53 | + $subarray = (array) $subarray; |
|
| 54 | + if (!isset($subarray[$column])) { |
|
| 55 | + continue; |
|
| 56 | + } |
|
| 57 | + $result[] = $subarray[$column]; |
|
| 58 | + } |
|
| 59 | + return $result; |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | /** |
@@ -64,8 +64,8 @@ discard block |
||
| 64 | 64 | */ |
| 65 | 65 | function glsr_calculate_ratings() |
| 66 | 66 | { |
| 67 | - glsr('Database\CountsManager')->updateAll(); |
|
| 68 | - glsr_log()->notice(__('Recalculated rating counts.', 'site-reviews')); |
|
| 67 | + glsr('Database\CountsManager')->updateAll(); |
|
| 68 | + glsr_log()->notice(__('Recalculated rating counts.', 'site-reviews')); |
|
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | /** |
@@ -73,10 +73,10 @@ discard block |
||
| 73 | 73 | */ |
| 74 | 74 | function glsr_create_review($reviewValues = array()) |
| 75 | 75 | { |
| 76 | - $review = new \GeminiLabs\SiteReviews\Commands\CreateReview( |
|
| 77 | - \GeminiLabs\SiteReviews\Helpers\Arr::consolidateArray($reviewValues) |
|
| 78 | - ); |
|
| 79 | - return glsr('Database\ReviewManager')->create($review); |
|
| 76 | + $review = new \GeminiLabs\SiteReviews\Commands\CreateReview( |
|
| 77 | + \GeminiLabs\SiteReviews\Helpers\Arr::consolidateArray($reviewValues) |
|
| 78 | + ); |
|
| 79 | + return glsr('Database\ReviewManager')->create($review); |
|
| 80 | 80 | } |
| 81 | 81 | |
| 82 | 82 | /** |
@@ -84,12 +84,12 @@ discard block |
||
| 84 | 84 | */ |
| 85 | 85 | function glsr_current_screen() |
| 86 | 86 | { |
| 87 | - if (function_exists('get_current_screen')) { |
|
| 88 | - $screen = get_current_screen(); |
|
| 89 | - } |
|
| 90 | - return empty($screen) |
|
| 91 | - ? (object) array_fill_keys(['base', 'id', 'post_type'], null) |
|
| 92 | - : $screen; |
|
| 87 | + if (function_exists('get_current_screen')) { |
|
| 88 | + $screen = get_current_screen(); |
|
| 89 | + } |
|
| 90 | + return empty($screen) |
|
| 91 | + ? (object) array_fill_keys(['base', 'id', 'post_type'], null) |
|
| 92 | + : $screen; |
|
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | /** |
@@ -98,16 +98,16 @@ discard block |
||
| 98 | 98 | */ |
| 99 | 99 | function glsr_debug(...$vars) |
| 100 | 100 | { |
| 101 | - if (1 == count($vars)) { |
|
| 102 | - $value = htmlspecialchars(print_r($vars[0], true), ENT_QUOTES, 'UTF-8'); |
|
| 103 | - printf('<div class="glsr-debug"><pre>%s</pre></div>', $value); |
|
| 104 | - } else { |
|
| 105 | - echo '<div class="glsr-debug-group">'; |
|
| 106 | - foreach ($vars as $var) { |
|
| 107 | - glsr_debug($var); |
|
| 108 | - } |
|
| 109 | - echo '</div>'; |
|
| 110 | - } |
|
| 101 | + if (1 == count($vars)) { |
|
| 102 | + $value = htmlspecialchars(print_r($vars[0], true), ENT_QUOTES, 'UTF-8'); |
|
| 103 | + printf('<div class="glsr-debug"><pre>%s</pre></div>', $value); |
|
| 104 | + } else { |
|
| 105 | + echo '<div class="glsr-debug-group">'; |
|
| 106 | + foreach ($vars as $var) { |
|
| 107 | + glsr_debug($var); |
|
| 108 | + } |
|
| 109 | + echo '</div>'; |
|
| 110 | + } |
|
| 111 | 111 | } |
| 112 | 112 | |
| 113 | 113 | /** |
@@ -118,7 +118,7 @@ discard block |
||
| 118 | 118 | */ |
| 119 | 119 | function glsr_get($array, $path = '', $fallback = '') |
| 120 | 120 | { |
| 121 | - return \GeminiLabs\SiteReviews\Helpers\Arr::get($array, $path, $fallback); |
|
| 121 | + return \GeminiLabs\SiteReviews\Helpers\Arr::get($array, $path, $fallback); |
|
| 122 | 122 | } |
| 123 | 123 | |
| 124 | 124 | /** |
@@ -129,9 +129,9 @@ discard block |
||
| 129 | 129 | */ |
| 130 | 130 | function glsr_get_option($path = '', $fallback = '', $cast = '') |
| 131 | 131 | { |
| 132 | - return is_string($path) |
|
| 133 | - ? glsr('Database\OptionManager')->get(\GeminiLabs\SiteReviews\Helpers\Str::prefix('settings.', $path), $fallback, $cast) |
|
| 134 | - : $fallback; |
|
| 132 | + return is_string($path) |
|
| 133 | + ? glsr('Database\OptionManager')->get(\GeminiLabs\SiteReviews\Helpers\Str::prefix('settings.', $path), $fallback, $cast) |
|
| 134 | + : $fallback; |
|
| 135 | 135 | } |
| 136 | 136 | |
| 137 | 137 | /** |
@@ -139,7 +139,7 @@ discard block |
||
| 139 | 139 | */ |
| 140 | 140 | function glsr_get_options() |
| 141 | 141 | { |
| 142 | - return glsr('Database\OptionManager')->get('settings'); |
|
| 142 | + return glsr('Database\OptionManager')->get('settings'); |
|
| 143 | 143 | } |
| 144 | 144 | |
| 145 | 145 | /** |
@@ -148,13 +148,13 @@ discard block |
||
| 148 | 148 | */ |
| 149 | 149 | function glsr_get_review($post) |
| 150 | 150 | { |
| 151 | - if (is_numeric($post)) { |
|
| 152 | - $post = get_post($post); |
|
| 153 | - } |
|
| 154 | - if (!($post instanceof WP_Post)) { |
|
| 155 | - $post = new WP_Post((object) []); |
|
| 156 | - } |
|
| 157 | - return glsr('Database\ReviewManager')->single($post); |
|
| 151 | + if (is_numeric($post)) { |
|
| 152 | + $post = get_post($post); |
|
| 153 | + } |
|
| 154 | + if (!($post instanceof WP_Post)) { |
|
| 155 | + $post = new WP_Post((object) []); |
|
| 156 | + } |
|
| 157 | + return glsr('Database\ReviewManager')->single($post); |
|
| 158 | 158 | } |
| 159 | 159 | |
| 160 | 160 | /** |
@@ -162,7 +162,7 @@ discard block |
||
| 162 | 162 | */ |
| 163 | 163 | function glsr_get_reviews($args = array()) |
| 164 | 164 | { |
| 165 | - return glsr('Database\ReviewManager')->get(\GeminiLabs\SiteReviews\Helpers\Arr::consolidateArray($args)); |
|
| 165 | + return glsr('Database\ReviewManager')->get(\GeminiLabs\SiteReviews\Helpers\Arr::consolidateArray($args)); |
|
| 166 | 166 | } |
| 167 | 167 | |
| 168 | 168 | /** |
@@ -170,12 +170,12 @@ discard block |
||
| 170 | 170 | */ |
| 171 | 171 | function glsr_log() |
| 172 | 172 | { |
| 173 | - $args = func_get_args(); |
|
| 174 | - $console = glsr('Modules\Console'); |
|
| 175 | - if ($value = \GeminiLabs\SiteReviews\Helpers\Arr::get($args, '0')) { |
|
| 176 | - return $console->debug($value, \GeminiLabs\SiteReviews\Helpers\Arr::get($args, '1', [])); |
|
| 177 | - } |
|
| 178 | - return $console; |
|
| 173 | + $args = func_get_args(); |
|
| 174 | + $console = glsr('Modules\Console'); |
|
| 175 | + if ($value = \GeminiLabs\SiteReviews\Helpers\Arr::get($args, '0')) { |
|
| 176 | + return $console->debug($value, \GeminiLabs\SiteReviews\Helpers\Arr::get($args, '1', [])); |
|
| 177 | + } |
|
| 178 | + return $console; |
|
| 179 | 179 | } |
| 180 | 180 | |
| 181 | 181 | /** |
@@ -183,5 +183,5 @@ discard block |
||
| 183 | 183 | */ |
| 184 | 184 | function glsr_star_rating($rating) |
| 185 | 185 | { |
| 186 | - return glsr('Modules\Html\Partial')->build('star-rating', ['rating' => $rating]); |
|
| 186 | + return glsr('Modules\Html\Partial')->build('star-rating', ['rating' => $rating]); |
|
| 187 | 187 | } |
@@ -6,145 +6,145 @@ |
||
| 6 | 6 | |
| 7 | 7 | class CreateReview |
| 8 | 8 | { |
| 9 | - public $ajax_request; |
|
| 10 | - public $assigned_to; |
|
| 11 | - public $author; |
|
| 12 | - public $avatar; |
|
| 13 | - public $blacklisted; |
|
| 14 | - public $category; |
|
| 15 | - public $content; |
|
| 16 | - public $custom; |
|
| 17 | - public $date; |
|
| 18 | - public $email; |
|
| 19 | - public $form_id; |
|
| 20 | - public $ip_address; |
|
| 21 | - public $post_id; |
|
| 22 | - public $rating; |
|
| 23 | - public $referer; |
|
| 24 | - public $request; |
|
| 25 | - public $response; |
|
| 26 | - public $terms; |
|
| 27 | - public $title; |
|
| 28 | - public $url; |
|
| 9 | + public $ajax_request; |
|
| 10 | + public $assigned_to; |
|
| 11 | + public $author; |
|
| 12 | + public $avatar; |
|
| 13 | + public $blacklisted; |
|
| 14 | + public $category; |
|
| 15 | + public $content; |
|
| 16 | + public $custom; |
|
| 17 | + public $date; |
|
| 18 | + public $email; |
|
| 19 | + public $form_id; |
|
| 20 | + public $ip_address; |
|
| 21 | + public $post_id; |
|
| 22 | + public $rating; |
|
| 23 | + public $referer; |
|
| 24 | + public $request; |
|
| 25 | + public $response; |
|
| 26 | + public $terms; |
|
| 27 | + public $title; |
|
| 28 | + public $url; |
|
| 29 | 29 | |
| 30 | - public function __construct($input) |
|
| 31 | - { |
|
| 32 | - $this->request = $input; |
|
| 33 | - $this->ajax_request = isset($input['_ajax_request']); |
|
| 34 | - $this->assigned_to = $this->getNumeric('assign_to'); |
|
| 35 | - $this->author = sanitize_text_field($this->getUser('name')); |
|
| 36 | - $this->avatar = $this->getAvatar(); |
|
| 37 | - $this->blacklisted = isset($input['blacklisted']); |
|
| 38 | - $this->category = $this->getCategory(); |
|
| 39 | - $this->content = sanitize_textarea_field($this->get('content')); |
|
| 40 | - $this->custom = $this->getCustom(); |
|
| 41 | - $this->date = $this->getDate('date'); |
|
| 42 | - $this->email = sanitize_email($this->getUser('email')); |
|
| 43 | - $this->form_id = sanitize_key($this->get('form_id')); |
|
| 44 | - $this->ip_address = $this->get('ip_address'); |
|
| 45 | - $this->post_id = intval($this->get('_post_id')); |
|
| 46 | - $this->rating = intval($this->get('rating')); |
|
| 47 | - $this->referer = sanitize_text_field($this->get('_referer')); |
|
| 48 | - $this->response = sanitize_textarea_field($this->get('response')); |
|
| 49 | - $this->terms = !empty($input['terms']); |
|
| 50 | - $this->title = sanitize_text_field($this->get('title')); |
|
| 51 | - $this->url = esc_url_raw(sanitize_text_field($this->get('url'))); |
|
| 52 | - } |
|
| 30 | + public function __construct($input) |
|
| 31 | + { |
|
| 32 | + $this->request = $input; |
|
| 33 | + $this->ajax_request = isset($input['_ajax_request']); |
|
| 34 | + $this->assigned_to = $this->getNumeric('assign_to'); |
|
| 35 | + $this->author = sanitize_text_field($this->getUser('name')); |
|
| 36 | + $this->avatar = $this->getAvatar(); |
|
| 37 | + $this->blacklisted = isset($input['blacklisted']); |
|
| 38 | + $this->category = $this->getCategory(); |
|
| 39 | + $this->content = sanitize_textarea_field($this->get('content')); |
|
| 40 | + $this->custom = $this->getCustom(); |
|
| 41 | + $this->date = $this->getDate('date'); |
|
| 42 | + $this->email = sanitize_email($this->getUser('email')); |
|
| 43 | + $this->form_id = sanitize_key($this->get('form_id')); |
|
| 44 | + $this->ip_address = $this->get('ip_address'); |
|
| 45 | + $this->post_id = intval($this->get('_post_id')); |
|
| 46 | + $this->rating = intval($this->get('rating')); |
|
| 47 | + $this->referer = sanitize_text_field($this->get('_referer')); |
|
| 48 | + $this->response = sanitize_textarea_field($this->get('response')); |
|
| 49 | + $this->terms = !empty($input['terms']); |
|
| 50 | + $this->title = sanitize_text_field($this->get('title')); |
|
| 51 | + $this->url = esc_url_raw(sanitize_text_field($this->get('url'))); |
|
| 52 | + } |
|
| 53 | 53 | |
| 54 | - /** |
|
| 55 | - * @param string $key |
|
| 56 | - * @return string |
|
| 57 | - */ |
|
| 58 | - protected function get($key) |
|
| 59 | - { |
|
| 60 | - return (string) Arr::get($this->request, $key); |
|
| 61 | - } |
|
| 54 | + /** |
|
| 55 | + * @param string $key |
|
| 56 | + * @return string |
|
| 57 | + */ |
|
| 58 | + protected function get($key) |
|
| 59 | + { |
|
| 60 | + return (string) Arr::get($this->request, $key); |
|
| 61 | + } |
|
| 62 | 62 | |
| 63 | - /** |
|
| 64 | - * @return string |
|
| 65 | - */ |
|
| 66 | - protected function getAvatar() |
|
| 67 | - { |
|
| 68 | - $avatar = $this->get('avatar'); |
|
| 69 | - return !filter_var($avatar, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) |
|
| 70 | - ? (string) get_avatar_url($this->get('email')) |
|
| 71 | - : $avatar; |
|
| 72 | - } |
|
| 63 | + /** |
|
| 64 | + * @return string |
|
| 65 | + */ |
|
| 66 | + protected function getAvatar() |
|
| 67 | + { |
|
| 68 | + $avatar = $this->get('avatar'); |
|
| 69 | + return !filter_var($avatar, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) |
|
| 70 | + ? (string) get_avatar_url($this->get('email')) |
|
| 71 | + : $avatar; |
|
| 72 | + } |
|
| 73 | 73 | |
| 74 | - /** |
|
| 75 | - * @return string |
|
| 76 | - */ |
|
| 77 | - protected function getCategory() |
|
| 78 | - { |
|
| 79 | - $categories = Arr::convertStringToArray($this->get('category')); |
|
| 80 | - return sanitize_key(Arr::get($categories, 0)); |
|
| 81 | - } |
|
| 74 | + /** |
|
| 75 | + * @return string |
|
| 76 | + */ |
|
| 77 | + protected function getCategory() |
|
| 78 | + { |
|
| 79 | + $categories = Arr::convertStringToArray($this->get('category')); |
|
| 80 | + return sanitize_key(Arr::get($categories, 0)); |
|
| 81 | + } |
|
| 82 | 82 | |
| 83 | - /** |
|
| 84 | - * @return array |
|
| 85 | - */ |
|
| 86 | - protected function getCustom() |
|
| 87 | - { |
|
| 88 | - $unset = [ |
|
| 89 | - '_action', '_ajax_request', '_counter', '_nonce', '_post_id', '_recaptcha-token', |
|
| 90 | - '_referer', 'assign_to', 'category', 'content', 'date', 'email', 'excluded', 'form_id', |
|
| 91 | - 'gotcha', 'ip_address', 'name', 'rating', 'response', 'terms', 'title', 'url', |
|
| 92 | - ]; |
|
| 93 | - $unset = apply_filters('site-reviews/create/unset-keys-from-custom', $unset); |
|
| 94 | - $custom = $this->request; |
|
| 95 | - foreach ($unset as $key) { |
|
| 96 | - unset($custom[$key]); |
|
| 97 | - } |
|
| 98 | - foreach ($custom as $key => $value) { |
|
| 99 | - if (is_string($value)) { |
|
| 100 | - $custom[$key] = sanitize_text_field($value); |
|
| 101 | - } |
|
| 102 | - } |
|
| 103 | - return $custom; |
|
| 104 | - } |
|
| 83 | + /** |
|
| 84 | + * @return array |
|
| 85 | + */ |
|
| 86 | + protected function getCustom() |
|
| 87 | + { |
|
| 88 | + $unset = [ |
|
| 89 | + '_action', '_ajax_request', '_counter', '_nonce', '_post_id', '_recaptcha-token', |
|
| 90 | + '_referer', 'assign_to', 'category', 'content', 'date', 'email', 'excluded', 'form_id', |
|
| 91 | + 'gotcha', 'ip_address', 'name', 'rating', 'response', 'terms', 'title', 'url', |
|
| 92 | + ]; |
|
| 93 | + $unset = apply_filters('site-reviews/create/unset-keys-from-custom', $unset); |
|
| 94 | + $custom = $this->request; |
|
| 95 | + foreach ($unset as $key) { |
|
| 96 | + unset($custom[$key]); |
|
| 97 | + } |
|
| 98 | + foreach ($custom as $key => $value) { |
|
| 99 | + if (is_string($value)) { |
|
| 100 | + $custom[$key] = sanitize_text_field($value); |
|
| 101 | + } |
|
| 102 | + } |
|
| 103 | + return $custom; |
|
| 104 | + } |
|
| 105 | 105 | |
| 106 | - /** |
|
| 107 | - * @param string $key |
|
| 108 | - * @return string |
|
| 109 | - */ |
|
| 110 | - protected function getDate($key) |
|
| 111 | - { |
|
| 112 | - $date = strtotime($this->get($key)); |
|
| 113 | - if (false === $date) { |
|
| 114 | - $date = time(); |
|
| 115 | - } |
|
| 116 | - return get_date_from_gmt(gmdate('Y-m-d H:i:s', $date)); |
|
| 117 | - } |
|
| 106 | + /** |
|
| 107 | + * @param string $key |
|
| 108 | + * @return string |
|
| 109 | + */ |
|
| 110 | + protected function getDate($key) |
|
| 111 | + { |
|
| 112 | + $date = strtotime($this->get($key)); |
|
| 113 | + if (false === $date) { |
|
| 114 | + $date = time(); |
|
| 115 | + } |
|
| 116 | + return get_date_from_gmt(gmdate('Y-m-d H:i:s', $date)); |
|
| 117 | + } |
|
| 118 | 118 | |
| 119 | - /** |
|
| 120 | - * @param string $key |
|
| 121 | - * @return string |
|
| 122 | - */ |
|
| 123 | - protected function getUser($key) |
|
| 124 | - { |
|
| 125 | - $value = $this->get($key); |
|
| 126 | - if (empty($value)) { |
|
| 127 | - $user = wp_get_current_user(); |
|
| 128 | - $userValues = [ |
|
| 129 | - 'email' => 'user_email', |
|
| 130 | - 'name' => 'display_name', |
|
| 131 | - ]; |
|
| 132 | - if ($user->exists() && array_key_exists($key, $userValues)) { |
|
| 133 | - return $user->{$userValues[$key]}; |
|
| 134 | - } |
|
| 135 | - } |
|
| 136 | - return $value; |
|
| 137 | - } |
|
| 119 | + /** |
|
| 120 | + * @param string $key |
|
| 121 | + * @return string |
|
| 122 | + */ |
|
| 123 | + protected function getUser($key) |
|
| 124 | + { |
|
| 125 | + $value = $this->get($key); |
|
| 126 | + if (empty($value)) { |
|
| 127 | + $user = wp_get_current_user(); |
|
| 128 | + $userValues = [ |
|
| 129 | + 'email' => 'user_email', |
|
| 130 | + 'name' => 'display_name', |
|
| 131 | + ]; |
|
| 132 | + if ($user->exists() && array_key_exists($key, $userValues)) { |
|
| 133 | + return $user->{$userValues[$key]}; |
|
| 134 | + } |
|
| 135 | + } |
|
| 136 | + return $value; |
|
| 137 | + } |
|
| 138 | 138 | |
| 139 | - /** |
|
| 140 | - * @param string $key |
|
| 141 | - * @return string |
|
| 142 | - */ |
|
| 143 | - protected function getNumeric($key) |
|
| 144 | - { |
|
| 145 | - $value = $this->get($key); |
|
| 146 | - return is_numeric($value) |
|
| 147 | - ? $value |
|
| 148 | - : ''; |
|
| 149 | - } |
|
| 139 | + /** |
|
| 140 | + * @param string $key |
|
| 141 | + * @return string |
|
| 142 | + */ |
|
| 143 | + protected function getNumeric($key) |
|
| 144 | + { |
|
| 145 | + $value = $this->get($key); |
|
| 146 | + return is_numeric($value) |
|
| 147 | + ? $value |
|
| 148 | + : ''; |
|
| 149 | + } |
|
| 150 | 150 | } |