Portions created by the Initial Developer are Copyright (C) 2017 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Matthew Vale */ class message { /** * Returns the total number of messages in the session. * * @return int The number of messages, or 0 if no messages are present in the session. */ static function count() { return isset($_SESSION["messages"]) && is_array($_SESSION["messages"]) ? sizeof($_SESSION["messages"]) : 0; } /** * Renders session messages into HTML. * * @param bool $clear_messages Whether to clear the session 'messages' array after rendering. Defaults to true. * @param string $spacer The indentation spacer for the generated HTML code. * * @return string The rendered HTML message display code. */ static function html($clear_messages = true, $spacer = "") { $html = "{$spacer}//render the messages\n"; $spacer .= "\t"; if (isset($_SESSION['message']) || isset($_SESSION['messages'])) { if (!empty($_SESSION['message']) && !is_array($_SESSION['message'])) { self::add($_SESSION['message'], $_SESSION['message_mood'] ?? null, $_SESSION['message_delay'] ?? null); unset($_SESSION['message'], $_SESSION['message_mood'], $_SESSION['message_delay']); } if (!empty($_SESSION['messages']) && is_array($_SESSION['messages']) && @sizeof($_SESSION['messages']) != 0) { foreach ($_SESSION['messages'] as $message_mood => $message) { $message_text = str_replace(["\r\n", "\n", "\r"], '\\n', addslashes(join('
', $message['message']))); $message_delay = array_sum($message['delay']) / count($message['delay']); $html .= "{$spacer}display_message('$message_text', '$message_mood', '$message_delay');\n"; } } } if ($clear_messages) { unset($_SESSION['messages']); } return $html; } /** * Adds a message to the session messages array. * * @param string $message The message to add. * @param string|null $mood The mood of the message. Defaults to 'positive'. * @param int|null $delay The delay before displaying the message. Defaults to the theme's default text * message delay in milliseconds. * * @return void */ static function add($message, $mood = null, $delay = null) { //set mood and delay $mood = $mood ?: 'positive'; $delay = $delay ?: (1000 * (float)$_SESSION['theme']['message_delay']['text']); //ignore duplicate messages if (isset($_SESSION["messages"]) && !empty($_SESSION["messages"][$mood]['message'])) { if (!in_array($message, $_SESSION["messages"][$mood]['message'])) { $_SESSION["messages"][$mood]['message'][] = $message; $_SESSION["messages"][$mood]['delay'][] = $delay; } } else { $_SESSION["messages"][$mood]['message'][] = $message; $_SESSION["messages"][$mood]['delay'][] = $delay; } } }