С 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\CreateCommentElgg\Notifications\MakeAdminUserEventHandlerперемещён вElgg\Notifications\Handlers\MakeAdminUserElgg\Notifications\MentionsEventHandlerперемещён вElgg\Notifications\Handlers\MentionsElgg\Notifications\RemoveAdminUserEventHandlerперемещён вElgg\Notifications\Handlers\RemoveAdminUserElgg\Notifications\UnbanUserEventHandlerперемещён вElgg\Notifications\Handlers\UnbanUser
Следующие обработчики событий, связанные с уведомлениями, были перемещены и переименованы:
Elgg\Notifications\CreateContentEventHandlerперемещён вElgg\Notifications\Events\CreateContentElgg\Notifications\EnqueueEventHandlerперемещён вElgg\Notifications\Events\EnqueueElgg\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:groupcollection:object:bookmarks:groupcollection: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:allsearch: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()теперь возвращает voidelgg_register_pam_handler()теперь возвращает voidelgg_register_route()теперь возвращает voidelgg_unregister_external_file()теперь возвращает voidelgg_unregister_menu_item()теперь возвращает void
Изменённые типы возвращаемых значений функций классов
\Elgg\Traits\Di\ServiceFacade::name()now returns astring
Удалённые классы
\Elgg\Email\Addressбыл удалён, используйте\Symfony\Component\Mime\Address\Elgg\Email\HtmlPart.phpбыл удалён\Elgg\Email\PlainTextPart.phpбыл удалён