С 3.x на 4.0

Composer

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

Для совместимости с PHP 8 нам пришлось увеличить минимальную версию PHP до 7.4. Версии PHP < 7.4 уже достигли конца жизненного цикла.

Проект Composer

Корень проекта composer больше не обрабатывается как полуфункциональный плагин. Языки из директории languages больше не импортируются, представления из директории views больше не регистрируются, сервисы PHP DI из elgg-services.php больше не регистрируются, и файл start.php больше не включается.

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

Doctrine DBAL

Elgg заменил v2 на v3 зависимости doctrine/dbal. Одним из наиболее заметных изменений является то, что если вы работаете с QueryBuilders и используете функцию $qb->fetch(), вы больше не получите объект, а массив. Если вы хотите, чтобы ваши строки были используемы как классы, вы можете использовать elgg()->db->getData($qb). Ещё одно важное изменение: если вы предоставляете свои собственные параметры запроса, вы больше не должны добавлять двоеточие к ключам в параметрах, но всё ещё должны делать это в запросе.

PHP-DI

Эта функция была обновлена для использования последней версии PHP-DI. Наиболее заметное критическое изменение для Elgg — необходимость изменить определение сервиса вашего плагина для использования \DI\create() вместо \DI\object().

ZendMail заменён на LaminasMail

Из-за устаревания библиотеки Zend\Mail и её замены на Laminas\Mail все ссылки были обновлены.

Удалённые зависимости composer

  • bower-asset/jquery-treeview связанные js и css больше не доступны в системе

  • bower-asset/jquery.imgareaselect связанные js и css больше не доступны в системе

  • npm-asset/formdata-polyfill все современные браузеры поддерживают, больше нет необходимости в полифиле

  • npm-asset/jquery-form используйте нативную функциональность FormData

  • npm-asset/weakmap-polyfill все современные браузеры поддерживают, больше нет необходимости в полифиле

  • simpletest/simpletest

JavaScript

AJAX

Следующие вспомогательные функции Ajax были удалены в пользу их аналогов в асинхронном модуле elgg/Ajax. * elgg.action() * elgg.get() * elgg.getJSON() * elgg.post()

Функция ajax elgg.api была перемещена в функцию executeMethod в асинхронном модуле elgg/webservices в плагине webservices. Другие функции и атрибуты elgg.ajax были удалены из системы. Также устаревшая обработка вызовов ajax была удалена из системы.

Классы

Логика JavaScript для автоматической загрузки некоторого JavaScript для вашего плагина и регистрации хуков через класс Elgg/Plugin была удалена из системы. Эта функциональность никогда не использовалась ядром и редко встречалась в плагинах. Используйте загружаемый через AMD JavaScript или расширяйте elgg.js для всегда загружаемого JavaScript.

Класс JavaScript ElggPriorityList был удалён из системы.

Системные хуки

Модули AMD для elgg/init и elgg/ready были удалены. Хук init, system всё ещё доступен, но имеет смысл полагаться на этот хук только из библиотек js, не загружаемых через AMD. Триггеры boot, system и ready, system были удалены из системы. Замените на init, system для того же эффекта.

jQuery

Библиотека jQuery была обновлена до последней версии (v3.5.x). Это крупное обновление по сравнению с версией, используемой в Elgg 3.x. Для получения информации о том, что изменилось между этими релизами, вам следует ознакомиться с сайтом jQuery.

jQuery UI

Библиотека jQuery UI была обновлена до v1.12.x. Библиотека больше не загружается полностью по умолчанию. Если вам нужно использовать функции из библиотеки, вы можете подключить их в своём собственном скрипте. Например, чтобы иметь возможность использовать функциональность сортировки, выполните следующие действия:

require('jquery-ui/widgets/sortable');

// or in your own AMD script
define(['jquery-ui/widgets/sortable'], function() {
        // use the sortable
});

Различные изменения JS

  • Модуль AMD elgg/widgets больше не возвращает объект и больше не требует вызова init на модуле

Уведомления

Обработка уведомлений до Elgg 1.9 была удалена. Связанные функции и хуки больше не существуют.

Подписки

Отношение в базе данных, которое хранит метод подписки для уведомлений, было изменено с notifymethod на notify:method.

Множественные получатели

ElggEmail теперь поддерживает множественных получателей в To, Cc и Bcc. Связанные функции получения, такие как getTo(), теперь всегда будут возвращать массив.

Настройки

В \ElggUser::setNotificationSetting() и \ElggUser::getNotificationSettings() было введено универсальное хранилище для предпочтений уведомлений; настройки уведомлений теперь имеют „цель“.

Например, group_join можно использовать для управления подпиской по умолчанию, которую вы получаете с группой при вступлении в группу.

Плагин Notifications имеет универсальную обработку отображения и сохранения настроек. Чтобы отобразить настройку, расширьте представление notifications/settings/records (множественное число) представлением, которое использует notifications/settings/record (единственное число).

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

Управление предпочтениями уведомлений для добавления новых пользователей в коллекцию друзей было удалено.

Приветствие и подпись уведомления

Чтобы иметь возможность использовать более универсальное приветствие и подпись для исходящих почтовых уведомлений, мы удалили эти тексты из различных строк перевода и переместили их в универсальные переводы. Это означает, что вам нужно обновить ваши переводы, чтобы отразить новый текст, а также проверить ваш код на использование уведомлений, где вы предоставляете свой собственный текст приветствия или подписи. Вы можете узнать больше об этом новом поведении в Уведомления.

Плагин Notifications

Плагин Notifications был удалён. Все функции плагина теперь являются частью ядра Elgg. Некоторые страницы (например, настройки уведомлений группы) были перемещены в соответствующий плагин.

Это означает, что обработчики событий, обработчики хуков, действия, представления и языковые ключи были (пере)мещены или переименованы.

Обработка событий уведомлений

Хуки уведомлений больше не получают параметр origin.

Уведомление сайта

Плагин уведомлений сайта теперь по умолчанию отображает тему уведомления. Если уведомление сайта было создано с помощью фабричной функции SiteNotification::factory(), больше исходной информации об уведомлении сохраняется с уведомлением сайта:

  • Тема уведомления subject сохраняется в title

  • Краткое содержание уведомления summary сохраняется в summary

  • Тело уведомления body сохраняется в description

Разделение OkResponse, ErrorResponse и RedirectResponse

Классы Elgg\Http\ErrorResponse и Elgg\Http\RedirectResponse были расширениями Elgg\Http\OkReponse, что усложняло валидацию ответов (например, в хуках). Классы были разделены для более простой и понятной проверки.

Все классы теперь расширяют Elgg\Http\Response и реализуют Elgg\Http\ReponseBuilder. Код ошибки HTTP по умолчанию при использовании elgg_error_response() был изменён на возврат статуса 400.

Модель данных

Изменения схемы

  • Колонки access_id, owner_guid и enabled в таблице metadata были удалены

  • Колонка enabled в таблице river была удалена

  • Колонка relationship в таблице entity_relationships теперь имеет максимальную длину 255 символов (ранее было 50)

Атрибуты ElggEntity

Установка атрибутов type, subtype и enabled объекта ElggEntity больше невозможна через магический сеттер. Изменение type больше невозможно, используйте правильный базовый класс для вашей сущности (например, ElggObject, ElggGroup или ElggUser).

Для изменения subtype используйте функцию setSubtype($subtype)

// this no longer works and throws an \Elgg\Exceptions\InvalidArgumentException
$object = new ElggObject();
$object->subtype = 'my_subtype';

// The correct use is
$object->setSubtype('my_subtype');

Для изменения состояния enabled сущности используйте соответствующие функции

// this no longer works and throws an \Elgg\Exceptions\InvalidArgumentException
$object = new ElggObject();
$object->enabled = 'no';

// The correct use is
$object->enable(); // to enable
$object->disable(); // to disable

Атрибуты ElggUser

Установка метаданных admin и banned объекта ElggUser больше невозможна через магический сеттер.

Для изменения состояния admin используйте функции makeAdmin() и removeAdmin()

// this no longer works and throws an \Elgg\Exceptions\InvalidArgumentException
$user = new ElggUser()
$user->admin = 'yes';

// The correct use is
$user->makeAdmin(); // to give the admin role
$user->removeAdmin(); // to remove the admin role

Для изменения состояния banned используйте функции ban() и unban()

// this no longer works and throws an \Elgg\Exceptions\InvalidArgumentException
$user = new ElggUser()
$user->banned = 'yes';

// The correct use is
$user->ban(); // to ban the user
$user->unban(); // to unban the user

Разработка плагинов

Инициализация плагинов

Следующие файлы больше не подключаются при инициализации плагина:

  • activate.php используйте PluginBootstrap->activate()

  • deactivate.php используйте PluginBootstrap->deactivate()

  • views.php используйте elgg-plugin.php

  • start.php используйте elgg-plugin.php и/или PluginBootstrap

Манифест плагина

Файл манифеста плагина больше не используется. Возможности манифеста были удалены или перемещены в другие места.

Больше невозможно требовать определённые настройки php ini.

  • требование версии php -> composer require

  • требование расширения php -> composer require

  • конфликты плагинов -> composer conflicts

  • требование плагина -> elgg-plugin

  • требование позиции плагина -> elgg-plugin

  • версия плагина -> elgg-plugin

  • активация плагина при установке -> elgg-plugin

  • имя плагина -> elgg-plugin

  • описание плагина -> composer.json

  • категории плагина -> composer.json

  • лицензия плагина -> composer.json

  • ссылка на репозиторий плагина -> composer.json

  • ссылка на баг-трекер плагина -> composer.json

  • ссылка на домашнюю страницу плагина -> composer.json

  • авторы/участники плагина -> composer.json

Настраиваемые конфигурации полей

Некоторые плагины имели возможность настраивать поля сущностей в конфигурации. Эти возможности были заменены центральным сервисом, который предоставляет механизм запроса настраиваемой конфигурации полей для определённого типа/подтипа.

Вы можете запросить эти конфигурации, используя следующий код:

$fields = elgg()->fields->get('<entity_type>', '<entity_subtype');

Результатом будет массив с конфигурациями полей, пригодными для использования в elgg_view_field($field)

Следующая связанная функциональность была заменена этим новым способом:

  • Конфигурация для pages больше не доступна в elgg_get_config('pages'), используйте elgg()->fields->get('object', 'page')

  • Конфигурация для group больше не доступна в elgg_get_config('group'), используйте elgg()->fields->get('group', 'group')

  • Конфигурация для profile_fields больше не доступна в elgg_get_config('profile_fields'), используйте elgg()->fields->get('user', 'user')

  • Установка конфигурации для pages, group и user:profile через elgg_set_config больше невозможна. Используйте хук-колбэк для fields, <entity_type>:<entity_subtype>.

  • Хук profile:fields, group был заменён новым хуком fields, group:group

  • Хук profile:fields, user был заменён новым хуком fields, user:user

Регистрация имён метаданных тегов

Из-за различных ограничений этой реализации она была удалена из системы. Были удалены следующие связанные функции API:

  • elgg_get_registered_tag_metadata_names()

  • elgg_register_tag_metadata_name()

  • elgg_unregister_tag_metadata_name()

Если вам нужно, чтобы определённые поля были доступны для поиска, вам необходимо зарегистрировать их с помощью соответствующих хуков search:fields. Соответствующие языковые ключи тегов tagnames:xxx больше не регистрируются в системе.

Функция ElggEntity::getTags() теперь по умолчанию будет возвращать только метаданные тегов с именем tags. Если вы хотите проверить дополнительные поля, содержащие теги, вам нужно запросить это явно.

Виджеты по умолчанию

Магическая обработка создания виджетов по умолчанию была упрощена. Теперь вам необходимо зарегистрировать колбэк Elgg\Widgets\CreateDefaultWidgetsHandler на событие, когда вы хотите создать виджеты по умолчанию. Конфигурация default_widget_info больше не присутствует в системе. Используйте хук get_list, default_widgets для получения значения.

Вам также необходимо обновить данные в обработчике хука get_list, default_widgets, чтобы возвращать event_name (ранее event) и event_type.

Разрешения контейнера

Параметры функции ElggEntity::canWriteToContainer() теперь требуют передачи $type и $subtype. Это необходимо для предоставления дополнительной информации результирующему хуку, чтобы можно было определить, разрешён ли пользователю доступ на запись в контейнер.

Плагины

Плагин Activity

Этот плагин получил давно необходимый рефакторинг. Различные страницы (all/owner/friends) теперь имеют собственные представления ресурсов и списков.

Плагин Diagnostics

Этот плагин был удалён, но действие для генерации отчёта всё ещё доступно. Вы можете найти его на странице администратора Information/Server.

Плагин Discussions

  • Этот плагин больше не добавляет вкладку в меню фильтра на страницах групп

  • Элемент меню сайта discussions теперь всегда присутствует

Плагин Search

Вывод результатов поиска больше не использует вспомогательный класс Elgg\Search\Formatter для подготовки содержимого результатов. Эта логика была полностью перенесена в представления.

Связанные функции prepareEntity и getSearchView в классе Elgg\Search\Service были удалены.

Хук search:format, entity был удалён.

Плагин Web services

Плагин Web Services получил полный рефакторинг, это в основном связано с внутренними механизмами плагина.

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

  • ElggHMACCache был заменён на _elgg_services()->hmacCacheTable (только для внутреннего использования)

  • Elgg\Notifications\Event был заменён на Elgg\Notifications\SubscriptionNotificationEvent

Удалённые функции

  • create_api_user() была заменена на _elgg_services()->apiUsersTable->createApiUser()

  • create_user_token() была заменена на _elgg_services()->usersApiSessions->createToken()

  • get_api_user() была заменена на _elgg_services()->apiUsersTable->getApiUser()

  • get_standard_api_key_array() используйте \Elgg\WebServices\ElggApiClient::setApiKeys()

  • get_user_tokens() была заменена на _elgg_services()->usersApiSessions->getUserTokens()

  • pam_auth_session()

  • remove_api_user() была заменена на _elgg_services()->apiUsersTable->removeApiUser()

  • remove_expired_user_tokens() была заменена на _elgg_services()->usersApiSessions->removeExpiresTokens()

  • remove_user_token() была заменена на _elgg_services()->usersApiSessions->removeToken()

  • send_api_call() используйте \Elgg\WebServices\ElggApiClient

  • send_api_get_call() используйте \Elgg\WebServices\ElggApiClient

  • send_api_post_call() используйте \Elgg\WebServices\ElggApiClient

  • service_handler()

  • validate_user_token() была заменена на _elgg_services()->usersApiSessions->validateToken()

  • ws_page_handler()

  • ws_rest_handler() была заменена на \Elgg\WebServices\RestServiceController

Различные изменения

  • Значение конфигурации для servicehandler было удалено

  • В некоторых крайних случаях значение параметра API по умолчанию не будет применено

Функции с типизацией

Следующие функции теперь имеют типизированные аргументы, это может вызывать ошибки TypeError. Также некоторые функции классов имеют типизированные возвращаемые значения, и вам следует обновить определение ваших функций.

Параметры функций классов

  • ElggEntity::setLatLong() теперь требует float для $lat и $long

  • ElggUser::setNotificationSetting() теперь требует string для $method и bool для $enabled

  • Elgg\Database\Seeds\Seed::__construct() теперь требует int для $limit

  • Elgg\Http\ErrorResponse::__construct() теперь требует int для $status_code

  • Elgg\Http\OkResponse::__construct() теперь требует int для $status_code

  • Elgg\Http\RedirectResponse::__construct() теперь требует int для $status_code

  • Elgg\I18n\Translator::getInstalledTranslations() теперь требует bool для $calculate_completeness

  • SiteNotification::setActor() теперь требует ElggEntity для $entity

  • SiteNotification::setURL() теперь требует string для $url

  • SiteNotification::setRead() теперь требует bool для $read

Тип возвращаемого значения функций классов

  • Elgg\Upgrade\Batch::getVersion() теперь требует возвращаемое значение типа int

  • Elgg\Upgrade\Batch::shouldBeSkipped() теперь требует возвращаемое значение типа bool

  • Elgg\Upgrade\Batch::needsIncrementOffset() теперь требует возвращаемое значение типа bool

  • Elgg\Upgrade\Batch::countItems() теперь требует возвращаемое значение типа int

  • Elgg\Upgrade\Batch::run() теперь требует возвращаемое значение типа Elgg\Upgrade\Result

Параметры функций библиотеки

  • add_user_to_access_collection() теперь требует int для $user_guid и $collection_id

  • can_edit_access_collection() теперь требует int для $collection_id и $user_guid

  • create_access_collection() теперь требует string для $name и int для $owner_guid

  • delete_access_collection() теперь требует int для $collection_id

  • elgg_action_exists() теперь требует string для $action

  • elgg_add_admin_notice() теперь требует string для $id и $message

  • elgg_admin_notice_exists() теперь требует string для $id

  • elgg_annotation_exists() теперь требует int для $entity_guid, string для $name и int для $owner_guid

  • elgg_delete_admin_notice() теперь требует string для $id

  • elgg_delete_annotation_by_id() теперь требует int для $id

  • elgg_deprecated_notice() теперь требует string для $msg и $dep_version

  • elgg_error_response() теперь требует int для $status_code

  • elgg_get_access_collections() теперь требует array для $options

  • elgg_get_annotation_from_id() теперь требует int для $id

  • elgg_get_subscriptions_for_container() теперь требует int для $container_guid

  • elgg_get_plugin_from_id() теперь требует string для $plugin_id

  • elgg_get_plugin_setting() теперь требует string для $name и $plugin_id

  • elgg_get_plugin_user_setting() теперь требует string для $name и $plugin_id и int для $user_guid

  • elgg_get_plugins() теперь требует string для $status

  • elgg_get_river_item_from_id() теперь требует int для $id

  • elgg_list_annotations() теперь требует array для $options

  • elgg_ok_response() теперь требует int для $status_code

  • elgg_plugin_exists() теперь требует string для $plugin_id

  • elgg_redirect_response() теперь требует int для $status_code

  • elgg_register_action() теперь требует string для $action и $access

  • elgg_send_email() теперь требует \Elgg\Email для $email

  • elgg_set_plugin_user_setting() теперь требует string для $name и $plugin_id и int для $user_guid

  • elgg_unregister_action() теперь требует string для $action

  • get_access_array() теперь требует int для $user_guid

  • get_access_collection() теперь требует int для $collection_id

  • get_entity_statistics() теперь требует int для $owner_guid

  • get_members_of_access_collection() теперь требует int для $collection_id и bool для $guids_only

  • get_readable_access_level() теперь требует int для $entity_access_id

  • get_write_access_array() теперь требует int для $user_guid и bool для $flush

  • has_access_to_entity() теперь требует ElggEntity для $entity и ElggUser для $user

  • remove_user_from_access_collection() теперь требует int для $user_guid и $collection_id

  • system_log_get_log() теперь требует array для $options

  • messageboard_add() теперь требует ElggUser, ElggUser, string и int

  • elgg_register_external_file() теперь требует, чтобы все аргументы были типа string

  • elgg_unregister_external_file() теперь требует, чтобы все аргументы были типа string

  • elgg_load_external_file() теперь требует, чтобы все аргументы были типа string

  • elgg_get_loaded_external_files() теперь требует, чтобы все аргументы были типа string

Изменения в параметрах функций

Функции классов

  • Elgg\Http\ResponseBuilder::setStatusCode() больше не имеет значения по умолчанию

  • ElggEntity::canWriteToContainer() больше не имеет значений по умолчанию для $type и $subtype, но они теперь обязательны

Функции библиотеки

  • elgg_get_page_owner_guid() больше не принимает $guid в качестве параметра

  • get_access_array() больше не принимает $flush в качестве параметра

  • elgg_register_external_file() больше не принимает $priority в качестве параметра

Переименованные колбэки обработчиков хуков/событий

Требуется особое внимание, если вы отменяете регистрацию колбэков в ваших плагинах, так как вам может потребоваться обновить ваш код.

Ядро

  • access_friends_acl_get_name() изменено на Elgg\Friends\AclNameHandler::class

  • access_friends_acl_add_friend() изменено на Elgg\Friends\AddToAclHandler::class

  • access_friends_acl_create() изменено на Elgg\Friends\CreateAclHandler::class

  • access_friends_acl_remove_friend() изменено на Elgg\Friends\RemoveFromAclHandler::class

  • _elgg_add_admin_widgets() изменено на Elgg\Widgets\CreateAdminWidgetsHandler::class

  • _elgg_admin_check_admin_validation() изменено на Elgg\Users\Validation::checkAdminValidation()

  • _elgg_admin_header_menu() изменено на Elgg\Menus\AdminHeader::register() и Elgg\Menus\AdminHeader::registerMaintenance()

  • _elgg_admin_footer_menu() изменено на Elgg\Menus\AdminFooter::registerHelpResources()

  • _elgg_admin_notify_admins_pending_user_validation() изменено на Elgg\Users\Validation::notifyAdminsAboutPendingUsers()

  • _elgg_admin_page_menu() изменено на Elgg\Menus\Page::registerAdminAdminister() и Elgg\Menus\Page::registerAdminConfigure() и Elgg\Menus\Page::registerAdminInformation()

  • _elgg_admin_page_menu_plugin_settings() изменено на Elgg\Menus\Page::registerAdminPluginSettings()

  • _elgg_admin_prepare_admin_notification_make_admin() изменено на Elgg\Notifications\MakeAdminUserEventHandler

  • _elgg_admin_prepare_admin_notification_remove_admin() изменено на Elgg\Notifications\RemoveAdminUserEventHandler

  • _elgg_admin_prepare_user_notification_make_admin() изменено на Elgg\Notifications\MakeAdminUserEventHandler

  • _elgg_admin_prepare_user_notification_remove_admin() изменено на Elgg\Notifications\RemoveAdminUserEventHandler

  • _elgg_admin_save_notification_setting() изменено на Elgg\Users\Settings::setAdminValidationNotification()

  • _elgg_admin_set_registration_forward_url() изменено на Elgg\Users\Validation::setRegistrationForwardUrl()

  • _elgg_admin_user_unvalidated_bulk_menu() изменено на Elgg\Menus\UserUnvalidatedBulk::registerActions()

  • _elgg_admin_user_validation_login_attempt() изменено на Elgg\Users\Validation::preventUserLogin()

  • _elgg_admin_user_validation_notification() изменено на Elgg\Users\Validation::notifyUserAfterValidation()

  • _elgg_admin_upgrades_menu() изменено на Elgg\Menus\Filter::registerAdminUpgrades()

  • действия _elgg_cache_init() объединены в Elgg\Application\SystemEventHandlers::ready()

  • _elgg_clear_caches() изменено на Elgg\Cache\EventHandlers::clear()

  • _elgg_comments_access_sync() изменено на Elgg\Comments\SyncContainerAccessHandler::class

  • _elgg_comments_container_permissions_override() изменено на Elgg\Comments\ContainerPermissionsHandler::class

  • _elgg_comments_permissions_override() изменено на Elgg\Comments\EditPermissionsHandler::class

  • _elgg_comments_prepare_content_owner_notification() изменено на Elgg\Notifications\CreateCommentEventHandler

  • _elgg_comments_prepare_notification() изменено на Elgg\Notifications\CreateCommentEventHandler

  • _elgg_comments_social_menu_setup() изменено на Elgg\Menus\Social::registerComments()

  • _elgg_create_default_widgets() изменено на Elgg\Widgets\CreateDefaultWidgetsHandler::class

  • _elgg_create_notice_of_pending_upgrade() изменено на Elgg\Upgrade\CreateAdminNoticeHandler::class

  • _elgg_db_register_seeds() изменено на Elgg\Database\RegisterSeedsHandler::class

  • _elgg_disable_caches() изменено на Elgg\Cache\EventHandlers::disable()

  • _elgg_default_widgets_permissions_override() изменено на Elgg\Widgets\DefaultWidgetsContainerPermissionsHandler::class

  • _elgg_disable_password_autocomplete() изменено на Elgg\Input\DisablePasswordAutocompleteHandler::class

  • _elgg_enable_caches() изменено на Elgg\Cache\EventHandlers::enable()

  • _elgg_filestore_move_icons() изменено на Elgg\Icons\MoveIconsOnOwnerChangeHandler::class

  • _elgg_filestore_touch_icons() изменено на Elgg\Icons\TouchIconsOnAccessChangeHandler::class

  • _elgg_head_manifest() изменено на Elgg\Views\AddManifestLinkHandler::class

  • _elgg_annotations_default_menu_items() изменено на Elgg\Menus\Annotation::registerDelete()

  • _elgg_walled_garden_menu() изменено на Elgg\Menus\WalledGarden::registerHome()

  • _elgg_site_menu_init() изменено на Elgg\Menus\Site::registerAdminConfiguredItems()

  • _elgg_site_menu_setup() изменено на Elgg\Menus\Site::reorderItems()

  • _elgg_entity_menu_setup() изменено на Elgg\Menus\Entity::registerEdit() и Elgg\Menus\Entity::registerDelete()

  • _elgg_entity_navigation_menu_setup() изменено на Elgg\Menus\EntityNavigation::registerPreviousNext()

  • _elgg_enqueue_notification_event() изменено на Elgg\Notifications\EnqueueEventHandler::class

  • _elgg_groups_container_override() изменено на Elgg\Groups\MemberPermissionsHandler::class

  • _elgg_groups_comment_permissions_override() изменено на Elgg\Comments\GroupMemberPermissionsHandler::class

  • _elgg_htmlawed_filter_tags() изменено на Elgg\Input\ValidateInputHandler::class

  • _elgg_invalidate_caches() изменено на Elgg\Cache\EventHandlers::invalidate()

  • _elgg_widget_menu_setup() изменено на Elgg\Menus\Widget::registerEdit() и Elgg\Menus\Widget::registerDelete()

  • _elgg_login_menu_setup() изменено на Elgg\Menus\Login::registerRegistration() и Elgg\Menus\Widget::registerResetPassword()

  • _elgg_nav_public_pages() изменено на Elgg\WalledGarden\ExtendPublicPagesHandler::class

  • _elgg_notifications_cron() изменено на Elgg\Notifications\ProcessQueueCronHandler::class

  • _elgg_notifications_smtp_default_message_id_header() изменено на Elgg\Email\DefaultMessageIdHeaderHandler::class

  • _elgg_notifications_smtp_thread_headers() изменено на Elgg\Email\ThreadHeadersHandler::class

  • _elgg_rebuild_public_container() изменено на Elgg\Cache\EventHandlers::rebuildPublicContainer()

  • _elgg_river_update_object_last_action() изменено на Elgg\River\UpdateLastActionHandler::class

  • _elgg_rss_menu_setup() изменено на Elgg\Menus\Footer::registerRSS()

  • _elgg_plugin_entity_menu_setup() изменено на Elgg\Menus\Entity::registerPlugin()

  • _elgg_purge_caches() изменено на Elgg\Cache\EventHandlers::purge()

  • _elgg_river_menu_setup() изменено на Elgg\Menus\River::registerDelete()

  • _elgg_save_notification_user_settings() изменено на Elgg\Notifications\SaveUserSettingsHandler::class

  • _elgg_session_cleanup_persistent_login() изменено на Elgg\Users\CleanupPersistentLoginHandler::class

  • _elgg_set_lightbox_config() изменено на Elgg\Javascript\SetLightboxConfigHandler::class

  • _elgg_set_user_default_access() изменено на Elgg\Users\Settings::setDefaultAccess()

  • _elgg_set_user_email() изменено на Elgg\Users\Settings::setEmail()

  • _elgg_set_user_password() изменено на Elgg\Users\Settings::setPassword()

  • _elgg_set_user_language() изменено на Elgg\Users\Settings::setLanguage()

  • _elgg_set_user_name() изменено на Elgg\Users\Settings::setName()

  • _elgg_set_user_username() изменено на Elgg\Users\Settings::setUsername()

  • _elgg_send_email_notification() изменено на Elgg\Notifications\SendEmailHandler::class

  • _elgg_upgrade_completed() изменено на Elgg\Upgrade\UpgradeCompletedAdminNoticeHandler::class

  • _elgg_upgrade_entity_menu() изменено на Elgg\Menus\Entity::registerUpgrade()

  • _elgg_user_ban_notification() изменено на Elgg\Users\BanUserNotificationHandler::class

  • _elgg_user_get_subscriber_unban_action() изменено на Elgg\Notifications\UnbanUserEventHandler

  • _elgg_user_prepare_unban_notification() изменено на Elgg\Notifications\UnbanUserEventHandler

  • _elgg_user_settings_menu_register() изменено на Elgg\Menus\Page::registerUserSettings() и Elgg\Menus\Page::registerUserSettingsPlugins()

  • _elgg_user_settings_menu_prepare() изменено на Elgg\Menus\Page::cleanupUserSettingsPlugins()

  • elgg_user_hover_menu() изменено на Elgg\Menus\UserHover::registerAvatarEdit() и Elgg\Menus\UserHover::registerAdminActions()

  • _elgg_user_set_icon_file() изменено на Elgg\Icons\SetUserIconFileHandler::class

  • _elgg_user_title_menu() изменено на Elgg\Menus\Title::registerAvatarEdit()

  • _elgg_user_page_menu() изменена на Elgg\Menus\Page::registerAvatarEdit()

  • _elgg_user_topbar_menu() изменена на Elgg\Menus\Topbar::registerUserLinks()

  • _elgg_user_unvalidated_menu() изменена на Elgg\Menus\UserUnvalidated::register()

  • _elgg_views_amd() изменена на Elgg\Views\AddAmdModuleNameHandler::class

  • _elgg_views_file_help_upload_limit() изменена на Elgg\Input\AddFileHelpTextHandler::class

  • _elgg_views_init() объединена в Elgg\Application\SystemEventHandlers::init()

  • _elgg_views_minify() изменена на Elgg\Views\MinifyHandler::class

  • _elgg_views_prepare_favicon_links() изменена на Elgg\Page\AddFaviconLinksHandler::class

  • _elgg_views_preprocess_css() изменена на Elgg\Views\PreProcessCssHandler::class

  • _elgg_views_send_header_x_frame_options() изменена на Elgg\Page\SetXFrameOptionsHeaderHandler::class

  • _elgg_walled_garden_init() объединена в Elgg\Application\SystemEventHandlers::initLate()

  • _elgg_walled_garden_remove_public_access() изменена на Elgg\WalledGarden\RemovePublicAccessHandler::class

  • _elgg_widgets_widget_urls() изменена на Elgg\Widgets\EntityUrlHandler::class

  • elgg_prepare_breadcrumbs() изменена на Elgg\Page\PrepareBreadcrumbsHandler::class

  • Elgg\Profiler::handleOutput изменена на Elgg\Debug\Profiler::class

  • users_init объединена в Elgg\Application\SystemEventHandlers::initLate()

Плагины

  • _developers_entity_menu изменена на Elgg\Developers\Menus\Entity::registerEntityExplorer

  • _developers_page_menu изменена на Elgg\Developers\Menus\Page::register

  • _elgg_activity_owner_block_menu изменена на Elgg\Activity\Menus\OwnerBlock::registerUserItem и Elgg\Activity\Menus\OwnerBlock::registerGroupItem

  • blog_archive_menu_setup изменена на Elgg\Blog\Menus\BlogArchive::register

  • blog_owner_block_menu изменена на Elgg\Blog\Menus\OwnerBlock::registerUserItem и Elgg\Blog\Menus\OwnerBlock::registerGroupItem

  • blog_prepare_notification изменена на Elgg\Blog\Notifications\PublishBlogEventHandler

  • blog_register_db_seeds изменена на Elgg\Blog\Database::registerSeeds

  • bookmarks_footer_menu изменена на Elgg\Bookmarks\Menus\Footer::register

  • bookmarks_owner_block_menu изменена на Elgg\Bookmarks\Menus\OwnerBlock::registerUserItem и Elgg\Bookmarks\Menus\OwnerBlock::registerGroupItem

  • bookmarks_page_menu изменена на Elgg\Bookmarks\Menus\Page::register

  • bookmarks_prepare_notification изменена на Elgg\Bookmarks\Notifications\CreateBookmarksEventHandler

  • bookmarks_register_db_seeds изменена на Elgg\Bookmarks\Database::registerSeeds

  • ckeditor_longtext_id изменена на Elgg\CKEditor\Views::setInputLongTextIDViewVar

  • ckeditor_longtext_menu изменена на Elgg\CKEditor\Menus\LongText::registerToggler

  • dashboard_default_widgets изменена на Elgg\Dashboard\Widgets::extendDefaultWidgetsList

  • developers_log_events изменена на Elgg\Developers\HandlerLogger::trackEvent и Elgg\Developers\HandlerLogger::trackHook

  • diagnostics_basic_hook изменена на Elgg\Diagnostics\Reports::getBasic

  • diagnostics_globals_hook изменена на Elgg\Diagnostics\Reports::getGlobals

  • diagnostics_phpinfo_hook изменена на Elgg\Diagnostics\Reports::getPHPInfo

  • diagnostics_sigs_hook изменена на Elgg\Diagnostics\Reports::getSigs

  • discussion_comment_permissions изменена на Elgg\Discussions\Permissions::preventCommentOnClosedDiscussion

  • discussion_get_subscriptions изменена на Elgg\Discussions\Notifications::addGroupSubscribersToCommentOnDiscussionSubscriptions

  • discussion_owner_block_menu изменена на Elgg\Discussions\Menus\OwnerBlock::registerGroupItem

  • discussion_prepare_comment_notification изменена на Elgg\Discussions\Notifications::prepareCommentOnDiscussionNotification

  • discussion_prepare_notification изменена на Elgg\Discussions\Notifications\CreateDiscussionEventHandler

  • discussion_register_db_seeds изменена на Elgg\Discussions\Database::registerSeeds

  • Elgg\DevelopersPlugins\* изменена на Elgg\Developers\*

  • Elgg\Discussions\Menus::registerSiteMenuItem изменена на Elgg\Discussions\Menus\Site::register

  • Elgg\Discussions\Menus::filterTabs изменена на Elgg\Discussions\Menus\Filter::filterTabsForDiscussions

  • embed_longtext_menu изменена на Elgg\Embed\Menus\LongText::register

  • embed_select_tab изменена на Elgg\Embed\Menus\Embed::selectCorrectTab

  • embed_set_thumbnail_url изменена на Elgg\Embed\Icons::setThumbnailUrl

  • expages_menu_register_hook изменена на Elgg\ExternalPages\Menus\ExPages::register

  • file_handle_object_delete изменена на Elgg\File\Icons::deleteIconOnElggFileDelete

  • file_prepare_notification изменена на Elgg\File\Notifications\CreateFileEventHandler

  • file_register_db_seeds изменена на Elgg\File\Database::registerSeeds

  • file_set_custom_icon_sizes изменена на Elgg\File\Icons::setIconSizes

  • file_set_icon_file изменена на Elgg\File\Icons::setIconFile

  • file_set_icon_url изменена на Elgg\File\Icons::setIconUrl

  • file_owner_block_menu изменена на Elgg\File\Menus\OwnerBlock::registerUserItem и Elgg\File\Menus\OwnerBlock::registerGroupItem

  • _elgg_friends_filter_tabs изменена на Elgg\Friends\Menus\Filter::registerFilterTabs

  • _elgg_friends_page_menu изменена на Elgg\Friends\Menus\Page::register

  • _elgg_friends_register_access_type изменена на Elgg\Friends\Access::registerAccessCollectionType

  • _elgg_friends_setup_title_menu изменена на Elgg\Friends\Menus\Title::register

  • _elgg_friends_setup_user_hover_menu изменена на Elgg\Friends\Menus\UserHover::register

  • _elgg_friends_topbar_menu изменена на Elgg\Friends\Menus\Topbar::register

  • _elgg_friends_widget_urls изменена на Elgg\Friends\Widgets::setWidgetUrl

  • _elgg_send_friend_notification изменена на Elgg\Friends\Notifications::sendFriendNotification

  • Elgg\Friends\FilterMenu::addFriendRequestTabs изменена на Elgg\Friends\Menus\Filter::addFriendRequestTabs

  • Elgg\Friends\RelationshipMenu::addPendingFriendRequestItems изменена на Elgg\Friends\Menus\Relationship::addPendingFriendRequestItems

  • Elgg\Friends\RelationshipMenu::addPendingFriendRequestItems изменена на Elgg\Friends\Menus\Relationship::addPendingFriendRequestItems

  • Elgg\Friends\Relationships::createFriendRelationship изменена на Elgg\Friends\Relationships::removePendingFriendRequest

  • _groups_gatekeeper_allow_profile_page изменена на Elgg\Groups\Access::allowProfilePage

  • _groups_page_menu изменена на Elgg\Groups\Menus\Page::register

  • _groups_page_menu_group_profile изменена на Elgg\Groups\Menus\Page::registerGroupProfile

  • _groups_relationship_invited_menu изменена на Elgg\Groups\Menus\Relationship::registerInvitedItems

  • _groups_relationship_member_menu изменена на Elgg\Groups\Menus\Relationship::registerRemoveUser

  • _groups_relationship_membership_request_menu изменена на Elgg\Groups\Menus\Relationship::registerMembershipRequestItems

  • _groups_title_menu изменена на Elgg\Groups\Menus\Title::register

  • _groups_topbar_menu_setup изменена на Elgg\Groups\Menus\Topbar::register

  • groups_access_default_override изменена на Elgg\Groups\Access::overrideDefaultAccess

  • groups_create_event_listener изменена на Elgg\Groups\Group::createAccessCollection

  • groups_default_page_owner_handler изменена на Elgg\Groups\PageOwner::detectPageOwner

  • groups_entity_menu_setup изменена на Elgg\Groups\Menus\Entity::register и Elgg\Groups\Menus\Entity::registerFeature

  • groups_fields_setup изменена на Elgg\Groups\FieldsHandler

  • groups_members_menu_setup изменена на Elgg\Groups\Menus\GroupsMembers::register

  • groups_set_access_collection_name изменена на Elgg\Groups\Access::getAccessCollectionName

  • groups_set_url изменена на Elgg\Groups\Group::getEntityUrl

  • groups_setup_filter_tabs изменена на Elgg\Groups\Menus\Filter::registerGroupsAll

  • groups_update_event_listener изменена на Elgg\Groups\Group::updateGroup

  • groups_user_join_event_listener изменена на Elgg\Groups\Group::joinGroup

  • groups_user_leave_event_listener изменена на Elgg\Groups\Group::leaveGroup

  • groups_write_acl_plugin_hook изменена на Elgg\Groups\Access::getWriteAccess

  • invitefriends_add_friends изменена на Elgg\InviteFriends\Users::addFriendsOnRegister

  • invitefriends_register_page_menu изменена на Elgg\InviteFriends\Menus\Page::register

  • likes_permissions_check изменена на Elgg\Likes\Permissions::allowLikedEntityOwner

  • likes_permissions_check_annotate изменена на Elgg\Likes\Permissions::allowLikeOnEntity

  • likes_social_menu_setup изменена на Elgg\Likes\Menus\Social::register

  • members_register_filter_menu изменена на Elgg\Members\Menus\Filter::register

  • messages_can_edit изменена на Elgg\Messages\Permissions::canEdit

  • messages_can_edit_container изменена на Elgg\Messages\Permissions::canEditContainer

  • messages_purge изменена на Elgg\Messages\User::purgeMessages

  • messages_register_topbar изменена на Elgg\Messages\Menus\Topbar::register

  • messages_user_hover_menu изменена на Elgg\Messages\Menus\UserHover::register и Elgg\Messages\Menus\Title::register

  • notifications_update_collection_notify изменена на Elgg\Notifications\Relationships::updateUserNotificationsPreferencesOnACLChange

  • notifications_update_friend_notify изменена на Elgg\Friends\Relationships::applyFriendNotificationsSettings

  • notifications_relationship_remove изменена на Elgg\Friends\Relationships::deleteFriendNotificationSubscription и Elgg\Groups\Relationships::removeGroupNotificationSubscriptions

  • _notifications_page_menu изменена на Elgg\Notifications\Menus\Page::register

  • _notification_groups_title_menu изменена на Elgg\Notifications\Menus\Title::register

  • pages_container_permission_check изменена на Elgg\Pages\Permissions::allowContainerWriteAccess

  • pages_entity_menu_setup изменена на Elgg\Pages\Menus\Entity::register

  • pages_icon_url_override изменена на Elgg\Pages\Icons::getIconUrl

  • pages_owner_block_menu изменена на Elgg\Pages\Menus\OwnerBlock::registerUserItem и Elgg\Pages\Menus\OwnerBlock::registerGroupItem

  • pages_prepare_notification изменена на Elgg\Pages\Notifications\CreatePageEventHandler

  • pages_register_db_seeds изменена на Elgg\Pages\Database::registerSeeds

  • pages_set_revision_url изменена на Elgg\Pages\Extender::setRevisionUrl

  • pages_write_access_options_hook изменена на Elgg\Pages\Views::removeAccessPublic

  • pages_write_access_vars изменена на Elgg\Pages\Views::preventAccessPublic

  • pages_write_permission_check изменена на Elgg\Pages\Permissions::allowWriteAccess

  • Elgg\Pages\Menus::registerPageMenuItems изменена на Elgg\Pages\Menus\PagesNav::register

  • _profile_admin_page_menu изменена на Elgg\Profile\Menus\Page::registerAdminProfileFields

  • _profile_fields_setup изменена на Elgg\Profile\FieldsHandler

  • _profile_title_menu изменена на Elgg\Profile\Menus\Title::register

  • _profile_topbar_menu изменена на Elgg\Profile\Menus\Topbar::register

  • _profile_user_hover_menu изменена на Elgg\Profile\Menus\UserHover::register

  • _profile_user_page_menu изменена на Elgg\Profile\Menus\Page::registerProfileEdit

  • profile_default_widgets_hook изменена на Elgg\Profile\Widgets::getDefaultWidgetsList

  • reportedcontent_user_hover_menu изменена на Elgg\ReportedContent\Menus\UserHover::register

  • search_exclude_robots изменена на Elgg\Search\Site::preventSearchIndexing

  • search_output_tag изменена на Elgg\Search\Views::setSearchHref

  • site_notifications_register_entity_menu изменена на Elgg\SiteNotifications\Menus\Entity::register

  • site_notifications_send изменена на Elgg\SiteNotifications\Notifications::createSiteNotifications

  • _uservalidationbyemail_user_unvalidated_bulk_menu изменена на Elgg\UserValidationByEmail\Menus\UserUnvalidatedBulk::register

  • _uservalidationbyemail_user_unvalidated_menu изменена на Elgg\UserValidationByEmail\Menus\UserUnvalidated::register

  • uservalidationbyemail_after_registration_url изменена на Elgg\UserValidationByEmail\Response::redirectToEmailSent

  • uservalidationbyemail_check_manual_login изменена на Elgg\UserValidationByEmail\User::preventLogin

  • uservalidationbyemail_disable_new_user изменена на Elgg\UserValidationByEmail\User::disableUserOnRegistration

  • system_log_archive_cron изменена на Elgg\SystemLog\Cron::rotateLogs

  • system_log_default_logger изменена на Elgg\SystemLog\Logger::log

  • system_log_delete_cron изменена на Elgg\SystemLog\Cron::deleteLogs

  • system_log_listener изменена на Elgg\SystemLog\Logger::listen

  • system_log_user_hover_menu изменена на Elgg\SystemLog\Menus\UserHover::register

  • thewire_add_original_poster изменена на Elgg\TheWire\Notifications\CreateTheWireEventHandler

  • thewire_owner_block_menu изменена на Elgg\TheWire\Menus\OwnerBlock::register

  • thewire_prepare_notification изменена на Elgg\TheWire\Notifications\CreateTheWireEventHandler

  • thewire_setup_entity_menu_items изменена на Elgg\TheWire\Menus\Entity::register

Переработанные исключения

Все исключения в системе Elgg теперь наследуют Elgg\Exceptions\Exception и находятся в пространстве имён Elgg\Exceptions

Перемещённые исключения

  • ClassException используйте Elgg\Exceptions\ClassException

  • ConfigurationException используйте Elgg\Exceptions\ConfigurationException

  • CronException используйте Elgg\Exceptions\CronException

  • DatabaseException используйте Elgg\Exceptions\DatabaseException

  • DataFormatException используйте Elgg\Exceptions\DataFormatException

  • InstallationException используйте Elgg\Exceptions\Configuration\InstallationException

  • InvalidParameterException используйте Elgg\Exceptions\InvalidParameterException

  • IOException используйте Elgg\Exceptions\FileSystem\IOException

  • LoginException используйте Elgg\Exceptions\LoginException

  • PluginException используйте Elgg\Exceptions\PluginException

  • RegistrationException используйте Elgg\Exceptions\Configuration\RegistrationException

  • SecurityException используйте Elgg\Exceptions\SecurityException

  • Elgg\Database\EntityTable\UserFetchFailureException используйте Elgg\Exceptions\Database\UserFetchFailureException

  • Elgg\Di\FactoryUncallableException используйте Elgg\Exceptions\Di\FactoryUncallableException

  • Elgg\Di\MissingValueException используйте Elgg\Exceptions\Di\MissingValueException

  • Elgg\Http\Exception\AdminGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\AdminGatekeeperException

  • Elgg\Http\Exception\AjaxGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\AjaxGatekeeperException

  • Elgg\Http\Exception\GroupToolGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\GroupToolGatekeeperException

  • Elgg\Http\Exception\LoggedInGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\LoggedInGatekeeperException

  • Elgg\Http\Exception\LoggedOutGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\LoggedOutGatekeeperException

  • Elgg\Http\Exception\UpgradeGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\UpgradeGatekeeperException

  • Elgg\I18n\InvalidLocaleException используйте Elgg\Exceptions\I18n\InvalidLocaleException

  • Elgg\BadRequestException используйте Elgg\Exceptions\Http\BadRequestException

  • Elgg\CsrfException используйте Elgg\Exceptions\Http\CsrfException

  • Elgg\EntityNotFoundException используйте Elgg\Exceptions\Http\EntityNotFoundException

  • Elgg\EntityPermissionsException используйте Elgg\Exceptions\Http\EntityPermissionsException

  • Elgg\GatekeeperException используйте Elgg\Exceptions\Http\GatekeeperException

  • Elgg\GroupGatekeeperException используйте Elgg\Exceptions\Http\Gatekeeper\GroupGatekeeperException

  • Elgg\HttpException используйте Elgg\Exceptions\HttpException

  • Elgg\PageNotFoundException используйте Elgg\Exceptions\Http\PageNotFoundException

  • Elgg\ValidationException используйте Elgg\Exceptions\Http\ValidationException

  • Elgg\WalledGardenException используйте Elgg\Exceptions\Http\Gatekeeper\WalledGardenException

Удалённые исключения

  • CallException

  • ClassNotFoundException

  • IncompleteEntityException

  • InvalidClassException

  • NotificationException

  • NotImplementedException из плагина Web Services

Переработанные трейты

Для лучшей организации пространства имён Elgg все трейты перемещены в пространство имён Elgg\Traits

  • Elgg\Cacheable перемещён в Elgg\Traits\Cacheable

  • Elgg\Cli\PluginsHelper перемещён в Elgg\Traits\Cli\PluginsHelper

  • Elgg\Cli\Progressing перемещён в Elgg\Traits\Cli\Progressing

  • Elgg\Database\Seeds\Seeding\GroupHelpers перемещён в Elgg\Traits\Seeding\GroupHelpers

  • Elgg\Database\Seeds\Seeding\TimeHelpers перемещён в Elgg\Traits\Seeding\TimeHelpers

  • Elgg\Database\Seeds\Seeding перемещён в Elgg\Traits\Seeding

  • Elgg\Database\LegacyQueryOptionsAdapter перемещён в Elgg\Traits\Database\LegacyQueryOptionsAdapter

  • Elgg\Debug\Profilable перемещён в Elgg\Traits\Debug\Profilable

  • Elgg\Di\ServiceFacade перемещён в Elgg\Traits\Di\ServiceFacade

  • Elgg\Entity\ProfileData перемещён в Elgg\Traits\Entity\ProfileData

  • Elgg\Loggable перемещён в Elgg\Traits\Loggable

  • Elgg\Notifications\EventSerialization перемещён в Elgg\Traits\Notifications\EventSerialization

  • Elgg\TimeUsing перемещён в Elgg\Traits\TimeUsing

Различные изменения API

  • Значения по умолчанию для ignore_empty_body и prevent_double_submit при использовании elgg_view_form изменены на true.

  • Формы настроек плагинов (plugins/{$plugin_id}/settings) больше не получают $vars['plugin'], используйте $vars['entity']

  • Elgg\Router\Middleware\WalledGarden::isPublicPage() больше нельзя вызывать статически

  • Elgg\Cli\PluginsHelper::getDependents() больше не доступен публично

  • ElggPlugin::getLanguagesPath() больше не доступен публично

  • \ElggBatch больше не реализует интерфейс Elgg\BatchResult, но сохраняет те же функции

  • \ElggEntity больше не реализует интерфейс Locatable, но сохраняет те же функции

  • \Elgg\Event больше не реализует интерфейсы \Elgg\ObjectEvent и \Elgg\UserEvent, но сохраняет те же функции

  • Вью output/icon больше не использует переменную convert

  • ElggData::save() теперь всегда возвращает bool согласно документации. Все наследующие классы обновлены (напр. ElggEntity, ElggMetadata, ElggRelationship и т.д.)

  • Elgg\Email::getTo() теперь всегда возвращает array

  • ElggPlugin::activate() и ElggPlugin::deactivate() теперь могут выбрасывать Elgg\Exceptions\PluginException с более подробной информацией об ошибке

  • \ElggRelationship::RELATIONSHIP_LIMIT удалена, используйте \Elgg\Database\RelationshipsTable::RELATIONSHIP_COLUMN_LENGTH

  • Константы ORIGIN_SUBSCRIPTIONS и ORIGIN_INSTANT в \Elgg\Notifications\Notification удалены

  • Больше нельзя использовать событие delete, <entity_type> для предотвращения удаления сущности. Используйте событие delete:before, <entity_type>

  • Внешние файлы больше не сортируются по приоритету, а возвращаются в том порядке, в котором они зарегистрированы

  • Интерфейс Friendable удалён. Реализованные функции в ElggUser перемещены в Elgg\Traits\Entity\Friends

  • Флаг конфигурации profile_using_custom больше не доступен

  • Возвращаемое значение elgg_create_river_item() будет false, если создание было предотвращено событием 'create:before', 'river'

  • Константа ELGG_PLUGIN_USER_SETTING_PREFIX удалена, используйте вспомогательную функцию \ElggUser::getNamespacedPluginSettingName()

  • Константа ELGG_PLUGIN_INTERNAL_PREFIX удалена, для получения имени приватной настройки приоритета плагина используйте \ElggPlugin::PRIORITY_SETTING_NAME

  • Класс SiteNotificationFactory удалён, используйте SiteNotification::factory()

  • Класс Elgg\Email\Address больше не выбрасывает Laminas\Mail\Exception\InvalidArgumentException, а теперь выбрасывает Elgg\Exceptions\InvalidArgumentException

Устаревшие API

Функции классов

  • ElggPlugin::getUserSetting() используйте ElggUser::getPluginSetting()

  • ElggPlugin::setUserSetting() используйте ElggUser::setPluginSetting()

Функции библиотеки

  • forward() используйте экземпляры Elgg\Exceptions\HttpException или elgg_redirect_response()

Хуки плагинов

  • 'usersettings', 'plugin' используйте хук 'plugin_setting', '<entity type>'

Удалённые функции

Функции классов

  • Elgg\Config::getEntityTypes() используйте константу Elgg\Config::ENTITY_TYPES

  • ElggFile::setDescription() используйте $file->description = $new_description

  • ElggGroup::addObjectToGroup()

  • ElggGroup::removeObjectFromGroup()

  • ElggPlugin::getAllUserSettings()

  • ElggPlugin::getDependencyReport()

  • ElggPlugin::getError()

  • ElggPlugin::unsetAllUserSettings()

  • ElggPlugin::unsetAllUserAndPluginSettings() используйте ElggPlugin::unsetAllEntityAndPluginSettings()

  • ElggWidget::getContext() используйте $entity->context

  • ElggWidget::setContext() используйте $entity->context = $context

  • Elgg\Notifications\NotificationsService::getDeprecatedHandler()

  • Elgg\Notifications\NotificationsService::getMethodsAsDeprecatedGlobal() используйте elgg_get_notification_methods()

  • Elgg\Notifications\NotificationsService::registerDeprecatedHandler()

  • Elgg\Notifications\NotificationsService::setDeprecatedNotificationSubject()

  • Elgg\Email::getRecipient() используйте Elgg\Email::getTo()

  • Elgg\Email::setRecipient()

  • Elgg\Entity::getLocation() используйте $entity->location

  • Elgg\Entity::setLocation() используйте $entity->location = $location

Функции библиотеки

  • access_get_show_hidden_status() используйте elgg()->session->getDisabledEntityVisibility()

  • diagnostics_md5_dir()

  • elgg_add_subscription() используйте \ElggEntity::addSubscription()

  • elgg_get_available_languages() используйте elgg()->translator->getAvailableLanguages()

  • elgg_get_all_plugin_user_settings()

  • elgg_get_entities_from_plugin_user_settings() используйте elgg_get_entities() с параметрами приватных настроек и префиксом имени настройки plugin:user_setting:

  • elgg_get_filter_tabs() используйте хуки меню на 'register', 'menu:filter:<filter_id>'

  • elgg_get_loaded_css() используйте elgg_get_loaded_external_files('css', 'head')

  • elgg_get_loaded_js() используйте elgg_get_loaded_external_files('js', $location)

  • elgg_get_system_messages() используйте elgg()->system_messages->loadRegisters()

  • elgg_prepend_css_urls()

  • elgg_remove_subscription() используйте \ElggEntity::removeSubscription()

  • elgg_set_plugin_setting() используйте $plugin->setSetting($name, $value)

  • elgg_set_plugin_user_setting() используйте ElggUser::setPluginSetting()

  • elgg_set_system_messages() используйте elgg()->system_messages->saveRegisters()

  • elgg_unset_plugin_setting() используйте $plugin->unsetSetting($name)

  • elgg_unset_plugin_user_setting() используйте ElggUser::removePluginSetting()

  • get_language_completeness() используйте elgg()->translator->getLanguageCompleteness()

  • get_installed_translations() используйте elgg()->translator->getInstalledTranslations()

  • group_access_options()

  • pages_is_page()

  • system_log_get_log()

  • system_log_get_log_entry()

  • system_log_get_object_from_log_entry()

  • system_log_get_seconds_in_period()

  • system_log_archive_log()

  • system_log_browser_delete_log()

  • thewire_get_parent() используйте \ElggWire::getParent()

  • validate_email_address() используйте elgg()->accounts->assertValidEmail()

  • validate_password() используйте elgg()->accounts->assertValidPassword()

  • validate_username() используйте elgg()->accounts->assertValidUsername()

Удалённые views / ресурсы

  • admin/develop_tools/inspect/webservices

  • elgg/thewire.js

  • input/urlshortener

  • messages/js перемещён в forms/messages/process.js

  • navigation/menu/elements/item_deps функциональность объединена с navigation/menu/elements/item

  • object/plugin/elements/contributors

  • notifications/groups

  • notifications/personal используйте notifications/settings или notifications/users

  • notifications/settings/personal перемещён в notifications/settings/records

  • notifications/settings/collections

  • notifications/settings/other расширяйте notifications/settings/records

  • notifications/subscriptions/groups используйте forms/notifications/subscriptions/groups

  • notifications/subscriptions/users используйте forms/notifications/subscriptions/users

  • resources/comments/view используйте \Elgg\Controllers\CommentEntityRedirector

  • resources/river используйте resources/activity/all или resources/activity/owner или resources/activity/friends

  • reportedcontent/admin_css

  • thewire/previous

Удалённые хуки / события

  • Событие created, river удалено. Используйте событие create:after, river.

  • Хук creating, river удалён. Используйте событие create:before, river, если хотите заблокировать создание элемента ленты.

  • Хук filter_tabs, <context> удалён. Используйте хук register, menu:filter:<filter_id>

  • Хук output, ajax удалён. Используйте хук ajax_response, если хотите повлиять на результаты.

  • Хук reportedcontent:add удалён. Используйте событие create, object для предотвращения создания.

  • Хук reportedcontent:archive удалён. Используйте хук permissions_check, object.

  • Хук reportedcontent:delete удалён. Используйте событие delete, object для предотвращения удаления.

Удалённые действия

  • Действие reportedcontent/delete заменено на универсальное действие удаления сущности