Содержание
Limb 2.4-alpha2 release
Краткое описание
Это второй альфа релиз новой ветки LIMB 2.4, в котором исправлено большое число ошибок и добавлен новый функционал.
Стоит выделить следующие наиболее важные изменения:
- совместимость с PHP-4.4.x
- переработка locale констант: использование единственной LOCALE_ID константы
- 'locale_id' аттрибут удален из site_object
- сессия пользователя жестко связана с его ip
- исправление работы транзакций драйверов баз данных
- JIP с использованием AJAX
- новые теги <limb:MEDIA>, <limb:SITE_BRANCH_SELECTOR>, <fetch:PARENT>, <limb:JS_BUNDLE>, <dev:DATASPACE>
- новый эксперементальный низкоуровневый доступ к системе через CLI
Совместимость с PHP-4.4.x
Мы старались найти и исправить все проблемматичные места в коде, которые приводили к warning в PHP-4.4.x(по крайней мере тесты выполняются без ошибок). Однако, в виду частичного покрытиями тестами, мы пока не даем полной гарантии того, что код полностью совместим с новыми версиями PHP4.
Переработка locale констант
Запутанные константы CONTENT_LOCALE_ID и MANAGEMENT_LOCALE_ID ушли в прошлое, на смену им пришла единственная константа LOCALE_ID. Именно она определяет, какие установки locale действительны в текущий момент обработки запроса. Для большей гибкости LOCALE_ID, возможно, в будущем будет глобальной переменной.
'locale_id' аттрибут удален из site_object
Данный аттрибут себя морально изжил в виду перехода на UTF-8. К тому же, правильнее было бы его называть translation_id, однако пока функционала для множественных переводов объектов у нас нет, от него стоит избавиться.
Привязка сессии к ip адресу
В целях повышения безопасности сессия пользователя жестко привязана к его ip адресу, что уменьшает риск умышленной подмены сессии пользователя(один из видов XSS атаки)
Исправление работы транзакций драйверов баз данных
Работа с транзакциями в MySql драйвере содержала серьезные ошибки, которые были исправлены.
JIP с использованием AJAX
Для облегчения fetch операций назначение доступных действий объекта было убрано из fetcher. Для вывода JIP на фронтальной части используется AJAX технология, т.е. происходит обращение к серверу для получения списка доступных действий объекта.
Новые WACT теги
- <limb:MEDIA [variation=thumbnail] [hash_id=id|path=/some/object/path]> - в зависимости от mime-type медиа объекта рендерит его либо в <img>, либо в <object> теге
- <limb:SITE_BRANCH_SELECTOR>,<limb:SITE_BRANCH path='/some/branch' [default=true]> - позволяют выполнять различный функционал в зависимости от текущей ветки сайта, удобны для мультиязычных проектов.
- <fetch:PARENT> - то же самое, что и <fetch:MAPPED> только для родительского объекта.
- <limb:JS_BUNDLE file='/path/to/file.js'> - собирает разрозненные js файлы в один файл
- <dev:DATASPACE> - выводит пары ключ=значение для текущего dataspace в шаблоне, удобен для отладки.
Низкоуровневый доступ к системе через CLI
Был добавлен эксперементальный CLI доступ к системе с помощью cli/limb.php скрипта(также существуют два удобных алиаса: limb.bat win32 batch и limb bash скрипты). Суть сводится к тому, чтобы предоставить разработчику возможность интерактивного доступа к системе через командную строку.
Доступ к системе через CLI можно описать следующей обобщенной схемой:
$ limb /path/to/limb/project module_name service_name arg1 arg2 arg3 … argN, где
- limb - один из алиасов для cli/limb.php
- /path/to/limb/project - путь до директории с LIMB проектом
- module_name - название модуля(модули хранятся в директории cli/modules в виде классов)
- service_name - название сервиса модуля(сервис - обычный метод класса модуля)
- arg1 arg2 arg3 … argN - специфичные для сервиса аргументы(аргументы метода)
Небольшой пример исследования доступных CLI модулей/сервисов и использования site_object модуля:
$ limb . help
=== available modules ===
cache
class
controller
db
site_object
$ limb . site_object help
=== module 'site_object' available services ===
add
edit
info
mv
rename
rm
set_class
set_controller
show
$ limb . site_object info /
array(32) {
["id"]=> string(3) "180"
["class_id"]=> string(2) "38"
["current_version"]=>string(1) "7"
["modified_date"]=>string(10) "1134135616"
["status"]=>string(2) "-1"
["created_date"]=>string(10) "1132056858"
["creator_id"]=>string(2) "25"
["title"]=>string(12) "Some title"
["identifier"]=>string(2) "ru"
["controller_id"]=>string(2) "53"
["object_id"]=>string(3) "180"
["version"]=>string(1) "7"
...
}

Обсуждение