С 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().