| 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/valence/components/com_djmediatools/ |
Upload File : |
<?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);
}