shell bypass 403
<?php
/**
* @package Joomla.Administrator
* @subpackage com_guidedtours
*
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Component\Guidedtours\Administrator\Helper;
use Joomla\CMS\Factory;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* Guidedtours component helper.
*
* @since 5.0.0
*/
class GuidedtoursHelper
{
/**
* Load the translation files for a Guided Tour
*
* @param string $uid Guided Tour Unique Identifier
* @param boolean $steps Should tour steps language file be loaded
*
* @return void
*
* @since 5.0.0
*/
public static function loadTranslationFiles($uid, bool $steps = false)
{
static $cache = [];
$uid = strtolower($uid);
if (isset($cache[$uid])) {
return;
}
$lang = Factory::getLanguage();
// The uid has an extension separator so we need to check the extension language files
if (strpos($uid, '.') > 0) {
[$extension, $tourid] = explode('.', $uid, 2);
$source = '';
switch (substr($extension, 0, 3)) {
case 'com':
$source = JPATH_ADMINISTRATOR . '/components/' . $extension;
break;
case 'lib':
$source = JPATH_LIBRARIES . '/' . substr($extension, 4);
break;
case 'mod':
$source = JPATH_SITE . '/modules/' . $extension;
break;
case 'plg':
$parts = explode('_', $extension, 3);
if (\count($parts) > 2) {
$source = JPATH_PLUGINS . '/' . $parts[1] . '/' . $parts[2];
}
break;
case 'pkg':
$source = JPATH_SITE;
break;
case 'tpl':
$source = JPATH_BASE . '/templates/' . substr($extension, 4);
break;
default:
$source = JPATH_ADMINISTRATOR . '/components/com_' . $extension;
break;
}
$lang->load($extension . '.' . str_replace('-', '_', $tourid), JPATH_ADMINISTRATOR)
|| $lang->load($extension . '.' . str_replace('-', '_', $tourid), $source);
if ($steps) {
$lang->load($extension . '.' . str_replace('-', '_', $tourid) . '_steps', JPATH_ADMINISTRATOR)
|| $lang->load($extension . '.' . str_replace('-', '_', $tourid) . '_steps', $source);
}
} else {
$lang->load('guidedtours.' . str_replace('-', '_', $uid), JPATH_ADMINISTRATOR);
if ($steps) {
$lang->load('guidedtours.' . str_replace('-', '_', $uid) . '_steps', JPATH_ADMINISTRATOR);
}
}
$cache[$uid] = true;
}
}