[pdoTools] Обновление 2.13 - повышение безопасности, данные для Fenom и т.д.
Друзья, представляю новую версию pdoTools с озвученным ранее функционалом. Не всё что запланировал успел сделать, но и в этой версии есть на что обратить внимание —
Директория хранения файловых элементов определяется администратором в системной настройке «pdotools_elements_path». Контент-менеджер должен использовать файловые элементы из этой папки или вложенных подпапок.
- Исправлены известные дырки безопасности
- вывод любого файла на сайте;
- отрефакторен сниппет pdoUsers;
- исправлена подмена пути (path traversal) в файловых элементах.
- Модификатор «setOption» помечен как deprecated и будет удалён в следующей версии.
- Параметры сниппетов «tplPath» и «elementsPath» помечены как deprecated и будут удалёны в следующей версии.
- Добавлена возможность выводить массив необработанных данных (нужно при использовании Fenom).
- Системные настройки «parser_class» и «parser_class_path» теперь будут регистрироваться в пространстве имён «core».
Безопасность
Вопрос безопасности я чуть позже более подробно рассмотрю на своём сайте в закрытом режиме. Хочу снять видос. В широком доступе эту информацию обсуждать нежелательно.Модификатор «setOption» помечен как deprecated
Как я говорил в прошлой статье — контент-менеджер не должен иметь права на переопределение системных настроек. Но эта проблема не полностью закрывается данным исправлением. У объекта $_modx есть открытое свойство $config, которое позволяет контент-менеджеру делать тоже самое напрямую без использования модификатора. В следующей версии, которая явно будет мажорной, ибо ломает обратную совместимость, надо закрывать доступ к этому свойству.Параметры сниппетов «tplPath» и «elementsPath»
Параметры сниппетов «tplPath» и «elementsPath» помечены как deprecated и будут удалёны в следующей версии.Директория хранения файловых элементов определяется администратором в системной настройке «pdotools_elements_path». Контент-менеджер должен использовать файловые элементы из этой папки или вложенных подпапок.
Режим вывода необработанных данных
Мы много уже говорили про эту возможность. Так как pdoTools поставляется с Fenom, то можно вполне обойтись без многочисленных шаблонов «tpl», «tplFirst», «tplWrapper» и т.п. У всех сниппетов есть параметр «return», указывающий режим вывода —Как видим по документации, у него есть режим «data», который выводит массив данных. Но в процессе конвертации массива в строку в итоге получается только «Array». В новой версии сниппеты умеют выводит массив для целей использования с шаблонизатором Fenom.
- chunks — оформленные чанки, по умолчанию.
- sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
- data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
- ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
- json — возврат массива данных JSON строкой.
- serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json.
{set $resources = '!pdoResources' | snippet : [
"return" => "data",
...
]}
{foreach $resources as $resource}
<p>Заголовок: {$resource.pagetitle}</p>
{/foreach}Системные настройки «parser_class» и «parser_class_path»
Это настройки MODX. Поэтому неправильно их регистрировать как pdoTools настройки. При новой установке они будут создаваться в пространстве имён «core:site». При обновлении они перемещаться не будут.Заключение
Вот что успел сделать. Планы по оптимизации запросов и сниппета pdoPage перенёс на следующую версию. Там не всё так просто. Надеюсь, эти доработки пригодятся.Комментарии: 20
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Также нет пакета, сформированного composer'ом core/components/pdotools/vendor/autoload.php.
Ошибки ломают сайты. Проверяйте перед релизом.
Первый блин… За композером не углядел. Выпустил 2.13.1 версию с исправлением.
пришлось удалять строки
из кода сниппета pdoCrumbs
я про elementsPath
А можно узнать почему на github.com/sergant210/pdoTools — ничего не обновилось? Где идет разработка и можно посмотреть изменения? Проект еще в статусе open source?
А фраза:
Сама напрашивается на вопрос, а зачем торопиться-то? Лучше потратить на это месяц, два, три — да сколько угодно. Но выпустить железобетон который не сломает людям сайты.
Баг репорт! Версии: php — 7.3, Modx — 2.8.3, pdoTools 2.13.2 (последняя на данный момент).
При вызове pdoPage (ajax=scroll) вылазит ошибка , хотя все работает…
В любом случае, во второй версии эти параметры просто задепрекейчены. В третьей (которая для MODX3) они удалены.