Функция cot_get_messages в Cotonti
Функция cot_get_messages используется для извлечения сообщений, которые были сохранены в сессии для определенного источника (source) и/или класса (class). Она позволяет получать сообщения, которые могут быть связаны с различными частями приложения
Функция cot_get_messages используется для извлечения сообщений, которые были сохранены в сессии для определенного источника (source) и/или класса (class).
Она позволяет получать сообщения, которые могут быть связаны с различными частями приложения, такими как формы, ошибки, предупреждения или успешные сообщения.
/**
* Returns an array of messages for a specific source and/or class
*
* @param string $src Message source identifier. Search in all sources if empty
* @param string $class Message class. Search for all classes if empty
* @return array Array of message strings
*/
function cot_get_messages($src = 'default', $class = '')
{
global $sys;
$messages = array();
if (empty($src) && empty($class)) {
return $_SESSION['cot_messages'][$sys['site_id']];
}
if (!isset($_SESSION['cot_messages'][$sys['site_id']]) || !is_array($_SESSION['cot_messages'][$sys['site_id']])) {
return $messages;
}
if (empty($src)) {
foreach ($_SESSION['cot_messages'][$sys['site_id']] as $src => $grp) {
foreach ($grp as $msg) {
if (!empty($class) && $msg['class'] != $class) {
continue;
}
$messages[] = $msg;
}
}
} elseif (isset($_SESSION['cot_messages'][$sys['site_id']][$src]) && is_array($_SESSION['cot_messages'][$sys['site_id']][$src])) {
if (empty($class)) {
return $_SESSION['cot_messages'][$sys['site_id']][$src];
} else {
foreach ($_SESSION['cot_messages'][$sys['site_id']][$src] as $msg) {
if ($msg['class'] != $class) {
continue;
}
$messages[] = $msg;
}
}
}
return $messages;
}
Описание параметров php функции cot_get_messages в Cotonti.
1. Идентификатор источника сообщения $src (string).
Идентификатор источника сообщения. Источник может быть любым значением, которое позволяет связать сообщение с конкретной частью приложения (например, поле формы, модуль, страница).
Если параметр пустой, то будут извлечены все сообщения из всех источников.
2. Класс сообщения $class (string)
Класс сообщения, который может быть использован для категоризации сообщений (например, "error" для ошибок, "warning" для предупреждений, "ok" для успешных операций).
Если параметр пустой, то будут извлечены сообщения всех классов.
Алгоритм работы функции:
Проверка на пустые параметры:
if (empty($src) && empty($class)) {
return $_SESSION['cot_messages'][$sys['site_id']];
}
Если оба параметра $src и $class пустые, то функция возвращает все сообщения для текущего сайта, которые хранятся в сессии :
($_SESSION['cot_messages'][$sys['site_id']])
Проверка наличия сообщений в сессии:
if (!isset($_SESSION['cot_messages'][$sys['site_id']]) || !is_array($_SESSION['cot_messages'][$sys['site_id']])) {
return $messages;
}
Если в сессии нет сообщений для текущего сайта, возвращается пустой массив.
Обработка пустого параметра $src:
if (empty($src)) {
foreach ($_SESSION['cot_messages'][$sys['site_id']] as $src => $grp) {
foreach ($grp as $msg) {
if (!empty($class) && $msg['class'] != $class) {
continue;
}
$messages[] = $msg;
}
}
}
Если параметр $src пуст, функция перебирает все источники сообщений для текущего сайта. Для каждого источника она проверяет, если указан класс ($class), то фильтрует сообщения по классу. Сообщения добавляются в итоговый массив $messages.
Обработка непустого параметра $src:
elseif (isset($_SESSION['cot_messages'][$sys['site_id']][$src]) && is_array($_SESSION['cot_messages'][$sys['site_id']][$src])) {
if (empty($class)) {
return $_SESSION['cot_messages'][$sys['site_id']][$src];
} else {
foreach ($_SESSION['cot_messages'][$sys['site_id']][$src] as $msg) {
if ($msg['class'] != $class) {
continue;
}
$messages[] = $msg;
}
}
}
Если параметр $src не пуст, функция проверяет, существуют ли сообщения для указанного источника. Если параметр $class пуст, возвращаются все сообщения для этого источника. Если $class задан, фильтруются только те сообщения, которые соответствуют этому классу.
Возврат сообщений:
return $messages;
Функция возвращает массив сообщений, который соответствует заданным критериям (источник и/или класс).
Итоги.
Функция cot_get_messages извлекает из сессии все сообщения, которые были ранее сохранены с возможностью фильтрации по источнику и классу сообщений. Это полезно для отображения сообщений пользователю, например, при обработке форм или выводе результатов выполнения операций (ошибки, предупреждения, успехи).
Пример применения функции cot_get_messages в Cotonti:
if ($a == 'update' && !empty($_POST)) {
$updated = cot_config_update_options($p, $optionslist, $o);
$errors = cot_get_messages('', 'error');
if ($o == 'module' || $o == 'plug')
{
$dir = $o == 'module' ? $cfg['modules_dir'] : $cfg['plugins_dir'];
// Run configure extension part if present
if (file_exists($dir . "/" . $p . "/setup/" . $p . ".configure.php"))
{
include $dir . "/" . $p . "/setup/" . $p . ".configure.php";
}
}
/* === Hook === */
foreach (cot_getextplugins('admin.config.edit.update.done') as $pl)
{
include $pl;
}
/* ===== */
$cache && $cache->clear();
if ($updated)
{
$errors ? cot_message('adm_partially_updated', 'warning') : cot_message('Updated');
}
else
{
if (!$errors) cot_message('adm_already_updated');
}
}
В приведенном примере функция cot_get_messages используется для извлечения сообщений об ошибках, которые могут быть установлены в ходе выполнения операции обновления конфигурации. Она играет ключевую роль в логике обработки результатов обновления, особенно при условии, что ошибки могут возникнуть в процессе.
Алгоритм применения:
Проверка POST-запроса и операции обновления:
if ($a == 'update' && !empty($_POST)) {
$updated = cot_config_update_options($p, $optionslist, $o);
Здесь проверяется, что запрос является запросом на обновление ($a == 'update'), и что данные были отправлены через POST.
Далее вызывается функция cot_config_update_options, которая обновляет параметры конфигурации на основе переданных данных.
Получение сообщений об ошибках:
$errors = cot_get_messages('', 'error');
После попытки обновления конфигурации, вызывается функция cot_get_messages, чтобы получить все сообщения об ошибках, которые были добавлены в сессию с классом "error".
Параметр $src пуст, что означает, что будут получены сообщения из всех источников (не только для конкретной части приложения).
Параметр $class равен 'error', что означает, что функция будет искать только ошибки.
Проверка успешности обновления:
if ($updated)
{
$errors ? cot_message('adm_partially_updated', 'warning') : cot_message('Updated');
}
Если обновление прошло успешно ($updated истинно), проверяется, были ли ошибки:
Если ошибки были, выводится предупреждающее сообщение 'adm_partially_updated'.
Если ошибок нет, выводится сообщение об успешном обновлении 'Updated'.
Если обновление не состоялось:
else {
if (!$errors) cot_message('adm_already_updated');
}
Если обновление не произошло, проверяется, были ли ошибки:
Если ошибок нет, выводится сообщение, что конфигурация уже обновлена 'adm_already_updated'.
Роль функции cot_get_messages в примере:
Функция cot_get_messages используется для извлечения всех сообщений об ошибках, которые были записаны в сессию с классом "error". Эти ошибки могут возникнуть в результате проверки или выполнения каких-либо операций перед обновлением конфигурации.
Она помогает определить, были ли ошибки при обновлении конфигурации и, в зависимости от этого, корректно выбрать тип сообщения для вывода пользователю.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 11:12
- Последнее обновление: 22.01.2025 11:12