Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/router.php
<?php
/**
 * @package DJ-Classifieds
 * @copyright Copyright (C) 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
 */

defined('_JEXEC') or die;

require_once(JPATH_ADMINISTRATOR.'/components/com_djclassifieds/lib/djseo.php');
require_once(JPATH_ADMINISTRATOR.'/components/com_djclassifieds/lib/djtheme.php');

use Joomla\CMS\Component\Router\RouterBase;

class DJClassifiedsRouter extends RouterBase
{
	public function build(&$query)
	{
		$segments = array();
		$app = JFactory::getApplication();
		$menu = $app->getMenu('site');
		$par = JComponentHelper::getParams('com_djclassifieds');

		if(empty($query['rid'])){
			unset($query['rid']);
		}
		if(empty($query['cid'])){
			unset($query['cid']);
		}

		if(!empty($query['Itemid'])){
			$menuItem = $menu->getItem($query['Itemid']);
			if($menuItem && $menuItem->type == 'alias'){
			    $menuItem = null;
			}
		}
		
		$mView = (empty($menuItem->query['view'])) ? null : $menuItem->query['view'];
		$mLayout = (empty($menuItem->query['layout'])) ? null : $menuItem->query['layout'];
		$mCatid = (empty($menuItem->query['cid'])) ? null : (int)$menuItem->query['cid'];
		$mRegid = (empty($menuItem->query['rid'])) ? null : (int)$menuItem->query['rid'];
		$mId = (empty($menuItem->query['id'])) ? null : (int)$menuItem->query['id'];
		
		$view = !empty($query['view']) ? $query['view'] : null;
		$layout = !empty($query['layout']) ? $query['layout'] : null;
		$cid = !empty($query['cid']) ? $query['cid'] : null;
		$rid = !empty($query['rid']) ? $query['rid'] : null;
		$id = !empty($query['id']) ? $query['id'] : null;
		$se = !empty($query['se']) ? $query['se'] : null;
		$uid = !empty($query['uid']) ? $query['uid'] : null;
		$order = !empty($query['order']) ? $query['order'] : null;
		$menuDefault = $menu->getDefault();
		
		// 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 ($view) {      		                
			if ($view == 'item') {
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_item','ad');
				}    		
				unset($query['view']);	
				if ($view == $mView && intval($id) > 0 && intval($id) == $mId) {
					unset($query['id']);
					unset($query['cid']);
					unset($query['rid']);
				} else if (($mView == 'items' || $mView == 'categories') && intval($id) > 0) {
					$segment_cid = '';
					if (intval($cid) != intval($mCatid)) {
						$segment_cid = DJClassifiedsSEO::getURLfromSlug($cid, 'category');
					}
					$segment_rid = '';
					if (intval($rid) != intval($mRegid)) {
						$segment_rid =DJClassifiedsSEO::getURLfromSlug($rid, 'region', 'l');
					}
					
					if($par->get('seo_item_url_structure',0)==1){ //region/category
						if($segment_rid){
							$segments[] = $segment_rid;
						}
						if($segment_cid){
							$segments[] = $segment_cid;
						}        			
					}else if($par->get('seo_item_url_structure',0)==2){ //category/region
						if($segment_cid){
							$segments[] = $segment_cid;
						}
						if($segment_rid){
							$segments[] = $segment_rid;
						}
					}else if($par->get('seo_item_url_structure',0)==0){ //only category
						if($segment_cid){
							$segments[] = $segment_cid;
						}
					}
					
					$segments[] =DJClassifiedsSEO::getURLfromSlug($id, 'item');
					unset($query['id']);
					unset($query['cid']);
					unset($query['rid']);
				}
			}else if ($view == 'items') {
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_items','ads');
				}
				$segment_cid = '';
				if($cid){
					if (intval($cid) != intval($mCatid)) {            	
						$segment_cid = DJClassifiedsSEO::getURLfromSlug($cid, 'category');
					}
					unset($query['cid']);
				}
				
				$segment_rid = '';
				if($rid){
					if (intval($rid) != intval($mRegid)) {
						$segment_rid = DJClassifiedsSEO::getURLfromSlug($rid, 'region', 'l');
					}
					unset($query['rid']);
				}            
				
				if($par->get('seo_items_url_structure',0)){ //category/region
					if($segment_cid){
						$segments[] = $segment_cid;
					}
					if($segment_rid){
						$segments[] = $segment_rid;
					}            	 
				}else{ //region/category
					if($segment_rid){
						$segments[] = $segment_rid;
					}
					if($segment_cid){
						$segments[] = $segment_cid;
					}
				}

				if($layout){
					unset($query['layout']);
				}
			}elseif($query['view'] == 'additem'){
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_additem','additem');
				}				
				if(isset($query['id'])){
					$segments[] = $query['id'];
					unset($query['id']);
				}						
			}elseif($query['view'] == 'useritems'){
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_useritems','useritems');
				}			
				if(isset($query['id'])){
					$segments[] = $query['id'];
					unset($query['id']);
				}					
			}elseif($query['view'] == 'categories'){
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_categories','categories');
				}								
			}elseif($query['view'] == 'regions'){
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_regions','regions');
				}								
			}elseif($query['view'] == 'payment'){			
				$segments[] = 'payment';		
				if(isset($query['id'])){
					$segments[] = $query['id'];
					unset($query['id']);
				}
				if($layout && $layout!=$mLayout){
					$segments[] = $layout;
					unset($query['layout']);
				}
			}elseif($query['view'] == 'points'){
				if ($view != $mView) {			
					$segments[] = 'points';
				}			
			}elseif($query['view'] == 'userpoints'){
				if ($view != $mView) {			
					$segments[] = 'userpoints';
				}			
			}elseif($query['view'] == 'renewitem'){			
				$segments[] = 'renewitem';		
				if(isset($query['id'])){
					$segments[] = $query['id'];
					unset($query['id']);
				}	
			}else if ($view == 'profile') {        	        	
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_profile','profile');
				}
				if(isset($query['uid'])){
					$segments[] =DJClassifiedsSEO::getURLfromSlug($uid, 'profile');
				} 
				unset($query['uid']);			
			}elseif($query['view'] == 'profileedit'){
				if ($view != $mView) {
					$segments[] = $par->get('seo_view_profileedit','profileedit');
				}														
			}elseif($query['view'] == 'contact'){			
				$segments[] = 'contact';		
				if(isset($query['id'])){
					$segments[] = $query['id'];
					unset($query['id']);
				}
				if(isset($query['bid'])){
					$segments[] = $query['bid'];
					unset($query['bid']);
				}				
			}elseif($query['view'] == 'checkout'){			
				$segments[] = 'checkout';
				if(isset($query['item_id'])){
					$segments[] = $query['item_id'];
					unset($query['item_id']);
				}
				if(isset($query['quantity'])){
					$segments[] = $query['quantity'];
					unset($query['quantity']);
				}
			}elseif($query['view'] == 'registration'){	
				if ($view != $mView) {			
					$segments[] = 'registration';
				}
			}elseif($query['view'] == 'userplans'){
				if ($view != $mView) {			
					$segments[] = 'userplans';
				}			
			}elseif($query['view'] == 'plans'){
				if ($view != $mView) {			
					$segments[] = 'plans';
				}			
			} else {
				if ($view != $mView) {
					$segments[] = $query['view'];
				}
				if(isset($query['id'])){
					$segments[] = DJClassifiedsSEO::getURLfromSlug($id, $query['view']);
					unset($query['id']);
				}
			}
			
			unset($query['view']);

			if($mView == $view && $mLayout == $layout && $mCatid == $cid && ($se || $order || $uid) && $menuItem && $menuDefault->id == $menuItem->id){			
				$segments[] = 'all'; 
			}
		}    
		
		return $segments;
	}

	public function parse(&$segments)
	{
		$app = JFactory::getApplication();
		$menu = $app->getMenu();
		$activemenu = $menu->getActive();	
		$par = JComponentHelper::getParams('com_djclassifieds');

		$query = array();

		if ($segments && $segments[0] != 'index.php') {
			$temp_view = '';
			if ($activemenu) {
				$temp = array();
				$temp[0] = $activemenu->query['view'];
				$temp_view = $activemenu->query['view'];
				switch ($temp_view) {
					case 'item' : {
						$temp[1] = @$activemenu->query['cid'];
						$temp[2] = @$activemenu->query['id'];

						break;
					}
					case 'items' : {
						$temp[1] = @$activemenu->query['cid'];
						$temp[2] = @$activemenu->query['rid'];
						if(isset($activemenu->query['layout'])){
							$temp[3] = @$activemenu->query['layout'];	
						}

						break;
					}
				}
			}
			
			if (isset($segments[0])) { 
				if($segments[0] == $par->get('seo_view_item','ad') || $segments[0] == 'item') {
					$query['view'] = 'item';
					if(isset($segments[3])){
						$item_id = DJClassifiedsSEO::getIDfromURL($segments[3], 'item');
						$query['id'] = $item_id ? $item_id : $segments[3]; // ghostads
						if(DJClassifiedsSEO::isIDRegion($segments[2])){
							$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[2], 'region');
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'category');
						}else{
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[2], 'category');
							$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'region');
						}
					}else if(isset($segments[2])){
						$item_id = DJClassifiedsSEO::getIDfromURL($segments[2], 'item');
						$query['id'] = $item_id ? $item_id : $segments[2]; // ghostads
						if(isset($temp[1])){
							if($temp_view == 'items' || $temp_view == 'categories'){
								if($temp[1] == 0){
									$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'category');
									$query['rid'] = $temp[2];
								}else{
									if($par->get('seo_item_url_structure',0)!=0){
										$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'region');
									}
									$query['cid'] = $temp[1];
								}								
							}else{
								$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'category');
							}
						}else{
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'category');
						}
					}else{					
						if(isset($segments[1])){
							$item_id = DJClassifiedsSEO::getIDfromURL($segments[1], 'item');
							$query['id'] = $item_id ? $item_id : $segments[1]; // ghostads
						}
						if(isset($temp[1])){							
							if($temp_view == 'items' || $temp_view == 'categories'){
								$query['cid'] = $temp[1];
								$query['rid'] = $temp[2];
							}
						}
					} 
				}else if($segments[0] == $par->get('seo_view_profileedit','profileedit') || $segments[0] == 'profileedit') {
					$query['view'] = 'profileedit';					 
				}else if($segments[0] == $par->get('seo_view_additem','additem') || $segments[0] == 'additem') {
					$query['view'] = 'additem';
					if (isset($segments[1])) {
						$query['id'] = $segments[1];
					}
				}
				else if($segments[0] == $par->get('seo_view_useritems','useritems') || $segments[0] == 'useritems') {
					$query['view'] = 'useritems';
					if (isset($segments[1])) {
						$query['id'] = $segments[1];
					} 
				}
				else if($segments[0] == $par->get('seo_view_categories','categories') || $segments[0] == 'categories') {
					$query['view'] = 'categories';
				}
				else if($segments[0] == $par->get('seo_view_regions','regions') || $segments[0] == 'regions') {
					$query['view'] = 'regions';
				}
				else if($segments[0] == 'payment') {
					$query['view'] = 'payment';
					if (isset($segments[1])) {
						$query['id'] = $segments[1];
					} 
					if (isset($segments[2])) {
						$query['layout'] = $segments[2];
					}
				}else if($segments[0] == 'points') {
					$query['view'] = 'points';
				}else if($segments[0] == 'userpoints') {
					$query['view'] = 'userpoints';
				}else if($segments[0] == 'renewitem') {
					$query['view'] = 'renewitem';
					if (isset($segments[1])) {
						$query['id'] = $segments[1];
					} 
				}else if($segments[0] == 'checkout') {
					$query['view'] = 'checkout';
					if (isset($segments[1])) {
						$query['item_id'] = $segments[1];
					}
					if (isset($segments[2])) {
						$query['quantity'] = $segments[2];
					}
				}else if($segments[0] == 'registration') {
					$query['view'] = 'registration';
				}else if($segments[0] == 'plans') {
					$query['view'] = 'plans';
				}else if($segments[0] == 'userplans') {
					$query['view'] = 'userplans';
				}else if($segments[0] == $par->get('seo_view_profile','profile') || $segments[0] == 'profile' || $temp_view == 'profile') {
					$query['view'] = 'profile';
					if (isset($segments[1])) {
						$query['uid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'profile');
					}else{
						$query['uid'] = DJClassifiedsSEO::getIDfromURL($segments[0], 'profile');
					} 
				}else if($segments[0] == $par->get('seo_view_items','ads') || $segments[0] == 'items' || $temp_view == 'items') {
					$query['view'] = 'items';
					if (isset($segments[1])) {
						if(DJClassifiedsSEO::isIDRegion($segments[1])){
							$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'region');
						}else{
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[1], 'category');
						}
					}
						
					if (isset($segments[2])) {
						if(DJClassifiedsSEO::isIDRegion($segments[2])){
							$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[2], 'region');
						}else{
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[2], 'category');
						}
					}					
					
					if($temp_view == 'items' && $segments[0] != 'items'){
						if(DJClassifiedsSEO::isIDRegion($segments[0])){
							$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[0], 'region');
						}else{
							$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[0], 'category');
						}
					}

					if($segments[0] != 'all' && $segments[0] != $par->get('seo_view_items','ads') && empty($query['cid']) && empty($query['rid'])){
						DJClassifiedsSEO::handleCategoryNotFound();
					}
				}else if(isset($temp[1]) && $temp_view == 'items'){
					$query['view'] = 'items';				   		
					if(DJClassifiedsSEO::isIDRegion($segments[0])){
						$query['rid'] = DJClassifiedsSEO::getIDfromURL($segments[0], 'region');
					}else{
						$query['cid'] = DJClassifiedsSEO::getIDfromURL($segments[0], 'category');
					}				   		
				}else if($temp_view){
					$query['view'] = $temp_view;
					if(!isset($query['id']) && isset($segments[0])){
						$query['id'] = $segments[0];
					}			
				}else{
					if(!isset($query['view']) && isset($segments[0])){
						$query['view'] = $segments[0];
					}
					if(!isset($query['id']) && isset($segments[1])){
						$query['id'] = $segments[1];
					}
				}
			}
		}
		
		$segments = array();

		return $query;
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!