uawdijnntqw1x1x1
IP : 216.73.217.142
Hostname : localhost.localdomain
Kernel : Linux localhost.localdomain 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
OS : Linux
PATH:
/
var
/
www
/
consult-e-syn
/
public_html
/
643de
/
..
/
plugins
/
system
/
betterpreview
/
src
/
GenerateSefs.php
/
/
<?php /** * @package Better Preview * @version 6.9.0 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2023 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\BetterPreview; defined('_JEXEC') or die; use Exception; use Joomla\CMS\Factory as JFactory; use Joomla\CMS\Router\Route as JRoute; use RegularLabs\Library\Document as RL_Document; if (RL_Document::isClient('administrator')) { die; } // need to set the user agent, to prevent breaking when debugging is switched on $_SERVER['HTTP_USER_AGENT'] = ''; $helper = new GenerateSefs; $helper->render(); class GenerateSefs { var $params = null; public function render() { $user = JFactory::getApplication()->getIdentity() ?: JFactory::getUser(); // log into frontend if ( ! $user->id) { $this->logIn(); } // Get a minimum of 50 urls to update $urls = $this->getUrlsToUpdate(50); if (empty($urls)) { die('no sefs to update'); } $this->insertSefRecords($urls); die('sefs updated'); } private function deleteSefRecords($urls) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->delete('#__betterpreview_sefs') ->where($db->quoteName('url') . ' IN (\'' . implode('\',\'', $urls) . '\')'); $db->setQuery($query); $db->execute(); } private function getOldUrls($max, $min_age = '1 day') { $date = JFactory::getDate('now - ' . $min_age); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.url') ->from('#__betterpreview_sefs as a') ->where('a.created < ' . $db->quote($date->toSql())) ->order('a.created ASC') ->setLimit($max); $db->setQuery($query); $urls = $db->loadColumn(); if ( ! $urls) { $urls = []; } return $urls; } private function getRandomMenuUrls($max) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('CONCAT(a.link, \'&Itemid=\', a.id)') ->from('#__menu as a') ->where('a.client_id = 0') ->where('a.type != ' . $db->quote('alias')) ->where('a.type != ' . $db->quote('url')) ->where('a.link != ' . $db->quote('')) ->order('RAND()') ->setLimit($max); $db->setQuery($query); $menuitems = $db->loadColumn(); if (empty($menuitems)) { return []; } $query = $db->getQuery(true) ->select('a.url') ->from('#__betterpreview_sefs as a') ->where('a.url IN (\'' . implode('\',\'', $menuitems) . '\')'); $db->setQuery($query); $sefs = $db->loadColumn(); if ( ! empty($sefs)) { return $menuitems; } return array_diff($menuitems, $sefs); } private function getSefUrl($url) { if ( ! $url) { return false; } if (substr($url, 0, 4) == 'http') { return $url; } $sef = JRoute::_($url); if ($sef == $url || $sef == '/' . $url) { return false; } return $sef; } private function getSefUrls($urls) { $sefs = []; foreach ($urls as $url) { if ( ! $sef = $this->getSefUrl($url)) { continue; } $sefs[$url] = $sef; } return $sefs; } private function getUrlsToUpdate($min = 50) { $params = Params::get(); // get all outdated urls (older than timeout setting, maximum 500) $urls = $this->getOldUrls(500, $params->index_timeout . ' hours'); if (count($urls) >= $min) { return $urls; } // Less than minimum number of urls found, so let's get more (older than an hour, maximum 50) $urls = $this->getOldUrls($min, '1 hour'); if (count($urls) >= $min) { return $urls; } // still not much to do? lets also add/update some random menu urls $menuitems = $this->getRandomMenuUrls(($min - count($urls))); $urls = array_merge($urls, $menuitems); return $urls; } private function insertSefRecords($urls) { // Delete urls from sef database so they will get renewed $this->deleteSefRecords($urls); $sefs = $this->getSefUrls($urls); if (empty($sefs)) { return; } $date = JFactory::getDate(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->insert('#__betterpreview_sefs') ->columns([$db->quoteName('url'), $db->quoteName('sef'), $db->quoteName('created')]); foreach ($sefs as $url => $sef) { $query->values($db->quote($url) . ',' . $db->quote($sef) . ',' . $db->quote($date->toSql())); } $db->setQuery($query); $db->execute(); } private function logIn() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('userid') ->from('#__session') ->where('session_id = ' . $db->quote(JFactory::getApplication()->input->get('session'))) ->where('client_id = 1') ->where('guest = 0'); $db->setQuery($query); $userid = $db->loadResult(); $user = JFactory::getUser($userid); if ($user instanceof Exception) { return; } $session = JFactory::getSession(); $session->set('user', $user); JFactory::getApplication()->checkSession(); } }
/var/www/consult-e-syn/public_html/643de/../plugins/system/betterpreview/src/GenerateSefs.php