С 2.2 до 2.3
Содержание
Версия PHP
Поддержка PHP 5.5 завершилась в июле 2016 года. Для обеспечения безопасности сайтов на Elgg теперь требуется PHP 5.6 для новых установок.
Существующие установки могут продолжать использовать PHP 5.5 до версии Elgg 3.0.
Для обновления Elgg до версии 2.3 с использованием composer при использовании PHP 5.5 может потребоваться флаг --ignore-platform-reqs.
Устаревшие API
Регистрация для хука
to:objectпо имени расширителя: вместо этого используйте хукиto:object, annotationиto:object, metadata.
ajax_forward_hook(): больше не используется как обработчик для хука „forward“,“all“. Ajax-ответ теперь оборачиваетсяResponseFactory
ajax_action_hook(): больше не используется как обработчик для хука „action“,“all“. Буферизация вывода теперь начинается до срабатывания хука вActionsService
elgg_error_page_handler(): больше не используется как обработчик для хуков „forward“,<error_code>
get_uploaded_file(): вместо этого используйте новый API загрузки файлов
get_user_notification_settings(): используйтеElggUser::getNotificationSettings()
set_user_notification_setting(): используйтеElggUser::setNotificationSetting()Событие
pagesetup, system: вместо этого используйте хуки меню или оболочки страницы.JavaScript
elgg.walled_gardenобъявлен устаревшим: вместо этого используйте AMD-модульelgg/walled_garden.
elgg()->getDb()->getTableprefix(): используйтеelgg_get_config('dbprefix').Приватный метод
update_entity_last_action(): воздержитесь от ручного обновления метки времени последнего действия.Установка непубличного
access_idдля метаданных объявлена устаревшей. См. ниже.
get_resized_image_from_existing_file(): используйтеelgg_save_resized_image().
get_resized_image_from_uploaded_file(): используйтеelgg_save_resized_image()в сочетании с API загрузки.
get_image_resize_parameters()будет удалён.
elgg_view_input(): используйтеelgg_view_field(). Приносим извинения за изменения в API.
Устаревшие представления
resources/file/world: вместо этого используйте представлениеresources/file/all.
resources/pages/world: вместо этого используйте представлениеresources/pages/all.
walled_garden.js: вместо этого используйте модульelgg/walled_garden.
Новый API для обработки страниц и действий
Обработчики страниц и файлы скриптов действий теперь должны возвращать экземпляр \Elgg\Http\ResponseBuilder. Плагины должны использовать следующие вспомогательные функции для построения ответов:
elgg_ok_response()отправляет ответ 2xx с HTML (обработчик страницы) или данными JSON (действия)
elgg_error_response()отправляет ответ 4xx или 5xx без контента/данных
elgg_redirect_response()выполняет тихое перенаправление запроса
Новый API для работы с загрузкой файлов
elgg_get_uploaded_files()- возвращает массив объектов загруженных файлов Symfony
ElggFile::acceptUploadedFile()- перемещает загруженный файл в хранилище файлов Elgg
Новый API для манипуляций с изображениями
Новый сервис манипуляций с изображениями реализует более эффективный подход к кадрированию и изменению размера изображений.
elgg_save_resized_image()- кадрирует и изменяет размер изображения до предпочтительных размеров
Новый API для событий
elgg_clear_event_handlers()- аналогичноelgg_clear_plugin_hook_handlers, эта функция удаляет все зарегистрированные обработчики событий
Новый API для подписи URL-адресов
URL-адреса теперь могут быть подписаны ключом SHA-256 HMAC и проверены в любое время до истечения срока действия URL. Эта функция может использоваться для токенизации URL-адресов действий в уведомлениях по электронной почте, а также для других применений за пределами установки Elgg.
elgg_http_get_signed_url()- подписывает URL-адрес ключом HMAC
elgg_http_validate_signed_url()- проверяет подписанный URL-адрес
elgg_signed_request_gatekeeper()- gatekeeper, который проверяет подпись текущего запроса
Расширяемые представления форм
Рендеринг футера формы теперь может быть отложен до завершения рендеринга представления формы и его расширений. Это позволяет плагинам совместно работать над представлениями форм без нарушения логики разметки.
elgg_set_form_footer()- устанавливает футер формы для отложенного рендеринга
elgg_get_form_footer()- возвращает текущий установленный футер формы
Метаданные access_id
Теперь объявлено устаревшим создание метаданных с явным значением access_id, отличным от ACCESS_PUBLIC.
В Elgg 3.0 метаданные не будут контролироваться доступом и будут доступны во всех контекстах. Если ваш плагин полагается на контроль доступа к метаданным, было бы разумно вместо этого перенести хранение в аннотации или сущности.
Новый API для извлечения имён классов из массивов
Аналогично elgg_extract(), elgg_extract_class() извлекает ключ «class» (если присутствует), объединяет с существующими именами классов и всегда возвращает массив.
Уведомления
Теперь для мгновенных и подписочных уведомлений вызывается хук высокого уровня
'prepare','notification', который можно использовать для изменения объектов уведомлений независимо от их типа.Теперь для мгновенных и подписочных уведомлений вызывается хук
'format','notification:<method>', который можно использовать для форматирования уведомления (например, удаление HTML-тегов, оборачивание тела уведомления в шаблон и т.д.).Мгновенные уведомления теперь обрабатываются сервисом уведомлений, поэтому почти все хуки, применимые к подписочным уведомлениям, также применяются к мгновенным уведомлениям.
elgg_get_notification_methods()можно использовать для получения зарегистрированных методов уведомленийДобавлены
ElggUser::getNotificationSettings()иElggUser::setNotificationSetting()
Функции списка сущностей могут выводить таблицы
В функциях типа elgg_list_entities($options) возможен вывод таблицы путём установки $options['list_type'] = 'table' и предоставления массива столбцов таблицы как $options['columns']. Каждый столбец является объектом Elgg\Views\TableColumn, обычно создаваемым через методы сервиса elgg()->table_columns.
Плагины могут предоставлять или изменять эти фабричные методы (см. Elgg\Views\TableColumn\ColumnFactory). Пример использования см. в представлении admin/users/newest.
Компоненты встроенных вкладок
Компонент встроенных вкладок теперь может отображаться с помощью представления page/components/tabs. Компонент позволяет переключаться между предварительно заполненными и загружаемыми через Ajax вкладками. Инструкции по использованию и примеры см. в page/components/tabs в основных представлениях и theme_sandbox/components/tabs в плагине developers.
API для изменения URL регистрации и входа
Для получения URL регистрации сайта следует использовать
elgg_get_registration_url()Для получения URL входа сайта следует использовать
elgg_get_login_url()Хук
registration_url, siteможно использовать для изменения стандартного URL регистрацииХук
login_url, siteможно использовать для изменения стандартного URL входа
Поддержка групп полей (fieldset) в формах
elgg_view_field()заменяетelgg_view_input(). Имеет схожий API, но принимает один массив.
elgg_view_field()поддерживает#type,#label,#helpи#class, позволяя передавать версии без префиксов в представление input через$vars.Новое представление
input/fieldsetможно использовать для отображения набора полей, каждое из которых отображается с помощьюelgg_view_field().
Lightbox (всплывающее окно)
CSS для Lightbox больше не загружается как внешний файл. Тема Lightbox теперь расширяет
elgg.cssиadmin.cssСтандартная конфигурация lightbox теперь определяется через серверный хук
'elgg.data','site'