С 6.x до 7.0

Composer

Требования к PHP

Минимальная версия PHP теперь 8.3.

PHPUnit

Elgg теперь использует PHPUnit 12.5. Возможно, вам потребуется обновить ваши тесты.

Laminas Mail

Библиотеки laminas/laminas-mail, laminas/laminas-mime и laminas/laminas-servicemanager были заменены на symfony/mailer из-за окончания поддержки.

Из-за этого изменения настройка конфигурации emailer_transport (которая может быть найдена в elgg-config/settings.php) теперь требует другого формата. Пожалуйста, прочитайте инструкции в elgg-config/settings.example.php. Настройки конфигурации emailer_sendmail_settings и emailer_smtp_settings были удалены.

Событие zend:message, system:email было переименовано в message, system:email.

Примечание

Because of the switch to the Symfony Mailer you might have to update your PHP hardening to allow the function proc_open as it’s used by Symfony.

Font Awesome

Версия библиотеки иконок была обновлена до версии 7. Многое остаётся прежним, но вам может потребоваться проверить использование иконок или любого специального CSS, связанного с Font Awesome. Если вы используете кастомную или pro-версию Font Awesome, вам нужно обновить ваш пакет до версии 7.

Изменения в ядре Elgg

Изменения конфигурации по умолчанию

  • Корзина теперь включена по умолчанию

  • Опция конфигурации min_password_length изменена на 16

  • Опция конфигурации css_compiler_options была удалена

  • Опция конфигурации memcache была удалена

  • Опция конфигурации memcache_namespace_prefix была удалена

  • Опция конфигурации memcache_servers была удалена

  • Опция конфигурации redis была удалена

  • Опция конфигурации redis_options была удалена

  • Опция конфигурации redis_servers была удалена

Redis и Memcached

Встроенная поддержка кэширования с функциями Redis и Memcached была удалена.

Cron

Максимальное время выполнения PHP во время выполнения CRON было установлено на „неограниченно“. Таким образом, для разработчиков больше нет необходимости вызывать set_time_limit(0);

CSS Crush был удалён

CSS-файлы больше не обрабатываются предварительно CSS Crush. CSS Crush больше не поддерживается, и различные функции теперь являются частью обычного CSS (как вложенность и использование переменных). Переменные, установленные в вашем elgg-plugin.php (или доступные в ядре), по-прежнему доступны в файлах CSS, но вам нужно будет обновить ваш CSS для использования var(--elgg-your-variable). Если у вас есть кастомная тема, вам нужно будет проверить все ваши файлы CSS на наличие функций CSS Crush и обновить ваш код соответствующим образом. Событие vars:compiler, css было удалено.

Примечание

Переменные для фоновых изображений страниц walled garden и maintenance были изменены. Переменные, используемые для медиа-запросов, были удалены и должны быть жёстко прописаны в ваших файлах CSS.

Изменения цветовой схемы

Чтобы правильно поддерживать цветовые схемы, были введены некоторые переменные CSS, и некоторые конфигурации CSS были изменены для поддержки цветовых схем. Если у вас есть кастомная тема, возможно, вам потребуется обновить ваш CSS для поддержки цветовых схем.

Примечание

Специальные классы кнопок для elgg-button-special и elgg-button-action-done были удалены.

Восстановление сущности

Форма и действие entity/chooserestoredestination теперь используют единственное значение параметра для destination_container_guid при выборе другой сущности для восстановления.

Списки сущностей

Поведение elgg_list_entities() было изменено. Значение по умолчанию для параметра limit, которое может быть предоставлено параметром запроса limit (например, /blog/all?limit=20), было ограничено минимумом 1 и максимумом 100.

Возможность river_emittable

Если сущность поддерживает активность в river, это теперь контролируется установкой возможности river_emittable. Обязательно добавьте это в конфигурацию capabilities в вашем elgg-plugin.php.

Абстрактный ElggObject

The ElggObject class is now abstract and it is required to have your own extensions of this class for each custom object.

Событие response

Тип события response и ajax_response был изменён. Помимо специальных случаев для действий и ответов ajax, прежний path был заменён на route_name для независимости от пути. Событие ajax_response было заменено событием ajax_results для влияния только на данные, а не на полный ответ. Возможно, вам потребуется обновить ваши обработчики событий.

Маршрут Ajax

Определение маршрута ajax было изменено. segments был разделён на type и segments. Возможно, вам потребуется обновить генерацию ваших URL.

Уведомления

Следующие обработчики уведомлений были перемещены и переименованы:

  • Elgg\Notifications\CreateCommentEventHandler перемещён в Elgg\Notifications\Handlers\CreateComment

  • Elgg\Notifications\MakeAdminUserEventHandler перемещён в Elgg\Notifications\Handlers\MakeAdminUser

  • Elgg\Notifications\MentionsEventHandler перемещён в Elgg\Notifications\Handlers\Mentions

  • Elgg\Notifications\RemoveAdminUserEventHandler перемещён в Elgg\Notifications\Handlers\RemoveAdminUser

  • Elgg\Notifications\UnbanUserEventHandler перемещён в Elgg\Notifications\Handlers\UnbanUser

Следующие обработчики событий, связанные с уведомлениями, были перемещены и переименованы:

  • Elgg\Notifications\CreateContentEventHandler перемещён в Elgg\Notifications\Events\CreateContent

  • Elgg\Notifications\EnqueueEventHandler перемещён в Elgg\Notifications\Events\Enqueue

  • Elgg\Notifications\MentionsEnqueueEventHandler перемещён в Elgg\Notifications\Events\MentionsEnqueue

Теперь возможно иметь несколько обработчиков уведомлений для одного и того же действия. Примером может быть 'ban', 'user', где вам нужно одно уведомление пользователю, который блокируется, и одно уведомление администраторам сайта о том, что пользователь был заблокирован. Это можно было бы обработать в одном обработчике уведомлений, но это требует создания разного сообщения в зависимости от получателя. Наличие 2 отдельных обработчиков уведомлений упростит эту задачу.

Из-за этого изменения параметры функции для elgg_unregister_notification_event() были изменены. Теперь вам также нужно предоставить $handler, который является обработчиком уведомлений, который вы хотите отменить.

Ещё одно изменение параметров функций как elgg_register_notification_event(), так и elgg_unregister_notification_event() заключается в том, что array $actions был заменён на одиночный string $action.

Панель добавления виджетов

Маршрут для панели добавления виджетов был заменён на ajax-представление.

Действия

admin/site/flush_cache был переименован в admin/site/cache/clear для согласованности с другими действиями кэша.

События

Устаревшее событие forward было удалено в пользу события response.

Изменения в плагинах

Страницы сайта / Внешние страницы

Этот плагин был переписан. Наиболее важные изменения:

  • Отдельные подтипы для каждой страницы были объединены в один подтип external_page

  • Действие expages/edit было заменено на общий контроллер EntityEditAction

  • Поля сущности ElggExternalPage доступны в сервисе полей

  • Дополнительные внешние страницы могут быть расширены через событие 'names', 'externalpages'

Определения маршрутов групп

В определении маршрута группы мы удалили переменную subpage для следующих маршрутов:

  • collection:object:blog:group

  • collection:object:bookmarks:group

  • collection:object:page:group

Это может сломать избранные ссылки пользователей на эти страницы.

The route definition requests:group:group has been renamed to collection:user:user:group_requests for consistency with it’s purpose and other routes within the Groups plugin.

Группы

Форма и действие group/edit теперь используют единственное значение параметра для owner_guid при выборе другого владельца группы.

Лайки

По умолчанию только владельцы контента могут видеть, кто лайкнул их контент. Это можно сделать публичным с помощью новой настройки плагина.

Участники

Названия некоторых маршрутов были изменены для соответствия предложениям по именованию маршрутов

  • collection:user:user был изменён на collection:user:user:all

  • search:user:user был изменён на collection:user:user:search

В соответствии с изменениями названий маршрутов некоторые языковые ключи были переименованы.

Сообщения

Параметр формы и действия messages/send recipients был переименован в recipient и теперь содержит единственное значение при выборе получателя.

Профиль

Поле профиля Twitter было удалено.

Веб-сервисы

Ответы от вызовов REST API теперь имеют заголовок Content-Disposition: attachment; filename="result.<view>".

Также коды состояния HTTP для ответов об ошибках лучше соответствуют стандарту HTTP и больше не являются 200 OK, а имеют различные коды состояния, такие как 404 Not Found, 403 Forbidden, 500 Internal Server Error и т.д.

Изменения в функциях

Изменённые типы возвращаемых значений функций

  • elgg_register_external_file() теперь возвращает void

  • elgg_register_pam_handler() теперь возвращает void

  • elgg_register_route() теперь возвращает void

  • elgg_unregister_external_file() теперь возвращает void

  • elgg_unregister_menu_item() теперь возвращает void

Изменённые типы возвращаемых значений функций классов

  • \Elgg\Traits\Di\ServiceFacade::name() now returns a string

Удалённые классы

  • \Elgg\Email\Address был удалён, используйте \Symfony\Component\Mime\Address

  • \Elgg\Email\HtmlPart.php был удалён

  • \Elgg\Email\PlainTextPart.php был удалён