Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/views/item/view.html.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');

class DJclassifiedsViewItem extends JViewLegacy
{	
	private static $_viewname = 'item';

	public function __construct($config = array())
	{
		parent::__construct($config);
		$par = JFactory::getApplication()->getParams('com_djclassifieds');
		
		$this->_addPath('template', JPATH_ROOT.'/components/com_djclassifieds/themes/'.$par->get('theme','default').'/views/'.self::$_viewname);
	}

	private function _prepareDoc($item, $canonical_link, $category, $cat_path, $region, $reg_path, $item_images, $par)
	{
		$app = JFactory::getApplication();
		$document = JFactory::getDocument();
		$menus = $app->getMenu('site');	
		$m_active = $menus->getActive();

		if($item->metakey){
			$document->setMetaData('keywords',$item->metakey);
		}else if(!empty($category->metakey)){
			$document->setMetaData('keywords',$category->metakey);
		}else if(!empty($region->metakey)){
			$document->setMetaData('keywords',$region->metakey);
		}else if($m_active){
			if($m_active->getParams()->get('menu-meta_keywords')){
				$document->setMetaData('keywords',$m_active->getParams()->get('menu-meta_keywords'));
			}
		}
		
		$meta_desc = '';
		if($item->metadesc){
			$meta_desc = $item->metadesc;
		}else if($par->get('seo_item_metadesc', '0')==0){
			$meta_desc = $item->intro_desc;
		}else if($par->get('seo_item_metadesc', '0')==2){
			$meta_desc = substr(strip_tags($item->description), 0, 160);
		}else if(!empty($category->metadesc)){
			$meta_desc = $category->metadesc;
		}else if(!empty($region->metadesc)){
			$meta_desc = $region->metadesc;
		}else if($m_active){
			if($m_active->getParams()->get('menu-meta_description')){
				$meta_desc = $m_active->getParams()->get('menu-meta_description');
			}
		}			
		$document->setDescription($meta_desc);
		
		$c_title = $document->getTitle();
		$cat_name = JText::_($item->c_name);
		$region_name = JText::_($item->r_name);
		$cat_seo_title = !empty($category->metatitle) ? $category->metatitle : '';
		$reg_seo_title = !empty($region->metatitle) ? $region->metatitle : '';
		$item_name = $item->name;
		$seo_cat_path = '';
		$seo_reg_path = ''; 
		$seo_title_separator = $par->get('seo_title_separator', ' - ');
		foreach($cat_path as $cp){
			if($seo_cat_path){
				$seo_cat_path .= $seo_title_separator;
			}
			$seo_cat_path .= JText::_($cp->name);
		}
		foreach($reg_path as $rp){
			if($seo_reg_path){
				$seo_reg_path .= $seo_title_separator;
			}
			$seo_reg_path .= JText::_($rp->name);					
		}
		$type_name = JText::_($item->t_name);
		
		$seo_title_from = array('|','<default_title>','<category_name>','<category_path>','<item_name>','<region_name>','<category_seo_title>','<type_name>','<region_seo_title>','<region_path>');
		$seo_title_to = array($seo_title_separator,$c_title,$cat_name,$seo_cat_path,$item_name,$region_name,$cat_seo_title,$type_name,$reg_seo_title,$seo_reg_path);
		$app->triggerEvent('onPrepareDJClassifiedsSeoTitle', array($item, &$seo_title_to, 'item'));
		$seo_title = str_ireplace($seo_title_from, $seo_title_to, $par->get('seo_title_item', '<item_name>|<category_name>|<default_title>'));
		if($seo_title){
			$document->setTitle($seo_title);
		}
		
		if($item->metarobots){
			$document->setMetaData('robots',$item->metarobots);
		}else if($m_active && $m_active->getParams()->get('seo_item_metarobots')){
			$document->setMetaData('robots',$m_active->getParams()->get('seo_item_metarobots'));
		}else if($par->get('seo_item_metarobots','')){
			$document->setMetaData('robots',$par->get('seo_item_metarobots',''));
		}

		if($par->get('seo_canonical_tags','1')){
			$document->addHeadLink($canonical_link, 'canonical');
		}
		
		$document->addCustomTag('<meta property="og:title" content="'.$item->name.'" />');
		$document->addCustomTag('<meta property="og:description" content="'.$meta_desc.'" />');
		$document->addCustomTag('<meta property="og:url" content="'.$canonical_link.'" />');
		$document->addCustomTag('<meta property="twitter:card" content="summary" />');
		$document->addCustomTag('<meta property="twitter:title" content="'.$item->name.'" />');
		$document->addCustomTag('<meta property="twitter:description" content="'.$meta_desc.'" />');
		
		$u = JURI::getInstance(JURI::root());
		if($item_images){
			$document->addCustomTag('<meta property="og:image" content="'.rtrim($u->toString(),'/').$item_images[0]->thumb_og.'" />');
			$document->addCustomTag('<meta property="twitter:image" content="'.rtrim($u->toString(),'/').$item_images[0]->thumb_og.'" />');
		
			$path = JPath::clean(JPATH_ROOT . '/' .$item_images[0]->thumb_og);
			$size = @getimagesize($path);
			if(isset($size[0])){
				$document->addCustomTag('<meta property="og:image:width" content="'.$size[0].'" />');
			}
			if(isset($size[1])){
				$document->addCustomTag('<meta property="og:image:height" content="'.$size[1].'" />');
			}
		}elseif($par->get('blank_img_source','0')==1){
			$cat_img_path = str_replace('_ths', '', DJClassifiedsImage::getCatImage($item->cat_id));
			$cat_img_path = ltrim(ltrim($cat_img_path, $u->getPath()), '/');
			if(strpos($cat_img_path, 'no-image') === false){
				$document->addCustomTag('<meta property="og:image" content="'.$u->toString().$cat_img_path.'" />');
				$document->addCustomTag('<meta property="twitter:image" content="'.$u->toString().$cat_img_path.'" />');
				$path = JPath::clean(JPATH_ROOT.'/'.$cat_img_path);
				$size = @getimagesize($path);
				if(isset($size[0])){
					$document->addCustomTag('<meta property="og:image:width" content="'.$size[0].'" />');
				}
				if(isset($size[1])){
					$document->addCustomTag('<meta property="og:image:height" content="'.$size[1].'" />');
				}
			}
		}
		
		if($par->get('comments','0') == 1 && $par->get('fb_comments_admin','') != ''){
			$document->addCustomTag('<meta property="'.$par->get('fb_comments_metatag', 'fb:admins').'" content="'.$par->get('fb_comments_admin','').'" />');
		}
	}
	
	function display($tpl = null)
	{
		$app = JFactory::getApplication();
		$document = JFactory::getDocument();
		$user = JFactory::getUser();
		$par = $app->getParams('com_djclassifieds');
		$model = $this->getModel();
		
		$item = $model->getItem();
		if(!$item){
			DJCLassifiedsSEO::redirectWrongItem();
		}
			
		if($item->user_id != $user->id){		
			$groups_acl = ','.implode(',', $user->getAuthorisedViewLevels()).',';
			if(!strstr($groups_acl,','.$item->c_access_view.',') || !$item){
				DJClassifiedsAccess::restrictionRedirect('category');
			}else if($item->access_view==0){			
				if(!strstr($groups_acl,','.$item->c_access_item_view.',')){
					DJClassifiedsAccess::restrictionRedirect();
				}							
			}else if(!strstr($groups_acl,','.$item->access_view.',')){
				DJClassifiedsAccess::restrictionRedirect();
			}
		}

		$this->own_item = (($user->id && $user->id == $item->user_id) || (!$user->id && $app->input->get('token') && $app->input->get('token') == $item->token)) ? true : false;

		// view backward compatibility START
		$cfpar = JComponentHelper::getParams('com_djclassifieds');
		$app->triggerEvent('onDJClassifiedsPrepareItem', array(&$item, &$cfpar, 'item'));
		$app->triggerEvent('onPrepareItemDescription', array(&$item, &$cfpar, 'item'));
		$app->triggerEvent('onBeforeDJClassifiedsDisplayAdvertMap', array(&$item, &$cfpar, 'item'));
		DJClassifiedsTheme::includeMapsScript($cfpar);
		// view backward compatibility END

		$app->triggerEvent('onDJClassifiedsPrepareItem', array(&$item, &$par, 'item'));
		$app->triggerEvent('onPrepareItemDescription', array(&$item, &$par, 'item'));

		$canonical_link = JRoute::_(DJClassifiedsSEO::getItemRoute($item->id.':'.$item->alias,$item->cat_id.':'.$item->c_alias,$item->region_id.':'.$item->r_alias, true), true, (JUri::getInstance()->isSSL() ? 1 : -1));
		 
		$category = $model->getCategory($item->cat_id);
		$region = $model->getRegion($item->region_id);
		$fields = $model->getFields($item->id, $par);
		$fields_contact = $model->getContactFields($item->id, $par);
		$item_payments = $model->gotPayment($item->id);
		$bids = $model->getBids($item->id, $par->get('bids_displayed',5));
		$profile = $item->user_id ? $model->getProfile($item->user_id, true, $par) : '';
		$this->user_items_c = $item->user_id ? $model->getUserItemsCount($item->user_id) : '0';

		$item_images = DJClassifiedsImage::getAdsImages($item->id);
		if($item_images){
			JHtml::_('jquery.framework');
			$document->addScript(JUri::base(true).'/media/djextensions/magnific/magnific.js');
			$document->addStyleSheet(JUri::base(true).'/media/djextensions/magnific/magnific.css');
			$par->set('lightbox_type','magnific'); // view backward compatibility
			$cfpar->set('lightbox_type','magnific'); // view backward compatibility
		}

		$menus = $app->getMenu('site');	
		$m_active = $menus->getActive();

		$cat_menu_path = array();
		if($m_active && strstr($m_active->link,'com_djclassifieds') && strstr($m_active->link,'items') && !empty($m_active->query['cid'])){
			$cat_menu_path = DJClassifiedsCategory::getParentPath(1, $m_active->query['cid']);
		}
			
		$warning18 = false;
		$main_cat_id = $item->cat_id;
		$pathway = $app->getPathway();
		$cat_path = array();
		$cat_theme = '';
		$cat_path_cl = '';
		if($item->cat_id){
			$app->input->cookie->set('djcf_lastcat',$item->cat_id,0,'/');

			$cat_path = DJClassifiedsCategory::getParentPath(1,$item->cat_id);
			$main_cat_id = $cat_path[count($cat_path)-1]->id; 
			for($c=count($cat_path);$c>0;$c--){					
				$to_b = 1;
				if(count($cat_menu_path)){
					foreach($cat_menu_path as $cm){
						if($cm->id==$cat_path[$c-1]->id){
							$to_b = 0;
							break;			
						}
					}
				}
				if($to_b){
					$pathway->addItem(JText::_($cat_path[$c-1]->name), DJClassifiedsSEO::getCategoryRoute($cat_path[$c-1]->id.':'.$cat_path[$c-1]->alias));
				}			
			}
			
			foreach($cat_path as $cp){
				if($cp->theme){
					$cat_theme = $cp->theme;
				}		
				if($cp->restriction_18){
					$warning18 = true;
				}		

				$cat_path_cl .= ' '.$cp->alias;	 
			}	
		}
		$pathway->addItem($item->name);

		$reg_path = array();
		$country = '';
		$city = '';
		$address = '';
		if($item->region_id){
			if($par->get('show_regions','1')){
				$reg_parts = DJClassifiedsRegion::getRegionParts($item->region_id);
				if($reg_parts){
					$country = $reg_parts['country'];
					$city = $reg_parts['city'];
					$address = $reg_parts['reg_path'];
				}
			}
			$reg_path = DJClassifiedsRegion::getParentPath($item->region_id,1);
		}

		$theme = $par->get('theme','default');
		if($cat_theme){
			$this->_addPath('template', JPATH_ROOT.'/components/com_djclassifieds/themes/'.$cat_theme.'/views/item');
			$theme = $cat_theme;
		}

		DJClassifiedsTheme::includeCSSfiles($theme);
		DJClassifiedsTheme::includeCalendarScripts();
		DJClassifiedsTheme::includeMapsScript($par);
		JHTML::_('bootstrap.tooltip');
		\Joomla\CMS\HTML\HTMLHelper::_('bootstrap.modal'); // show_in_modal fields

		$model->updateLatestViewed($item->id);

		$this->_prepareDoc($item, $canonical_link, $category, $cat_path, $region, $reg_path, $item_images, $par);

		if($par->get('show_print_icon','0')){
			$document->addStyleDeclaration('.contentpane.modal #dj-classifieds .print_icon,.contentpane.modal #dj-classifieds .button{display:none;}.contentpane.modal #dj-classifieds a[href]:after {content: none !important;}');
			$this->print_url = clone JURI::getInstance();
			$this->print_url->setVar('tmpl','component');
		}

		$this->highest_bid = null;
		$this->bid_active = null;
		$this->min_bid = null;
		if($par->get('auctions','0') && $item->auction){
			$item->date_exp = DJClassifiedsAuction::auctionAutoExtend($item, $bids, $par);
			$this->highest_bid = $model->getHighestBid($item->id);
			$this->bid_active = DJClassifiedsAuction::isBidActive($item, $bids);
			$this->min_bid = $item->auction_assist ? $model->getUserMaxBid($item->id, $user->id) : $model->getMinBid($item, $bids);
		}

		if($par->get('show_video','0') && $item->video){
			$this->video_links = DJClassifiedsImage::getVideoLinks($item->video, $par);
			$this->video_link = $this->video_links ? $this->video_links[0] : null; // view backward compatibility
		}

		$this->contact_hide_on_start = $item->contact ? $model->isContactHiddenOnStart() : null; // view backward compatibility

		if($item->published==2 || JFactory::getDate() >= $item->date_exp){
			$par->set('ask_seller', 0);
		}

		$terms_link = '';
		if($par->get('terms',1)>0 && $par->get('terms_article_id',0)>0){
			$terms_link = $model->getTermsLink($par->get('terms_article_id',0), $par->get('terms',0)==2);
		}
		$privacy_policy_link = '';
		if($par->get('privacy_policy',0)>0 && $par->get('privacy_policy_article_id',0)>0){
			$privacy_policy_link = $model->getTermsLink($par->get('privacy_policy_article_id',0), $par->get('privacy_policy',0)==2);
		}
		
		/* plugins */

		$app->triggerEvent('onDJClassifiedsPrepareProfile', array(&$profile, &$par, 'item'));
		$app->triggerEvent('onDJClassifiedsPrepareItemAddress', array(&$item, &$address, &$par, 'item'));
		$item->event = new stdClass();
		$item->event->title = trim(implode("\n", $app->triggerEvent('onDJClassifiedsDisplayTitle', array(&$item, &$par, 'item'))));
		$item->event->afterDJClassifiedsDisplayTitle = trim(implode("\n", $app->triggerEvent('onAfterDJClassifiedsDisplayTitle', array(&$item, &$par, 'item'))));
		$item->event->beforeDJClassifiedsDisplayContact = trim(implode("\n", $app->triggerEvent('onBeforeDJClassifiedsDisplayContact', array(&$item, &$par, 'item'))));
		$item->event->beforeDJClassifiedsDisplayContent = trim(implode("\n", $app->triggerEvent('onBeforeDJClassifiedsDisplayContent', array(&$item, &$par, 'item'))));
		$item->event->afterDJClassifiedsDisplayContent = trim(implode("\n", $app->triggerEvent('onAfterDJClassifiedsDisplayContent', array(&$item, &$par, 'item'))));
		$item->event->onAfterDJClassifiedsDisplayAdvertAuthor = trim(implode("\n", $app->triggerEvent('onAfterDJClassifiedsDisplayAdvertAuthor', array(&$item, &$par, 'item'))));
		$item->event->onBeforeDJClassifiedsDisplayAdvertMap = trim(implode("\n", $app->triggerEvent('onBeforeDJClassifiedsDisplayAdvertMap', array(&$item, &$par, 'item'))));
		$item->event->afterDJClassifiedsDisplayExtraFields = trim(implode("\n", $app->triggerEvent('onAfterDJClassifiedsDisplayExtraFields', array(&$item, &$par, 'item'))));
		$item->event->onDJClassifiedsAccessContact = trim(implode("\n", $app->triggerEvent('onDJClassifiedsAccessContact', array(&$item, &$par, 'item'))));
		$item->event->accessContactFormBtn = trim(implode("\n", $app->triggerEvent('onDJClassifiedsAccessContactFormBtn', array(&$item, &$par, 'item'))));
		$item->event->accessContactForm = trim(implode("\n", $app->triggerEvent('onDJClassifiedsAccessContactForm', array(&$item, &$par, 'item'))));

		if($par->get('ask_seller_in','0')=='2'){ // is ask form set to be displayed in profile only
			$par->set('ask_seller','0');
		}

		DJClassifiedsSEO::setSiteNameInPageTitle();
		$this->page_heading = DJClassifiedsSEO::getPageHeading($par);

		$this->show_loc = ($par->get('show_regions','1') && $address) || ($par->get('show_address','1') && $item->address) || ($par->get('show_postcode','0') && $item->post_code) || (($par->get('show_googlemap','0')=='1' || $par->get('show_googlemap','0')=='2') && floatval($item->latitude) && floatval($item->longitude)) || $item->event->onBeforeDJClassifiedsDisplayAdvertMap;
		
		$this->item = $item;
		$this->item_images = $item_images;
		$this->item_options = null; // backward compatibility
		$this->fields = $fields;
		$this->fields_contact = $fields_contact;
		$this->country = $country;
		$this->city = $city;
		$this->address = $address;
		$this->main_cat_id = $main_cat_id;
		$this->item_payments = $item_payments;
		$this->category = $category;
		$this->profile = $profile;
		$this->theme = $theme;
		$this->bids = $bids;
		$this->canonical_link = $canonical_link;
		$this->dispatcher = new DJClassifiedsDispatcher(); // backward compatibility
		$this->terms_link = $terms_link;
		$this->privacy_policy_link = $privacy_policy_link;
		$this->cat_path_cl = $cat_path_cl;
		$this->ask_form_active = ($par->get('ask_seller_type','0') == '1' || $user->id) ? true : false;
		$this->abuse_form_active = ($par->get('abuse_reporting_type','0') == '1' || $user->id) ? true : false;
		$this->par = $par;
		
		if(JPluginHelper::isEnabled('system', 'wbamp') && plgSystemWbamp::isAmpPage()){		
			$this->setLayout('amp');
			parent::display($tpl);
		}elseif($warning18 && !isset($_COOKIE["djcf_warning18"]) && (!$user->id || $item->user_id != $user->id)){
			$this->warning18_link = $par->get('restriction_18_art_id', 0) ? $model->getTermsLink($par->get('restriction_18_art_id',0), $par->get('restriction_18_art',0)==2) : '';
			parent::display('terms');
		}else{				
        	parent::display($tpl);
		}
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

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