J3.x

J3.x:Registri Azioni Utente

From Joomla! Documentation

This page is a translated version of the page J3.x:User Action Logs and the translation is 100% 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

Non esitate a modificare questa sezione migliorandola o correggendola.


Component Installation Script

Aggiungi l'estensione alla tabella (#__action_logs_extensions) in modo che appaia nella configurazione dei registri delle azioni dell'utente.

        $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;
	    }

Aggiungi la configurazione dell'estensione alla tabella (#__action_log_config) in modo che i dati delle tue azioni vengano acquisiti.

		$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;
	    }

Naturalmente sarebbe meglio eseguire alcuni controlli per assicurarsi che il record non esistesse già.

Componente di supporto

In questo esempio, il supporto del componente viene utilizzato per eseguire la memorizzazione delle azioni.

	/**
	 * 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;
	}

Modulo di transazione front-end

Ora che sono state poste le basi, dobbiamo solo innescare il processo. Stiamo acquisendo informazioni su una transazione che viene creata o aggiornata e abbiamo un modello chiamato transactionform.php . È nel metodo Salva che vogliamo acquisire un registro.

	// 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;
        }

File di lingua

Infine, per aiutare con l'elenco dei registri di azioni nella parte di amministrazione di Joomla, vogliamo impostare alcuni elementi chiave dei dati da visualizzare nel file di lingua en-GB.com_mycomponent.ini.

COM_MYCOMPONENT_TRANSACTION_LINK="L'Utente <a href='{accountlink}'>{username}</a> ha creato una transazione ( <a href='{itemlink}'>{type}</a> )"

Spero che questo ti aiuti.