AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.94
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/administrator/components/com_djclassifieds/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/nice/administrator/components/com_djclassifieds/lib/djseo.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('Restricted access');

require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djcategory.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djregion.php');
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djtheme.php');
require_once(JPATH_ROOT.'/components/com_djclassifieds/model.php');

class DJClassifiedsSEO
{
	protected static $_lookup_arr = array();
	
	public static function getItemRoute($id, $catid = 0, $regid = 0, $ignore_active_itemid = null)
	{
		$app = JFactory::getApplication();
		$menus = $app->getMenu('site');
		$m_active = $menus->getActive();
		$par = $app->isClient('site') ? $app->getParams('com_djclassifieds') : JComponentHelper::getParams('com_djclassifieds');

		$app->triggerEvent('onBeforeDJClassifiedsSEOGetItemRoute', array(&$id, &$catid, &$regid));
		
		$link = 'index.php?option=com_djclassifieds&view=item&id='.$id;

		if(!JFactory::getConfig()->get('sef')){
			if($par->get('seo_item_url_structure','0') == '-1'){
				$catid = 0;
			}
			if($par->get('seo_item_url_structure','0') == '0' || $par->get('seo_item_url_structure','0') == '-1'){
				$regid = 0;
			}
		}

		if((int)$catid >= 0){
			$link .= '&cid='.$catid;
		}

		if((int)$regid >= 0){
			$link .= '&rid='.$regid;
		}

		$menu_item = $menus->getItems('link', 'index.php?option=com_djclassifieds&view=item&id='.intval($id), true);

		if(empty($menu_item) && $par->get('seo_item_itemid')){
			$forced_menu_item = $menus->getItems('id', $par->get('seo_item_itemid'), true);
			if($forced_menu_item && (strpos($forced_menu_item->link, 'index.php?option=com_djclassifieds&view=items') !== false || strpos($forced_menu_item->link, 'index.php?option=com_djclassifieds&view=categories') !== false)){
				$menu_item = $forced_menu_item;
			}
		}

		if(empty($menu_item)){
			$ignore_active_itemid = ($ignore_active_itemid === null && in_array('item', $par->get('seo_ignore_active_itemid',array()))) ? true : $ignore_active_itemid;
			$active_id = (!$ignore_active_itemid && $m_active && $m_active->component == 'com_djclassifieds' && strpos($m_active->link, 'index.php?option=com_djclassifieds&view=items') !== false) ? $m_active->id : null;

			$menu_item = self::getItemsMenuItem($catid, $regid, true, $active_id);
		}

		$link .= '&Itemid='.($menu_item ? $menu_item->id : $menus->getDefault()->id);

		$app->triggerEvent('onAfterDJClassifiedsSEOGetItemRoute', array(&$link, $id, $catid, $regid));
		
		return $link;
	}

	public static function getCategoryRoute($catid, $ignore_active_itemid = null)
	{
		$app = JFactory::getApplication();
		$menus = $app->getMenu('site');
		$m_active = $menus->getActive();
		$par = $app->isClient('site') ? $app->getParams('com_djclassifieds') : JComponentHelper::getParams('com_djclassifieds');

		$link = 'index.php?option=com_djclassifieds&view=items';

		if((int)$catid >= 0){
			$link .= '&cid='.$catid;
		}

		$ignore_active_itemid = ($ignore_active_itemid === null && in_array('category', $par->get('seo_ignore_active_itemid',array()))) ? true : $ignore_active_itemid;
		$active_id = (!$ignore_active_itemid && $m_active && $m_active->component == 'com_djclassifieds' && strpos($m_active->link, 'index.php?option=com_djclassifieds&view=items') !== false) ? $m_active->id : null;

		$items_menu_item = self::getItemsMenuItem($catid, 0, true, $active_id);

		if($items_menu_item){
			$link .= '&Itemid='.$items_menu_item->id;
		}

		return $link;
	}

	public static function getRegionRoute($regid, $ignore_active_itemid = null)
	{
		$app = JFactory::getApplication();
		$menus = $app->getMenu('site');
		$m_active = $menus->getActive();
		$par = $app->isClient('site') ? $app->getParams('com_djclassifieds') : JComponentHelper::getParams('com_djclassifieds');

		// backward compatibiliy (before alias column)
		$regid = self::getRegionAlias((int)$regid);

		$link = 'index.php?option=com_djclassifieds&view=items';

		if((int)$regid >= 0){
			$link .= '&rid='.$regid;
		}

		$ignore_active_itemid = ($ignore_active_itemid === null && in_array('region', $par->get('seo_ignore_active_itemid',array()))) ? true : $ignore_active_itemid;
		$active_id = (!$ignore_active_itemid && $m_active && $m_active->component == 'com_djclassifieds' && strpos($m_active->link, 'index.php?option=com_djclassifieds&view=items') !== false) ? $m_active->id : null;

		$items_menu_item = self::getItemsMenuItem(0, $regid, true, $active_id);

		if($items_menu_item){
			$link .= '&Itemid='.$items_menu_item->id;
		}

		return $link;
	}

	public static function getItemsMenuItem($cid = 0, $rid = 0, $include_categories = true, $preferred_itemid = null, $prefer_blog = false)
	{
		$app = JFactory::getApplication();
		$menus = $app->getMenu('site');

		$cid = (int)$cid;
		$rid = (int)$rid;

		$lookup_store_id = $cid.'_'.$rid.'_'.($include_categories ? '1' : '0').($preferred_itemid ? $preferred_itemid : '0').'_'.($prefer_blog ? '1' : '0');

		if(isset(self::$_lookup_arr[$lookup_store_id])){
			return self::$_lookup_arr[$lookup_store_id];
		}

		$url_arr_table = array();
		$url_arr_blog = array();
		if($cid && $rid){
			$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid='.$cid.'&rid='.$rid;
			$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid='.$cid.'&rid='.$rid;
		}
		if($cid){
			foreach(DJClassifiedsCategory::getParentPath(1,$cid) as $c){
				$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid='.$c->id;
				$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid='.$c->id;
				$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid='.$c->id.'&rid=0';
				$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid='.$c->id.'&rid=0';
			}
		}
		if($rid){
			foreach(DJClassifiedsRegion::getParentPath($rid,1) as $r){
				$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&rid='.$r->id;
				$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&rid='.$r->id;
				$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid=0&rid='.$r->id;
				$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid=0&rid='.$r->id;
			}
		}
		$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid=0&rid=0';
		$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items&cid=0'; // backward compatibility
		$url_arr_table[] = 'index.php?option=com_djclassifieds&view=items'; // backward compatibility
		$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid=0&rid=0';
		$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog&cid=0'; // backward compatibility
		$url_arr_blog[] = 'index.php?option=com_djclassifieds&view=items&layout=blog'; // backward compatibility

		if($prefer_blog){
			$url_arr = array_merge($url_arr_blog, $url_arr_table);
		}else{
			$url_arr = array_merge($url_arr_table, $url_arr_blog);
		}

		if($preferred_itemid){ // look for the menu item with preferred Itemid first
			foreach($url_arr as $s_url){
				$menu_items_tmp = $menus->getItems('link', $s_url, false);
				foreach($menu_items_tmp as $menu_item_tmp){
					if($menu_item_tmp->id == $preferred_itemid){
						$menu_item = $menu_item_tmp;
						break 2;
					}
				}
			}	
		}

		if(empty($menu_item)){
			foreach($url_arr as $s_url){ // look for the menu item without restrictions
				$menu_items_tmp = $menus->getItems('link', $s_url, false);
				foreach($menu_items_tmp as $menu_item_tmp){
					$it_par = $menu_item_tmp->getParams();
					if(!$it_par->get('show_fav_profiles_items') && !$it_par->get('type_id')){
						$menu_item = $menu_item_tmp;
						break 2;
					}
				}
			}
		}

		if($include_categories){
			$url_arr[] = 'index.php?option=com_djclassifieds&view=categories';
		}

		if(empty($menu_item)){
			foreach($url_arr as $s_url){
				$menu_item = $menus->getItems('link', $s_url, true);
				if($menu_item){
					break;
				}
			}
		}

		self::$_lookup_arr[$lookup_store_id] = !empty($menu_item) ? $menu_item : false;
		
		return self::$_lookup_arr[$lookup_store_id];
	}

	public static function getSearchResultsMenuItem($params)
	{
		$app = JFactory::getApplication();
		$menus = $app->getMenu('site');

		$se_cats = $app->input->getVar('se_cats', '');
		if(!is_array($se_cats)) $se_cats = explode(',', $se_cats);
		$se_cats = array_filter($se_cats);
		$se_cat_id = str_replace('p', '', end($se_cats));
		$cid = $se_cat_id ? $se_cat_id : 0;

		$se_regs = $app->input->getVar('se_regs', '');
		if(!is_array($se_regs)) $se_regs = explode(',', $se_regs);
		$se_regs = array_filter($se_regs);
		$se_reg_id = str_replace('p', '', end($se_regs));
		$rid = $se_reg_id ? $se_reg_id : 0;

		if(!$cid && !$app->input->exists('se_cats') && $params->get('show_cat','1') && $params->get('cat_id')){
			$cid = $params->get('cat_id');
		}

		if($params->get('results_active_itemid','0') && $app->input->getInt('Itemid')){
			$menu_custom = $menus->getItem($app->input->getInt('Itemid'));
			if($menu_custom && strpos($menu_custom->link, 'index.php?option=com_djclassifieds&view=items') !== false){
				return $menu_custom;
			}
		}

		if($params->get('results_itemid',0)){
			$menu_custom = $menus->getItem($params->get('results_itemid',0));
			if($menu_custom && strpos($menu_custom->link, 'index.php?option=com_djclassifieds&view=items') !== false){
				return $menu_custom;
			}
		}

		$menu_item = self::getItemsMenuItem($cid, $rid, false, null, $params->get('result_view','0') == '1');
		
		return !empty($menu_item) ? $menu_item : false;
	}

	public static function getSearchResultsLink($params) // backward compatibility
	{
		$menu_item = self::getSearchResultsMenuItem($params);
		
		if($menu_item){
			$itemid_uri = $menu_item->link;
			$itemid = $menu_item->id;

			$link = JUri::getInstance($itemid_uri);
			$link->setVar('Itemid', $itemid);
		}else{
			$link = 'index.php?option=com_djclassifieds&view=items';
		}

		return $link;
	}
	
	public static function getSearchResultsItemid($params)
	{
		$menu_item = self::getSearchResultsMenuItem($params);
		
		if($menu_item){
			$itemid = $menu_item->id;
		}else{
			$itemid = '';
		}

		return $itemid;
	}

	public static function getItemsSearchLink($params) // backward compatibility
	{
		return self::getSearchResultsLink($params);
	}

	static function getRegionAlias($id)
	{
		$db = JFactory::getDBO();
		$query = "SELECT * FROM #__djcf_regions WHERE id=".$id; 
		$db->setQuery($query); 
		$region = $db->loadObject();

		if(!$region){
			return;
		}elseif($region->alias){
			return $id.':'.$region->alias;
		}else{
			return $id.':'.self::getAliasName($region->name);
		}
	}

	public static function getAliasName($name = '')
	{
		$par = JComponentHelper::getParams('com_djclassifieds');
		$alias = strip_tags(mb_strtolower($name, 'UTF-8'));

		if($par->get('seo_alias_urlsafe','1')){
			$alias = JFilterOutput::stringURLSafe($alias);
		}else{
			$alias = JFilterOutput::stringURLUnicodeSlug($alias);							
		}
        $alias = str_ireplace(' ', '_', $alias);

		return $alias;
	}
	
	public static function getNewAdLink() // backward compatibility
	{
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu('site');	
		$menu_newad_itemid = $menus->getItems('link','index.php?option=com_djclassifieds&view=additem',1);
		$new_ad_link='index.php?option=com_djclassifieds&view=additem';
		if($menu_newad_itemid){
			$new_ad_link .= '&Itemid='.$menu_newad_itemid->id;
		}       
		return $new_ad_link;
	}

	public static function getUserAdsLink(){ // backward compatibility
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu('site');
		$menu_userads_itemid = $menus->getItems('link','index.php?option=com_djclassifieds&view=useritems',1);
		$menu_userads_link = 'index.php?option=com_djclassifieds&view=useritems';	
		if($menu_userads_itemid){
			$menu_userads_link .= '&Itemid='.$menu_userads_itemid->id;
		}       
		return $menu_userads_link;
	}
	
	public static function getUserFavAdsLink(){ // backward compatibility
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu('site');
		$menu_fav_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=items&layout=favourites',1);	
		$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=items&cid=0',1);
		$menu_item_blog = $menus->getItems('link','index.php?option=com_djclassifieds&view=items&layout=blog&cid=0',1);
				
		if($menu_fav_item){
			$fav_ads_link='index.php?option=com_djclassifieds&view=items&layout=favourites&Itemid='.$menu_fav_item->id;
		}else if($menu_item){
			$fav_ads_link='index.php?option=com_djclassifieds&view=items&cid=0&Itemid='.$menu_item->id.'&fav=1';
		}else if($menu_item_blog){
			$fav_ads_link='index.php?option=com_djclassifieds&view=items&layout=blog&cid=0&Itemid='.$menu_item_blog->id.'&fav=1';
		}else{
			$fav_ads_link='index.php?option=com_djclassifieds&view=items&cid=0&fav=1';
		}
						
		return $fav_ads_link;
	}
	
	public static function getURLfromSlug($slug, $context = '', $id_sufix = '')
	{		
		$db = JFactory::getDBO();
		$par = JComponentHelper::getParams('com_djclassifieds');
		$slug_a = explode(':', ($slug ? $slug : ''));
		$url = '';

		if($context == 'profile' && $par->get('seo_only_id_in_profile_url', '0')){
			return $slug_a[0];
		}elseif($par->get('seo_alias_in_url', '1') && in_array($context, $par->get('seo_remove_id_from_url', array())) && count($slug_a) == 2){
			$alias = $slug_a[1];
			if($context == 'item'){
				$query = "SELECT count(id) FROM #__djcf_items WHERE alias = ".$db->q($alias);
			}elseif($context == 'profile'){
				$query = "SELECT count(id) FROM #__users WHERE username = ".$db->q($alias);
			}elseif(($context == 'category' || $context == 'region') && in_array('category', $par->get('seo_remove_id_from_url', array())) && in_array('region', $par->get('seo_remove_id_from_url', array()))){
				$query = "SELECT count(id) FROM "
						."(SELECT id FROM #__djcf_categories WHERE alias = ".$db->q($alias)." "
						."UNION "
						."SELECT id FROM #__djcf_regions WHERE alias = ".$db->q($alias).") v";
			}elseif($context == 'category'){
				$query = "SELECT count(id) FROM #__djcf_categories WHERE alias = ".$db->q($alias);
			}elseif($context == 'region'){
				$query = "SELECT count(id) FROM #__djcf_regions WHERE alias = ".$db->q($alias);
			}
			$db->setQuery($query);
			$count = $db->loadResult();
			if($count == 1){ // return alias only if alias is unique
				return $alias;
			}
		}

		if($par->get('seo_alias_in_url','1')){
			if(isset($slug_a[1])){
				$slug_a[1] = DJClassifiedsSEO::getAliasName($slug_a[1]);
				if($id_sufix=='l' && substr($slug_a[0], -1)=='l'){
					$id_sufix = '';
				}
				if($par->get('seo_id_position','1')){		
					$url .= $slug_a[1].$par->get('seo_link_separator',',').$slug_a[0].$id_sufix;		 	
				}else{
					$url .= $slug_a[0].$id_sufix.$par->get('seo_link_separator',',').$slug_a[1];
				}
			}else{
				$url = $slug_a[0].$id_sufix;	
			}		
		}else{
			$url = $slug_a[0].$id_sufix;
		}
						
		return $url;
	}

	public static function getIDfromURL($url, $context = '')
	{		
		$db = JFactory::getDBO();
		$par = JComponentHelper::getParams( 'com_djclassifieds' );
		$url_a = explode($par->get('seo_link_separator',','), $url);

		if($context == 'profile' && $par->get('seo_only_id_in_profile_url', '0')){
			return (int)$url;
		}elseif($par->get('seo_alias_in_url', '1') && in_array($context, $par->get('seo_remove_id_from_url', array()))){
			$alias = $url;
			if($context == 'item'){
				$query = "SELECT id FROM #__djcf_items WHERE alias = ".$db->q($alias);
			}elseif($context == 'category'){
				$query = "SELECT id FROM #__djcf_categories WHERE alias = ".$db->q($alias);
			}elseif($context == 'region'){
				$query = "SELECT id FROM #__djcf_regions WHERE alias = ".$db->q($alias);
			}elseif($context == 'profile'){
				$query = "SELECT id FROM #__users WHERE username = ".$db->q($alias);
			}
			$db->setQuery($query);
			$id = $db->loadResult();
			if($id){
				return $id.':'.$alias;
			}
		}

		if(isset($url_a[1])){				
			if($par->get('seo_id_position','1')){		
				$id = end($url_a);
				unset($url_a[count($url_a)-1]);		 	
			}else{
				$id = (int)$url_a[0];
				unset($url_a[0]);
			}	
		}else{
			$id = (int)$url;
		}
		
		if(!$id || !is_numeric(rtrim($id,'l'))){
			return false;
		}
		
		if($par->get('seo_alias_in_url', '1') && in_array($context, $par->get('seo_remove_id_from_url', array()))){
			$slug = '';
		}else{
			$slug = implode('-',$url_a);
		}
		return $id.($slug ? ':'.$slug : '');
	}

	public static function isIDRegion($url)
	{	
		$par = JComponentHelper::getParams( 'com_djclassifieds' );
		$db = JFactory::getDBO();

		if(in_array('region', $par->get('seo_remove_id_from_url', array()))){
			$url = str_replace(':', '-', $url);
			$query = "SELECT id FROM #__djcf_regions WHERE alias = ".$db->q($url);
			$db->setQuery($query);
			$exists = $db->loadResult();
			if($exists){
				return true;
			}
		}

		$url_a = explode($par->get('seo_link_separator',','),str_ireplace(':', $par->get('seo_link_separator',','), $url));
		if(isset($url_a[1])){
			if($par->get('seo_id_position','1')){		
				$id = end($url_a);	 	
			}else{
				$id = $url_a[0];					
			}	
		}else{
			$id = $url;	
		}		
		
		if(substr($id, -1)=='l' && is_numeric(rtrim($id, substr($id, -1)))){
			return true;
		}else{
			return false;
		}
	}
	
	public static function getMainAdvertsItemid(){ // backward compatibility
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu('site');
		$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=items&cid=0',1);
		$menu_item_blog = $menus->getItems('link','index.php?option=com_djclassifieds&view=items&layout=blog&cid=0',1);
	
		$itemid = '';
		if($menu_item){
			$itemid='&Itemid='.$menu_item->id;
		}else if($menu_item_blog){
			$itemid='&Itemid='.$menu_item_blog->id;
		}
	
		return $itemid;
	}

	public static function getUserProfileItemid(){ // backward compatibility
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu('site');
		$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=profiles',1);
	
		$itemid = '';
		if($menu_item){
			$itemid='&Itemid='.$menu_item->id;
		}else{
			$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=profile',1);
			if($menu_item){
				$itemid='&Itemid='.$menu_item->id;
			}
		}
	
		return $itemid;
	}

	public static function setMeta()
	{
		$app = JFactory::getApplication();
		$document = JFactory::getDocument();
		$menus = $app->getMenu('site');
		$m_active = $menus->getActive();
		if($m_active){
			if($m_active->getParams()->get('menu-meta_keywords')){
				$document->setMetaData('keywords',$m_active->getParams()->get('menu-meta_keywords'));
			}
			if($m_active->getParams()->get('menu-meta_description')){
				$document->setDescription($m_active->getParams()->get('menu-meta_description'));
			}
		}
	}

	public static function setSiteNameInPageTitle()
	{
		$config = JFactory::getConfig();
		$document = JFactory::getDocument();
		$par = JComponentHelper::getParams('com_djclassifieds');

		if($par->get('use_sitename_pagetitles', '1')){
			$site_name_page_title = $config->get('sitename_pagetitles', '0');
			$title_separator = $par->get('seo_title_separator', ' - ');

			if($site_name_page_title){
				$sitename = $config->get('sitename', '');
				$title = $document->getTitle();
	
				if($site_name_page_title == '1'){
					$document->setTitle($sitename.$title_separator.$title);
				}else{
					$document->setTitle($title.$title_separator.$sitename);
				}
			}
		}
	}

	// backward compatibility
	public static function getViewLink($view, $cat_id = null)
	{
		return self::getViewUri($view, $cat_id);
	}

	public static function getViewUri($view, $opts = array())
	{
		$app = JFactory::getApplication();
		$par = JComponentHelper::getParams('com_djclassifieds');
		$menus = $app->getMenu('site');

		if(is_numeric($opts)){ // view backward compatibility
			$cat_id = $opts;
			$opts = array('cat_id' => $cat_id);
		}

		if($view == 'favourites'){
			$link = 'index.php?option=com_djclassifieds&view=items&layout=favourites&cid=0&rid=0';
			$fav_menu_item = $menus->getItems('link', $link, true);
			$link .= $fav_menu_item ? '&Itemid='.$fav_menu_item->id : '';
			return $link;
		}else{
			$link = 'index.php?option=com_djclassifieds&view='.$view;
		}
	
		if(!empty($opts['Itemid'])){
			$link .= '&Itemid='.$opts['Itemid'];
		}elseif($app->input->get('option') == 'com_djclassifieds' && $app->input->get('view') == $view && $app->input->get('Itemid')){
			$link .= '&Itemid='.$app->input->get('Itemid');
		}else{
			if($view == 'additem' && !empty($opts['cat_id'])){ // look for category-specific additem menu items
				$menu_items = $menus->getItems('link', $link, 0);
				foreach($menu_items as $menu_item){
					$it_par = $menu_item->getParams();
					if($it_par->get('default_cat_id')){
						foreach(DJClassifiedsCategory::getParentPath(1, $opts['cat_id']) as $cp){
							if($cp->id == $it_par->get('default_cat_id')){
								$itemid = $menu_item->id;
								break 2;
							}
						}
					}
				}
			}elseif($view == 'plans'){ // look for the menu item without plans restriction
				$menu_items = $menus->getItems('link', $link, 0);
				foreach($menu_items as $menu_item){
					$it_par = $menu_item->getParams();
					if(!$it_par->get('plans')){
						$itemid = $menu_item->id;
						break;
					}
				}
			}elseif($view == 'useritems'){ // look for the menu item without cat restriction
				$menu_items = $menus->getItems('link', $link, 0);
				foreach($menu_items as $menu_item){
					$it_par = $menu_item->getParams();
					if(!$it_par->get('cat_id')){
						$itemid = $menu_item->id;
						break;
					}
				}
			}elseif($view == 'profileedit'){ // look for the menu item without redirect restriction
				$menu_items = $menus->getItems('link', $link, 0);
				foreach($menu_items as $menu_item){
					$it_par = $menu_item->getParams();
					if(!$it_par->get('redirect')){
						$itemid = $menu_item->id;
						break;
					}
				}
			}
			if(!empty($itemid)){
				$link .= '&Itemid='.$itemid;
			}else{
				if(in_array($view, array('payment', 'renewitem', 'checkout'))){ // no separate menu item - use current itemid
					if($app->input->get('Itemid')){
						$link .= '&Itemid='.$app->input->get('Itemid');
					}
				}elseif($view == 'profile'){ // get profiles menu item, if exists
					$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=profiles', 1);

					if(!$menu_item || !empty($opts['force_profile']) || ($menu_item && $menu_item->alias == $par->get('seo_view_profile','profile'))){
						$menu_item = $menus->getItems('link','index.php?option=com_djclassifieds&view=profile', 1);
					}elseif(!empty($opts['group_id'])){ // look for the menu item with the corresponding profile group_id
						$menu_items = $menus->getItems('link', 'index.php?option=com_djclassifieds&view=profiles', 0);
						foreach($menu_items as $m_item){
							$it_par = $m_item->getParams();
							if($it_par->get('group_id') && $opts['group_id'] == $it_par->get('group_id')){
								$menu_item = $m_item;
								break;
							}
						}
					}
				}else{
					$menu_item = $menus->getItems('link', $link, 1);
				}
				if(!empty($menu_item) && $menu_item->type != 'alias'){
					$link .= '&Itemid='.$menu_item->id;
				}
			}
		}
		return $link;
	}

	static function getRedirectPage($redirect) // bacwkard compatibility
	{
		if(is_numeric($redirect)){
			$redirect = 'index.php?Itemid='.$redirect;
		}
		return $redirect;
	}

	static function handleItemNotFound()
	{
		$app = JFactory::getApplication();
		$par = JComponentHelper::getParams('com_djclassifieds');

		if($par->get('404_item_redirect','0') == 1){
			throw new Exception(JText::_('COM_DJCLASSIFIEDS_ITEM_NOT_AVAILABLE'), 404);
		}elseif($par->get('404_item_redirect_custom')){
			$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_ITEM_NOT_AVAILABLE'), 'warning');
			$app->redirect(JRoute::_('index.php?Itemid='.$par->get('404_item_redirect_custom'), false));
		}else{
			$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_ITEM_NOT_AVAILABLE'), 'warning');
			$app->redirect(JRoute::_(DJClassifiedsSEO::getCategoryRoute('0:all'), false));
		}
	}

	static function handleCategoryNotFound()
	{
		$app = JFactory::getApplication();
		$par = JComponentHelper::getParams('com_djclassifieds');

		DJClassifiedsTheme::loadLanguage();

		if($par->get('404_cat_redirect','0')==1){
			throw new Exception(JText::_('COM_DJCLASSIFIEDS_CATEGORY_NOT_AVAILABLE'), 404);
		}elseif($par->get('404_cat_redirect_custom')){
			$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_CATEGORY_NOT_AVAILABLE'), 'warning');
			$app->redirect(JRoute::_('index.php?Itemid='.$par->get('404_cat_redirect_custom'), false));
		}else{
			$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_CATEGORY_NOT_AVAILABLE'), 'warning');
			$app->redirect(JRoute::_(DJClassifiedsSEO::getCategoryRoute('0:all'), false));
		}
	}

	static function redirectWrongItem($redirect_uri = null, $msg = null, $msg_type = 'error')
	{
		$app = JFactory::getApplication();

		if(!$redirect_uri){
			$redirect_uri = DJClassifiedsSEO::getCategoryRoute('0:all');
		}
		if(!$msg){
			$msg = 'COM_DJCLASSIFIEDS_WRONG_AD';
		}
		
		$app->enqueueMessage(JText::_($msg), $msg_type);
		$app->redirect(JRoute::_($redirect_uri, false));
	}

	static function redirectLogIn($return_uri = null, $msg = null)
	{
		$app = JFactory::getApplication();

		if(!$return_uri){
			$return_uri = JUri::getInstance();
		}
		if(!$msg){
			$msg = 'COM_DJCLASSIFIEDS_PLEASE_LOGIN';
		}

		$app->enqueueMessage(JText::_($msg), 'notice');
		$app->redirect(JRoute::_('index.php?option=com_users&view=login&return='.base64_encode($return_uri), false));
	}

	static function getUrlVars()
	{
		$app = JFactory::getApplication();
		$vars = '';
		if($app->input->get('se')){
			$vars .= '&se='.$app->input->get('se');	
			if($app->input->getVar('search')){
				$vars .= '&search='.htmlspecialchars($app->input->getVar('search'), ENT_COMPAT, 'UTF-8'); 
			}
			foreach($app->input->get->getArray() as $key => $get_v){
				if(strstr($key, 'se_')){
					if(is_array($get_v)){
						for($gvi=0;$gvi<count($get_v);$gvi++){
							$vars .= '&'.$key.'[]='.htmlspecialchars($get_v[$gvi], ENT_COMPAT, 'UTF-8');	
						}
					}else{
						$vars .= '&'.$key.'='.htmlspecialchars($get_v, ENT_COMPAT, 'UTF-8');				
					}
				}
			}
		}
		if($app->input->getVar('cid')){
			$vars .= '&cid='.$app->input->getVar('cid');
		}
		if($app->input->getVar('rid')){
			$vars .= '&rid='.$app->input->getVar('rid');
		}
		if($app->input->getInt('fav', 0)){
			$vars .= '&fav=1';
		}
		if($app->input->getVar('uid')){
			$vars .= '&uid='.$app->input->getVar('uid');
		}
		if($app->input->getInt('Itemid', 0)){
			$vars .= '&Itemid='.$app->input->getInt('Itemid');
		}
		return $vars;
	}

	static function getPageHeading($par)
	{
		return $par->get('show_page_heading', '1') ? ($par->get('page_heading') ? $par->get('page_heading') : $par->get('page_title', '')) : '';
	}

	static function getFeedUri($uri, $par)
	{
		if($par->get('rss_feed','1')){
			$link = JUri::getInstance($uri);
			$link->setVar('format', 'feed');
			if($par->get('rss_feed','1')=='1'){
				$link->setVar('type', 'rss');
			}else if($par->get('rss_feed','1')=='2'){
				$link->setVar('type', 'atom');
			}
			return $link;
		}

		return false;
	}

	static function getUserSlug($user_id, $authorname = null)
	{
		return $user_id.($authorname ? ':'.self::getAliasName($authorname) : '');
	}

	public static function getArticleLink($id, $tmpl = 0) // backward compatibility
	{
		$djmodel = new DJClassifiedsModel();
		return $djmodel->getTermsLink($id, $tmpl);
	}

	static function getVarFromUriPath($varname)
	{
		$juri = JUri::getInstance();
		if($juri->getQuery()){
			$varval = $juri->getVar($varname) ? $juri->getVar($varname) : '0';
		}else{
			$path_arr = explode('/',$juri->getPath());
			$last_var = end($path_arr);
			$varval = is_numeric($last_var) ? $last_var : '0';
		}
		return $varval;
	}
}

Anon7 - 2022
AnonSec Team