diff options
Diffstat (limited to 'inc/message.inc.php')
-rw-r--r-- | inc/message.inc.php | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/inc/message.inc.php b/inc/message.inc.php index 9197e4c2..119bb2ba 100644 --- a/inc/message.inc.php +++ b/inc/message.inc.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + class Message { private static $list = array(); @@ -11,40 +13,39 @@ class Message * yet, it will be added to the queue, otherwise it will be added * in place during rendering. */ - public static function addError($id) + public static function addError(string $id, ...$params): void { - self::add('danger', $id, func_get_args()); + self::add('danger', $id, $params); } - public static function addWarning($id) + public static function addWarning(string $id, ...$params): void { - self::add('warning', $id, func_get_args()); + self::add('warning', $id, $params); } - public static function addInfo($id) + public static function addInfo(string $id, ...$params): void { - self::add('info', $id, func_get_args()); + self::add('info', $id, $params); } - public static function addSuccess($id) + public static function addSuccess(string $id, ...$params): void { - self::add('success', $id, func_get_args()); + self::add('success', $id, $params); } /** * Internal function that adds a message. Used by * addError/Success/Info/... above. */ - private static function add($type, $id, $params) + private static function add(string $type, string $id, array $params): void { if (strstr($id, '.') === false) { $id = Page::getModule()->getIdentifier() . '.' . $id; } - if (count($params) > 1 && $params[1] === true) { - $params = array_slice($params, 2); + if (!empty($params) && $params[0] === true) { + $params = array_slice($params, 1); $linkModule = true; } else { - $params = array_slice($params, 1); $linkModule = false; } switch ($type) { @@ -63,6 +64,7 @@ class Message default: $icon = ''; } + ArrayUtil::forceType($params, 'string'); self::$list[] = array( 'type' => $type, 'icon' => $icon, @@ -70,7 +72,9 @@ class Message 'params' => $params, 'link' => $linkModule ); - if (self::$flushed) self::renderList(); + if (self::$flushed) { + self::renderList(); + } } /** @@ -78,7 +82,7 @@ class Message * After calling this, any further calls to add* will be rendered in * place in the current page output. */ - public static function renderList() + public static function renderList(): void { self::$flushed = true; if (empty(self::$list)) @@ -122,7 +126,7 @@ class Message * Get all queued messages, flushing the queue. * Useful in api/ajax mode. */ - public static function asString() + public static function asString(): string { $return = ''; foreach (self::$list as $item) { @@ -145,17 +149,20 @@ class Message * Deserialize any messages from the current HTTP request and * place them in the message queue. */ - public static function fromRequest() + public static function fromRequest(): void { $messages = is_array($_REQUEST['message']) ? $_REQUEST['message'] : array($_REQUEST['message']); foreach ($messages as $message) { $data = explode('|', $message); + if (count($data) < 2) + continue; if (substr($data[0], -1) === '@') { $data[0] = substr($data[0], 0, -1); - array_splice($data, 1, 0, true); + array_splice($data, 2, 0, true); } - if (count($data) < 2 || !preg_match('/^(danger|warning|info|success)$/', $data[0])) continue; - self::add($data[0], $data[1], array_slice($data, 1)); + if (!preg_match('/^(danger|warning|info|success)$/', $data[0])) + continue; + self::add($data[0], $data[1], array_slice($data, 2)); } } @@ -163,7 +170,7 @@ class Message * Turn the current message queue into a serialized version, * suitable for appending to a GET or POST request */ - public static function toRequest() + public static function toRequest(): string { $parts = array(); foreach (array_merge(self::$list, self::$alreadyDisplayed) as $item) { |