| Current Path : /var/www/html/components/com_jssupportticket/ |
| Current File : /var/www/html/components/com_jssupportticket/router.php |
<?php
/**
* @Copyright Copyright (C) 2012 ... Ahmad Bilal
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
* Company: Buruj Solutions
+ Contact: www.burujsolutions.com , info@burujsolutions.com
* Created on: May 03, 2012
^
+ Project: JS Tickets
^
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Component\Router\RouterView;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Component\Router\RouterViewConfiguration;
use Joomla\CMS\Component\Router\Rules\MenuRules;
use Joomla\CMS\Component\Router\Rules\StandardRules;
use Joomla\CMS\Component\Router\Rules\NomenuRules;
use Joomla\CMS\Factory;
/**
* Routing class of com_phocagallery
*
* @since 3.3
*/
class JSSupportTicketRouter extends RouterView
{
protected $noIDs = false;
/**
* Content Component router constructor
*
* @param JApplicationCms $app The application object
* @param JMenu $menu The menu object to work with
*/
public function __construct($app = null, $menu = null)
{
$params = ComponentHelper::getParams('com_jsjobs');
parent::__construct($app, $menu);
}
public function build(&$query){
$segments = array();
$segments = $this->JSSupportTicketBuildRoute($query);
return $segments;
}
public function parse(&$segments){
$vars = array();
$vars = $this->JSSupportTicketParseRoute($segments);
//print_r($vars);
//die();
$segments = [];
return $vars;
}
public function preprocess($query){
return $query;
}
function JSSupportTicketBuildRoute( &$query ){
$segments = array();
$router = new JSSupportTicketOldRouter;
if(isset( $query['layout'] )) {
if(isset($query['c'])){
$controller = $query['c'];
unset($query['c']);
}else{
$controller = '';
}
$segments[] = $router->buildLayout($query['layout'],$controller); unset($query['layout']);
};
if(isset( $query['task'] )) {
$task = 'tk-'.$query['task']; unset($query['task']);
if(isset($query['c'])){
if($query['c'] != 'ticket')
$task .= '-'.$query['c'];
unset($query['c']);
}
$segments[] = $task;
if(isset($query['name'])){
$segments[] = 'file-'.$query['name'];
unset($query['name']);
}
};
if(isset( $query['id'] )) {
switch($segments[0]){ //layout name
case 'faq':$segments[] = $router->getFaqTitleById($query['id']).'-'.$query['id'];break;
case 'announcement':$segments[] = $router->getAnnouncementTitleById($query['id']).'-'.$query['id'];break;
case 'article':$segments[] = $router->getArticleTitleById($query['id']).'-'.$query['id'];break;
case 'mytickets':
case 'myticketsstaff':
$segments[] = $query['id'];
break;
default:$segments[] = 'id-'.$query['id'];break;
/*
case 'faq':$segments[] = 'faq-'.$router->getFaqTitleById($query['id']).'-'.$query['id'];break;
case 'announcement':$segments[] = 'announcement-'.$router->getAnnouncementTitleById($query['id']).'-'.$query['id'];break;
case 'article':$segments[] = 'article-'.$router->getArticleTitleById($query['id']).'-'.$query['id'];break;
case 'mytickets':
case 'myticketsstaff':
$segments[] = 'ticketid-'.$query['id'];
break;
default:$segments[] = 'id-'.$query['id'];break;
*/
}
unset($query['id']);
};
if(isset( $query['email'] )) { $segments[] = 'email-'.$query['email']; unset($query['email']);};
if(isset( $query['date_start'] )) { $segments[] = 'date_start-'.$query['date_start']; unset($query['date_start']);};
if(isset( $query['date_end'] )) { $segments[] = 'date_end-'.$query['date_end']; unset($query['date_end']);};
if(isset( $query['lt'] )) { $segments[] = 'listing-'.$router->buildListingFor($query['lt']); unset($query['lt']);};
//for sorting
if(isset( $query['sort'] )) { $segments[] = 'sort-'.$query['sort']; unset($query['sort']);};
if(isset( $query['sortby'] )) { $segments[] = 'sortby-'.$query['sortby']; unset($query['sortby']);};
// printticket
if(isset( $query['tmpl'] )) { $segments[] = 'tmpl-'.$query['tmpl']; unset($query['tmpl']);};
if(isset( $query['print'] )) { $segments[] = 'print-'.$query['print']; unset($query['print']);};
// echo '<br> item '.$query['Itemid'];
if(isset( $query['Itemid'] )) {
$_SESSION['JSItemid'] = $query['Itemid'];
};
return $segments;
}
function JSSupportTicketParseRoute( $segments ){
$value = "";
$vars = array();
$count = count($segments);
$router = new JSSupportTicketOldRouter;
//echo '<br> count '.$count;
//print_r($segments);
$site= JMenu::getInstance('site');
$item = $site->getActive();
if(strstr($segments[0],'tk-')){
$result = $router->parseTask($segments[0]);
$vars['c'] = $result['controller'];
$vars['task'] = $result['task'];
}else{
$result = $router->parseLayout($segments[0]);
$vars['c'] = $result['controller'];
$vars['layout'] = $result['layout'];
}
//echo '<br> layout '.$segments[0];print_r($segments);
$i = 0;
foreach ($segments AS $seg) {
if ($i >= 1) {
//$array = explode(":", $seg);
$array = explode("-", $seg);
$index = $array[0];
//unset the current index
unset($array[0]);
if (isset($array[1])) $value = implode("-", $array);
switch ($index) {
case "task": $vars['tk'] = $value; break;
/*
case "ticketid":
case "id":
case "faq":
case "announcement":
case "article": $vars['id'] = $router->parseId($value); break;
*/
default: $vars['id'] = $router->parseId($value); break;
case "email": $vars['email'] = $value; break;
case "date_start": $vars['date_start'] = $value; break;
case "date_end": $vars['date_end'] = $value; break;
case "listing": $vars['lt'] = $router->parseListingFor($value); break;
case "sort": $vars['sort'] = $value; break;
case "sortby": $vars['sortby'] = $value; break;
case "tmpl": $vars['tmpl'] = $value; break;
case "print": $vars['print'] = $value; break;
case "file": $vars['name'] = $value; break;
}
}
$i++;
}
if(isset( $_SESSION['JSItemid'] )) {
$vars['Itemid'] = $_SESSION['JSItemid'];
}
return $vars;
}
}
class JSSupportTicketOldRouter {
function buildLayout($layout, $controller) {
$returnvalue = "";
//echo '<br> layout ='.$layout;
//echo '<br> controller ='.$controller;
switch ($layout) {
case "announcements":$returnvalue = "staffannouncements";break;
case "formannouncement":$returnvalue = "addannouncement";break;
case "userannouncementdetail":$returnvalue = "announcement";break;
case "userannouncements":$returnvalue = "announcements";break;
case "departments":$returnvalue = "staffdepartments";break;
case "formdepartment":$returnvalue = "adddepartment";break;
case "downloads":$returnvalue = "staffdownloads";break;
case "formdownload":$returnvalue = "adddownload";break;
case "userdownloads":$returnvalue = "downloads";break;
case "faqs":$returnvalue = "stafffaqs";break;
case "formfaq":$returnvalue = "addfaq";break;
case "userfaqs":$returnvalue = "faqs";break;
case "userfaqdetail":$returnvalue = "faq";break;
case "controlpanel":$returnvalue = "controlpanel";break;
case "articles":$returnvalue = "staffarticles";break;
case "categories":$returnvalue = "staffcategories";break;
case "formarticle":$returnvalue = "addarticle";break;
case "formcategory":$returnvalue = "addcategory";break;
case "userarticles":$returnvalue = "articles";break;
case "userarticlesdetails":$returnvalue = "article";break;
case "usercatarticledetails":$returnvalue = "article";break;
case "usercatarticles":$returnvalue = "categories";break;
case "formmessage":$returnvalue = "sendmessage";break;
case "inbox":$returnvalue = "inbox";break;
case "message":$returnvalue = "message";break;
case "outbox":$returnvalue = "outbox";break;
case "rolepermissions":$returnvalue = "rolepermissions";break;
case "formrole":$returnvalue = "addrole";break;
case "roles":$returnvalue = "roles";break;
case "formstaff":$returnvalue = "addstaff";break;
case "staff":$returnvalue = "staffs";break;
case "staffprofile":$returnvalue = "profile";break;
case "users":$returnvalue = "users";break;
case "formticket": $returnvalue = "addticket"; break;
case "mytickets": $returnvalue = "mytickets"; break;
case "myticketsstaff": $returnvalue = "staffmytickets"; break;
case "ticketstatus": $returnvalue = "status"; break;
case "ticketdetail": $returnvalue = "viewticket"; break;
case "print_ticket": $returnvalue = "printticket"; break;
case "userpermissions": $returnvalue = "userpermissions"; break;
case "staffreports": $returnvalue = "staffreports"; break;
case "staffdetailreport": $returnvalue = "staffdetailreport"; break;
case "departmentreports": $returnvalue = "departmentreports"; break;
case "feedbacks": $returnvalue = "feedbacks"; break;
case "formfeedback": $returnvalue = "addfeedback"; break;
case "visitorsuccessmessage": $returnvalue = "visitorsuccessmessage"; break;
case "adderasedatarequest": $returnvalue = "datacomplianceactions"; break;
}
return $returnvalue;
}
function parseLayout($value) {
// $returnvalue = "";
switch ($value) {
case "staffannouncements":$returnvalue["layout"] = "announcements"; $returnvalue["controller"] = "announcements"; break;
case "addannouncement":$returnvalue["layout"] = "formannouncement";$returnvalue["controller"] = "announcements"; break;
case "announcement":$returnvalue["layout"] = "userannouncementdetail";$returnvalue["controller"] = "announcements"; break;
case "announcements":$returnvalue["layout"] = "userannouncements";$returnvalue["controller"] = "announcements"; break;
case "staffdepartments":$returnvalue["layout"] = "departments";$returnvalue["controller"] = "department"; break;
case "adddepartment":$returnvalue["layout"] = "formdepartment";$returnvalue["controller"] = "department"; break;
case "staffdownloads":$returnvalue["layout"] = "downloads";$returnvalue["controller"] = "downloads"; break;
case "adddownload":$returnvalue["layout"] = "formdownload";$returnvalue["controller"] = "downloads"; break;
case "downloads":$returnvalue["layout"] = "userdownloads";$returnvalue["controller"] = "downloads"; break;
case "stafffaqs":$returnvalue["layout"] = "faqs";$returnvalue["controller"] = "faqs"; break;
case "addfaq":$returnvalue["layout"] = "formfaq";$returnvalue["controller"] = "faqs"; break;
case "faqs":$returnvalue["layout"] = "userfaqs";$returnvalue["controller"] = "faqs"; break;
case "faq":$returnvalue["layout"] = "userfaqdetail";$returnvalue["controller"] = "faqs"; break;
case "controlpanel":$returnvalue["layout"] = "controlpanel";$returnvalue["controller"] = "jssupportticket"; break;
case "staffarticles":$returnvalue["layout"] = "articles";$returnvalue["controller"] = "knowledgebase"; break;
case "staffcategories":$returnvalue["layout"] = "categories";$returnvalue["controller"] = "knowledgebase"; break;
case "addarticle":$returnvalue["layout"] = "formarticle";$returnvalue["controller"] = "knowledgebase"; break;
case "addcategory":$returnvalue["layout"] = "formcategory";$returnvalue["controller"] = "knowledgebase"; break;
case "articles":$returnvalue["layout"] = "userarticles";$returnvalue["controller"] = "knowledgebase"; break;
case "article":$returnvalue["layout"] = "usercatarticledetails";$returnvalue["controller"] = "knowledgebase"; break;
case "categories":$returnvalue["layout"] = "usercatarticles";$returnvalue["controller"] = "knowledgebase"; break;
case "sendmessage":$returnvalue["layout"] = "formmessage";$returnvalue["controller"] = "mail"; break;
case "inbox":$returnvalue["layout"] = "inbox";$returnvalue["controller"] = "mail"; break;
case "message":$returnvalue["layout"] = "message";$returnvalue["controller"] = "mail"; break;
case "outbox":$returnvalue["layout"] = "outbox";$returnvalue["controller"] = "mail"; break;
case "rolepermissions":$returnvalue["layout"] = "rolepermissions";$returnvalue["controller"] = "rolepermissions"; break;
case "addrole":$returnvalue["layout"] = "formrole";$returnvalue["controller"] = "roles"; break;
case "roles":$returnvalue["layout"] = "roles";$returnvalue["controller"] = "roles"; break;
case "addstaff":$returnvalue["layout"] = "formstaff";$returnvalue["controller"] = "staff"; break;
case "staffs":$returnvalue["layout"] = "staff";$returnvalue["controller"] = "staff"; break;
case "profile":$returnvalue["layout"] = "staffprofile";$returnvalue["controller"] = "staff"; break;
case "users":$returnvalue["layout"] = "users";$returnvalue["controller"] = "staff"; break;
case "addticket": $returnvalue["layout"] = "formticket";$returnvalue["controller"] = "ticket"; break;
case "mytickets": $returnvalue["layout"] = "mytickets";$returnvalue["controller"] = "ticket"; break;
case "staffmytickets": $returnvalue["layout"] = "myticketsstaff";$returnvalue["controller"] = "ticket"; break;
case "status": $returnvalue["layout"] = "ticketstatus";$returnvalue["controller"] = "ticket"; break;
case "viewticket": $returnvalue["layout"] = "ticketdetail";$returnvalue["controller"] = "ticket"; break;
case "printticket": $returnvalue["layout"] = "print_ticket";$returnvalue["controller"] = "ticket"; break;
case "userpermissions": $returnvalue["layout"] = "userpermissions";$returnvalue["controller"] = "userpermissions"; break;
case "staffreports": $returnvalue["layout"] = "staffreports";$returnvalue["controller"] = "reports"; break;
case "staffdetailreport": $returnvalue["layout"] = "staffdetailreport";$returnvalue["controller"] = "reports"; break;
case "departmentreports": $returnvalue["layout"] = "departmentreports";$returnvalue["controller"] = "reports"; break;
case "feedbacks": $returnvalue["layout"] = "feedbacks";$returnvalue["controller"] = "feedback"; break;
case "addfeedback": $returnvalue["layout"] = "formfeedback";$returnvalue["controller"] = "feedback"; break;
case "visitorsuccessmessage": $returnvalue["layout"] = "visitorsuccessmessage";$returnvalue["controller"] = "ticket"; break;
case "datacomplianceactions": $returnvalue["layout"] = "adderasedatarequest"; $returnvalue["controller"] = "gdpr"; break;
}
if (isset($returnvalue))
return $returnvalue;
}
function parseTask($value) {
// $returnvalue = "";
switch ($value) {
case "tk-downloadbyname":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadbyname"; break;
case "tk:downloadbyname":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadbyname"; break;
case "tk-getdownloadbyid":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk:getdownloadbyid":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk-downloadall":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadall"; break;
case "tk:downloadall":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadall"; break;
case "tk-downloadallforreply":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadallforreply"; break;
case "tk:downloadallforreply":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "downloadallforreply"; break;
case "tk-getdownloadbyid-note":$returnvalue["controller"] = "note"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk:getdownloadbyid-note":$returnvalue["controller"] = "note"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk-getdownloadbyid-knowledgebase":$returnvalue["controller"] = "knowledgebase"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk:getdownloadbyid-knowledgebase":$returnvalue["controller"] = "knowledgebase"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk-getdownloadbyid-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk:getdownloadbyid-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "getdownloadbyid"; break;
case "tk-downloadall-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "downloadall"; break;
case "tk:downloadall-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "downloadall"; break;
case "tk-deleteattachmentbyid-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "deleteattachmentbyid"; break;
case "tk:deleteattachmentbyid-downloads":$returnvalue["controller"] = "downloads"; $returnvalue["task"] = "deleteattachmentbyid"; break;
case "tk-deleteattachmentbyid-knowledgebase":$returnvalue["controller"] = "knowledgebase"; $returnvalue["task"] = "deleteattachmentbyid"; break;
case "tk:deleteattachmentbyid-knowledgebase":$returnvalue["controller"] = "knowledgebase"; $returnvalue["task"] = "deleteattachmentbyid"; break;
case "tk-removeusereraserequest-gdpr":$returnvalue["controller"] = "gdpr"; $returnvalue["task"] = "removeusereraserequest"; break;
case "tk:removeusereraserequest-gdpr":$returnvalue["controller"] = "gdpr"; $returnvalue["task"] = "removeusereraserequest"; break;
case "tk-exportusereraserequest-gdpr":$returnvalue["controller"] = "gdpr"; $returnvalue["task"] = "exportusereraserequest"; break;
case "tk:exportusereraserequest-gdpr":$returnvalue["controller"] = "gdpr"; $returnvalue["task"] = "exportusereraserequest"; break;
case "tk-logout-jssupportticket":$returnvalue["controller"] = "jssupportticket"; $returnvalue["task"] = "logout"; break;
case "tk:logout-jssupportticket":$returnvalue["controller"] = "jssupportticket"; $returnvalue["task"] = "logout"; break;
case "tk-deleteticket":$returnvalue["controller"] = "ticket"; $returnvalue["task"] = "deleteticket"; break;
}
if (isset($returnvalue))
return $returnvalue;
}
function buildListingFor($value){
$returnvalue = '';
switch ($value) {
case '1':$returnvalue = 'open';break;
case '2':$returnvalue = 'answered';break;
case '3':$returnvalue = 'overdue';break;
case '4':$returnvalue = 'closed';break;
case '5':$returnvalue = 'all';break;
}
return $returnvalue;
}
function parseListingFor($value){
$returnvalue = '';
switch ($value) {
case 'open':$returnvalue = '1';break;
case 'answered':$returnvalue = '2';break;
case 'overdue':$returnvalue = '3';break;
case 'closed':$returnvalue = '4';break;
case 'all':$returnvalue = '5';break;
}
return $returnvalue;
}
function getFaqTitleById($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDbo();
$query = "SELECT subject FROM `#__js_ticket_faqs` WHERE id=$id";
$db->setQuery($query);
$name = $db->loadResult();
return $this->clean($name);
}
function getAnnouncementTitleById($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDbo();
$query = "SELECT title FROM `#__js_ticket_announcements` WHERE id=$id";
$db->setQuery($query);
$name = $db->loadResult();
return $this->clean($name);
}
function getArticleTitleById($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDbo();
$query = "SELECT subject FROM `#__js_ticket_articles` WHERE id=$id";
$db->setQuery($query);
$name = $db->loadResult();
return $this->clean($name);
}
function parseId($value) {
$id = explode("-", $value);
$count = count($id);
$id = (int) $id[($count - 1)];
return $id;
}
function clean($string) {
// $string = strtolower($string);
$string = strip_tags($string, "");
//Strip any unwanted characters
// $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
$string = preg_replace("/[@!*%^(){}?&$\\\\#\\/]+/", "", $string);
//Clean multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//Convert whitespaces and underscore to dash
$string = preg_replace("/[\s_]/", "-", $string);
return $string;
}
}