/var/www/vhosts/nabawater/vendor/yiisoft/yii2/helpers
NameSizeModeActions
ArrayHelper.php5090644editdlrm
BaseArrayHelper.php350420644editdlrm
BaseConsole.php392990644editdlrm
BaseFileHelper.php371950644editdlrm
BaseFormatConverter.php315160644editdlrm
BaseHtml.php1111000644editdlrm
BaseHtmlPurifier.php23710644editdlrm
BaseInflector.php227300644editdlrm
BaseIpHelper.php39450644editdlrm
BaseJson.php86060644editdlrm
BaseMarkdown.php33230644editdlrm
BaseStringHelper.php175190644editdlrm
BaseUrl.php174020644editdlrm
BaseVarDumper.php104060644editdlrm
Console.php4130644editdlrm
FileHelper.php3550644editdlrm
FormatConverter.php5340644editdlrm
Html.php7680644editdlrm
HtmlPurifier.php6960644editdlrm
Inflector.php3940644editdlrm
IpHelper.php4790644editdlrm
Json.php5140644editdlrm
Markdown.php10530644editdlrm
mimeAliases.php1290644editdlrm
mimeTypes.php406760644editdlrm
ReplaceArrayValue.php19130644editdlrm
StringHelper.php3530644editdlrm
UnsetArrayValue.php11470644editdlrm
Url.php4500644editdlrm
VarDumper.php6580644editdlrm
Edit: /var/www/vhosts/nabawater/vendor/yiisoft/yii2/helpers/BaseJson.php (8606B)
* @since 2.0 */ class BaseJson { /** * List of JSON Error messages assigned to constant names for better handling of version differences. * @var array * @since 2.0.7 */ public static $jsonErrorMessages = [ 'JSON_ERROR_DEPTH' => 'The maximum stack depth has been exceeded.', 'JSON_ERROR_STATE_MISMATCH' => 'Invalid or malformed JSON.', 'JSON_ERROR_CTRL_CHAR' => 'Control character error, possibly incorrectly encoded.', 'JSON_ERROR_SYNTAX' => 'Syntax error.', 'JSON_ERROR_UTF8' => 'Malformed UTF-8 characters, possibly incorrectly encoded.', // PHP 5.3.3 'JSON_ERROR_RECURSION' => 'One or more recursive references in the value to be encoded.', // PHP 5.5.0 'JSON_ERROR_INF_OR_NAN' => 'One or more NAN or INF values in the value to be encoded', // PHP 5.5.0 'JSON_ERROR_UNSUPPORTED_TYPE' => 'A value of a type that cannot be encoded was given', // PHP 5.5.0 ]; /** * Encodes the given value into a JSON string. * * The method enhances `json_encode()` by supporting JavaScript expressions. * In particular, the method will not encode a JavaScript expression that is * represented in terms of a [[JsExpression]] object. * * Note that data encoded as JSON must be UTF-8 encoded according to the JSON specification. * You must ensure strings passed to this method have proper encoding before passing them. * * @param mixed $value the data to be encoded. * @param int $options the encoding options. For more details please refer to * . Default is `JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE`. * @return string the encoding result. * @throws InvalidArgumentException if there is any encoding error. */ public static function encode($value, $options = 320) { $expressions = []; $value = static::processData($value, $expressions, uniqid('', true)); set_error_handler(function () { static::handleJsonError(JSON_ERROR_SYNTAX); }, E_WARNING); $json = json_encode($value, $options); restore_error_handler(); static::handleJsonError(json_last_error()); return $expressions === [] ? $json : strtr($json, $expressions); } /** * Encodes the given value into a JSON string HTML-escaping entities so it is safe to be embedded in HTML code. * * The method enhances `json_encode()` by supporting JavaScript expressions. * In particular, the method will not encode a JavaScript expression that is * represented in terms of a [[JsExpression]] object. * * Note that data encoded as JSON must be UTF-8 encoded according to the JSON specification. * You must ensure strings passed to this method have proper encoding before passing them. * * @param mixed $value the data to be encoded * @return string the encoding result * @since 2.0.4 * @throws InvalidArgumentException if there is any encoding error */ public static function htmlEncode($value) { return static::encode($value, JSON_UNESCAPED_UNICODE | JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS); } /** * Decodes the given JSON string into a PHP data structure. * @param string $json the JSON string to be decoded * @param bool $asArray whether to return objects in terms of associative arrays. * @return mixed the PHP data * @throws InvalidArgumentException if there is any decoding error */ public static function decode($json, $asArray = true) { if (is_array($json)) { throw new InvalidArgumentException('Invalid JSON data.'); } elseif ($json === null || $json === '') { return null; } $decode = json_decode((string) $json, $asArray); static::handleJsonError(json_last_error()); return $decode; } /** * Handles [[encode()]] and [[decode()]] errors by throwing exceptions with the respective error message. * * @param int $lastError error code from [json_last_error()](http://php.net/manual/en/function.json-last-error.php). * @throws InvalidArgumentException if there is any encoding/decoding error. * @since 2.0.6 */ protected static function handleJsonError($lastError) { if ($lastError === JSON_ERROR_NONE) { return; } $availableErrors = []; foreach (static::$jsonErrorMessages as $const => $message) { if (defined($const)) { $availableErrors[constant($const)] = $message; } } if (isset($availableErrors[$lastError])) { throw new InvalidArgumentException($availableErrors[$lastError], $lastError); } throw new InvalidArgumentException('Unknown JSON encoding/decoding error.'); } /** * Pre-processes the data before sending it to `json_encode()`. * @param mixed $data the data to be processed * @param array $expressions collection of JavaScript expressions * @param string $expPrefix a prefix internally used to handle JS expressions * @return mixed the processed data */ protected static function processData($data, &$expressions, $expPrefix) { if (is_object($data)) { if ($data instanceof JsExpression) { $token = "!{[$expPrefix=" . count($expressions) . ']}!'; $expressions['"' . $token . '"'] = $data->expression; return $token; } elseif ($data instanceof \JsonSerializable) { return static::processData($data->jsonSerialize(), $expressions, $expPrefix); } elseif ($data instanceof Arrayable) { $data = $data->toArray(); } elseif ($data instanceof \SimpleXMLElement) { $data = (array) $data; } else { $result = []; foreach ($data as $name => $value) { $result[$name] = $value; } $data = $result; } if ($data === []) { return new \stdClass(); } } if (is_array($data)) { foreach ($data as $key => $value) { if (is_array($value) || is_object($value)) { $data[$key] = static::processData($value, $expressions, $expPrefix); } } } return $data; } /** * Generates a summary of the validation errors. * @param Model|Model[] $models the model(s) whose validation errors are to be displayed. * @param array $options the tag options in terms of name-value pairs. The following options are specially handled: * * - showAllErrors: boolean, if set to true every error message for each attribute will be shown otherwise * only the first error message for each attribute will be shown. Defaults to `false`. * * @return string the generated error summary * @since 2.0.14 */ public static function errorSummary($models, $options = []) { $showAllErrors = ArrayHelper::remove($options, 'showAllErrors', false); $lines = self::collectErrors($models, $showAllErrors); return json_encode($lines); } /** * Return array of the validation errors * @param Model|Model[] $models the model(s) whose validation errors are to be displayed. * @param $showAllErrors boolean, if set to true every error message for each attribute will be shown otherwise * only the first error message for each attribute will be shown. * @return array of the validation errors * @since 2.0.14 */ private static function collectErrors($models, $showAllErrors) { $lines = []; if (!is_array($models)) { $models = [$models]; } foreach ($models as $model) { $lines = array_unique(array_merge($lines, $model->getErrorSummary($showAllErrors))); } return $lines; } }