Функция 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, и это значение можно будет использовать для обработки контента на странице.

 

5 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 22.01.2025 20:57
  • Последнее обновление: 22.01.2025 20:57