File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_gdpr/views/cpanel
Viewing File: /home/astoriaah/www/administrator/components/com_gdpr/views/cpanel/view.html.php
<?php // namespace administrator\components\com_gdpr\views\cpanel; /** * * @package GDPR::CPANEL::administrator::components::com_gdpr * @subpackage views * @subpackage cpanel * @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' ); jimport ( 'joomla.application.component.view' ); /** * CPanel view * * @package GDPR::CPANEL::administrator::components::com_gdpr * @subpackage views * @subpackage cpanel * @since 1.6 */ class GdprViewCpanel extends GdprView { /** * Renderizza l'iconset del cpanel * * @param $link string * @param $image string * @access private * @return string */ private function getIcon($link, $image, $text, $target = '', $title = null, $class = 'icons') { $mainframe = JFactory::getApplication (); $lang = JFactory::getLanguage (); $option = $this->option; ?> <div class="<?php echo $class;?>" style="float:<?php echo ($lang->isRTL()) ? 'right' : 'left'; ?>;"> <div class="icon"> <a <?php echo $title . $class;?> <?php echo $target;?> href="<?php echo $link; ?>"> <div class="task <?php echo $image;?>"></div> <span class="task"><?php echo $text; ?></span> </a> </div> </div> <?php } /** * Add the page title and toolbar. * * @since 1.6 */ protected function addDisplayToolbar() { $doc = JFactory::getDocument(); JToolBarHelper::title( JText::_('COM_GDPR_CPANEL_TOOLBAR' ), 'gdpr' ); JToolBarHelper::custom('cpanel.display', 'home', 'home', 'COM_GDPR_CPANEL', false); } /** * Effettua il rendering del pannello di controllo * @access public * @return void */ public function display($tpl = null) { $doc = JFactory::getDocument (); $this->loadJQuery($doc); $this->loadBootstrap($doc); $doc->addStylesheet ( JUri::root ( true ) . '/administrator/components/com_gdpr/css/cpanel.css' ); $doc->addStylesheet ( JUri::root ( true ) . '/administrator/components/com_gdpr/css/audit.css' ); $doc->addScript ( JUri::root ( true ) . '/administrator/components/com_gdpr/js/chart.js' ); $doc->addScript ( JUri::root ( true ) . '/administrator/components/com_gdpr/js/cpanel.js' ); $doc->addScript ( JUri::root ( true ) . '/administrator/components/com_gdpr/js/audit.js' ); // Inject js translations $translations = array( 'COM_GDPR_START_CHART', 'COM_GDPR_NEW_CHART', 'COM_GDPR_DELETED_CHART', 'COM_GDPR_BREACHED_CHART', 'COM_GDPR_END_CHART', 'COM_GDPR_CATEGORY1_CHART', 'COM_GDPR_CATEGORY2_CHART', 'COM_GDPR_CATEGORY3_CHART', 'COM_GDPR_CATEGORY4_CHART', 'COM_GDPR_AUDIT_DIALOG_TITLE', 'COM_GDPR_AUDIT_CURRENT_TARGET_LINK', 'COM_GDPR_AUDIT_TARGET_LINK', 'COM_GDPR_AUDIT_CHOOSE_TARGET_LINK', 'COM_GDPR_AUDIT_CURRENT_STATUS_IDLE', 'COM_GDPR_AUDIT_CURRENT_STATUS_RUNNING', 'COM_GDPR_AUDIT_CURRENT_STATUS_COMPLETED', 'COM_GDPR_AUDIT_START', 'COM_GDPR_AUDIT_FOOTER', 'COM_GDPR_WIZARD_START', 'COM_GDPR_WIZARD_DESCRIPTION', 'COM_GDPR_WIZARD_STARTED', 'COM_GDPR_WIZARD_RESULTS_COOKIE', 'COM_GDPR_WIZARD_RESULTS_DOMAINS', 'COM_GDPR_WIZARD_COOKIE_RESULTS_NAME', 'COM_GDPR_WIZARD_DOMAIN_RESULTS_NAME', 'COM_GDPR_WIZARD_RESULTS_CATEGORY', 'COM_GDPR_WIZARD_NULL_RESPONSEDATA', 'COM_GDPR_WIZARD_ERROR_AUTOCONFIGURE', 'COM_GDPR_WIZARD_RESULTS_NOCOOKIES', 'COM_GDPR_WIZARD_RESULTS_NODOMAINS', 'COM_GDPR_AUDIT_RESULTS_COOKIE', 'COM_GDPR_AUDIT_RESULTS_COOKIE_NAME', 'COM_GDPR_AUDIT_RESULTS_COOKIE_VALUE', 'COM_GDPR_AUDIT_SEARCH_COOKIE', 'COM_GDPR_AUDIT_SEARCH_DOMAIN', 'COM_GDPR_AUDIT_RESULTS_DOMAINS', 'COM_GDPR_AUDIT_AUDIT_ERROR', 'COM_GDPR_WIZARD_ERROR_HTTP', 'COM_GDPR_AUDIT_STARTED', 'COM_GDPR_AUDIT_RESULTS_NOCOOKIES', 'COM_GDPR_AUDIT_RESULTS_NODOMAINS' ); $this->injectJsTranslations($translations, $doc); $this->componentParams = $this->getModel()->getComponentParams(); // Buffer delle icons ob_start (); $this->getIcon ( 'index.php?option=com_gdpr&task=logs.display', 'icon-list', JText::_ ( 'COM_GDPR_LOGS' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=consents.display', 'icon-database', JText::_ ( 'COM_GDPR_LOGS_CONSENTS' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=cookie.display', 'icon-cube', JText::_ ( 'COM_GDPR_LOGS_COOKIE_CONSENTS' ) ); if ($this->user->authorise('core.edit', 'com_gdpr')) { switch($this->componentParams->get('consent_registry_format', 'csv')) { case 'csv': $this->getIcon ( 'index.php?option=com_gdpr&task=cpanel.exportCsvRegistry', 'icon-printer', JText::_ ( 'COM_GDPR_EXPORT_REGISTRY' ) ); break; case 'xls': $this->getIcon ( 'index.php?option=com_gdpr&task=cpanel.exportXlsRegistry', 'icon-printer', JText::_ ( 'COM_GDPR_EXPORT_REGISTRY' ) ); break; } } $this->getIcon ( 'index.php?option=com_gdpr&task=checkbox.display', 'icon-checkbox-partial', JText::_ ( 'COM_GDPR_DYNAMIC_CHECKBOX' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=cookiedescriptions.display', 'icon-pencil', JText::_ ( 'COM_GDPR_COOKIE_DESCRIPTIONS' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=users.display', 'icon-users', JText::_ ( 'COM_GDPR_USERS' ) ); // Access check. if ($this->user->authorise('core.admin', 'com_gdpr')) { $this->getIcon ( 'index.php?option=com_gdpr&task=record.display', 'icon-calendar-2', JText::_ ( 'COM_GDPR_RECORD' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=config.display#_cookieconsent', 'icon-checkmark', JText::_ ( 'COM_GDPR_CONFIGURATION_COOKIECONSENT' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=config.display#_userprofile', 'icon-user', JText::_ ( 'COM_GDPR_USERPROFILE' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=config.display#_privacycheckbox', 'icon-checkbox', JText::_ ( 'COM_GDPR_CHECKBOX' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=config.display#_permissions', 'icon-lock', JText::_ ( 'COM_GDPR_PERMISSIONS' ) ); $this->getIcon ( 'index.php?option=com_gdpr&task=config.display', 'icon-cog', JText::_ ( 'COM_GDPR_CONFIG' ) ); } $this->getIcon ( 'javascript:void(0);', 'icon-cogs', JText::_ ( 'COM_GDPR_WEBSITE_AUDIT' ), '', null, 'icons audit' ); $this->getIcon ( 'http://storejextensions.org/gdpr_documentation.html', 'icon-help', JText::_ ( 'COM_GDPR_HELP' ) ); $contents = ob_get_clean (); $infoData = $this->getModel()->getData(); $doc->addScriptDeclaration('var gdprChartData = ' . json_encode($infoData) . ';'); $doc->addScriptDeclaration('var gdprBaseAuditHome = "' . JUri::root ( false ) . '";'); // Get uri instance avoidng subdomains already included in the routing chunks $uriInstance = JUri::getInstance(); $baseDomainLiveSite = rtrim($uriInstance->getHost(), '/'); $doc->addScriptDeclaration('var gdprBaseDomain = "' . $baseDomainLiveSite . '";'); // Assign reference variables $this->icons = $contents; $this->updatesData = $this->getModel()->getUpdates($this->get('httpclient')); $this->infodata = $infoData; $this->currentVersion = strval(simplexml_load_file(JPATH_COMPONENT_ADMINISTRATOR . '/gdpr.xml')->version); // Add toolbar $this->addDisplayToolbar(); // Output del template parent::display (); } /** * Effettua l'output view del file in attachment al browser * * @access public * @param array $data * @return void */ public function sendCSVRegistry($data) { $componentConfig = $this->getModel()->getComponentParams(); $delimiter = $componentConfig->get('csv_delimiter', ';'); $enclosure = $componentConfig->get('csv_enclosure', '"'); $userNotes = $componentConfig->get('log_usernote_privacypolicy', 1); $nullDate = $this->getModel()->getDbo()->getNullDate(); // 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) { $vals = array_map(function ($v, $k) use ($userData) { switch($v) { case null: $v = JText::_('COM_GDPR_LOGS_NA'); break; case '1': $v = JText::_('COM_GDPR_LOGS_ACCEPTED'); break; case '0': case null: $v = JText::_('COM_GDPR_LOGS_NOT_ACCEPTED'); break; } if($k === 'registerDate') { $v = $v == $userData[4] ? JText::_('COM_GDPR_NEVER') : JHtml::_('date', $v, JText::_('COM_GDPR_DATE_FORMAT_FILTER_DATETIME')); } if($k === 'body' && !$userData[5]) { $v = JText::_('COM_GDPR_LOGS_NA'); } return $v; }, $vals, array_keys($vals)); fputcsv($userData[0], $vals, $userData[1], $userData[2]); // add parameters if you want } // Echo delle intestazioni $headerFields = array( JText::_('COM_GDPR_LOGS_NAME'), JText::_('COM_GDPR_LOGS_USERNAME'), JText::_('COM_GDPR_LOGS_EMAIL'), JText::_('COM_GDPR_LOGS_REGISTERDATE'), JText::_('COM_GDPR_LOGS_PRIVACYPOLICY_STATUS'), JText::_('COM_GDPR_LOGS_PRIVACYPOLICY_DESCRIPTION') ); __outputCSV($headerFields, null, array($outstream, $delimiter, $enclosure, true, $nullDate, $userNotes)); // Output di tutti i records array_walk($data, "__outputCSV", array($outstream, $delimiter, $enclosure, false, $nullDate, $userNotes)); 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 = 'account_consent_registry_' . $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 sendXLSRegistry() { // Get main records $rows = $this->getModel()->exportRegistry('objects_array'); if(!$rows) { $this->app->enqueueMessage(JText::_('COM_GDPR_NODATA_EXPORT'), 'notice'); $this->app->redirect('index.php?option=' . $this->option . '&task=cpanel.display'); return false; } $componentConfig = $this->getModel()->getComponentParams(); $userNotes = $componentConfig->get('log_usernote_privacypolicy', 1); $nullDate = $this->getModel()->getDbo()->getNullDate(); $this->option = $this->getModel ()->getState ( 'option' ); $this->nullDate = $nullDate; $this->showUserNotes = $userNotes; $this->items = $rows; //Creazione buffer output ob_start (); // Parent construction and view display parent::display ( 'xls' ); $bufferContent = ob_get_contents (); ob_end_clean (); // Set file date $dataExport = JHtml::_('date', time (), 'Y-m-d_H:i:s'); // Recupero output buffer content $exportedFileName = 'account_consent_registry_' . $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 (); } } ?>