De 3.x à 4.0

Composer

Pré-requis PHP

Pour être compatible avec PHP 8, nous devions augmenter la version minimale de PHP à 7.4. Les versions PHP < 7.4 sont déjà en fin de vie.

Projet composer

La racine du projet composer n’est plus gérée comme un plugin semi-fonctionnel. Les langues du répertoire languages ne sont plus importées, les vues du répertoire views ne sont plus enregistrées, les services PHP DI du elgg-services.php ne sont plus enregistrés et le fichier start.php n’est plus inclus.

Si vous avez besoin d’une modification spécifique à votre installation Elgg, vous devez créer un plugin et vous assurer que le plugin est le dernier dans l’ordre des plugins pour vous permettre de surcharger tout ce que vous avez besoin de changer.

Doctrine DBAL

Elgg a remplacé la v2 de la dépendance doctrine/dbal par la v3. L’un des changements les plus notables est que si vous travaillez avec QueryBuilders et utilisez la fonction $qb->fetch(), vous n’obtiendrez plus un objet, mais un tableau. Si vous voulez que vos lignes soient utilisables comme classes, vous pouvez utiliser elgg()->db->getData($qb). Un autre changement important est que si vous fournissez vos propres paramètres de requête, vous ne devez plus préfixer les clés avec deux points dans les paramètres, mais continuer à le faire dans la requête.

PHP-DI

Cette fonctionnalité a été mise à jour pour utiliser la dernière version de PHP-DI. Le changement le plus notable pour Elgg est la nécessité de changer la définition de votre service de plugin pour utiliser \DI\create() au lieu de \DI\object().

ZendMail remplacé par LaminasMail

En raison de la dépréciation de la bibliothèque Zend\Mail et de son remplacement par Laminas\Mail toutes les références ont été mises à jour.

Dépendances composer supprimées

  • bower-asset/jquery-treeview les js et css associés ne sont plus disponibles dans le système

  • bower-asset/jquery.imgareaselect les js et css associés ne sont plus disponibles dans le système

  • npm-asset/formdata-polyfill tous les navigateurs modernes ont un support, plus besoin d’un polyfill

  • npm-asset/jquery-form utilisez la fonctionnalité native FormData

  • npm-asset/weakmap-polyfill tous les navigateurs modernes ont un support, plus besoin d’un polyfill

  • simpletest/simpletest

JavaScript

AJAX

Les fonctions d’assistance Ajax suivantes ont été supprimées au profit de leurs homologues dans le module asynchrone elgg/Ajax. * elgg.action() * elgg.get() * elgg.getJSON() * elgg.post()

La fonction ajax elgg.api a été déplacée vers la fonction executeMethod dans le module asynchrone elgg/webservices du plugin webservices. D’autres fonctions et attributs elgg.ajax ont été supprimés du système. De plus, la gestion héritée des appels ajax a été supprimée du système.

Classes

La logique javascript pour démarrer automatiquement du javascript pour votre plugin et enregistrer des hooks via la classe Elgg/Plugin a été supprimée du système. Cette fonctionnalité n’a jamais été utilisée par le noyau et à peine vue dans les plugins. Utilisez le javascript chargé par AMD ou étendez elgg.js pour un javascript toujours chargé.

La classe javascript ElggPriorityList a été supprimée du système.

Hooks système

Les modules AMD pour elgg/init et elgg/ready ont été supprimés. Le hook init, system est toujours disponible, mais cela n’a de sens de s’appuyer sur ce hook que pour des bibliothèques js non chargées par AMD. Les déclencheurs boot, system et ready, system ont été supprimés du système. Remplacez par init, system pour le même effet.

jQuery

La bibliothèque jQuery a été mise à jour vers la dernière version (v3.5.x). Il s’agit d’une mise à jour majeure de la version utilisée dans Elgg 3.x. Pour plus d’informations sur ce qui a changé entre ces versions, vous devriez jeter un œil au site Web de jQuery.

jQuery UI

La bibliothèque jQuery UI a été mise à jour vers la v1.12.x. La bibliothèque n’est plus chargée en entier par défaut. Si vous devez utiliser des fonctionnalités de la bibliothèque, vous pouvez les exiger dans votre propre script. Par exemple, pour pouvoir utiliser la fonctionnalité de tri, procédez comme suit :

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

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

Changements JS divers

  • Le module AMD elgg/widgets ne renvoie plus d’objet et ne vous oblige plus à appeler init sur le module

Notifications

La gestion des notifications avant Elgg 1.9 a été supprimée. Les fonctions et hooks associés n’existent plus.

Abonnements

La relation dans la base de données qui stocke la méthode d’abonnement pour les notifications a été modifiée de notifymethod à notify:method.

Destinataires multiples

Un ElggEmail prend désormais en charge plusieurs destinataires en To, Cc et Bcc. Les fonctions de récupération associées telles que getTo() renverront désormais toujours un tableau.

Paramètres

Un stockage générique pour les préférences de notification a été introduit dans \ElggUser::setNotificationSetting() et \ElggUser::getNotificationSettings(), les paramètres de notification ont maintenant un but “purpose”.

Par exemple, group_join peut être utilisé pour gérer l’abonnement par défaut que vous obtenez avec un groupe lorsque vous rejoignez le groupe.

Le plugin Notifications a une gestion générique de l’affichage et de l’enregistrement des paramètres. Pour afficher le paramètre, étendez la vue notifications/settings/records (pluriel) avec une vue qui utilise notifications/settings/record (singulier).

Lors de la demande de paramètres de notification autres que le paramètre par défaut, si l’utilisateur n’a pas encore enregistré de paramètre, cela reviendra aux paramètres de notification par défaut.

La gestion des préférences de notification pour l’ajout de nouveaux utilisateurs à une collection d’amis a été supprimée.

Salutation et signature de la notification

Pour pouvoir avoir une salutation et une signature plus génériques pour les notifications de courrier sortant, nous avons supprimé ces textes de diverses chaînes de traduction et les avons déplacés vers des traductions génériques. Cela signifie que vous devrez mettre à jour vos traductions pour refléter le nouveau texte et également vérifier votre code pour les utilisations des notifications où vous fournissez votre propre texte de salutation ou de signature. Vous pouvez en savoir plus sur ce nouveau comportement dans Notifications.

Plugin Notifications

Le plugin Notifications a été supprimé. Toutes les fonctionnalités du plugin font désormais partie du noyau Elgg. Certaines pages (comme les paramètres de notification de groupe) ont été déplacées vers le bon plugin.

Cela signifie que les gestionnaires d’événements, les gestionnaires de crochets, les actions, les vues et les clés de langue ont été déplacés, retirés ou renommés.

Gestion de l’événement de notification

Les hooks de notification ne reçoivent plus le paramètre origin.

Notification sur le site

Le plugin de notifications du site affiche désormais l’objet de la notification par défaut. Si une notification de site a été créée avec la fonction d’usine SiteNotification::factory(), davantage d’informations de la notification d’origine sont stockées avec la notification de site :

  • Le sujet de la notification subject est stocké dans title

  • Le résumé de la notification summary est stocké dans summary

  • Le corps de la notification body est stocké dans description

Séparation de OkResponse, ErrorResponse et RedirectResponse

Les classes Elgg\Http\ErrorResponse et Elgg\Http\RedirectResponse étaient des extensions de Elgg\Http\OkReponse, ce qui compliquait la validation des réponses (par exemple dans les hooks). Les classes ont été séparées pour permettre des contrôles plus faciles et plus clairs.

Toutes les classes étendent maintenant Elgg\Http\Response et implémentent Elgg\Http\ReponseBuilder. Le code d’erreur HTTP par défaut lors de l’utilisation de elgg_error_response() a été modifié pour renvoyer un code d’état 400.

Modèle de données

Modifications de schéma

  • Les colonnes access_id, owner_guid et enabled dans la table metadata ont été supprimées

  • La colonne enabled dans la table river a été supprimée

  • La colonne relationship dans la table entity_relationships a maintenant une longueur maximale de 255 (au lieu de 50)

Attributs ElggEntity

Définir les attributs type, subtype et enabled d’une ElggEntity n’est plus possible en utilisant la fonction de définition magique. Changer le type n’est plus possible, utilisez la classe de base correcte pour votre entité (ex. ElggObject, ElggGroup ou ElggUser).

Pour changer le subtype utilisez la fonction 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');

Pour changer l’état activé enabled d’une entité utilisez les fonctions correctes

// 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

Attributs ElggUser

La définition des métadonnées admin et banned d’un ElggUser n’est plus possible en utilisant la fonction de définition magique.

Pour changer l’état d’administrateur admin, utilisez les fonctions makeAdmin() and 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

Pour changer l’état de bannissement banned, utilisez les fonctions ban() et 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

Développement de plugin

Initialisation du plugin

Les fichiers suivants ne sont plus inclus lors de l’amorçage d’un plugin :

  • activate.php utilisez PluginBootstrap->activate()

  • deactivate.php utilisez PluginBootstrap->deactivate()

  • views.php utilisez elgg-plugin.php

  • start.php utilisez elgg-plugin.php et/ou PluginBootstrap

Manifeste du plugin

Le fichier manifeste du plugin n’est plus utilisé. Des éléments du manifeste ont été supprimés ou déplacés vers différents emplacements.

Il n’est plus possible d’exiger un paramètre php ini spécifique.

  • pré-requis de version de php -> composer require

  • pré-requis d’extension php -> composer require

  • conflits du plugin -> conflits composer

  • pré-requis du plugin -> elgg-plugin

  • pré-requis de position du plugin -> elgg-plugin

  • version du plugin -> elgg-plugin

  • activation du plugin lors de l’installation -> elgg-plugin

  • nom du plugin -> elgg-plugin

  • description du plugin -> composer.json

  • catégories du plugin -> composer.json

  • licence du plugin -> composer.json

  • lien vers le repo du plugin -> composer.json

  • lien de publication du plugin -> composer.json

  • lien vers la page d’accueil du plugin -> composer.json

  • auteurs/contributeurs du plugin -> composer.json

Champs de configuration hookables

Certains plugins avaient la possibilité de configurer les champs des entités dans leur configuration. Ces fonctionnalités ont été remplacées par un service central qui fournit un mécanisme pour demander une configuration de champ hookable pour un certain type/sous-type.

Vous pouvez demander ces configurations à l’aide du code suivant :

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

Les résultats seront un tableau avec des configurations de champs utilisables dans elgg_view_field($field)

La fonctionnalité associée suivante a été remplacée par cette nouvelle méthode :

  • La configuration pour pages n’est plus disponible dans elgg_get_config('pages') utilisez elgg()->fields->get('object', 'page')

  • La configuration pour group n’est plus disponible dans elgg_get_config('group') utilisez elgg()->fields->get('group', 'group')

  • La configuration de profile_fields n’est plus disponible dans elgg_get_config('profile_fields') utilisez elgg()->fields->get('user', 'user')

  • La configuration de pages, group et user:profile via elgg_set_config n’est plus possible. Utilisez une fonction de rappel sur le hook fields, <entity_type>:<entity_subtype>.

  • Le hook profile:fields, group a été remplacé par le nouveau hook fields, group:group

  • Le hook profile:fields, user a été remplacé par le nouveau hook fields, user:user

Enregistrement des noms de métadonnées de balise

En raison de diverses limitations de cette implémentation, elle a été supprimée du système. Les fonctions d’API associées suivantes ont été supprimées :

  • elgg_get_registered_tag_metadata_names()

  • elgg_register_tag_metadata_name()

  • elgg_unregister_tag_metadata_name()

Si vous avez besoin que des champs spécifiques puissent être recherchés, vous devez les enregistrer avec les crochets search:fields associés. Les clés de langue des balises tagnames:xxx associées ne sont plus enregistrées dans le système.

La fonction ElggEntity::getTags() renverra désormais uniquement les métadonnées de balise avec le nom tags par défaut. Si vous souhaitez vérifier des champs supplémentaires contenant des balises, vous devez le demander spécifiquement.

Widgets par défaut

La gestion magique de la création de widgets par défaut a été réduite. Vous devez maintenant enregistrer le rappel Elgg\Widgets\CreateDefaultWidgetsHandler dans l’événement lorsque vous souhaitez que les widgets par défaut soient créés. La configuration default_widget_info n’est plus présente dans le système. Utilisez le hook get_list, default_widgets pour obtenir la valeur.

Vous devez également mettre à jour les données de votre gestionnaire de hook get_list, default_widgets pour renvoyer event_name (anciennement event) et event_type.

Permissions du conteneur

Les paramètres de fonction pour ElggEntity::canWriteToContainer() nécessitent maintenant un $type et un $subtype à transmettre. Il s’agit de donner plus d’informations au hook résultant afin de pouvoir déterminer si un utilisateur est autorisé à accéder en écriture au conteneur.

Plugins

Plugin Activity

Ce plugin a reçu une réécriture bien nécessaire. Les différentes pages (all/owner/friends) ont maintenant leurs propres vues de ressources et de listes.

Plugin Diagnostics

Ce plugin a été supprimé, mais l’action pour générer un rapport est toujours disponible. Vous pouvez le trouver sur la page d’administration Information/Server.

Plugin Discussions

  • Ce plugin n’ajoute plus d’onglet au menu des filtres sur les pages des groupes

  • L’élément de menu du site discussions est maintenant toujours présent

Plugin Search

La sortie des résultats de la recherche n’utilise plus la classe d’assistance Elgg\Search\Formatter pour la préparation du contenu du résultat. Cette logique a été entièrement déplacée dans les vues.

Les fonctions associées prepareEntity et getSearchView dans la classe Elgg\Search\Service ont été supprimées.

Le hook search:format, entity a été retiré.

Plugin Web services

Le plugin Web Services a reçu une réécriture complète, ceci est principalement lié au fonctionnement interne du plugin.

Classes retirées

  • ElggHMACCache a été remplacé par _elgg_services()->hmacCacheTable (pour un usage interne uniquement)

  • Elgg\Notifications\Event a été remplacé par Elgg\Notifications\SubscriptionNotificationEvent

Fonctions supprimées

  • create_api_user() a été remplacé par _elgg_services()->apiUsersTable->createApiUser()

  • create_user_token() a été remplacé par _elgg_services()->usersApiSessions->createToken()

  • get_api_user() a été remplacé par _elgg_services()->apiUsersTable->getApiUser()

  • get_standard_api_key_array() utilisez \Elgg\WebServices\ElggApiClient::setApiKeys()

  • get_user_tokens() a été remplacé par _elgg_services()->usersApiSessions->getUserTokens()

  • pam_auth_session()

  • remove_api_user() a été remplacé par _elgg_services()->apiUsersTable->removeApiUser()

  • remove_expired_user_tokens() a été remplacé par _elgg_services()->usersApiSessions->removeExpiresTokens()

  • remove_user_token() a été remplacé par _elgg_services()->usersApiSessions->removeToken()

  • send_api_call() utilisez \Elgg\WebServices\ElggApiClient

  • send_api_get_call() utilisez \Elgg\WebServices\ElggApiClient

  • send_api_post_call() utilisez \Elgg\WebServices\ElggApiClient

  • service_handler()

  • validate_user_token() a été remplacé par _elgg_services()->usersApiSessions->validateToken()

  • ws_page_handler()

  • ws_rest_handler() a été remplacé par \Elgg\WebServices\RestServiceController

Changements divers

  • La valeur de configuration pour servicehandler a été supprimée

  • Dans certains cas extrêmes, la valeur par défaut d’un paramètre API ne sera pas appliquée

Fonctions typées

Les fonctions suivantes ont maintenant leurs arguments typés, cela peut provoquer des erreurs TypeError. De plus, certaines fonctions de classe ont une valeur de retour typée, et vous devriez mettre à jour votre définition de fonction.

Paramètres de la fonction de classe

  • ElggEntity::setLatLong() requiert maintenant un nombre à virgule flottante float pour $lat et $long

  • ElggUser::setNotificationSetting() requiert maintenant une chaîne de caractères string pour $method et un booléen bool pour $enabled

  • Elgg\Database\Seeds\Seed::__construct() requiert maintenant un entier int pour $limit

  • Elgg\Http\ErrorResponse::__construct() requiert maintenant un entier int pour $status_code

  • Elgg\Http\OkResponse::__construct() requiert maintenant un entier int pour $status_code

  • Elgg\Http\RedirectResponse::__construct() requiert maintenant un entier int pour $status_code

  • Elgg\I18n\Translator::getInstalledTranslations() requiert maintenant un booléen bool pour $calculate_completeness

  • SiteNotification::setActor() requiert maintenant une chaîne ElggEntity pour $entity

  • SiteNotification::setURL() requiert maintenant une chaîne de caractères string pour $url

  • SiteNotification::setRead() requiert maintenant un booléen bool pour $read

Type de retour d’une fonction de classe

  • Elgg\Upgrade\Batch::getVersion() requiert maintenant une valeur de retour entière int

  • Elgg\Upgrade\Batch::shouldBeSkipped() requiert maintenant une valeur de retour booléenne bool

  • Elgg\Upgrade\Batch::needsIncrementOffset() requiert maintenant une valeur de retour booléenne bool

  • Elgg\Upgrade\Batch::countItems() requiert maintenant un entier int comme valeur de retour

  • Elgg\Upgrade\Batch::run() requiert maintenant une valeur de retour Elgg\Upgrade\Result

Paramètres de la fonction de bibliothèque

  • add_user_to_access_collection() requiert maintenant un entier int pour $user_guid et $collection_id

  • can_edit_access_collection() requiert maintenant un entier int pour $collection_id et $user_guid

  • create_access_collection() requiert maintenant une chaîne de caractères string pour $name et un entier int pour $owner_guid

  • delete_access_collection() requiert maintenant un entier int pour $collection_id

  • elgg_action_exists() exige maintenant une chaîne de caractères string pour $action

  • elgg_add_admin_notice() requiert maintenant une chaîne de caractères string pour $id et $message

  • elgg_admin_notice_exists() requiert maintenant une chaîne de caractères string pour $id

  • elgg_annotation_exists() requiert maintenant un entier int pour $entity_guid, une chaîne de caractères string pour $name et un entier int pour $owner_guid

  • elgg_delete_admin_notice() requiert maintenant une chaîne de caractères string pour $id

  • elgg_delete_annotation_by_id() requiert maintenant un entier int pour $id

  • elgg_deprecated_notice() requiert maintenant une chaîne de caractères string pour $msg et $dep_version

  • elgg_error_response() requiert maintenant un entier int pour $status_code

  • elgg_get_access_collections() requiert maintenant un tableau array pour $options

  • elgg_get_annotation_from_id() requiert maintenant un entier int pour $id

  • elgg_get_subscriptions_for_container() requiert maintenant un entier int pour $container_guid

  • elgg_get_plugin_from_id() requiert maintenant une chaîne de caractères string pour $plugin_id

  • elgg_get_plugin_setting() requiert maintenant une chaîne de caractères string pour $name et $plugin_id

  • elgg_get_plugin_user_setting() requiert maintenant une chaîne de caractères string pour $name et $plugin_id et un entier int pour $user_guid

  • elgg_get_plugins() requiert maintenant une chaîne de caractères string pour $status

  • elgg_get_river_item_from_id() requiert maintenant un entier int pour $id

  • elgg_list_annotations() requiert maintenant un tableau array pour $options

  • elgg_ok_response() requiert maintenant un entier int pour $status_code

  • elgg_plugin_exists() requiert maintenant une chaîne de caractères string pour $plugin_id

  • elgg_redirect_response() requiert maintenant un entier int pour $status_code

  • elgg_register_action() requiert maintenant une chaîne de caractères string pour $action et $access

  • elgg_send_email() requiert maintenant un \Elgg\Email pour $email

  • elgg_set_plugin_user_setting() requiert maintenant une chaîne de caractères string pour $name et $plugin_id et un entier int pour $user_guid

  • elgg_unregister_action() requiert maintenant une chaîne de caractères string pour $action

  • get_access_array() requiert maintenant un entier int pour $user_guid

  • get_access_collection() requiert maintenant un entier int pour $collection_id

  • get_entity_statistics() requiert maintenant un entier int pour $owner_guid

  • get_members_of_access_collection() requiert maintenant un entier int pour $collection_id et un booléen bool pour $guids_only

  • get_readable_access_level() requiert maintenant un entier int pour $entity_access_id

  • get_write_access_array() requiert maintenant un entier int pour $user_guid et un booléen bool for $flush

  • has_access_to_entity() requiert maintenant une ElggEntity pour $entity et ElggUser pour $user

  • remove_user_from_access_collection() requiert maintenant un entier int pour $user_guid et $collection_id

  • system_log_get_log() requiert maintenant un tableau array pour $options

  • messageboard_add() requiert maintenant les types ElggUser, ElggUser, string et int

  • elgg_register_external_file() requiert maintenant que tous les arguments soient de type string

  • elgg_unregister_external_file() requiert maintenant que tous les arguments soient de type string

  • elgg_load_external_file() requiert maintenant que tous les arguments soient de type string

  • elgg_get_loaded_external_files() requiert maintenant que tous les arguments soient de type string

Modification dans les paramètres de fonction

Fonctions de classe

  • Elgg\Http\ResponseBuilder::setStatusCode() n’a plus de valeur par défaut

  • ElggEntity::canWriteToContainer() n’a plus de valeur par défaut pour $type et $subtype mais ces paramètres sont obligatoires

Fonctions de la bibliothèque

  • elgg_get_page_owner_guid() n’accepte plus $guid comme paramètre

  • get_access_array() n’accepte plus $flush comme paramètre

  • elgg_register_external_file() n’accepte plus $priority comme paramètre

Renommage des fonctions de callback du gestionnaire de hook/d’événement

Une attention particulière est requise si vous désenregistrez les callbacks dans vos plugins car vous devrez peut-être mettre à jour votre code.

Noyau

  • access_friends_acl_get_name() changé pour Elgg\Friends\AclNameHandler::class

  • access_friends_acl_add_friend() changé pour Elgg\Friends\AddToAclHandler::class

  • access_friends_acl_create() changé pour Elgg\Friends\CreateAclHandler::class

  • access_friends_acl_remove_friend() changé pour Elgg\Friends\RemoveFromAclHandler::class

  • _elgg_add_admin_widgets() changé pour Elgg\Widgets\CreateAdminWidgetsHandler::class

  • _elgg_admin_check_admin_validation() changé pour Elgg\Users\Validation::checkAdminValidation()

  • _elgg_admin_header_menu() changé pour Elgg\Menus\AdminHeader::register() et Elgg\Menus\AdminHeader::registerMaintenance()

  • _elgg_admin_footer_menu() changé pour Elgg\Menus\AdminFooter::registerHelpResources()

  • _elgg_admin_notify_admins_pending_user_validation() changé pour Elgg\Users\Validation::notifyAdminsAboutPendingUsers()

  • _elgg_admin_page_menu() changé pour Elgg\Menus\Page::registerAdminAdminister() et Elgg\Menus\Page::registerAdminConfigure() et Elgg\Menus\Page::registerAdminInformation()

  • _elgg_admin_page_menu_plugin_settings() changé pour Elgg\Menus\Page::registerAdminPluginSettings()

  • _elgg_admin_prepare_admin_notification_make_admin() changé pour Elgg\Notifications\MakeAdminUserEventHandler

  • _elgg_admin_prepare_admin_notification_remove_admin() changé pour Elgg\Notifications\RemoveAdminUserEventHandler

  • _elgg_admin_prepare_user_notification_make_admin() changé pour Elgg\Notifications\MakeAdminUserEventHandler

  • _elgg_admin_prepare_user_notification_remove_admin() changé pour Elgg\Notifications\RemoveAdminUserEventHandler

  • _elgg_admin_save_notification_setting() changé pour Elgg\Users\Settings::setAdminValidationNotification()

  • _elgg_admin_set_registration_forward_url() changé pour Elgg\Users\Validation::setRegistrationForwardUrl()

  • _elgg_admin_user_unvalidated_bulk_menu() changé pour Elgg\Menus\UserUnvalidatedBulk::registerActions()

  • _elgg_admin_user_validation_login_attempt() changé pour Elgg\Users\Validation::preventUserLogin()

  • _elgg_admin_user_validation_notification() changé pour Elgg\Users\Validation::notifyUserAfterValidation()

  • _elgg_admin_upgrades_menu() changé pour Elgg\Menus\Filter::registerAdminUpgrades()

  • Les actions _elgg_cache_init() ont été combinées dans Elgg\Application\SystemEventHandlers::ready()

  • _elgg_clear_caches() changé pour Elgg\Cache\EventHandlers::clear()

  • _elgg_comments_access_sync() changé pour Elgg\Comments\SyncContainerAccessHandler::class

  • _elgg_comments_container_permissions_override() changé pour Elgg\Comments\ContainerPermissionsHandler::class

  • _elgg_comments_permissions_override() changé pour Elgg\Comments\EditPermissionsHandler::class

  • _elgg_comments_prepare_content_owner_notification() changé pour Elgg\Notifications\CreateCommentEventHandler

  • _elgg_comments_prepare_notification() changé pour Elgg\Notifications\CreateCommentEventHandler

  • _elgg_comments_social_menu_setup() changé pour Elgg\Menus\Social::registerComments()

  • _elgg_create_default_widgets() changé pour Elgg\Widgets\CreateDefaultWidgetsHandler::class

  • _elgg_create_notice_of_pending_upgrade() changé pour Elgg\Upgrade\CreateAdminNoticeHandler::class

  • _elgg_db_register_seeds() changé pour Elgg\Database\RegisterSeedsHandler::class

  • _elgg_disable_caches() changé pour Elgg\Cache\EventHandlers::disable()

  • _elgg_default_widgets_permissions_override() changé pour Elgg\Widgets\DefaultWidgetsContainerPermissionsHandler::class

  • _elgg_disable_password_autocomplete() changé pour Elgg\Input\DisablePasswordAutocompleteHandler::class

  • _elgg_enable_caches() changé pour Elgg\Cache\EventHandlers::enable()

  • _elgg_filestore_move_icons() changé pour Elgg\Icons\MoveIconsOnOwnerChangeHandler::class

  • _elgg_filestore_touch_icons() changé pour Elgg\Icons\TouchIconsOnAccessChangeHandler::class

  • _elgg_head_manifest() changé pour Elgg\Views\AddManifestLinkHandler::class

  • _elgg_annotations_default_menu_items() changé pour Elgg\Menus\Annotation::registerDelete()

  • _elgg_walled_garden_menu() changé pour Elgg\Menus\WalledGarden::registerHome()

  • _elgg_site_menu_init() changé pour Elgg\Menus\Site::registerAdminConfiguredItems()

  • _elgg_site_menu_setup() changé pour Elgg\Menus\Site::reorderItems()

  • _elgg_entity_menu_setup() changé pour Elgg\Menus\Entity::registerEdit() et Elgg\Menus\Entity::registerDelete()

  • _elgg_entity_navigation_menu_setup() changé pour Elgg\Menus\EntityNavigation::registerPreviousNext()

  • _elgg_enqueue_notification_event() changé pour Elgg\Notifications\EnqueueEventHandler::class

  • _elgg_groups_container_override() changé pour Elgg\Groups\MemberPermissionsHandler::class

  • _elgg_groups_comment_permissions_override() changé pour Elgg\Comments\GroupMemberPermissionsHandler::class

  • _elgg_htmlawed_filter_tags() changé pour Elgg\Input\ValidateInputHandler::class

  • _elgg_invalidate_caches() changé pour Elgg\Cache\EventHandlers::invalidate()

  • _elgg_widget_menu_setup() changé pour Elgg\Menus\Widget::registerEdit() et Elgg\Menus\Widget::registerDelete()

  • _elgg_login_menu_setup() changé pour Elgg\Menus\Login::registerRegistration() et Elgg\Menus\Widget::registerResetPassword()

  • _elgg_nav_public_pages() changé pour Elgg\WalledGarden\ExtendPublicPagesHandler::class

  • _elgg_notifications_cron() changé pour Elgg\Notifications\ProcessQueueCronHandler::class

  • _elgg_notifications_smtp_default_message_id_header() changé pour Elgg\Email\DefaultMessageIdHeaderHandler::class

  • _elgg_notifications_smtp_thread_headers() changé pour Elgg\Email\ThreadHeadersHandler::class

  • _elgg_rebuild_public_container() changé pour Elgg\Cache\EventHandlers::rebuildPublicContainer()

  • _elgg_river_update_object_last_action() changé pour Elgg\River\UpdateLastActionHandler::class

  • _elgg_rss_menu_setup() changé pour Elgg\Menus\Footer::registerRSS()

  • _elgg_plugin_entity_menu_setup() changé pour Elgg\Menus\Entity::registerPlugin()

  • _elgg_purge_caches() changé pour Elgg\Cache\EventHandlers::purge()

  • _elgg_river_menu_setup() changé pour Elgg\Menus\River::registerDelete()

  • _elgg_save_notification_user_settings() changé pour Elgg\Notifications\SaveUserSettingsHandler::class

  • _elgg_session_cleanup_persistent_login() changé pour Elgg\Users\CleanupPersistentLoginHandler::class

  • _elgg_set_lightbox_config() changé pour Elgg\Javascript\SetLightboxConfigHandler::class

  • _elgg_set_user_default_access() changé pour Elgg\Users\Settings::setDefaultAccess()

  • _elgg_set_user_email() changé pour Elgg\Users\Settings::setEmail()

  • _elgg_set_user_password() changé pour Elgg\Users\Settings::setPassword()

  • _elgg_set_user_language() changé pour Elgg\Users\Settings::setLanguage()

  • _elgg_set_user_name() changé pour Elgg\Users\Settings::setName()

  • _elgg_set_user_username() changé pour Elgg\Users\Settings::setUsername()

  • _elgg_send_email_notification() changé pour Elgg\Notifications\SendEmailHandler::class

  • _elgg_upgrade_completed() changé pour Elgg\Upgrade\UpgradeCompletedAdminNoticeHandler::class

  • _elgg_upgrade_entity_menu() changé pour Elgg\Menus\Entity::registerUpgrade()

  • _elgg_user_ban_notification() changé pour Elgg\Users\BanUserNotificationHandler::class

  • _elgg_user_get_subscriber_unban_action() changé pour Elgg\Notifications\UnbanUserEventHandler

  • _elgg_user_prepare_unban_notification() changé pour Elgg\Notifications\UnbanUserEventHandler

  • _elgg_user_settings_menu_register() changé pour Elgg\Menus\Page::registerUserSettings() et Elgg\Menus\Page::registerUserSettingsPlugins()

  • _elgg_user_settings_menu_prepare() changé pour Elgg\Menus\Page::cleanupUserSettingsPlugins()

  • elgg_user_hover_menu() changé pour Elgg\Menus\UserHover::registerAvatarEdit() et Elgg\Menus\UserHover::registerAdminActions()

  • _elgg_user_set_icon_file() changé pour Elgg\Icons\SetUserIconFileHandler::class

  • _elgg_user_title_menu() changé pour Elgg\Menus\Title::registerAvatarEdit()

  • _elgg_user_page_menu() changé pour Elgg\Menus\Page::registerAvatarEdit()

  • _elgg_user_topbar_menu() changé pour Elgg\Menus\Topbar::registerUserLinks()

  • _elgg_user_unvalidated_menu() changé pour Elgg\Menus\UserUnvalidated::register()

  • _elgg_views_amd() changé pour Elgg\Views\AddAmdModuleNameHandler::class

  • _elgg_views_file_help_upload_limit() changé pour Elgg\Input\AddFileHelpTextHandler::class

  • _elgg_views_init() a été combiné dans Elgg\Application\SystemEventHandlers::init()

  • _elgg_views_minify() changé pour Elgg\Views\MinifyHandler::class

  • _elgg_views_prepare_favicon_links() changé pour Elgg\Page\AddFaviconLinksHandler::class

  • _elgg_views_preprocess_css() changé pour Elgg\Views\PreProcessCssHandler::class

  • _elgg_views_send_header_x_frame_options() changé pour Elgg\Page\SetXFrameOptionsHeaderHandler::class

  • _elgg_walled_garden_init() fusionné dans Elgg\Application\SystemEventHandlers::initLate()

  • _elgg_walled_garden_remove_public_access() changé pour Elgg\WalledGarden\RemovePublicAccessHandler::class

  • _elgg_widgets_widget_urls() changé pour Elgg\Widgets\EntityUrlHandler::class

  • elgg_prepare_breadcrumbs() changé pour Elgg\Page\PrepareBreadcrumbsHandler::class

  • Elgg\Profiler::handleOutput changé pour Elgg\Debug\Profiler::class

  • users_init combiné dans Elgg\Application\SystemEventHandlers::initLate()

Plugins

  • _developers_entity_menu changé pour Elgg\Developers\Menus\Entity::registerEntityExplorer

  • _developers_page_menu changé pour Elgg\Developers\Menus\Page::register

  • _elgg_activity_owner_block_menu changé pour Elgg\Activity\Menus\OwnerBlock::registerUserItem et Elgg\Activity\Menus\OwnerBlock::registerGroupItem

  • blog_archive_menu_setup changé pour Elgg\Blog\Menus\BlogArchive::register

  • blog_owner_block_menu changé pour Elgg\Blog\Menus\OwnerBlock::registerUserItem et Elgg\Blog\Menus\OwnerBlock::registerGroupItem

  • blog_prepare_notification changé pour Elgg\Blog\Notifications\PublishBlogEventHandler

  • blog_register_db_seeds changé pour Elgg\Blog\Database::registerSeeds

  • bookmarks_footer_menu changé pour Elgg\Bookmarks\Menus\Footer::register

  • bookmarks_owner_block_menu changé pour Elgg\Bookmarks\Menus\OwnerBlock::registerUserItem et Elgg\Bookmarks\Menus\OwnerBlock::registerGroupItem

  • bookmarks_page_menu changé pour Elgg\Bookmarks\Menus\Page::register

  • bookmarks_prepare_notification changé pour Elgg\Bookmarks\Notifications\CreateBookmarksEventHandler

  • bookmarks_register_db_seeds changé pour Elgg\Bookmarks\Database::registerSeeds

  • ckeditor_longtext_id changé pour Elgg\CKEditor\Views::setInputLongTextIDViewVar

  • ckeditor_longtext_menu changé pour Elgg\CKEditor\Menus\LongText::registerToggler

  • dashboard_default_widgets changé pour Elgg\Dashboard\Widgets::extendDefaultWidgetsList

  • developers_log_events changé pour Elgg\Developers\HandlerLogger::trackEvent et Elgg\Developers\HandlerLogger::trackHook

  • diagnostics_basic_hook changé pour Elgg\Diagnostics\Reports::getBasic

  • diagnostics_globals_hook changé pour Elgg\Diagnostics\Reports::getGlobals

  • diagnostics_phpinfo_hook changé pour Elgg\Diagnostics\Reports::getPHPInfo

  • diagnostics_sigs_hook changé pour Elgg\Diagnostics\Reports::getSigs

  • discussion_comment_permissions changé pour Elgg\Discussions\Permissions::preventCommentOnClosedDiscussion

  • discussion_get_subscriptions changé pour Elgg\Discussions\Notifications::addGroupSubscribersToCommentOnDiscussionSubscriptions

  • discussion_owner_block_menu changé pour Elgg\Discussions\Menus\OwnerBlock::registerGroupItem

  • discussion_prepare_comment_notification changé pour Elgg\Discussions\Notifications::prepareCommentOnDiscussionNotification

  • discussion_prepare_notification changé pour Elgg\Discussions\Notifications\CreateDiscussionEventHandler

  • discussion_register_db_seeds changé pour Elgg\Discussions\Database::registerSeeds

  • Elgg\DevelopersPlugins\* changé pour Elgg\Developers\*

  • Elgg\Discussions\Menus::registerSiteMenuItem changé pour Elgg\Discussions\Menus\Site::register

  • Elgg\Discussions\Menus::filterTabs changé pour Elgg\Discussions\Menus\Filter::filterTabsForDiscussions

  • embed_longtext_menu changé pour Elgg\Embed\Menus\LongText::register

  • embed_select_tab changé pour Elgg\Embed\Menus\Embed::selectCorrectTab

  • embed_set_thumbnail_url changé pour Elgg\Embed\Icons::setThumbnailUrl

  • expages_menu_register_hook changé pour Elgg\ExternalPages\Menus\ExPages::register

  • file_handle_object_delete changé pour Elgg\File\Icons::deleteIconOnElggFileDelete

  • file_prepare_notification changé pour Elgg\File\Notifications\CreateFileEventHandler

  • file_register_db_seeds changé pour Elgg\File\Database::registerSeeds

  • file_set_custom_icon_sizes changé pour Elgg\File\Icons::setIconSizes

  • file_set_icon_file changé pour Elgg\File\Icons::setIconFile

  • file_set_icon_url changé pour Elgg\File\Icons::setIconUrl

  • file_owner_block_menu changé pour Elgg\File\Menus\OwnerBlock::registerUserItem et Elgg\File\Menus\OwnerBlock::registerGroupItem

  • _elgg_friends_filter_tabs changé pour Elgg\Friends\Menus\Filter::registerFilterTabs

  • _elgg_friends_page_menu changé pour Elgg\Friends\Menus\Page::register

  • _elgg_friends_register_access_type changé pour Elgg\Friends\Access::registerAccessCollectionType

  • _elgg_friends_setup_title_menu changé pour Elgg\Friends\Menus\Title::register

  • _elgg_friends_setup_user_hover_menu changé pour Elgg\Friends\Menus\UserHover::register

  • _elgg_friends_topbar_menu changé pour Elgg\Friends\Menus\Topbar::register

  • _elgg_friends_widget_urls changé pour Elgg\Friends\Widgets::setWidgetUrl

  • _elgg_send_friend_notification changé pour Elgg\Friends\Notifications::sendFriendNotification

  • Elgg\Friends\FilterMenu::addFriendRequestTabs changé pour Elgg\Friends\Menus\Filter::addFriendRequestTabs

  • Elgg\Friends\RelationshipMenu::addPendingFriendRequestItems changé pour Elgg\Friends\Menus\Relationship::addPendingFriendRequestItems

  • Elgg\Friends\RelationshipMenu::addPendingFriendRequestItems changé pour Elgg\Friends\Menus\Relationship::addPendingFriendRequestItems

  • Elgg\Friends\Relationships::createFriendRelationship changé pour Elgg\Friends\Relationships::removePendingFriendRequest

  • _groups_gatekeeper_allow_profile_page changé pour Elgg\Groups\Access::allowProfilePage

  • _groups_page_menu changé pour Elgg\Groups\Menus\Page::register

  • _groups_page_menu_group_profile changé pour Elgg\Groups\Menus\Page::registerGroupProfile

  • _groups_relationship_invited_menu changé pour Elgg\Groups\Menus\Relationship::registerInvitedItems

  • _groups_relationship_member_menu changé pour Elgg\Groups\Menus\Relationship::registerRemoveUser

  • _groups_relationship_membership_request_menu changé pour Elgg\Groups\Menus\Relationship::registerMembershipRequestItems

  • _groups_title_menu changé pour Elgg\Groups\Menus\Title::register

  • _groups_topbar_menu_setup changé pour Elgg\Groups\Menus\Topbar::register

  • groups_access_default_override changé pour Elgg\Groups\Access::overrideDefaultAccess

  • groups_create_event_listener changé pour Elgg\Groups\Group::createAccessCollection

  • groups_default_page_owner_handler changé pour Elgg\Groups\PageOwner::detectPageOwner

  • groups_entity_menu_setup changé pour Elgg\Groups\Menus\Entity::register et Elgg\Groups\Menus\Entity::registerFeature

  • groups_fields_setup changé pour Elgg\Groups\FieldsHandler

  • groups_members_menu_setup changé pour Elgg\Groups\Menus\GroupsMembers::register

  • groups_set_access_collection_name changé pour Elgg\Groups\Access::getAccessCollectionName

  • groups_set_url changé pour Elgg\Groups\Group::getEntityUrl

  • groups_setup_filter_tabs changé pour Elgg\Groups\Menus\Filter::registerGroupsAll

  • groups_update_event_listener changé pour Elgg\Groups\Group::updateGroup

  • groups_user_join_event_listener changé pour Elgg\Groups\Group::joinGroup

  • groups_user_leave_event_listener changé pour Elgg\Groups\Group::leaveGroup

  • groups_write_acl_plugin_hook changé pour Elgg\Groups\Access::getWriteAccess

  • invitefriends_add_friends changé pour Elgg\InviteFriends\Users::addFriendsOnRegister

  • invitefriends_register_page_menu changé pour Elgg\InviteFriends\Menus\Page::register

  • likes_permissions_check changé pour Elgg\Likes\Permissions::allowLikedEntityOwner

  • likes_permissions_check_annotate changé pour Elgg\Likes\Permissions::allowLikeOnEntity

  • likes_social_menu_setup changé pour Elgg\Likes\Menus\Social::register

  • members_register_filter_menu changé pour Elgg\Members\Menus\Filter::register

  • messages_can_edit changé pour Elgg\Messages\Permissions::canEdit

  • messages_can_edit_container changé pour Elgg\Messages\Permissions::canEditContainer

  • messages_purge changé pour Elgg\Messages\User::purgeMessages

  • messages_register_topbar changé pour Elgg\Messages\Menus\Topbar::register

  • messages_user_hover_menu changé pour Elgg\Messages\Menus\UserHover::register et Elgg\Messages\Menus\Title::register

  • notifications_update_collection_notify changé pour Elgg\Notifications\Relationships::updateUserNotificationsPreferencesOnACLChange

  • notifications_update_friend_notify changé pour Elgg\Friends\Relationships::applyFriendNotificationsSettings

  • notifications_relationship_remove changé pour Elgg\Friends\Relationships::deleteFriendNotificationSubscription et Elgg\Groups\Relationships::removeGroupNotificationSubscriptions

  • _notifications_page_menu changé pour Elgg\Notifications\Menus\Page::register

  • _notification_groups_title_menu changé pour Elgg\Notifications\Menus\Title::register

  • pages_container_permission_check changé pour Elgg\Pages\Permissions::allowContainerWriteAccess

  • pages_entity_menu_setup changé pour Elgg\Pages\Menus\Entity::register

  • pages_icon_url_override changé pour Elgg\Pages\Icons::getIconUrl

  • pages_owner_block_menu changé pour Elgg\Pages\Menus\OwnerBlock::registerUserItem et Elgg\Pages\Menus\OwnerBlock::registerGroupItem

  • pages_prepare_notification changé pour Elgg\Pages\Notifications\CreatePageEventHandler

  • pages_register_db_seeds changé pour Elgg\Pages\Database::registerSeeds

  • pages_set_revision_url changé pour Elgg\Pages\Extender::setRevisionUrl

  • pages_write_access_options_hook changé pour Elgg\Pages\Views::removeAccessPublic

  • pages_write_access_vars changé pour Elgg\Pages\Views::preventAccessPublic

  • pages_write_permission_check changé pour Elgg\Pages\Permissions::allowWriteAccess

  • Elgg\Pages\Menus::registerPageMenuItems changé pour Elgg\Pages\Menus\PagesNav::register

  • _profile_admin_page_menu changé pour Elgg\Profile\Menus\Page::registerAdminProfileFields

  • _profile_fields_setup changé pour Elgg\Profile\FieldsHandler

  • _profile_title_menu changé pour Elgg\Profile\Menus\Title::register

  • _profile_topbar_menu changé pour Elgg\Profile\Menus\Topbar::register

  • _profile_user_hover_menu changé pour Elgg\Profile\Menus\UserHover::register

  • _profile_user_page_menu changé pour Elgg\Profile\Menus\Page::registerProfileEdit

  • profile_default_widgets_hook changé pour Elgg\Profile\Widgets::getDefaultWidgetsList

  • reportedcontent_user_hover_menu changé pour Elgg\ReportedContent\Menus\UserHover::register

  • search_exclude_robots changé pour Elgg\Search\Site::preventSearchIndexing

  • search_output_tag changé pour Elgg\Search\Views::setSearchHref

  • site_notifications_register_entity_menu changé pour Elgg\SiteNotifications\Menus\Entity::register

  • site_notifications_send changé pour Elgg\SiteNotifications\Notifications::createSiteNotifications

  • _uservalidationbyemail_user_unvalidated_bulk_menu changé pour Elgg\UserValidationByEmail\Menus\UserUnvalidatedBulk::register

  • _uservalidationbyemail_user_unvalidated_menu changé pour Elgg\UserValidationByEmail\Menus\UserUnvalidated::register

  • uservalidationbyemail_after_registration_url changé pour Elgg\UserValidationByEmail\Response::redirectToEmailSent

  • uservalidationbyemail_check_manual_login changé pour Elgg\UserValidationByEmail\User::preventLogin

  • uservalidationbyemail_disable_new_user changé pour Elgg\UserValidationByEmail\User::disableUserOnRegistration

  • system_log_archive_cron changé pour Elgg\SystemLog\Cron::rotateLogs

  • system_log_default_logger changé pour Elgg\SystemLog\Logger::log

  • system_log_delete_cron changé pour Elgg\SystemLog\Cron::deleteLogs

  • system_log_listener changé pour Elgg\SystemLog\Logger::listen

  • system_log_user_hover_menu changé pour Elgg\SystemLog\Menus\UserHover::register

  • thewire_add_original_poster changé pour Elgg\TheWire\Notifications\CreateTheWireEventHandler

  • thewire_owner_block_menu changé pour Elgg\TheWire\Menus\OwnerBlock::register

  • thewire_prepare_notification changé pour Elgg\TheWire\Notifications\CreateTheWireEventHandler

  • thewire_setup_entity_menu_items changé pour Elgg\TheWire\Menus\Entity::register

Exceptions retravaillées

Toutes les exceptions du système Elgg étendent désormais Elgg\Exceptions\Exception et se trouvent dans l’espace de noms Elgg\Exceptions

Exceptions déplacées

  • ClassException utilisez Elgg\Exceptions\ClassException

  • ConfigurationException utilisez Elgg\Exceptions\ConfigurationException

  • CronException utilisez Elgg\Exceptions\CronException

  • DatabaseException utilisez Elgg\Exceptions\DatabaseException

  • DataFormatException utilisez Elgg\Exceptions\DataFormatException

  • InstallationException utilisez Elgg\Exceptions\Configuration\InstallationException

  • InvalidParameterException utilisez Elgg\Exceptions\InvalidParameterException

  • IOException utilisez Elgg\Exceptions\FileSystem\IOException

  • LoginException utilisez Elgg\Exceptions\LoginException

  • PluginException utilisez Elgg\Exceptions\PluginException

  • RegistrationException utilisez Elgg\Exceptions\Configuration\RegistrationException

  • SecurityException utilisez Elgg\Exceptions\SecurityException

  • Elgg\Database\EntityTable\UserFetchFailureException utilisez Elgg\Exceptions\Database\UserFetchFailureException

  • Elgg\Di\FactoryUncallableException utilisez Elgg\Exceptions\Di\FactoryUncallableException

  • Elgg\Di\MissingValueException utilisez Elgg\Exceptions\Di\MissingValueException

  • Elgg\Http\Exception\AdminGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\AdminGatekeeperException

  • Elgg\Http\Exception\AjaxGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\AjaxGatekeeperException

  • Elgg\Http\Exception\GroupToolGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\GroupToolGatekeeperException

  • Elgg\Http\Exception\LoggedInGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\LoggedInGatekeeperException

  • Elgg\Http\Exception\LoggedOutGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\LoggedOutGatekeeperException

  • Elgg\Http\Exception\UpgradeGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\UpgradeGatekeeperException

  • Elgg\I18n\InvalidLocaleException utilisez Elgg\Exceptions\I18n\InvalidLocaleException

  • Elgg\BadRequestException utilisez Elgg\Exceptions\Http\BadRequestException

  • Elgg\CsrfException utilisez Elgg\Exceptions\Http\CsrfException

  • Elgg\EntityNotFoundException utilisez Elgg\Exceptions\Http\EntityNotFoundException

  • Elgg\EntityPermissionsException utilisez Elgg\Exceptions\Http\EntityPermissionsException

  • Elgg\GatekeeperException utilisez Elgg\Exceptions\Http\GatekeeperException

  • Elgg\GroupGatekeeperException utilisez Elgg\Exceptions\Http\Gatekeeper\GroupGatekeeperException

  • Elgg\HttpException utilisez Elgg\Exceptions\HttpException

  • Elgg\PageNotFoundException utilisez Elgg\Exceptions\Http\PageNotFoundException

  • Elgg\ValidationException utilisez Elgg\Exceptions\Http\ValidationException

  • Elgg\WalledGardenException utilisez Elgg\Exceptions\Http\Gatekeeper\WalledGardenException

Exceptions supprimées

  • CallException

  • ClassNotFoundException

  • IncompleteEntityException

  • InvalidClassException

  • NotificationException

  • NotImplementedException du plugin Web Services

Traits retravaillés

Afin de mieux organiser l’espace de noms Elgg, tous les Traits ont été déplacés vers l’espace de noms Elgg\Traits

  • Elgg\Cacheable a été déplacé vers Elgg\Traits\Cacheable

  • Elgg\Cli\PluginsHelper a été déplacé vers Elgg\Traits\Cli\PluginsHelper

  • Elgg\Cli\Progressing a été déplacé vers Elgg\Traits\Cli\Progressing

  • Elgg\Database\Seeds\Seeding\GroupHelpers a été déplacé vers Elgg\Traits\Seeding\GroupHelpers

  • Elgg\Database\Seeds\Seeding\TimeHelpers a été déplacé vers Elgg\Traits\Seeding\TimeHelpers

  • Elgg\Database\Seeds\Seeding a été déplacé vers Elgg\Traits\Seeding

  • Elgg\Database\LegacyQueryOptionsAdapter a été déplacé vers Elgg\Traits\Database\LegacyQueryOptionsAdapter

  • Elgg\Debug\Profilable a été déplacé vers Elgg\Traits\Debug\Profilable

  • Elgg\Di\ServiceFacade a été déplacé vers Elgg\Traits\Di\ServiceFacade

  • Elgg\Entity\ProfileData a été déplacé vers Elgg\Traits\Entity\ProfileData

  • Elgg\Loggable a été déplacé vers Elgg\Traits\Loggable

  • Elgg\Notifications\EventSerialization a été déplacé vers Elgg\Traits\Notifications\EventSerialization

  • Elgg\TimeUsing a été déplacé vers Elgg\Traits\TimeUsing

Modifications d’API diverses

  • La valeur par défaut pour ignore_empty_body et prevent_double_submit lors de l’utilisation de elgg_view_form a été changé pour true.

  • Les formulaires de paramètres de plugin (plugins/{$plugin_id}/settings) ne reçoivent plus $vars['plugin'], utilisez $vars['entity']

  • Elgg\Router\Middleware\WalledGarden::isPublicPage() ne peut plus être appelé de manière statique

  • Elgg\Cli\Plugin Helper::get Dependents() n’est plus disponible publiquement

  • ElggPlugin::getLanguagesPath() n’est plus disponible publiquement

  • Un \ElggBatch n’implémente plus l’interface Elgg\BatchResult mais a toujours les mêmes fonctionnalités

  • Une \ElggEntity n’implémente plus l’interface Locatable mais a toujours les mêmes fonctionnalités

  • Un \Elgg\Event n’implémente plus les interfaces \Elgg\ObjectEvent et \Elgg\UserEvent mais a toujours les mêmes fonctionnalités

  • La vue output/icon n’utilise plus la variable de vue convert

  • ElggData::save() renvoie désormais toujours un bool tel que documenté. Toutes les classes d’extension ont été mises à jour (par exemple ElggEntity, ElggMetadata, ElggRelationship, etc.)

  • Elgg\Email::getTo() renvoie désormais toujours un array

  • ElggPlugin::activate() et ElggPlugin::deactivate() peuvent maintenant lancer une Elgg\Exceptions\PluginException avec plus d’informations sur l’échec

  • \ElggRelationship::RELATIONSHIP_LIMIT a été supprimé utilisez ElggDatabaseRelationshipsTable::RELATIONSHIP_COLUMN_LENGTH``

  • Les constantes ORIGIN_SUBSCRIPTIONS et ORIGIN_INSTANT dans \Elgg\Notifications\Notification ont été supprimées

  • Vous ne pouvez plus utiliser l’événement delete, <entity_type> pour empêcher la suppression d’une entité. Utilisez l’événement delete:before, <entity_type>

  • Les fichiers externes ne sont plus classés par priorité mais seront retournés dans le même ordre qu’ils sont enregistrés

  • L’interface Friendable a été supprimée. Les fonctions implémentées dans ElggUser ont été déplacées vers Elgg\Traits\Entity\Friends

  • Le drapeau de configuration profile_using_custom n’est plus disponible

  • La valeur de retour de elgg_create_river_item() sera false dans le cas où la création a été empêchée par l’événement 'create:before', 'river'

  • La constante ELGG_PLUGIN_USER_SETTING_PREFIX a été supprimée, utilisez la fonction d’assistance \ElggUser::getNamespacedPluginSettingName()

  • La constante ELGG_PLUGIN_INTERNAL_PREFIX a été supprimée, pour obtenir le nom de paramètre privé de priorité du plugin utilisez \ElggPlugin::PRIORITY_SETTING_NAME

  • La classe SiteNotificationFactory a été supprimée, utilisez SiteNotification::factory()

  • La classe Elgg\Email\Address ne lance plus Laminas\Mail\Exception\InvalidArgumentException mais lance maintenant Elgg\Exceptions\InvalidArgumentException

APIs dépréciées

Fonctions de classe

  • ElggPlugin::getUserSetting() utilisez ElggUser::getPluginSetting()

  • ElggPlugin::setUserSetting() utilisez ElggUser::setPluginSetting()

Fonctions de la bibliothèque

  • forward() utilisez des instances Elgg\Exceptions\HttpException ou elgg_redirect_response()

Hooks plugin

  • 'usersettings', 'plugin' utilisez le hook 'plugin_setting', '<entity type>'

Fonctions supprimées

Fonctions de classe

  • Elgg\Config::getEntityTypes() utilisez la constante Elgg\Config::ENTITY_TYPES

  • ElggFile::setDescription() utilisez $file->description = $new_description

  • ElggGroup::addObjectToGroup()

  • ElggGroup::removeObjectFromGroup()

  • ElggPlugin::getAllUserSettings()

  • ElggPlugin::getDependencyReport()

  • ElggPlugin::getError()

  • ElggPlugin::unsetAllUserSettings()

  • ElggPlugin::unsetAllUserAndPluginSettings() utilisez ElggPlugin::unsetAllEntityAndPluginSettings()

  • ElggWidget::getContext() utilisez $entity->context

  • ElggWidget::setContext() utilisez $entity->context = $context

  • Elgg\Notifications\NotificationsService::getDeprecatedHandler()

  • Elgg\Notifications\NotificationsService::getMethodsAsDeprecatedGlobal() utilisez elgg_get_notification_methods()

  • Elgg\Notifications\NotificationsService::registerDeprecatedHandler()

  • Elgg\Notifications\NotificationsService::setDeprecatedNotificationSubject()

  • Elgg\Email::getRecipient() utilisez Elgg\Email::getTo()

  • Elgg\Email::setRecipient()

  • Elgg\Entity::getLocation() utilisez $entity->location

  • Elgg\Entity::setLocation() utilisez $entity->location = $location

Fonctions de la bibliothèque

  • access_get_show_hidden_status() utilisez elgg()->session->getDisabledEntityVisibility()

  • diagnostics_md5_dir()

  • elgg_add_subscription() utilisez \ElggEntity::addSubscription()

  • elgg_get_available_languages() utilisez elgg()->translator->getAvailableLanguages()

  • elgg_get_all_plugin_user_settings()

  • elgg_get_entities_from_plugin_user_settings() utilisez elgg_get_entities() avec les paramètres de configuration privés et préfixez le nom de votre paramètre avec plugin:user_setting:

  • elgg_get_filter_tabs() utilise les hooks de menu sur 'register', 'menu:filter:<filter_id>'

  • elgg_get_loaded_css() utilisez elgg_get_loaded_external_files('css', 'head')

  • elgg_get_loaded_js() utilisez elgg_get_loaded_external_files('js', $location)

  • elgg_get_system_messages() utilisez elgg()->system_messages->loadRegisters()

  • elgg_prepend_css_urls()

  • elgg_remove_subscription() utilisez \ElggEntity::removeSubscription()

  • elgg_set_plugin_setting() utilisez $plugin->setSetting($name, $value)

  • elgg_set_plugin_user_setting() utilisez ElggUser::setPluginSetting()

  • elgg_set_system_messages() utilisez elgg()->system_messages->saveRegisters()

  • elgg_unset_plugin_setting() utilisez $plugin->unsetSetting($name)

  • elgg_unset_plugin_user_setting() utilisez ElggUser::removePluginSetting()

  • get_language_completeness() utilisez elgg()->translator->getLanguageCompleteness()

  • get_installed_translations() utilisez 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() utilisez \ElggWire::getParent()

  • validate_email_address() utilisez elgg()->accounts->assertValidEmail()

  • validate_password() utilisez elgg()->accounts->assertValidPassword()

  • validate_username() utilisez elgg()->accounts->assertValidUsername()

Vues / ressources supprimées

  • admin/develop_tools/inspect/webservices

  • elgg/thewire.js

  • input/urlshortener

  • messages/js a été déplacé vers forms/messages/process.js

  • navigation/menu/elements/item_deps la fonctionnalité a été fusionnée dans navigation/menu/elements/item

  • object/plugin/elements/contributors

  • notifications/groups

  • notifications/personal utilisez notifications/settings ou notifications/users

  • notifications/settings/personal a été déplacé vers notifications/settings/records

  • notifications/settings/collections

  • notifications/settings/other étend notifications/settings/records

  • notifications/subscriptions/groups utilisez forms/notifications/subscriptions/groups

  • notifications/subscriptions/users utilisez forms/notifications/subscriptions/users

  • resources/comments/view utilisez \Elgg\Controllers\CommentEntityRedirector

  • resources/river utilisez resources/activity/all ou resources/activity/owner ou resources/activity/friends

  • reportedcontent/admin_css

  • thewire/previous

Hooks/événements retirés

  • L’événement created, river a été supprimé. Utilisez l’événement create:after, river.

  • Le hook creating, river a été supprimé. Utilisez l’événement create:before, river si vous souhaitez bloquer la création d’un élément river.

  • Le hook filter_tabs, <context> a été supprimé. Utilisez le hook register, menu:filter:<filter_id>

  • Le hook output, ajax a été supprimé. Utilisez le hook ajax_response si vous souhaitez modifier les résultats.

  • Le hook reportedcontent:add a été supprimé. Utilisez l’événement create, object pour empêcher la création.

  • Le hook reportedcontent:archive a été supprimé. Utilisez le hook permissions_check, object.

  • Le hook reportedcontent:delete a été supprimé. Utilisez l’événement delete, object pour empêcher la suppression.

Actions supprimées

  • L’action reportedcontent/delete a été remplacée par une action de suppression d’entité générique