File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_gdpr/models
Viewing File: /home/astoriaah/www/administrator/components/com_gdpr/models/logs.php
<?php // namespace administrator\components\com_gdpr\models; /** * @package GDPR::LOGS::administrator::components::com_gdpr * @subpackage models * @author Joomla! Extensions Store * @copyright (C) 2018 - Joomla! Extensions Store * @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html */ defined ( '_JEXEC' ) or die ( 'Restricted access' ); /** * Links model concrete implementation <<testable_behavior>> * * @package GDPR::LOGS::administrator::components::com_gdpr * @subpackage models * * @since 1.0 */ class GdprModelLogs extends GdprModel { /** * Build list entities query * * @access protected * @return string */ protected function buildListQuery() { // WHERE $where = array (); $whereString = null; $orderString = null; // STATE FILTER if ($filter_state = $this->state->get ( 'state' )) { if(strpos($filter_state, '0:') !== false) { $filter_state = str_replace('0:', '', $filter_state); $where [] = 's.' . $filter_state . ' = 0'; } else { $where [] = 's.' . $filter_state . ' = 1'; } } // TEXT FILTER if ($this->state->get ( 'searchword' )) { $where [] = "(s.name LIKE " . $this->_db->quote("%" . $this->state->get ( 'searchword' ) . "%") . " OR " . "s.username LIKE " . $this->_db->quote("%" . $this->state->get ( 'searchword' ) . "%") . " OR " . "s.email LIKE " . $this->_db->quote("%" . $this->state->get ( 'searchword' ) . "%") . ")"; } //Filtro periodo if($this->state->get('fromPeriod')) { $where[] = "\n s.change_date > " . $this->_db->quote($this->state->get('fromPeriod')); } if($this->state->get('toPeriod')) { $toPeriod = $this->state->get('toPeriod'); $toPeriod = date ( "Y-m-d", strtotime ( "+1 day", strtotime ( $toPeriod ) ) ); $where[] = "\n s.change_date < " . $this->_db->quote($toPeriod); } // TEXT FILTER if ($this->state->get ( 'search_editorword' )) { $where [] = "(s.editor_name LIKE " . $this->_db->quote("%" . $this->state->get ( 'search_editorword' ) . "%") . " OR " . "s.editor_username LIKE " . $this->_db->quote("%" . $this->state->get ( 'search_editorword' ) . "%") . ")"; } if (count ( $where )) { $whereString = "\n WHERE " . implode ( "\n AND ", $where ); } // ORDERBY if ($this->state->get ( 'order' )) { $orderString = "\n ORDER BY " . $this->state->get ( 'order' ) . " "; } // ORDERDIR if ($this->state->get ( 'order_dir' )) { $orderString .= $this->state->get ( 'order_dir' ); } // IP address field $ipAddress = ''; if($this->getComponentParams()->get('log_user_ipaddress', 0)) { $ipAddress = "\n s.ipaddress,"; } $query = "SELECT" . "\n s.id," . "\n s.user_id," . "\n s.name," . "\n s.username," . "\n s.email," . $ipAddress . "\n s.change_name," . "\n s.change_username," . "\n s.change_password," . "\n s.change_email," . "\n s.change_params," . "\n s.change_requirereset," . "\n s.change_block," . "\n s.change_sendemail," . "\n s.change_usergroups," . "\n s.change_activation," . "\n s.created_user," . "\n s.deleted_user," . "\n s.privacy_policy," . "\n s.editor_user_id," . "\n s.editor_name," . "\n s.editor_username," . "\n s.change_date," . "\n s.changes_structure" . "\n FROM #__gdpr_logs AS s" . $whereString . $orderString; return $query; } /** * Main get data methods * * @access public * @return Object[] */ public function getData() { // Build query $query = $this->buildListQuery (); $this->_db->setQuery ( $query, $this->getState ( 'limitstart' ), $this->getState ( 'limit' ) ); try { $result = $this->_db->loadObjectList (); if($this->_db->getErrorNum()) { throw new GdprException(JText::_('COM_GDPR_ERROR_RETRIEVING_RECORDS') . $this->_db->getErrorMsg(), 'error'); } } catch (GdprException $e) { $this->app->enqueueMessage($e->getMessage(), $e->getErrorLevel()); $result = array(); } catch (Exception $e) { $gdprException = new GdprException($e->getMessage(), 'error'); $this->app->enqueueMessage($gdprException->getMessage(), $gdprException->getErrorLevel()); $result = array(); } return $result; } /** * Return select lists used as filter for listEntities * * @access public * @return array */ public function getFilters() { $filters = array(); // Filter by redirect state $filterState = array(); $filterState[] = JHtml::_('select.option', null, JText::_('COM_GDPR_LOGS_ALL')); $filterState[] = JHtml::_('select.option', 'change_name', JText::_('COM_GDPR_LOGS_CHANGE_NAME')); $filterState[] = JHtml::_('select.option', 'change_username', JText::_('COM_GDPR_LOGS_CHANGE_USERNAME')); $filterState[] = JHtml::_('select.option', 'change_password', JText::_('COM_GDPR_LOGS_CHANGE_PASSWORD')); $filterState[] = JHtml::_('select.option', 'change_email', JText::_('COM_GDPR_LOGS_CHANGE_EMAIL')); $filterState[] = JHtml::_('select.option', 'change_params', JText::_('COM_GDPR_LOGS_CHANGE_PARAMS')); $filterState[] = JHtml::_('select.option', 'change_requirereset', JText::_('COM_GDPR_LOGS_CHANGE_REQUIRERESET')); $filterState[] = JHtml::_('select.option', 'change_block', JText::_('COM_GDPR_LOGS_CHANGE_BLOCK')); $filterState[] = JHtml::_('select.option', 'change_sendemail', JText::_('COM_GDPR_LOGS_CHANGE_SENDEMAIL')); $filterState[] = JHtml::_('select.option', 'change_usergroups', JText::_('COM_GDPR_LOGS_CHANGE_USERGROUPS')); $filterState[] = JHtml::_('select.option', 'change_activation', JText::_('COM_GDPR_LOGS_CHANGE_ACTIVATION')); $filterState[] = JHtml::_('select.option', 'created_user', JText::_('COM_GDPR_LOGS_CREATED_USER')); $filterState[] = JHtml::_('select.option', 'deleted_user', JText::_('COM_GDPR_LOGS_DELETED_USER')); // Add only if privacy policy revokable is enabled if($this->getComponentParams()->get('revokable_privacypolicy', 0)) { $filterState[] = JHtml::_('select.option', 'privacy_policy', JText::_('COM_GDPR_LOGS_PRIVACYPOLICY_USER')); $filterState[] = JHtml::_('select.option', '0:privacy_policy', JText::_('COM_GDPR_LOGS_NOT_PRIVACYPOLICY_USER')); } $filters ['state'] = JHtml::_ ( 'select.genericlist', $filterState, 'filter_state', 'onchange="Joomla.submitform();"', 'value', 'text', $this->getState ( 'state' )); return $filters; } /** * Return select lists used as filter for editEntity * * @access public * @param Object $record * @return array */ public function getLists($record = null) { $lists = parent::getLists($record); // Grid states //$lists ['evaluate_params'] = JHtml::_ ( 'select.booleanlist', 'evaluate_params', null, $record->evaluate_params ); return $lists; } /** * Esplica la funzione di esportazione della lista messaggi * in formato CSV per i record estratti dai filtri userstate attivi * @access public * @return Object[]& */ public function exportLogs() { // Obtain query string $query = $this->buildListQuery(); $this->_db->setQuery($query, $this->getState('limitstart'), $this->getState('limit') ); $resultSet = $this->_db->loadAssocList(); if(!is_array($resultSet) || !count($resultSet)) { return false; } return $resultSet; } }