Sindbad~EG File Manager
<?php
/**
* @package RSDirectory!
* @copyright (c) 2013 - 2021 RSJoomla!
* @link https://www.rsjoomla.com
* @license GNU General Public License http://www.gnu.org/licenses/gpl-3.0.en.html
*/
// No direct access.
defined('_JEXEC') or die('Restricted access');
class RsdirectoryRouter extends JComponentRouterBase
{
public function preprocess($query)
{
if (!isset($query['Itemid']))
{
if ($item = JFactory::getApplication()->getMenu()->getActive())
{
$query['Itemid'] = $item->id;
}
}
return $query;
}
public function build(&$query)
{
JFactory::getLanguage()->load('com_rsdirectory', JPATH_SITE);
$segments = array();
// Get a menu item based on Itemid or currently active.
$menu = JFactory::getApplication()->getMenu('site');
// We need a menu item. Either the one specified in the query, or the current active one if none specified.
if ( empty($query['Itemid']) )
{
$menuItem = $menu->getActive();
$menuItemGiven = false;
// This is to build the links correctly when a menu item is set as homepage.
if ( isset($menuItem->id) && $menuItem->home == 1 )
{
$query['Itemid'] = $menuItem->id;
$menuItemGiven = true;
}
}
else
{
$menuItem = $menu->getItem($query['Itemid']);
$menuItemGiven = true;
}
// Check again.
if ( $menuItemGiven && isset($menuItem) && $menuItem->component != 'com_rsdirectory' )
{
$menuItemGiven = false;
unset($query['Itemid']);
}
if ( isset($query['view']) )
{
$view = $query['view'];
unset($query['view']);
}
if ( isset($query['layout']) )
{
$layout = $query['layout'];
unset($query['layout']);
}
else
{
$layout = 'default';
}
if ( isset($menuItem, $view) && $menuItem->component == 'com_rsdirectory' && $menuItem->query['view'] == $view )
{
$hasView = true;
}
if ( isset($query['task']) )
{
switch ($query['task'])
{
case 'entry.finalize':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE');
$segments[] = $query['id'];
unset($query['id']);
break;
case 'field.captcha':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_FIELD');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_FIELD_CAPTCHA');
break;
case 'file.download':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_FILE');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_FILE_DOWNLOAD');
$segments[] = $query['hash'];
unset($query['hash']);
break;
case 'filters.process':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_PROCESS_FILTERS');
break;
case 'image.view':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_IMAGE');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_IMAGE_VIEW');
$segments[] = $query['size'];
$segments[] = $query['hash'];
unset($query['size']);
unset($query['hash']);
break;
case 'removedata.request':
$segments[] = 'remove-data-request';
break;
case 'removedata.process':
$segments[] = 'remove-data-process';
break;
case 'removedata.processreport':
$segments[] = 'remove-data-process-report';
break;
case 'removedata.processreview':
$segments[] = 'remove-data-process-review';
break;
}
unset($query['task']);
}
else if ( isset($view) )
{
switch ($view)
{
case 'categories':
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CATEGORIES');
}
break;
case 'contact':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CONTACT');
$segments[] = $query['entry_id'];
unset($query['entry_id']);
break;
case 'credits':
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CREDITS');
}
if ( !empty($query['wiretransfer']) && !empty($query['id']) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CREDITS_WIRE_TRANSFER');
$segments[] = $query['id'];
unset($query['wiretransfer'], $query['id']);
}
break;
case 'entries':
if (empty($query['user']))
{
unset($query['user']);
}
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRIES');
}
if ( isset($query['category']) )
{
$featured_categories = RSDirectoryHelper::arrayInt($menuItem ? $menuItem->getParams()->get('featured_categories') : array());
if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view || !in_array((int) $query['category'], $featured_categories) || count($featured_categories) != 1) {
@list($id, $title) = explode(':', $query['category']);
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CATEGORY');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_CATEGORY_VIEW');
$segments[] = "$id-$title";
}
unset($query['category']);
}
else if ( !empty($query['user']) )
{
$featured_categories = RSDirectoryHelper::arrayInt($menuItem ? $menuItem->getParams()->get('featured_categories') : array());
if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view || !isset($menuItem->query['user']) || (int) $menuItem->query['user'] != (int) $query['user'] || (!empty($featured_categories) && !in_array(0, $featured_categories))) {
@list($id, $title) = explode(':', $query['user']);
$segments[] = JText::_('COM_RSDIRECTORY_SEF_USER');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_USER_VIEW');
$segments[] = "$id-$title";
}
unset($query['user']);
}
else if ( isset($query['filter']) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_FILTER');
unset($query['filter']);
}
if ( isset($query['alpha']) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ALPHA');
$segments[] = urlencode($query['alpha']);
unset($query['alpha']);
}
break;
case 'entry':
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY');
}
if ($layout == 'edit')
{
if ( isset($query['id']) )
{
// Edit.
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_EDIT');
$segments[] = $query['id'];
}
}
else if ($layout == 'finalize_confirm')
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE');
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE_CONFIRM');
$segments[] = $query['id'];
}
else if ($layout == 'thank_you')
{
// Thank you.
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_THANK_YOU');
}
else if ($layout == 'activate')
{
// Thank you.
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_ACTIVATE');
}
else
{
if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view || !isset($menuItem->query['id']) || (int) $menuItem->query['id'] != (int) $query['id'])
{
if ($menuItemGiven && isset($menuItem->query['view']) && $menuItem->query['view'] == 'entries')
{
if ( empty($hasView) ) {
array_pop($segments);
}
if ( isset($query['id']) )
{
$segments[] = $query['id'];
}
} else {
// Default.
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_VIEW');
if ( isset($query['id']) )
{
$segments[] = $query['id'];
}
}
}
}
unset($query['id']);
break;
case 'entryreport':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_ENTRY_REPORT');
$segments[] = $query['entry_id'];
unset($query['entry_id']);
break;
case 'myaccount':
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT');
}
if ( isset($query['tab']) )
{
if ($query['tab'] == 'transactions')
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT_TRANSACTIONS');
}
else if ($query['tab'] == 'credits-history')
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT_CREDITS_HISTORY');
}
unset($query['tab']);
}
break;
case 'myentries':
if ( empty($hasView) )
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_MY_ENTRIES');
}
break;
case 'ownerreply':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_OWNER_REPLY');
$segments[] = $query['review_id'];
unset($query['review_id']);
break;
case 'transaction':
$segments[] = JText::_('COM_RSDIRECTORY_SEF_TRANSACTION');
if ($layout == 'default')
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_TRANSACTION_VIEW');
}
else if($layout == 'view')
{
$segments[] = JText::_('COM_RSDIRECTORY_SEF_TRANSACTION_INVOICE');
}
$segments[] = $query['id'];
unset($query['id']);
break;
case 'removedata':
switch($layout) {
case 'report':
$segments[] = 'remove-data-success-report';
break;
case 'review':
$segments[] = 'remove-data-success-review';
break;
default:
$segments[] = 'remove-data-success';
break;
}
break;
}
}
return $segments;
}
public function parse(&$segments)
{
// Load the language files.
$lang = JFactory::getLanguage();
$lang->load('com_rsdirectory', JPATH_SITE, 'en-GB', true);
$lang->load('com_rsdirectory', JPATH_SITE, $lang->getDefault(), true );
$lang->load('com_rsdirectory', JPATH_SITE, null, true);
//Get the active menu item.
$menu = JFactory::getApplication()->getMenu();
$item = $menu->getActive();
$query = array();
foreach ($segments as $i => $segment)
{
$segment = (string) $segment;
$segments[$i] = str_replace(':', '-', $segment);
}
if ( $item && $item->component == 'com_rsdirectory' && isset($item->query['view']) )
{
switch ($item->query['view'])
{
case 'credits':
if ( $segments[0] == JText::_('COM_RSDIRECTORY_SEF_CREDITS_WIRE_TRANSFER') )
{
array_unshift( $segments, JText::_('COM_RSDIRECTORY_SEF_CREDITS') );
}
break;
case 'myaccount':
if ( in_array( $segments[0], array( JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT_TRANSACTIONS'), JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT_CREDITS_HISTORY') ) ) )
{
array_unshift( $segments, JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT') );
}
break;
case 'entry':
if ( in_array( $segments[0], array( JText::_('COM_RSDIRECTORY_SEF_ENTRY_ADD'), JText::_('COM_RSDIRECTORY_SEF_ENTRY_EDIT'), JText::_('COM_RSDIRECTORY_SEF_ENTRY_VIEW'), JText::_('COM_RSDIRECTORY_SEF_ENTRY_THANK_YOU'), JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE'), JText::_('COM_RSDIRECTORY_SEF_ENTRY_ACTIVATE') ) ) )
{
array_unshift( $segments, JText::_('COM_RSDIRECTORY_SEF_ENTRY') );
}
break;
case 'entries':
if ( in_array( $segments[0], array( JText::_('COM_RSDIRECTORY_SEF_CATEGORY'), JText::_('COM_RSDIRECTORY_SEF_USER'), JText::_('COM_RSDIRECTORY_SEF_FILTER'), JText::_('COM_RSDIRECTORY_SEF_ALPHA') ) ) )
{
array_unshift( $segments, JText::_('COM_RSDIRECTORY_SEF_ENTRIES') );
}
break;
}
}
switch ($segments[0])
{
case JText::_('COM_RSDIRECTORY_SEF_CATEGORIES'):
$query['view'] = 'categories';
break;
case JText::_('COM_RSDIRECTORY_SEF_CONTACT'):
$query['view'] = 'contact';
if ( isset($segments[1]) )
{
$query['entry_id'] = (int)$segments[1];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_CREDITS'):
$query['view'] = 'credits';
if ( isset($segments[2]) && $segments[1] == JText::_('COM_RSDIRECTORY_SEF_CREDITS_WIRE_TRANSFER') )
{
$query['wiretransfer'] = 1;
$query['id'] = $segments[2];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_ENTRIES'):
$query['view'] = 'entries';
if ( isset($segments[3]) && $segments[1] == JText::_('COM_RSDIRECTORY_SEF_CATEGORY') )
{
$query['category'] = (int)$segments[3];
}
if (in_array(JText::_('COM_RSDIRECTORY_SEF_ALPHA'), $segments)) {
$alpha_key = (int) array_search(JText::_('COM_RSDIRECTORY_SEF_ALPHA'), $segments);
if (isset($segments[($alpha_key+1)])) {
$alpha_value = $segments[($alpha_key + 1)];
$alpha_value = explode('&', $alpha_value, 2);
$query['alpha'] = $alpha_value[0];
}
}
if ( isset($segments[3]) && $segments[1] == JText::_('COM_RSDIRECTORY_SEF_USER') )
{
$query['users'] = (int)$segments[3];
}
else if ( isset($segments[1]) && $segments[1] == JText::_('COM_RSDIRECTORY_SEF_FILTER') )
{
$query['filter'] = 1;
}
break;
default:
case JText::_('COM_RSDIRECTORY_SEF_ENTRY'):
$query['view'] = 'entry';
if (isset($segments[1])) {
if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_ENTRY_EDIT') )
{
$query['layout'] = 'edit';
if ( isset($segments[2]) )
{
$query['id'] = (int)$segments[2];
}
}
else if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE') )
{
if ( $segments[2] == JText::_('COM_RSDIRECTORY_SEF_ENTRY_FINALIZE_CONFIRM') )
{
$query['layout'] = 'finalize_confirm';
if ( isset($segments[3]) )
{
$query['id'] = (int)$segments[3];
}
}
else
{
$query['task'] = 'entry.finalize';
if ( isset($segments[2]) )
{
$query['id'] = (int)$segments[2];
}
}
}
else if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_ENTRY_THANK_YOU') )
{
$query['layout'] = 'thank_you';
}
else if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_ENTRY_ACTIVATE') )
{
$query['layout'] = 'activate';
}
else
{
$query['layout'] = 'default';
if ( isset($segments[2]) )
{
$query['id'] = (int)$segments[2];
}
}
} else {
$query['layout'] = 'default';
$query['id'] = (int) $segments[0];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_ENTRY_REPORT'):
$query['view'] = 'entryreport';
if ( isset($segments[1]) )
{
$query['entry_id'] = (int)$segments[1];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_OWNER_REPLY'):
$query['view'] = 'ownerreply';
if ( isset($segments[1]) )
{
$query['review_id'] = (int)$segments[1];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_TRANSACTION'):
$query['view'] = 'transaction';
if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_TRANSACTION_VIEW') )
{
$query['layout'] = 'default';
}
else if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_TRANSACTION_INVOICE') )
{
$query['layout'] = 'view';
$query['format'] = 'format';
}
$query['id'] = (int) $segments[2];
break;
case JText::_('COM_RSDIRECTORY_SEF_PROCESS_FILTERS'):
$query['task'] = 'filters.process';
break;
case JText::_('COM_RSDIRECTORY_SEF_FILE'):
if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_FILE_DOWNLOAD') )
{
$query['task'] = 'file.download';
$query['hash'] = $segments[2];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_FIELD'):
if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_FIELD_CAPTCHA') )
{
$query['task'] = 'field.captcha';
}
break;
case JText::_('COM_RSDIRECTORY_SEF_IMAGE'):
if ( $segments[1] == JText::_('COM_RSDIRECTORY_SEF_IMAGE_VIEW') )
{
$query['task'] = 'image.view';
$query['size'] = $segments[2];
$query['hash'] = $segments[3];
}
break;
case JText::_('COM_RSDIRECTORY_SEF_FAVORITES'):
$query['view'] = 'favorites';
break;
case JText::_('COM_RSDIRECTORY_SEF_MY_ENTRIES'):
$query['view'] = 'myentries';
break;
case JText::_('COM_RSDIRECTORY_SEF_MY_ACCOUNT'):
$query['view'] = 'myaccount';
if ( isset($segments[1]) )
{
$query['tab'] = $segments[1];
}
break;
case 'remove-data-request':
$query['task'] = 'removedata.request';
break;
case 'remove-data-process':
$query['task'] = 'removedata.process';
break;
case 'remove-data-process-report':
$query['task'] = 'removedata.processreport';
break;
case 'remove-data-process-review':
$query['task'] = 'removedata.processreview';
break;
case 'remove-data-success':
$query['view'] = 'removedata';
$query['layout'] = 'default';
break;
case 'remove-data-success-report':
$query['view'] = 'removedata';
$query['layout'] = 'report';
break;
case 'remove-data-success-review':
$query['view'] = 'removedata';
$query['layout'] = 'review';
break;
}
$segments = array();
return $query;
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists