AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.111
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/nice/components/com_djmediatools/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/nice/components/com_djmediatools/router.php
<?php
/**
 * @version $Id$
 * @package DJ-MediaTools
 * @copyright Copyright (C) 2017 DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email contact@dj-extensions.com
 * @developer Szymon Woronowski - szymon.woronowski@design-joomla.eu
 *
 * DJ-MediaTools is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * DJ-MediaTools is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with DJ-MediaTools. If not, see <http://www.gnu.org/licenses/>.
 *
 */
defined('_JEXEC') or die;

use Joomla\CMS\Component\Router\RouterBase;

class DJMediaToolsRouter extends RouterBase
{

    public function build(&$query)
    {

        $segments = array();

        $app = JFactory::getApplication();
        $menu = $app->getMenu('site');
        if (empty($query['Itemid'])) {
            $menuItem = $menu->getActive();
        } else {
            $menuItem = $menu->getItem($query['Itemid']);
        }

        $mView = (@$menuItem->query['option'] != 'com_djmediatools' || empty($menuItem->query['view'])) ? null : $menuItem->query['view'];
        $mId = (@$menuItem->query['option'] != 'com_djmediatools' || empty($menuItem->query['id'])) ? null : $menuItem->query['id'];

        // JoomSEF bug workaround
        if (isset($query['start']) && isset($query['limitstart'])) {
            if ((int)$query['limitstart'] != (int)$query['start'] && (int)$query['start'] > 0) {
                // let's make it clear - 'limitstart' has higher priority than 'start' parameter,
                // however ARTIO JoomSEF doesn't seem to respect that.
                $query['start'] = $query['limitstart'];
                unset($query['limitstart']);
            }
        }
        // JoomSEF workaround - end

        if (isset($query['view'])) {
            switch ($query['view']) {
                case 'category':
                {
                    if ($mView && $query['view'] == $mView && isset($query['id'])) {


                        unset($query['view']);

                        if (intval($query['id']) == $mId) {
                            unset($query['id']);
                        } else {
                            $segments[] = $query['id'];
                            unset($query['id']);
                        }

                    } else {

                        $segments[] = 'album';//$query['view'];
                        $segments[] = $query['id'];
                        unset($query['view']);
                        unset($query['id']);
                    }

                    break;
                }
                case 'categories':
                {
                    if ($query['view'] == $mView && isset($query['id'])) {

                        unset($query['view']);

                        if (intval($query['id']) == $mId) {
                            unset($query['id']);
                        } else {
                            $segments[] = @$query['id'] ? $query['id'] : 'all';
                            unset($query['id']);
                        }
                    } else {
                        $segments[] = 'albums'; //$query['view'];
                        $segments[] = @$query['id'] ? $query['id'] : 'all';
                        unset($query['view']);
                        unset($query['id']);
                    }
                    break;
                }
                case 'item':
                {
                    $segments[] = 'media';
                    unset($query['view']);
                    unset($query['tmpl']);

                    if ($mView == 'category' && isset($query['cid']) && intval($query['cid']) == $mId) {
                        unset($query['cid']);
                    } else {
                        $segments[] = $query['cid'];
                        unset($query['cid']);
                    }

                    $segments[] = $query['id'];
                    unset($query['id']);

                    break;
                }
                case 'categoryform':
                {

                    if ($query['view'] != $mView) {
                        $segments[] = 'edit';
                    }

                    unset($query['view']);

                    if (!empty($query['id'])) {
                        $segments[] = $query['id'];
                        unset($query['id']);
                    }

                    break;
                }
            }
        }

        // It seems that we need to replace the ":" with "-" manually, while it's not replaced with new router system
        foreach ($segments as &$segment) {
            $segment = str_replace(':', '-', $segment);
        }

        return $segments;
    }

    public function parse(&$segments)
    {

        $app = JFactory::getApplication();
        $menu = $app->getMenu();
        $activemenu = $menu->getActive();
        $db = JFactory::getDBO();

        //$app->enqueueMessage(print_r($segments, true));
        $query = array();
        if (isset($segments[0])) {
            switch ($segments[0]) {
                case 'albums':
                case 'categories':
                {
                    $query['view'] = 'categories';
                    if (isset($segments[1])) {
                        $query['id'] = ($segments[1] == 'all') ? 0 : (int)$segments[1];
                    }
                    break;
                }
                case 'album':
                case 'category':
                {
                    $query['view'] = 'category';
                    if (isset($segments[1])) {
                        $query['id'] = (int)$segments[1];
                    }
                    break;
                }
                case 'media':
                {
                    $query['view'] = 'item';
                    $query['tmpl'] = 'component';

                    if (isset($segments[2])) {
                        // not current album
                        $query['cid'] = (int)$segments[1];
                        $query['id'] = (int)$segments[2];
                    } else {
                        if ($activemenu && $activemenu->query['view'] == 'category' && isset($activemenu->query['id'])) {
                            // item from current menu album
                            $query['cid'] = $activemenu->query['id'];
                            $query['id'] = (int)$segments[1];
                        } else {
                            // shouldn't happen
                        }
                    }

                    break;
                }
                case 'edit':
                case 'categoryform':
                {
                    $query['view'] = 'categoryform';
                    if (isset($segments[1])) {
                        $query['id'] = $segments[1];
                    }
                    break;
                }
                default:
                {

                    $query['view'] = 'category';
                    if (isset($segments[0]) && (int) $segments[0]) {
                        $query['id'] = (int)$segments[0];
                    }
                    break;
                }
            }
        }

        // [Joomla 4 Alpha 4] It seems that we have to manually reset the segments to avoid the "404 Page not found" error
        // https://issues.joomla.org/tracker/joomla-cms/21904
        if (version_compare(JVERSION, '4', 'ge')) {
            $segments = [];
        }

        return $query;
    }
}

function DJMediaToolsBuildRoute(&$query)
{
    $router = new DJMediaToolsRouter;
    return $router->build($query);
}

function DJMediaToolsParseRoute($segments)
{
    $router = new DJMediaToolsRouter;
    return $router->parse($segments);
}

Anon7 - 2022
AnonSec Team