Contexte

Avertissement

Le contenu de cette page est obsolète. Bien que la fonctionnalité soit toujours en place, l’utilisation du contexte global pour déterminer votre logique de fonctionnement est une mauvaise pratique, et rendra votre code moins testable et plus sujet aux bogues.

Au sein du framework Elgg, le contexte peut être utilisé par les fonctions de votre plugin pour déterminer s’ils doivent s’exécuter ou non. Vous allez enregistrer des fonctions de rappel à exécuter lorsque des événements sont déclenchés. Parfois, les événements sont génériques et vous souhaitez uniquement exécuter votre fonction de rappel quand votre plugin est à l’origine du déclenchement de l’événement. Dans ce cas, vous pouvez utiliser le contexte de la page.

Vous pouvez définir explicitement le contexte avec set_context(). Le contexte est une chaîne de caractères, et généralement vous la définissez au nom de votre plugin. Vous pouvez récupérer le contexte avec la fonction get_context(). Il est toutefois préférable d’utiliser elgg_push_context($string) pour ajouter un contexte à la pile. Vous pouvez vérifier si le contexte que vous souhaitez ajouter est déjà dans la pile actuelle en appelant elgg_in_context($context). N’oubliez pas de dépiler (avec elgg_pop_context()) le contexte après l’avoir empilé, si vous n’en avez plus besoin.

Si vous ne le définissez pas, Elgg essaie de deviner le contexte. Si la page a été appelée via le routeur, le contexte est défini sur le premier segment de la route actuelle, par exemple profile dans profile/username.

Parfois, une vue va renvoyer un code HTML différent selon le contexte. Un plugin peut en profiter en définissant le contexte avant d’appeler elgg_view() sur la vue, puis en rétablissant le contexte d’origine. Cela se fait fréquemment avec le contexte de recherche - search.