| 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_rsfeedback/ |
Upload File : |
<?php
/**
* @package RSFeedback!
* @copyright (C) 2010-2018 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl.html
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
use Joomla\CMS\Component\Router\RouterViewConfiguration;
use Joomla\CMS\Component\Router\Rules\StandardRules;
use Joomla\CMS\Component\Router\Rules\NomenuRules;
use Joomla\CMS\Component\Router\Rules\MenuRules;
use Joomla\CMS\Application\ApplicationHelper;
use Joomla\CMS\Component\Router\RouterView;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Version;
use Joomla\CMS\Factory;
class RSFeedbackRouter extends RouterView {
public function __construct($app = null, $menu = null) {
$rsfeedback = new RouterViewConfiguration('rsfeedback');
$this->registerView($rsfeedback);
parent::__construct($app, $menu);
$this->attachRule(new MenuRules($this));
$this->attachRule(new StandardRules($this));
$this->attachRule(new NomenuRules($this));
}
/**
* Build the route for the com_content component
*
* @param array &$query An array of URL arguments
*
* @return array The URL arguments to use to assemble the subsequent URL.
*
* @since 3.3
*/
public function build(&$query) {
$this->loadLanguage();
$segments = array();
$app = Factory::getApplication();
$menu = $app->getMenu();
$db = Factory::getDbo();
$dbquery = $db->getQuery(true);
if (empty($query['Itemid'])) {
$menuItem = $menu->getActive();
$menuItemGiven = false;
if (isset($menuItem->id) && $menuItem->home == 1) {
$query['Itemid'] = $menuItem->id;
$menuItemGiven = true;
}
} else {
$menuItem = $menu->getItem($query['Itemid']);
$menuItemGiven = true;
}
if ($menuItemGiven && isset($menuItem) && $menuItem->component != 'com_rsfeedback') {
$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_rsfeedback' && $menuItem->query['view'] == $view) {
$hasView = true;
}
if (isset($query['task'])) {
switch ($query['task']) {
case 'feedback.add':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK');
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_ADD');
if (isset($query['cat_id'])) {
$segments[] = $query['cat_id'];
unset($query['cat_id']);
}
break;
case 'feedback.edit':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK');
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_EDIT');
$segments[] = $query['id'];
unset($query['id']);
break;
case 'feedbacks.delete':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK');
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_DELETE');
$segments[] = $query['id'];
if ( isset($query['cat_id']) ) {
$segments[] = $query['cat_id'];
unset($query['cat_id']);
}
unset($query['id']);
break;
case 'feedbacks.deletevotes':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_DELETE_VOTES');
break;
case 'category.add':
case 'category.edit':
if ($query['task'] == 'category.edit') {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_EDIT');
if (isset($query['id']))
$segments[] = (int) $query['id'];
} else
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_ADD');
unset($query['id']);
break;
case 'category.delete':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_DELETE');
$segments[] = $query['id'];
unset($query['id']);
break;
case 'captcha':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CAPTCHA');
break;
case 'comment.save':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_SAVECOMMENT');
break;
case 'removedata.process':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA_PROCESS');
break;
}
unset($query['task']);
}
if (isset($view)) {
switch ($view) {
case 'feedbacks':
if (empty($hasView)) {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VIEW');
}
if (isset($query['cat_id'])) {
$ShowFromCategories = array_map('intval', ($menuItem ? $menuItem->getParams()->get('ShowFromCategories', array()) : array()));
if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view || !in_array((int) $query['cat_id'], $ShowFromCategories) || count($ShowFromCategories) != 1) {
// Get category slug
$dbquery->clear();
$dbquery->select($db->qn('name'))->from('#__rsfeedback_categories')->where('id = ' . (int) $query['cat_id']);
$db->setQuery($dbquery);
$catname = ApplicationHelper::stringURLSafe($db->loadResult());
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_VIEW');
$segments[] = $query['cat_id']."-".$catname;
} else if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view || ( count($ShowFromCategories) == 1 && $query['cat_id'] == $ShowFromCategories[0])) {
$dbquery->clear();
$dbquery->select($db->qn('name'))->from('#__rsfeedback_categories')->where('id = ' . (int) $ShowFromCategories[0]);
$db->setQuery($dbquery);
$catname = ApplicationHelper::stringURLSafe($db->loadResult());
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_VIEW');
$segments[] = $query['cat_id']."-".$catname;
}
unset($query['cat_id']);
}
if (isset($query['search'])) {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_SEARCH');
$segments[] = $query['search'];
unset($query['search']);
}
if (isset($query['action']) && $query['action'] == 'votes') {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VOTED');
unset($query['action']);
}
break;
case 'feedback':
if (empty($hasView)) {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK');
}
if ($layout == 'edit') {
if (isset($query['id'])) {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_EDIT');
$segments[] = $query['id'];
} else {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_ADD');
if (isset($query['cat_id'])) {
$segments[] = (int) $query['cat_id'];
}
}
} elseif ($layout == 'default_form_flag') {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_FLAG');
$segments[] = $query['id'];
if (isset($query['return'])) {
$segments[] = $query['return'];
}
} else {
if (!$menuItemGiven || !isset($menuItem->query['view']) || $menuItem->query['view'] != $view) {
$feedback_id = isset($query['id']) && !empty($query['id']) ? $query['id'] : $menuItem->getParams()->get('feedback_id',0);
$select = array($db->qn('f.id'), $db->qn('f.title'));
$dbquery->clear()->select($select)
->from($db->qn('#__rsfeedback_feedbacks', 'f'))
->where($db->qn('f.id') . ' = ' . $db->q( (int) $feedback_id ) );
$db->setQuery($dbquery);
$feedback = $db->loadObject();
if ($feedback)
{
$feedback->title = ApplicationHelper::stringURLSafe($feedback->title);
if ($menuItemGiven && isset($menuItem->query['view']) && $menuItem->query['view'] == 'feedbacks') {
if (empty($hasView)) {
array_pop($segments);
}
if (isset($query['id'])) {
$segments[] = $query['id'].'-'.$feedback->title;
}
} else {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_VIEW');
if (isset($query['id'])) {
$segments[] = $query['id'].'-'.$feedback->title;
}
}
}
}
}
unset($query['id']);
break;
case 'categories':
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORIES_VIEW');
break;
case 'category':
if ($layout == 'edit') {
if (isset($query['id']) && (int) $query['id'] > 0) {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_EDIT');
$segments[] = (int) $query['id'];
unset($query['id']);
} else {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_CATEGORY_ADD');
}
}
break;
case 'removedata':
if (isset($layout) && $layout == 'success') {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA_SUCCESS');
} else {
$segments[] = Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA');
}
break;
}
}
return $segments;
}
/**
* Parse the segments of a URL.
*
* @param array &$segments The segments of the URL to parse.
*
* @return array The URL attributes to be used by the application.
*
* @since 3.3
*/
public function parse(&$segments) {
$this->loadLanguage();
$vars = array();
$app = Factory::getApplication();
$menu = $app->getMenu();
$item = $menu->getActive();
$query = array();
foreach ($segments as $i => $segment) {
$segments[$i] = str_replace(':', '-', $segment);
}
if ($item && $item->component == 'com_rsfeedback' && isset($item->query['view'])) {
switch ($item->query['view']) {
case 'feedbacks':
if (in_array($segments[0],
array(
Text::_('COM_RSFEEDBACK_SEF_CATEGORY_VIEW'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_SEARCH'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VOTED'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_DELETE_VOTES')
)
)) {
array_unshift( $segments, Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VIEW') );
}
break;
case 'feedback' :
if (in_array($segments[0], array(
Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_VIEW'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_ADD'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_EDIT'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_DELETE'),
Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_FLAG')
))) {
array_unshift( $segments, Text::_('COM_RSFEEDBACK_SEF_FEEDBACK') );
}
break;
}
}
switch ($segments[0]) {
case Text::_('COM_RSFEEDBACK_SEF_CAPTCHA'):
$query['task'] = 'captcha';
break;
case Text::_('COM_RSFEEDBACK_SEF_SAVECOMMENT'):
$query['task'] = 'comment.save';
break;
case Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_DELETE_VOTES'):
$query['task'] = 'feedbacks.deletevotes';
break;
case Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VIEW'):
$query['view'] = 'feedbacks';
if (isset($segments[1]) && $segments[1] == Text::_('COM_RSFEEDBACK_SEF_CATEGORY_VIEW') && isset($segments[2])) {
$query['cat_id'] = (int) $segments[2];
}
if (in_array(Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_SEARCH'), $segments)) {
$search_key = array_search( Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_SEARCH'), $segments );
$search_word_key = $search_key+1;
$query['search'] = '';
if (isset($segments[$search_word_key])) {
$query['search'] = $segments[$search_word_key];
}
}
if (in_array(Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_VOTED'), $segments)) {
$query['action'] = 'votes';
}
if (in_array(Text::_('COM_RSFEEDBACK_SEF_FEEDBACKS_DELETE_VOTES'), $segments)) {
$query['task'] = 'feedbacks.deletevotes';
}
break;
default:
case Text::_('COM_RSFEEDBACK_SEF_FEEDBACK'):
$query['view'] = 'feedback';
if (isset($segments[1])) {
if ($segments[1] == Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_ADD')) {
$query['view'] = 'feedback';
$query['layout'] = 'edit';
$query['id'] = 0;
if ( isset($segments[2]) && is_numeric($segments[2]) ) {
$query['cat_id'] = (int) $segments[2];
}
} else if ($segments[1] == Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_EDIT')) {
$query['view'] = 'feedback';
$query['layout'] = 'edit';
if (is_numeric($segments[2])) {
$query['id'] = (int) $segments[2];
}
} else if ($segments[1] == Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_DELETE')) {
$query['view'] = 'feedbacks';
$query['task'] = 'feedbacks.delete';
if (isset($segments[2])) {
$query['id'] = $segments[2];
}
if (isset($segments[3])) {
$query['cat_id'] = $segments[3];
}
} else if ($segments[1] == Text::_('COM_RSFEEDBACK_SEF_FEEDBACK_FLAG')) {
$query['view'] = 'feedback';
$query['layout'] = 'default_form_flag';
if (is_numeric($segments[2])) {
$query['id'] = (int) $segments[2];
}
if (isset($segments[3])) {
$query['return'] = (string) $segments[3];
}
} else {
$query['layout'] = 'default';
if (isset($segments[2])) {
$query['id'] = (int)$segments[2];
}
}
} else {
$query['layout'] = 'default';
$query['id'] = (int) $segments[0];
}
break;
case Text::_('COM_RSFEEDBACK_SEF_CATEGORIES_VIEW'):
$query['view'] = 'categories';
break;
case Text::_('COM_RSFEEDBACK_SEF_CATEGORY_ADD'):
$query['view'] = 'category';
$query['layout'] = 'edit';
$query['id'] = 0;
break;
case Text::_('COM_RSFEEDBACK_SEF_CATEGORY_EDIT'):
$query['view'] = 'category';
$query['layout'] = 'edit';
$query['id'] = (int) $segments[1];
break;
case Text::_('COM_RSFEEDBACK_SEF_CATEGORY_DELETE'):
$query['view'] = 'categories';
$query['task'] = 'category.delete';
if (isset($segments[1]))
$query['id'] = $segments[1];
break;
case Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA'):
$query['view'] = 'removedata';
$query['layout'] = 'default';
break;
case Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA_SUCCESS'):
$query['view'] = 'removedata';
$query['layout'] = 'success';
break;
case Text::_('COM_RSFEEDBACK_SEF_REMOVE_DATA_PROCESS'):
$query['task'] = 'removedata.process';
break;
}
// Joomla 4.x compatibility
$jversion = new Version();
if ($jversion->isCompatible('4')) {
$segments = array();
}
return $query;
}
protected function loadLanguage() {
$lang = Factory::getLanguage();
$lang->load('com_rsfeedback', JPATH_SITE, 'en-GB', true);
$lang->load('com_rsfeedback', JPATH_SITE, $lang->getDefault(), true );
$lang->load('com_rsfeedback', JPATH_SITE, null, true);
}
}