J'écris un plug-in utilisateur personnalisé pour écrire l'ID de session et l'ID d'utilisateur sur un fichier txt (celui-ci sera utilisé pour certains de mes systèmes Perl) après la connexion de l'utilisateur à Joomla. Jusqu'à présent, j'ai réussi à créer un fichier XML et le fichier php principal.
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
}
}
Je ne suis pas sûr de ce qui manque. J'apprécierais vraiment toute aide sur ceci.
Le nom de classe est sensible à la casse avec Joomla, alors assurez-vous que le nom de votre plugin est correct. Par exemple, si le chemin du plugin est:
plugins/utilisateur/quelque chose/quelque chose.php
alors vous utiliseriez:
class PlgUserSomething extends JPlugin
Vous devez également savoir que usertype
est obsolète. Si vous souhaitez obtenir le groupe [s] d'un utilisateur, regardez une autre réponse que j'ai écrite:
https://stackoverflow.com/a/18407692/1362108
Donc, pour le code du plugin actuel, essayez ce qui suit:
<?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>
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
}
}
Bien sûr changer PlgUserSomething
à la bonne valeur pour vous.