it-swarm-eu.dev

Plugin utente onUserAfterLogin

Sto scrivendo un plugin utente personalizzato per scrivere l'id di sessione e l'id utente su un file txt (questo verrà a sua volta utilizzato per alcuni dei miei sistemi Perl) dopo che l'utente accede a Joomla. Finora sono riuscito a creare il file XML e il file php principale.

defined('_JEXEC');
jimport('joomla.plugin.plugin');

echo "hello"; //this works as when I login I can see the message on top of the message which makes me believe that the user plugin is installed correctly

// Whatever I try to print in the class, it seems to ignore.
class PlgUserperllogin extends JPlugin
{
    public function onUserAfterLogin($options)
    {
          $user = JFactory::getUser();
          $user_id = $user->get('username');
          $usertype = $user->get('usertype');
          $session = JFactory::getSession();
          $sessionid = $session->getId();
          //write to txt file
          //set cookie for the same
    }
}

Non sono sicuro di cosa manchi. Gradirei davvero qualsiasi aiuto in merito.

2
Teju Desai

Il nome della classe fa distinzione tra maiuscole e minuscole con Joomla, quindi assicurati che il nome del tuo plugin sia corretto. Ad esempio, se il percorso del plugin è:

plugins/user/qualcosa/something.php

allora useresti:

class PlgUserSomething extends JPlugin

Dovresti anche essere consapevole che usertype è obsoleto. Se desideri ottenere i gruppi di utenti, dai un'occhiata a un'altra risposta che ho scritto:

https://stackoverflow.com/a/18407692/1362108


Quindi, per il codice plug-in effettivo, prova a utilizzare quanto segue:

XML:

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="user" method="upgrade">
    <name>Something</name>
    <author>My Name</author>
    <creationDate>27-01-2017</creationDate>
    <copyright>Copyright (C) 2017</copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <version>1.0.0</version>
    <description>Something</description>
    <files>
        <filename plugin="something">something.php</filename>
    </files>
</extension>

PHP:

defined('_JEXEC');

class PlgUserSomething extends JPlugin
{
    public function onUserAfterLogin($options)
    {
          // User data
          $user_id = $options['user']->id;
          $groups  = $options['user']->groups;

          $allGroups = '';
          foreach($groups as $group)
          {
              $allGroups .= 'Group Id = ' . $group . ' ';
          }

          // Session data
          $session = JFactory::getSession();
          $sessionid = $session->getId();

          JFactory::getApplication()->enqueueMessage('The user ID is: ' . $user_id);
          JFactory::getApplication()->enqueueMessage('The session ID is: ' . $sessionid);

          // $allGroups is a string containing all the groups
          // Write to txt file
          // Set cookie for the same
    }
}

Ovviamente cambiando PlgUserSomething nel valore corretto per te.

2
Lodder