web-dev-qa-db-fra.com

Comment déterminer quel composant crée un nouvel utilisateur?

Je travaille sur un plugin utilisateur délicat qui ne doit faire certaines choses que s'il est appelé depuis un composant tiers. Je pourrais vérifier l'option dans l'URL, mais je dois considérer que l'utilisateur peut être ajouté par l'intermédiaire d'une tierce partie utilisant MVC et le modèle directement, pas nécessairement avec un lien POUR ce composant tiers.

Y a-t-il un moyen de déterminer cela?

Mise à jour: Problème ancien, mais qui me hantait toujours, donc si cela présente un intérêt pour quiconque, j'ai créé une classe de journalisation qui permet de localiser les mises à jour de cette nature. sont terminés et enregistrez les données et paramètres impliqués pour une révision ultérieure. Son disponible gratuitement à JSE Github .

4
GDP

Vous pouvez vérifier le Itemid dans l'URL. S'il n'y a pas de Itemid, vous devez créer au moins un élément de menu caché pour la page d'inscription tierce. Le Itemid du menu peut être obtenu manuellement (zone d'administration -> menu):

enter image description here

ou par des codes dans votre plugin:

$app = JFactory::getApplication();
$item_id = $app->input->get('Itemid');

$menu = $app->getMenu();
$items = $menu->getItems('component', 'com_3rd_party');

foreach ($items as $item)
{
    if ($item->id == $item_id)
    {
        echo 'This is 3rd party!';
    }
}
1
Farahmand

Je suppose que vous pourriez essayer d’utiliser l’événement de plug-in onUserAfterSave ( Documentation) ) qui sera déclenché lors de la mise à jour d’un enregistrement utilisateur ou lors de l’ajout d’un nouvel utilisateur. Avec cet événement plugin vient le $isnew argument booléen. true est le moment où un nouvel enregistrement est ajouté.

J'espère que cela t'aides

1
Lodder