J3.x

J3.x:Registros das ações dos usuários

From Joomla! Documentation

Revision as of 18:13, 19 September 2022 by Gkiyoshinishimoto (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎eesti • ‎français • ‎italiano • ‎português do Brasil • ‎Ελληνικά • ‎中文(台灣)‎ • ‎日本語
Joomla! 
3.9
Tutorial
Como usar o novo sistema dos registros das ações

A partir da versão 3.9, o Joomla! introduziu um sistema para registrar as ações.

Este sistema é a finalização do "Gravando os registros da ações" do GSoC 2016. Este sistema fornece uma infraestrutura para criar um registro para auditoria da atividade realizada em um site e pode ser ajustado às preferências da administração do site. As extensões podem se conectar a este sistema para adicionar mensagens personalizadas ou fazer com que o sistema processe ações CRUD padrão.
Neste tutorial, você encontrará informações sobre como configurar este novo sistema.

Nota: Apenas superusuários têm acesso ao sistema dos registros das ações.

Componente

Painel dos registros das ações dos usuários

Navegue até Usuários  Registros das ações dos usuários para acessar o painel.

800px

Nessa tela, um superusuário tem uma visão geral global de todas as atividades realizadas em um site pelos usuários e tem a capacidade de revisar, exportar, excluir e limpar entradas.

Para saber mais, por favor consulte:

Plugin

Sistema - Registros das ações dos usuários

Uma vez habilitado, este plugin permite definir a quantidade, em dias, após os quais os registros serão apagados.

Registros das ações

Uma vez habilitado, este plugin permite registrar as ações dos usuários para as extensões principais.

Privacidade - Registros das ações

Uma vez habilitado, este plugin permite exportar os dados dos registros das ações para a solicitação de privacidade de um usuário.

Módulo

Módulo Registros das ações - Mais recentes

Este módulo administrativo mostra, no painel de controle, uma lista das últimas ações realizadas em um site.

800px

Nota: O módulo não é mostrado por padrão em sites que estão atualizando para o Joomla! 3.9. Para mostrá-lo em seu painel de controle, navegue até Extensões  Gerenciar  Gerenciar  Habilitar o plug-in Sistema - Registros das ações dos usuários e então vá para Extensõess  Módulos  Administrador  Novo  Registros das ações - Mais recentes

Por favor, consulte também:Módulo administrativo das ações mais recentes.

Como conectar uma extensão ao sistema

Por favor, sinta-se à vontade para editar esta seção, melhorando ou corrigindo-a.


Component Installation Script

Adicione a extensão à tabela (#__action_logs_extensions) para que ela apareça na configuração dos registros das ações dos usuários.

        $extension = 'com_mycomponent';
        $db = 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) {
	        Factory::getApplication()->enqueueMessage($e->getMessage());
	        return false;
	    }

Adicione a configuração da extensão à tabela (#__action_log_config) para que seus dados das ações sejam capturados.

		$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) {
	        Factory::getApplication()->enqueueMessage($e->getMessage());
	        return false;
	    }

É claro que seria melhor realizar algumas verificações para garantir que os registros ainda não existam.


Auxiliar dos componentes

Neste exemplo, o auxiliar do componente é usado para realizar o armazenamento das ações.

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

Formulário de transação do front-end

Agora que as bases estão definidas, só precisamos acionar o processo. Estamos capturando informações sobre uma transação que é criada ou atualizada e temos um modelo chamado transactionform.php. É no método "Save" que queremos capturar um 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;
        }

Arquivo da linguagem

Finalmente, para ajudar com a listagem os registros das ações no lado administrativo do Joomla!, queremos definir alguns elementos-chaves de dados a serem exibidos no arquivo da linguagem pt-BR.com_mycomponent.ini.

COM_MYCOMPONENT_TRANSACTION_LINK="O usuário <a href='{accountlink}'>{username}</a> criou uma transação ( <a href='{itemlink}'>{type}</a> )"

Esperamos que isso ajude.