Функция cot_get_parsers в Cotonti
предназначена для получения списка доступных парсеров разметки в фреймворке Cotonti. Парсеры разметки могут быть использованы для обработки различных типов контента, таких как текст, HTML
Функция cot_get_parsers предназначена для получения списка доступных парсеров разметки в фреймворке Cotonti. Парсеры разметки могут быть использованы для обработки различных типов контента, таких как текст, HTML, Markdown и другие форматы разметки.
/**
* Returns the list of available markup parsers
*
* @return array
*/
function cot_get_parsers()
{
global $cot_plugins;
$list = array('none');
if (isset($cot_plugins['parser']) && is_array($cot_plugins['parser'])) {
foreach ($cot_plugins['parser'] as $k) {
if (cot_auth('plug', $k['pl_code'], 'W')) {
$list[] = $k['pl_code'];
}
}
}
return $list;
}
Подробное объяснение работы функции:
Возвращаемое значение — массив:
Функция возвращает массив, в который по умолчанию добавляется элемент 'none', что означает отсутствие парсера. Если есть доступные парсеры, они добавляются к этому массиву.
Глобальная переменная $cot_plugins:
Как и в предыдущем примере, функция использует глобальную переменную $cot_plugins, которая содержит информацию о плагинах системы. В частности, нас интересует ключ 'parser' в массиве $cot_plugins. Этот ключ хранит данные о парсерах, доступных в системе.
Проверка на наличие парсеров:
Перед тем как начать работать с парсерами, функция проверяет, существует ли в $cot_plugins раздел parser и является ли он массивом. Для этого используется условие:
if (isset($cot_plugins['parser']) && is_array($cot_plugins['parser']))
Это необходимо, чтобы избежать ошибок в случае, если плагин для парсера не был установлен или если раздел не существует.
Перебор парсеров:
Если парсеры существуют, функция перебирает каждый элемент массива $cot_plugins['parser'] с помощью цикла foreach.
Каждый элемент $k представляет собой информацию о конкретном парсере.
Проверка прав пользователя:
Для каждого парсера проверяется, есть ли у текущего пользователя права на его использование. Это делается с помощью функции cot_auth('plug', $k['pl_code'], 'W'), которая проверяет, есть ли у пользователя права на запись (параметр 'W') для плагина, код которого указан в $k['pl_code'].
Добавление доступных парсеров в список:
Если у пользователя есть права на использование парсера, его код ($k['pl_code']) добавляется в массив $list[].
Возврат списка парсеров:
После завершения перебора всех парсеров функция возвращает массив $list, который содержит доступные для использования парсеры. Если парсеры отсутствуют или пользователь не имеет прав на их использование, в списке останется только 'none'.
Пример работы функции:
Пусть в переменной $cot_plugins['parser'] содержатся следующие данные о парсерах:
$cot_plugins['parser'] = [
['pl_code' => 'bbcode'],
['pl_code' => 'markdown'],
['pl_code' => 'html']
];
И у пользователя есть права на использование парсеров bbcode и markdown, но нет прав на html.
Функция перебирает парсеры и добавляет только доступные:
В результате выполнения функции будет возвращен список:
['none', 'bbcode', 'markdown']
Примечания:
Что такое cot_auth? Функция cot_auth проверяет, есть ли у пользователя определенные права на использование плагина. В данном случае она проверяет, есть ли у пользователя права на запись ('W') для каждого парсера. Если права есть, парсер добавляется в список доступных.
Глобальная переменная $cot_plugins: Эта переменная хранит данные обо всех плагинах, включая парсеры разметки. Она используется для динамического подключения плагинов в систему.
Итог:
Функция cot_get_parsers возвращает список доступных парсеров разметки, которые могут быть использованы на сайте. Это позволяет адаптировать интерфейс системы, предоставляя пользователю только те парсеры, к которым он имеет доступ.
Проанализируем и разберем функцию в внутри выражения, в контексте логики php-фреймворка Cotonti:
'PAGEEDIT_FORM_PARSER' => cot_selectbox($pag['page_parser'], 'rpageparser', cot_get_parsers(), cot_get_parsers(), false),
Это часть массива, где используется функция cot_selectbox. Давайте проанализируем, как она работает в контексте фреймворка Cotonti, и что означают передаваемые в нее параметры.
Разбор:
'PAGEEDIT_FORM_PARSER' => ...: Это ключ массива, который будет связан с результатом работы функции cot_selectbox.
Ключ 'PAGEEDIT_FORM_PARSER' используется для вывода в шаблоне, например, для отображения выпадающего списка (select box) в форме редактирования страницы.
Функция cot_selectbox: Функция cot_selectbox создает HTML элемент <select>, то есть выпадающий список. Эта функция предоставляет пользователю выбор из списка значений. Давайте разберем параметры этой функции:
cot_selectbox($pag['page_parser'], 'rpageparser', cot_get_parsers(), cot_get_parsers(), false)
Первый параметр ($pag['page_parser']): Это текущее значение для поля, которое будет отображено как выбранное в выпадающем списке. Здесь переменная $pag скорее всего представляет собой массив данных страницы, а 'page_parser' — это ключ в этом массиве, который хранит информацию о выбранном парсере разметки для текущей страницы.
Если на момент отображения формы в поле page_parser хранится, например, значение 'bbcode', то в выпадающем списке будет выбрано это значение.
Второй параметр ('rpageparser'): Это атрибут name для элемента <select>. Значение 'rpageparser' указывает на имя поля, которое будет отправлено при отправке формы. То есть, при сабмите формы будет отправлено новое значение парсера в поле с именем rpageparser.
Третий параметр (cot_get_parsers()): Это список доступных парсеров, получаемый с помощью функции cot_get_parsers(). Мы уже разобрали эту функцию ранее. Она возвращает массив доступных парсеров, которые могут быть использованы для редактирования контента.
Например, это может быть массив типа:
['none', 'bbcode', 'markdown']
Это список значений, который будет отображен в выпадающем списке.
Четвертый параметр (cot_get_parsers()): Это список доступных парсеров в виде массива, который будет использоваться для вывода значений в <option> (пункты списка) для элемента <select>. Параметры cot_get_parsers() здесь используются для указания как значений, так и отображаемых строк для выпадающего списка.
Важно: Это может быть связано с тем, что на практике отображаемые строки и значения могут быть одинаковыми (например, 'none', 'bbcode', 'markdown'). Но можно было бы использовать разные массивы для отображаемых значений и значений, отправляемых при сабмите.
Пятый параметр (false): Это флаг, который указывает, следует ли использовать пустое значение (например, для выбора "None" или "Не выбрано") в начале выпадающего списка. Когда передается false, пустое значение не будет добавлено. Это означает, что в списке не будет опции для "не выбранного" парсера. Если бы здесь было передано true, то в начале списка был бы элемент с пустым значением, например:
<option value="">Не выбрано</option>
В данном случае, false означает, что такого элемента не будет.
Итог:
Функция cot_selectbox создает выпадающий список, в котором пользователи могут выбрать парсер разметки для страницы.
Параметры функции обеспечивают:
Отображение текущего значения ($pag['page_parser']).
Параметр name для отправки формы (rpageparser).
Список доступных парсеров, получаемых с помощью функции cot_get_parsers().
Невозможность выбора "не выбранного" значения, так как флаг установлен в false.
Когда пользователь отправляет форму, выбранный парсер будет передан в параметре rpageparser, и это значение можно будет использовать для обработки контента на странице.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 20:57
- Последнее обновление: 22.01.2025 20:57