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.
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 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
}
}
Ovviamente cambiando PlgUserSomething
nel valore corretto per te.