J3.x

User Action Logs/it

From Joomla! Documentation

This page is a translated version of the page J3.x:User Action Logs and the translation is 66% complete.

Other languages:
Deutsch • ‎English • ‎eesti • ‎français • ‎Bahasa Indonesia • ‎italiano
Joomla! 
3.9
Tutorial
Come utilizzare il nuovo sistema di registrazione delle azioni

A partire da Joomla 3.9, Joomla ha introdotto un sistema di registrazione delle azioni.

Questo sistema è la finalizzazione di "Recording Action Logs" project from GSoC 2016. Questo sistema fornisce un'infrastruttura per creare un registro di controllo dell'attività svolta su un sito Web e può essere regolato con precisione sulle preferenze dell'amministratore del sito. Le estensioni sono in grado di collegarsi a questo sistema per aggiungere messaggi personalizzati o far sì che il sistema elabori le azioni CRUD standard.
In questo tutorial, troverai informazioni su come configurare questo nuovo sistema.

Note: Solo i Super User hanno accesso al sistema Action Logging.

Componente

Dashboard del registro delle azioni dell'utente

Passare a Utenti  registro azioni utente per accedere alla dashboard.

800px

Da questa schermata un Super User ha una panoramica globale di tutte le attività eseguite su un sito dagli utenti e ha la possibilità di rivedere, esportare, eliminare ed eliminare le voci.

Per saperne di più, vedere:

Plugin

System - User Actions Log

Una volta abilitato, questo plugin consente di definire il numero di giorni dopo i quali i registri verranno eliminati.

Action Log

Una volta attivato, questo plugin consente di registrare le azioni degli utenti per le estensioni principali.

Privacy - Action Logs

Una volta abilitato, questo plug-in consente di esportare i dati del registro azioni per la richiesta di riservatezza dell'utente.

Modulo

Registro delle azioni - Ultimo modulo

Questo modulo di amministrazione mostra sul pannello di controllo un elenco delle ultime azioni eseguite su un sito.

800px

Note: Il modulo non viene visualizzato per impostazione predefinita sui siti che eseguono l'aggiornamento a Joomla 3.9. Per visualizzarlo sul tuo pannello di controllo, vai aExtensions  Manage  Manage  Enable the System - User Actions Log plugin e poi andare a Extensions  Modules  Administrator  New  Action Logs-Latest

Si prega di vedere anche:Latest Actions Admin Module.

Come agganciare un'estensione al sistema

Please feel free to edit this section by improving or correcting it.


Component Installation Script

Add the extension to the table (#__action_logs_extensions) so that it will appear in the configuration of User Action Logs.

        $extension = 'com_mycomponent';
        $db = \Joomla\CMS\Factory::getDbo();
        $db->setQuery(' INSERT into #__action_logs_extensions (extension) VALUES ('.$db->Quote($extension).') ' );
	    try {
	        // If it fails, it will throw a RuntimeException
	        $result = $db->execute();
	    } catch (RuntimeException $e) {
	        \Joomla\CMS\Factory::getApplication()->enqueueMessage($e->getMessage());
	        return false;
	    }

Add the extension configuration to the table (#__action_log_config) so that your actions data will be captured.

		$logConf = new stdClass();
		$logConf->id = 0;
		$logConf->type_title = 'transaction';
		$logConf->type_alias = $extension;
		$logConf->id_holder = 'id';
		$logConf->title_holder = 'trans_desc';
		$logConf->table_name = '#__mycomponent_transaction';
		$logConf->text_prefix = 'COM_MYCOMPONENT_TRANSACTION';

	    try {
	       	// If it fails, it will throw a RuntimeException
			// Insert the object into the table.
			$result = Factory::getDbo()->insertObject('#__action_log_config', $logConf);
	    } catch (RuntimeException $e) {
	        \Joomla\CMS\Factory::getApplication()->enqueueMessage($e->getMessage());
	        return false;
	    }

Of course it would be best to perform some checking to ensure that the record doesn't already exist.

Component Helper

In this example, the component helper is used to perform the storing of actions.

	/**
	 * Record transaction details in log record
	 * @param   object  $user    Saves getting the current user again.
	 * @param   int     $tran_id  The transaction id just created or updated
	 * @param   int     $id  Passed id reference from the form to identify if new record
	 * @return  boolean	True
	 */
    public static function recordActionLog($user = null, $tran_id = 0, $id = 0)
	{
			// get the component details such as the id
		$extension =  MycomponentHelper::getExtensionDetails('com_mycomponent');
		// get the transaction details for use in the log for easy reference
        $tran = MycomponentHelper::getTransaction($tran_id);
        $con_type = "transaction";
        if ($id === 0) { $type = 'New '; } else { $type = 'Update '; }

		$message = array();
		$message['action'] = $con_type;
		$message['type'] = $type . $tran->tran_type . ' - '.$tran->tran_desc . ' $' . $tran->tran_amount;
		$message['id'] = $tran->id;
		$message['title'] = $extension->name;
		$message['extension_name'] = $extension->name;
		$message['itemlink'] = "index.php?option=com_mycomponent&task=transaction.edit&id=".$tran->id;
		$message['userid'] = $user->id;
		$message['username'] = $user->username;
		$message['accountlink'] = "index.php?option=com_users&task=user.edit&id=".$user->id;
		
		$messages = array($message);
		
		$messageLanguageKey = Text::_('COM_MYCOMPONENT_TRANSACTION_LINK');
		$context = $extension->name.'.'.$con_type;
		
		$fmodel = MycomponentHelper::getForeignModel('Actionlog', 'ActionlogsModel');

		$fmodel->addLog($messages, $messageLanguageKey, $context, $user->id);

		return true;
	}

	/**
	 * Get the Model from another component for use
	 * @param   string  $name    The model name. Optional. Default to my own for safety.
	 * @param   string  $prefix  The class prefix. Optional
	 * @param   array   $config  Configuration array for model. Optional
	 * @return object	The model
	 */
	public function getForeignModel($name = 'Transaction', $prefix = 'MycomponentModel', $config = array('ignore_request' => true))
	{
		\Joomla\CMS\MVC\Model\ItemModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_actionlogs/models', 'ActionlogsModelActionlog');
		$fmodel = \Joomla\CMS\MVC\Model\ItemModel::getInstance($name, $prefix, $config);

		return $fmodel;
	}

Front End Transaction Form

Now that the foundations are set, we just need to trigger the process. We're capturing information about a transaction that is created or update and we have a model called transactionform.php. It is in the Save method that we want to capture a log.

	// So the code above this point checks and does what it should do and then after the successful save of the record, we check for the parameter setting to see if logging is required, we pass key elements to recordActionLog.
        $table = $this->getTable();

        if ($table->save($data) === true) {

			/* ---------------------------------------------------------------- */
			// trigger transaction log if required
			$act_log = $params->get('act_log', 0);
			if ($act_log && $table->id) {
				// gather information and log in a new action log record
				MycomponentHelper::recordActionLog($user, $table->id, $data['id']);
			}
			/* ---------------------------------------------------------------- */

            return $table->id;
        } else {
            return false;
        }

Language File

Finally, to help with the Action Log Listing in the admin side of Joomla, we want to set some key elements of data to be displayed in the language file en-GB.com_mycomponent.ini.

COM_MYCOMPONENT_TRANSACTION_LINK="User <a href='{accountlink}'>{username}</a> created a transaction ( <a href='{itemlink}'>{type}</a> )"

Hope this helps.