File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_sh404sef/views/default
Viewing File: /home/astoriaah/www/administrator/components/com_sh404sef/views/default/view.html.php
<?php /** * sh404SEF - SEO extension for Joomla! * * @author Yannick Gaultier * @copyright (c) Yannick Gaultier - Weeblr llc - 2022 * @package sh404SEF * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @version 4.24.1.4308 * @date 2022-05-31 */ use Joomla\CMS\Uri\Uri; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HtmlHelper; use Joomla\CMS\Language\Text; use Weeblr\Wblib\V_SH4_4308\Factory as wblFactory; // Security check to ensure this file is being included by a parent file. defined('_JEXEC') || die; class Sh404sefViewDefault extends ShlMvcView_Base { public function display($tpl = null) { // version prefix $this->joomlaVersionPrefix = Sh404sefHelperGeneral::getJoomlaVersionPrefix(); $this->footerText = Text::sprintf( 'COM_SH404SEF_FOOTER_' . strtoupper(Sh404sefConfigurationEdition::$id), Sh404sefFactory::getConfig()->version, Sh404sefConfigurationEdition::$name, date('Y') ); // required assets for the messages manager $document = Factory::getDocument(); ShlMsg_Manager::getInstance()->addAssets($document); ShlHtml_Manager::getInstance() ->addAssets($document) ->addSpinnerAssets($document); // prepare the view, based on layout $method = 'makeView' . ucfirst($this->getLayout()); if (is_callable(array($this, $method))) { $this->$method(); } HtmlHelper::styleSheet(Sh404sefHelperGeneral::getComponentUrl() . '/assets/css/' . $this->joomlaVersionPrefix . '_list.css'); parent::display($this->joomlaVersionPrefix); } /** * Attach css, js and create toolbar for default view * * @param mixed $params * * @throws Exception */ private function makeViewDefault($params = null) { // prepare database stats, etc $this->prepareControlPanelData(); // Get the JComponent instance of JToolBar $bar = JToolBar::getInstance('toolbar'); // render submenu sidebar $this->sidebar = JHtmlSidebar::render(); // add modal css and js ShlHtmlBs_helper::addBootstrapCss(Factory::getDocument()); ShlHtmlBs_helper::addBootstrapJs(Factory::getDocument()); // add title JToolbarHelper::title('sh404SEF: ' . Text::_('COM_SH404SEF_CONTROL_PANEL'), 'sh404sef-toolbar-title'); // prepare configuration button if (Sh404sefHelperAcl::userCan('sh404sef.view.configuration')) { $bar->addButtonPath(SHLIB_ROOT_PATH . 'toolbarbutton'); $params = array(); $params['class'] = 'modaltoolbar btn-success'; $params['size'] = Sh404sefFactory::getPConfig()->windowSizes['configuration']; $params['buttonClass'] = 'btn-success btn btn-small modal'; $params['iconClass'] = 'icon-options'; $url = 'index.php?option=com_sh404sef&tmpl=component&c=configuration&view=configuration&component=com_sh404sef&hidemainmenu=1'; $bar ->appendButton( 'J3popuptoolbarbutton', 'configj3', Text::_('COM_SH404SEF_CONFIGURATION'), $url, $params['size']['x'], $params['size']['y'], $top = 0, $left = 0, $onClose = '', $title = '', $params ); // separator JToolBarHelper::spacer(20); // edit home page button $params = array(); $params['size'] = Sh404sefFactory::getPConfig()->windowSizes['editurl']; $params['buttonClass'] = 'btn btn-small'; $params['iconClass'] = 'icon-home'; $params['checkListSelection'] = false; $url = 'index.php?option=com_sh404sef&c=editurl&task=edit&home=1&tmpl=component'; $bar ->appendButton( 'J3popuptoolbarbutton', 'home', Text::_('COM_SH404SEF_HOME_PAGE_ICON'), $url, $params['size']['x'], $params['size']['y'], $top = 0, $left = 0, $onClose = '', $title = Text::_('COM_SH404SEF_HOME_PAGE_EDIT_TITLE'), $params ); // separator JToolBarHelper::spacer(20); // add purge buttons $params = array(); $params['size'] = Sh404sefFactory::getPConfig()->windowSizes['confirm']; $params['buttonClass'] = 'btn btn-small btn-danger'; $params['iconClass'] = 'shl-icon-remove-sign'; $params['checkListSelection'] = false; $url = 'index.php?option=com_sh404sef&c=urls&task=confirmpurge404&tmpl=component'; $bar ->appendButton( 'J3popuptoolbarbutton', 'purge', Text::_('COM_SH404SEF_PURGE404'), $url, $params['size']['x'], $params['size']['y'], $top = 0, $left = 0, $onClose = '', $title = Text::_('COM_SH404SEF_CONFIRM_TITLE'), $params ); // separator if (Factory::getApplication()->input->getInt('purge', 0) == 1) { JToolBarHelper::spacer(20); // add purge buttons $params = array(); $params['size'] = Sh404sefFactory::getPConfig()->windowSizes['confirm']; $params['buttonClass'] = 'btn btn-small btn-danger'; $params['iconClass'] = 'shl-icon-remove-sign'; $params['checkListSelection'] = false; $url = 'index.php?option=com_sh404sef&c=urls&task=confirmpurge&tmpl=component'; $bar ->appendButton( 'J3popuptoolbarbutton', 'purge404', Text::_('COM_SH404SEF_PURGE'), $url, $params['size']['x'], $params['size']['y'], $top = 0, $left = 0, $onClose = '', $title = Text::_('COM_SH404SEF_CONFIRM_TITLE'), $params ); } } $html = '<div class="wbl-spinner-black" id="toolbar-sh404sef-spinner"></div>'; $bar->appendButton('custom', $html, 'sh-progress-button-cpprogress'); // add analytics and other ajax calls loader $sefConfig = Sh404sefFactory::getConfig(); $analyticsBootstrap = $sefConfig->analyticsReportsEnabled ? 'shSetupAnalytics({report:"dashboard",showFilters:"no"});' : ''; $js = 'jQuery(document).ready(function(){ ' . $analyticsBootstrap . ' shSetupQuickControl(); shSetupSecStats(); shSetupUpdates();});'; $document = Factory::getDocument(); $document->addScriptDeclaration($js); // add our javascript HtmlHelper::script(Sh404sefHelperGeneral::getComponentUrl() . '/assets/js/' . $this->joomlaVersionPrefix . '_cp.' . Sh404sefConfigurationEdition::$id . '.js'); // add our own css HtmlHelper::styleSheet(Sh404sefHelperGeneral::getComponentUrl() . '/assets/css/' . $this->joomlaVersionPrefix . '_cp.css'); $this->prepareAnalyticsView(); } /** * Attach css, js and create toolbar for Info view * (actually linked as Documentation) * * @param midxed $params * * @throws Exception */ private function makeViewInfo($params = null) { // add our own css HtmlHelper::styleSheet(Sh404sefHelperGeneral::getComponentUrl() . '/assets/css/list.css'); // decide on help file language $languageCode = Sh404sefHelperLanguage::getFamily(); $basePath = JPATH_ROOT . '/administrator/components/com_sh404sef/language/%s.readme.php'; // fall back to english if language readme does not exist jimport('joomla.filesystem.file'); if (!JFile::exists(sprintf($basePath, $languageCode))) { $languageCode = 'en'; } $this->readmeFilename = sprintf($basePath, $languageCode); // render submenu sidebar $this->sidebar = JHtmlSidebar::render(); // add modal css and js ShlHtmlBs_helper::addBootstrapCss(Factory::getDocument()); ShlHtmlBs_helper::addBootstrapJs(Factory::getDocument()); JToolbarHelper::title(Text::_('COM_SH404SEF_TITLE_SUPPORT'), 'sh404sef-toolbar-title'); // Analytics reports if (Sh404sefHelperAcl::userCan('sh404sef.view.analytics') && Sh404sefFactory::getConfig()->analyticsReportsEnabled) { HtmlHelper::_('stylesheet', 'media/com_sh404sef/assets/css/analytics.css', array('relative' => false, 'detectBrowser' => false, 'pathOnly' => true)); HtmlHelper::_('script', 'https://www.gstatic.com/charts/loader.js'); HtmlHelper::_('script', 'media/com_sh404sef/assets/js6/dist/analytics.js', array('relative' => false, 'detectBrowser' => false, 'pathOnly' => true)); } } private function prepareControlPanelData() { $sefConfig = Sh404sefFactory::getConfig(); $this->sefConfig = $sefConfig; // get currently store $this->messageList = ShlMsg_Manager::getInstance()->get(array('scope' => 'com_sh404sef', 'acknowledged' => false)); // update information $versionsInfo = Sh404sefHelperUpdates::getUpdatesInfos(); $this->updates = $versionsInfo; // url databases stats $database = ShlDbHelper::getDb(); $this->cpStats = array(); $this->cpStatsMore = array(); try { // URLS ------------------- $sql = 'SELECT count(*) FROM #__sh404sef_urls WHERE '; $this->cpStats['URL'] = array(); $database->setQuery($sql . "`newurl` <> '' and `rank` = 0"); $value = $database->loadResult(); $sefCount = $value; $this->cpStats['URL'][Text::_('COM_SH404SEF_CP_TOTAL_URLS')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=urls&layout=default&view=urls' ); $database->setQuery($sql . "`newurl` <> '' and `cpt` <> 0 and `rank` = 0"); $value = $database->loadResult(); $this->cpStats['URL'][Text::_('COM_SH404SEF_CP_VISITED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=urls&layout=default&view=urls&filter_requested_urls=1' ); $database->setQuery($sql . "`newurl` <> '' and `cpt` = 0 and `rank` = 0"); $value = $database->loadResult(); $this->cpStats['URL'][Text::_('COM_SH404SEF_CP_NEVER_VISITED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=urls&layout=default&view=urls&filter_requested_urls=2' ); // Joomla 2 B/C $database->setQuery($sql . "`dateadd` > '0000-00-00' and `newurl` != '' "); $customCount = $database->loadResult(); // 404 ------------------- $this->cpStats['404s'] = array(); $database->setQuery($sql . "`newurl` = '' "); $value = $database->loadResult(); $count404 = $value; $this->cpStats['404s'][Text::_('COM_SH404SEF_CP_TOTAL_404')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=urls&layout=view404&view=urls' ); $database->setQuery($sql . "`dateadd` > '0000-00-00' and `newurl` = '' and `referrer_type` = " . Sh404sefHelperUrl::IS_INTERNAL); $value = $database->loadResult(); $this->cpStats['404s'][Text::_('COM_SH404SEF_CP_INTERNAL')] = array( 'value' => $value, 'flag' => (empty($value) ? '' : 'wbl-flag-warning'), 'link' => 'index.php?option=com_sh404sef&c=urls&layout=view404&view=urls&filter_hit_type=' . Sh404sefHelperUrl::IS_INTERNAL ); $database->setQuery($sql . "`dateadd` > '0000-00-00' and `newurl` = '' and (`referrer_type` = " . Sh404sefHelperUrl::IS_EXTERNAL . " OR `referrer_type` = " . Sh404sefHelperUrl::IS_UNKNOWN . ")"); $value = $database->loadResult(); $this->cpStats['404s'][Text::_('COM_SH404SEF_CP_EXTERNAL')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=urls&layout=view404&view=urls&filter_hit_type=' . Sh404sefHelperUrl::IS_EXTERNAL ); // Aliases --------------- $sql = 'SELECT count(*) FROM #__sh404sef_aliases'; $this->cpStatsMore['Aliases'] = array(); $database->setQuery($sql); $value = $database->loadResult(); $this->cpStatsMore['Aliases'][Text::_('COM_SH404SEF_CP_TOTAL_ALIASES')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=aliases&layout=default&view=aliases' ); $database->setQuery($sql . " where `hits` <> 0"); $value = $database->loadResult(); $this->cpStatsMore['Aliases'][Text::_('COM_SH404SEF_CP_USED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=aliases&layout=default&view=aliases&filter_requested_urls=' . Sh404sefHelperGeneral::SHOW_REQUESTED ); $database->setQuery($sql . " where `hits` = 0"); $value = $database->loadResult(); $this->cpStatsMore['Aliases'][Text::_('COM_SH404SEF_CP_NEVER_USED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=aliases&layout=default&view=aliases&filter_requested_urls=' . Sh404sefHelperGeneral::SHOW_NOT_REQUESTED ); // shURLs ---------------- $sql = 'SELECT count(*) FROM #__sh404sef_pageids as s join #__sh404sef_urls as u'; $sql .= ' on s.`newurl` = u.`newurl` where u.`newurl` <> \'\''; $this->cpStatsMore['shURLs'] = array(); $database->setQuery($sql); $value = $database->loadResult(); $this->cpStatsMore['shURLs'][Text::_('COM_SH404SEF_CP_TOTAL_SHURLS')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=pageids&layout=default&view=pageids' ); $database->setQuery($sql . " and s.`hits` <> 0"); $value = $database->loadResult(); $this->cpStatsMore['shURLs'][Text::_('COM_SH404SEF_CP_USED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=pageids&layout=default&view=pageids&filter_requested_urls=' . Sh404sefHelperGeneral::SHOW_REQUESTED ); $database->setQuery($sql . " and s.`hits` = 0"); $value = $database->loadResult(); $this->cpStatsMore['shURLs'][Text::_('COM_SH404SEF_CP_NEVER_USED')] = array( 'value' => $value, 'flag' => '', 'link' => 'index.php?option=com_sh404sef&c=pageids&layout=default&view=pageids&filter_requested_urls=' . Sh404sefHelperGeneral::SHOW_NOT_REQUESTED ); } catch (\Exception $e) { ShlSystem_Log::error('sh404sef', '%s::%s::%d: %s', __CLASS__, __METHOD__, __LINE__, $e->getMessage()); $sefCount = 0; $count404 = 0; $customCount = 0; } $this->sefCount = $sefCount; $this->Count404 = $count404; $this->customCount = $customCount; $this->prepareAnalyticsData(); } /** * Builds the data set required to display admin home page analytics subset. */ private function prepareAnalyticsData() { $this->analyticsData = array(); //$model = new Sh404sefModelAnalyticsreports($userConfig); $wblFactory = wblFactory::get(); $model = $wblFactory->getA( '\Weeblr\Sh404sef\Model\Analytics', $wblFactory->getThe('sh404sef.config') ); // prepare the view, based on request // do we force reading updates from server ? try { $this->analyticsData['viewsList'] = $model->getViewsList(); $adminhomeOptions = array( 'showFilters' => 'no', 'dateRange' => 'custom' ); $this->analyticsData['options'] = $model->loadRequestOptions( $adminhomeOptions ); $this->analyticsData['baseUrl'] = Uri::base(true); $this->analyticsData['sitename'] = Factory::getApplication()->get('sitename'); $this->analyticsData['rootUrl'] = Uri::root(); $this->analyticsData['accessKey'] = ''; $this->analyticsData['currentPage'] = 'backend.home'; $this->analyticsData['location'] = 'backend'; $this->analyticsData['language'] = $wblFactory->getThe('helper.analytics')->getJsLanguageStrings(); } catch (\Exception $e) { $this->analyticsData['errors'] = array( Text::_('COM_SH404SEF_ERROR_CHECKING_ANALYTICS') . ' (' . $e->getMessage() . ')' ); } } /** * Add assets required to display the admin home page analytics subset. */ private function prepareAnalyticsView() { $assetsManager = wblFactory::get()->getThe('sh404sef.assetsManager'); $analyticsCss = $assetsManager->getHashedMediaLink( 'analytics.css', array( 'pathFromRoot' => 'css', ) ); // add quick control panel loader $jsonConfig = json_encode($this->analyticsData); $js = <<<JS window.weeblrApp = window.weeblrApp || {}; window.weeblrApp.analyticsReportConfig = {$jsonConfig}; JS; Factory::getDocument() ->addStyleSheet($analyticsCss) ->addScriptDeclaration($js); if ( empty($this->data['errors']) && Sh404sefHelperAcl::userCan('sh404sef.view.analytics') && Sh404sefFactory::getConfig()->analyticsReportsEnabled ) { HtmlHelper::_('script', 'https://www.gstatic.com/charts/loader.js'); $analyticsScript = $assetsManager->getHashedMediaLink( 'analytics.js', array( 'pathFromRoot' => 'js6', ) ); Factory::getDocument()->addScript($analyticsScript); } } }