File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_gdpr/views/logs
Viewing File: /home/astoriaah/www/administrator/components/com_gdpr/views/logs/view.html.php
<?php // namespace administrator\components\com_gdpr\views\logs; /** * @package GDPR::LOGS::administrator::components::com_gdpr * @subpackage views * @subpackage logs * @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' ); /** * @package GDPR::LOGS::administrator::components::com_gdpr * @subpackage views * @subpackage logs * * @since 1.0 */ class GdprViewLogs extends GdprView { /** * Add the page title and toolbar. * * @since 1.6 */ protected function addDisplayToolbar() { $doc = JFactory::getDocument(); $doc->addStyleDeclaration('.icon-48-gdpr{background-image:url("components/com_gdpr/images/icon-48-links.png")}'); $user = JFactory::getUser(); JToolBarHelper::title( JText::_('COM_GDPR_LOGS_TITLE' ), 'gdpr' ); if ($user->authorise('core.edit', 'com_gdpr')) { JToolBarHelper::editList('logs.showentity', 'COM_GDPR_VIEW_LOG_DETAILS'); JToolBarHelper::custom('logs.exportCsvLogs', 'download', 'download', 'COM_GDPR_EXPORT_LOGS_CSV', false); JToolBarHelper::custom('logs.exportXlsLogs', 'download', 'download', 'COM_GDPR_EXPORT_LOGS_XLS', false); } if ($user->authorise('core.delete', 'com_gdpr') && $user->authorise('core.edit', 'com_gdpr')) { JToolBarHelper::deleteList('COM_GDPR_DELETE_ENTITY', 'logs.deleteEntity'); } JToolBarHelper::custom('cpanel.display', 'home', 'home', 'COM_GDPR_CPANEL', false); } /** * Add the page title and toolbar. * * @since 1.6 */ protected function addShowEntityToolbar() { $doc = JFactory::getDocument(); JToolBarHelper::title( JText::_('COM_GDPR_LOG_DETAILS_TITLE' ), 'gdpr' ); JToolBarHelper::custom('logs.display', 'arrow-left-2', 'arrow-left-2', 'COM_GDPR_BACK_TO_LIST_LOGS', false); } /** * Default display listEntities * * @access public * @param string $tpl * @return void */ public function display($tpl = null) { // Get main records $rows = $this->get ( 'Data' ); $total = $this->get ( 'Total' ); $lists = $this->get ( 'Filters' ); $doc = JFactory::getDocument(); $this->loadJQuery($doc); $this->loadJQueryUI($doc); // Required for draggable feature $this->loadBootstrap($doc); $doc->addScriptDeclaration(" Joomla.submitbutton = function(pressbutton) { Joomla.submitform( pressbutton ); if (pressbutton == 'logs.exportCsvLogs' || pressbutton == 'logs.exportXlsLogs') { jQuery('#adminForm input[name=task]').val('logs.display'); } return true; } "); $orders = array (); $orders ['order'] = $this->getModel ()->getState ( 'order' ); $orders ['order_Dir'] = $this->getModel ()->getState ( 'order_dir' ); // Pagination view object model state populated $pagination = new JPagination ( $total, $this->getModel ()->getState ( 'limitstart' ), $this->getModel ()->getState ( 'limit' ) ); $dates = array('start'=>$this->getModel()->getState('fromPeriod'), 'to'=>$this->getModel()->getState('toPeriod')); $this->user = JFactory::getUser (); $this->pagination = $pagination; $this->searchword = $this->getModel ()->getState ( 'searchword' ); $this->search_editorword = $this->getModel ()->getState ( 'search_editorword' ); $this->option = $this->getModel ()->getState ( 'option' ); $this->orders = $orders; $this->dates = $dates; $this->lists = $lists; $this->items = $rows; $this->revokablePrivacyPolicy = $this->getModel()->getComponentParams()->get('revokable_privacypolicy', 0); $this->logUserIpaddress = $this->getModel()->getComponentParams()->get('log_user_ipaddress', 0); // Aggiunta toolbar $this->addDisplayToolbar(); parent::display ( 'list' ); } /** * Mostra la visualizzazione dettaglio del record singolo * @param Object& $row * @access public */ public function showEntity($row) { // Sanitize HTML Object2Form JFilterOutput::objectHTMLSafe( $row ); // Add toolbar $this->addShowEntityToolbar(); $doc = JFactory::getDocument (); $this->loadJQuery($doc); $this->loadBootstrap($doc); $this->option = $this->getModel()->getState('option'); $this->record = $row; $this->revokablePrivacyPolicy = $this->getModel()->getComponentParams()->get('revokable_privacypolicy', 0); $this->logUserIpaddress = $this->getModel()->getComponentParams()->get('log_user_ipaddress', 0); parent::display('show'); } /** * Effettua l'output view del file in attachment al browser * * @access public * @param array $data * @return void */ public function sendCSVLogs($data) { $componentConfig = $this->getModel()->getComponentParams(); $delimiter = $componentConfig->get('csv_delimiter', ';'); $enclosure = $componentConfig->get('csv_enclosure', '"'); $paramsDelimiter = $delimiter == ';' ? "," : ';'; $paramsEnclosure = $enclosure == '"' ? "'" : '"'; // Clean dirty buffer ob_end_clean(); // Open buffer ob_start(); // Open out stream $outstream = fopen("php://output", "w"); // Funzione di scrittura nell'output stream function __outputCSV(&$vals, $key, $userData) { // Revokable privacy policy strip off if not headers if(!$userData[3] && $userData[4] === 0) { unset($vals['privacy_policy']); } $paramsEnclosure = $userData[5]; $paramsDelimiter = $userData[6]; $vals = array_map(function ($v, $k) use ($paramsEnclosure, $paramsDelimiter) { if($k === 'changes_structure') { $decodedParams = json_decode($v, true); $v = implode(' | ', array_map( function ($iv, $ik) use ($paramsEnclosure, $paramsDelimiter) { if($ik == 'change_params') { $cellOldValues = implode($paramsDelimiter . ' ', array_map( function ($iiv, $iik) use ($paramsEnclosure, $paramsDelimiter) { $cycledFieldNameTranslation = JText::_('COM_GDPR_LOGS_' . strtoupper($iik) . '_PROFILE'); if(strpos($cycledFieldNameTranslation, 'COM_GDPR_') !== false) { $cycledFieldNameTranslation = $iik; } if(is_array($iiv)) { $iiv = implode (', ', $iiv); } if($iiv == '1') { $iiv = JText::_('JYES'); } if($iiv == '0') { $iiv = JText::_('JNO'); } return sprintf("%s=$paramsEnclosure%s$paramsEnclosure", $cycledFieldNameTranslation, $iiv); }, $iv['oldvalue'], array_keys($iv['oldvalue']) )); $cellNewValues = implode($paramsDelimiter . ' ', array_map( function ($iiv, $iik) use ($paramsEnclosure, $paramsDelimiter) { $cycledFieldNameTranslation = JText::_('COM_GDPR_LOGS_' . strtoupper($iik) . '_PROFILE'); if(strpos($cycledFieldNameTranslation, 'COM_GDPR_') !== false) { $cycledFieldNameTranslation = $iik; } if(is_array($iiv)) { $iiv = implode (', ', $iiv); } if($iiv == '1') { $iiv = JText::_('JYES'); } if($iiv == '0') { $iiv = JText::_('JNO'); } return sprintf("%s=$paramsEnclosure%s$paramsEnclosure", $cycledFieldNameTranslation, $iiv); }, $iv['newvalue'], array_keys($iv['newvalue']) )); } elseif($ik == 'change_usergroups') { $cellOldValues = implode($paramsDelimiter, $iv['oldvalue']); $cellNewValues = implode($paramsDelimiter, $iv['newvalue']); } elseif($ik == 'change_block') { $cellOldValues = $iv['oldvalue'] == '1' ? JText::_('COM_GDPR_LOGS_BLOCKED_USER') : JText::_('COM_GDPR_LOGS_ENABLED_USER'); $cellNewValues = $iv['newvalue'] == '1' ? JText::_('COM_GDPR_LOGS_BLOCKED_USER') : JText::_('COM_GDPR_LOGS_ENABLED_USER'); } elseif($ik == 'change_activation') { $cellOldValues = $iv['oldvalue']; $cellNewValues = $iv['newvalue'] ? $iv['newvalue'] : "''"; } else { switch ($iv['oldvalue']) { case '1': $cellOldValues = JText::_('JYES'); break; case '0': $cellOldValues = JText::_('JNO'); break; default: $cellOldValues = $iv['oldvalue']; } switch ($iv['newvalue']) { case '1': $cellNewValues = JText::_('JYES'); break; case '0': $cellNewValues = JText::_('JNO'); break; default: $cellNewValues = $iv['newvalue']; } } if($ik == 'change_params') { return sprintf("%s: (%s) => (%s)", JText::_('COM_GDPR_LOGS_' . strtoupper($ik)), $cellOldValues, $cellNewValues); } else { return sprintf("%s: %s=>%s", JText::_('COM_GDPR_LOGS_' . strtoupper($ik)), $cellOldValues, $cellNewValues); } }, $decodedParams['changes'], array_keys($decodedParams['changes']) )); } else { switch($v){ case '1': $v = JText::_('JYES'); break; case '0': $v = JText::_('JNO'); break; } if($k === 'change_date') { $v = JHtml::_('date', $v, JText::_('COM_GDPR_DATE_FORMAT_FILTER_DATETIME')); } } return $v; }, $vals, array_keys($vals)); fputcsv($userData[0], $vals, $userData[1], $userData[2]); // add parameters if you want } // Echo delle intestazioni $headers = array( JText::_('COM_GDPR_NUM'), JText::_('COM_GDPR_LOGS_USER_ID'), JText::_('COM_GDPR_LOGS_NAME'), JText::_('COM_GDPR_LOGS_USERNAME'), JText::_('COM_GDPR_LOGS_EMAIL'), JText::_('COM_GDPR_LOGS_CHANGE_NAME'), JText::_('COM_GDPR_LOGS_CHANGE_USERNAME'), JText::_('COM_GDPR_LOGS_CHANGE_PASSWORD'), JText::_('COM_GDPR_LOGS_CHANGE_EMAIL'), JText::_('COM_GDPR_LOGS_CHANGE_PARAMS'), JText::_('COM_GDPR_LOGS_CHANGE_REQUIRERESET'), JText::_('COM_GDPR_LOGS_CHANGE_BLOCK'), JText::_('COM_GDPR_LOGS_CHANGE_SENDEMAIL'), JText::_('COM_GDPR_LOGS_CHANGE_USERGROUPS'), JText::_('COM_GDPR_LOGS_CHANGE_ACTIVATION'), JText::_('COM_GDPR_LOGS_CREATED_USER'), JText::_('COM_GDPR_LOGS_DELETED_USER'), JText::_('COM_GDPR_LOGS_EDITOR_USER_ID'), JText::_('COM_GDPR_LOGS_EDITOR_NAME'), JText::_('COM_GDPR_LOGS_EDITOR_USERNAME'), JText::_('COM_GDPR_LOGS_CHANGE_DATE'), JText::_('COM_GDPR_LOGS_CHANGES_DETAILS_ROW') ); $revokablePrivacyPolicy = (int)$componentConfig->get('revokable_privacypolicy', 0); if($revokablePrivacyPolicy) { array_splice($headers, 17, 0, JText::_('COM_GDPR_LOGS_PRIVACY_POLICY')); } $logUserIpaddress = (int)$componentConfig->get('log_user_ipaddress', 0); if($logUserIpaddress) { array_splice($headers, 5, 0, JText::_('COM_GDPR_LOGS_IPADDRESS')); } __outputCSV($headers, null, array($outstream, $delimiter, $enclosure, true, null, $paramsEnclosure, $paramsDelimiter)); // Output di tutti i records array_walk($data, "__outputCSV", array($outstream, $delimiter, $enclosure, false, $revokablePrivacyPolicy, $paramsEnclosure, $paramsDelimiter)); fclose($outstream); // Recupero output buffer content $contents = ob_get_clean(); $size = strlen($contents); // Set file date $dataExport = JHtml::_('date', time (), 'Y-m-d_H:i:s'); // Recupero output buffer content $exportedFileName = 'logs_user_changes_' . $dataExport . '.csv'; header ( 'Pragma: public' ); header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header ( 'Expires: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); header ( 'Content-Disposition: attachment; filename="' . $exportedFileName . '"' ); header ( 'Content-Type: text/plain' ); header ( "Content-Length: " . $size ); echo $contents; exit (); } /** * Effettua l'output view del file in attachment al browser * * @access public * @param array $data * @return void */ public function sendXLSLogs() { // Get main records $rows = $this->get ( 'Data' ); $lists = $this->get ( 'Filters' ); $dates = array('start'=>$this->getModel()->getState('fromPeriod'), 'to'=>$this->getModel()->getState('toPeriod')); $this->user = JFactory::getUser (); $this->searchword = $this->getModel ()->getState ( 'searchword' ); $this->search_editorword = $this->getModel ()->getState ( 'search_editorword' ); $this->state = $this->getModel ()->getState ( 'state' ); $this->option = $this->getModel ()->getState ( 'option' ); $this->dates = $dates; $this->items = $rows; $this->lists = $lists; $this->revokablePrivacyPolicy = $this->getModel()->getComponentParams()->get('revokable_privacypolicy', 0); $this->logUserIpaddress = $this->getModel()->getComponentParams()->get('log_user_ipaddress', 0); //Creazione buffer output ob_start (); // Parent construction and view display parent::display ( 'xls' ); $bufferContent = ob_get_contents (); ob_end_clean (); // Set file date $dataExport = date ( 'Y-m-d H:i:s', time () ); // Recupero output buffer content $exportedFileName = 'logs_user_changes_' . $dataExport . '.xls'; header ( 'Pragma: public' ); header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header ( 'Expires: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); header ( 'Content-Disposition: attachment; filename="' . $exportedFileName . '"' ); header ( 'Content-Type: application/vnd.ms-excel' ); echo $bufferContent; exit (); } }