De 2.2 à 2.3

Version de PHP

PHP 5.5 a atteint la date de fin de support en Juillet 2016. Afin de s’assurer que les sites Elgg soient sécurisés, nous exigeons désormais PHP 5.6 pour les nouvelles installations.

Les installations existantes peuvent continuer à utiliser PHP 5.5 jusqu’à Elgg 3.0.

Afin de mettre à niveau Elgg vers la version 2.3 en utilisant composer avec PHP 5.5, vous pouvez avoir besoin d’utiliser le drapeau --ignore-platform-reqs.

APIs dépréciées

  • Enregistrement pour le hook to:object par le nom de l’extenseur : Utilisez les hooks to:object, annotation et to:object, metadata à la place.

  • ajax_forward_hook() : N’est plus utilisé comme gestionnaire pour le hook “forward”,”all”`. La réponse Ajax est maintenant enveloppée par la ResponseFactory

  • ajax_action_hook() : N’est plus utilisé comme gestionnaire pour le hook “action”,”all”. La mise en mémoire tampon de la sortie commence maintenant avant que le hook ne soit déclenché dans ActionsService

  • elgg_error_page_handler() : N’est plus utilisé comme gestionnaire pour les hooks “forward”,<error_code>

  • get_uploaded_file() : Utilisez la nouvelle API d’envoi de fichiers à la place

  • get_user_notification_settings() : Utilisez ElggUser::getNotificationSettings()

  • set_user_notification_setting() : Utilisez ElggUser::setNotificationSetting()

  • événement pagesetup, system : Utilisez le menu ou les hooks de la coquille de la page - page shell - à la place.

  • Le JavaScript elgg.walled_garden est obsolète : Utilisez le module AMD elgg/walled_garden à la place.

  • elgg()->getDb()->getTableprefix() : Utilisez elgg_get_config('dbprefix').

  • update_entity_last_action() est une fonction privée : Évitez de mettre à jour manuellement le timestamp de la dernière action.

  • Définir un access_id non-public sur une métadonnée est obsolète. Voyez ci-dessous.

  • get_resized_image_from_existing_file() : Utilisez elgg_save_resized_image().

  • get_resized_image_from_uploaded_file() : Utilisez elgg_save_resized_image() en combinaison avec l’API d’envoi de fichier

  • get_image_resize_parameters() sera supprimé.

  • elgg_view_input() : Utilisez elgg_view_field(). Toutes nos excuses pour le changement d’API.

Vues obsolètes

  • resources/file/world : Utilisez la vue resources/file/all.

  • resources/pages/world : Utilisez la vue resources/pages/all.

  • walled_garden.js : Utilisez le module elgg/walled_garden à la place.

Nouvelle API pour la gestion des pages et des actions

Les gestionnaires de pages et les fichiers de script d’action doivent maintenant renvoyer une instance de \Elgg\Http\ResponseBuilder. Les plugins devraient utiliser les fonctions suivantes pour créer des réponses :

  • elgg_ok_response() envoie une réponse 2xx avec des données HTML (gestionnaire de page) ou JSON (actions)

  • elgg_error_response() envoie une réponse 4xx ou 5xx sans contenu/donnée

  • elgg_redirect_response() redirige silencieusement la requête

Nouvelle API pour travailler avec l’envoi de fichiers

  • elgg_get_uploaded_files() - renvoie un tableau d’objets Symfony de fichiers téléchargés

  • ElggFile::acceptUploadedFile() - déplace un fichier téléchargé dans le répertoire de fichiers de Elgg

Nouvelle API pour la manipulation d’images

Le nouveau service de manipulation d’images met en œuvre une approche plus efficace pour recadrer et redimensionner les images.

  • elgg_save_resized_image() - recadre et redimensionne une image aux dimensions choisies

Nouvelle API pour les événements

  • elgg_clear_event_handlers() - similaire à elgg_clear_plugin_hook_handlers cette fonction supprime tous les gestionnaires d’événements enregistrés

Nouvelle API pour la signature des URLs

Les URLs peuvent désormais être signées avec une clef HMAC SHA-256 et validées à tout moment avant l’expiration de l’URL. Cette fonctionnalité peut être utilisée pour tokenizer l’URL d’action dans les notifications par e-mail, ainsi que d’autres utilisations en dehors de l’installation Elgg.

  • elgg_http_get_signed_url() - signe l’URL avec la clef HMAC

  • elgg_http_validate_signed_url() - valide l’URL signée

  • elgg_signed_request_gatekeeper() - gardien qui valide la signature de la requête en cours

Vues de formulaire extensibles

Le rendu du pied de page du formulaire peut maintenant être reporté jusqu’à ce que la vue du formulaire et ses extensions aient terminé le rendu. Cela permet aux plugins de collaborer sur les vues de formulaire sans casser la logique de balisage.

  • elgg_set_form_footer() - définit le pied de page du formulaire pour un rendu différé

  • elgg_get_form_footer() - renvoie le pied de page du formulaire actuellement défini

Métadonnées access_id

Il est maintenant obsolète de créer des métadonnées avec une valeur explicite de access_id autre que ACCESS_PUBLIC.

Dans Elgg 3.0, les métadonnées ne sont pas contrôlées et sont disponibles dans tous les contextes. Si votre plugin repose sur le contrôle d’accès des métadonnées, il serait sage de migrer le stockage vers des annotations ou des entités à la place.

Nouvelle API pour extraire des noms de classes à partir de tableaux

Semblable à elgg_extract(), elgg_extract_class() extrait la clef class (si elle est présente), la fusionne avec les noms de classe existants, et renvoie toujours un tableau.

Notifications

  • Un hook de haut niveau 'prepare','notification' est maintenant déclenché pour les notifications instantanées et d’abonnement et peut être utilisé pour modifier les objets de notification quel que soit leur type.

  • le hook 'format','notification:<method>' est maintenant déclenché pour les notifications instantanées et d’abonnement et peut être utilisé pour formater la notification (par ex. pour supprimer des balises HTML, envelopper le corps de la notification dans un modèle, etc.).

  • Les notifications instantanées sont désormais traitées par le service de notifications, de sorte que la quasi-totalité des hooks applicables aux notifications d’abonnement s’appliquent également aux notifications instantanées.

  • elgg_get_notification_methods() peut être utilisé pour obtenir les méthodes de notification enregistrées

  • Ajout de ElggUser::getNotificationSettings() et ElggUser::setNotificationSetting()

Les fonctions de liste d’entités peuvent générer des tableaux

Dans des fonctions telles que elgg_list_entities($options), le rendu sous forme de tableau est possible en définissant $options['list_type'] = 'table' et en fournissant un tableau de colonnes de tableau dans $options['columns']. Chaque colonne est un objet Elgg\Views\TableColumn, généralement créé via des méthodes du service elgg()->table_columns.

Les plugins peuvent fournir ou modifier ces méthodes d’usine - factory methods (voir Elgg\Views\TableColumn\ColumFactory). Pour un exemple d’utilisation, consultez la vue admin/users/newest.

Composants d’onglets en ligne

Le composant des onglets en ligne peut désormais être rendu avec la vue page/components/tabs. Le composant permet de basculer entre pré-remplissage et chargement-par-ajax. Voir page/components/tabs dans les vues du noyau et theme_sandbox/components/tabs dans le plugin developers pour des instructions d’utilisation et des exemples.

API pour modifier l’URL d’inscription et de connexion

  • elgg_get_registration_url() doit être utilisé pour obtenir l’URL d’inscription sur le site

  • elgg_get_login_url() doit être utilisé pour obtenir l’URL de connexion du site

  • le hook registration_url, site peut être utilisé pour modifier l’URL d’inscription par défaut

  • le hook login_url, site peut être utilisé pour modifier l’URL de connexion par défaut

Prise en charge des jeux de champs - fieldsets - dans les formulaires

  • elgg_view_field() remplace elgg_view_input(). Elle dispose d’une API similaire, mais accepte un seul tableau.

  • elgg_view_field() prend en charge #type, #label, #help et #class, permettant l’envoi de versions non préfixées à la vue d’entrée $vars.

  • La nouvelle vue input/fieldset peut être utilisée pour rendre un ensemble de champs, chacun rendu avec elgg_view_field().