Current File : /home/pacjaorg/www/km/plugins/djclassifieds/multicategories/multicategories.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 plgDJClassifiedsMulticategories extends JPlugin
{
	public function __construct(& $subject, $config)
	{
		parent::__construct ( $subject, $config );
		$this->loadLanguage ();
	}
	
	function onItemEditFormCategory(&$item, $cats, &$par, $subscr_id)
	{
		$app = JFactory::getApplication();
		$db	= JFactory::getDBO();
		$post_data = $app->getUserState('djcf.additem.data');

		$icats = null;
		if($item->id){
			$query = "SELECT cat_id FROM #__djcf_items_categories WHERE item_id=".$item->id;
			$db->setQuery($query);
			$icats = $db->loadColumn();
		}elseif($post_data){
			if(!empty($post_data['mcat_limit'])){
				$icats = array();
				for($i = 0; $i < $post_data['mcat_limit']; $i++){
					$icats[] = DJClassifiedsTheme::getIdFromTree($post_data['mcats'.$i]);
				}
			}
		}

		return DJClassifiedsTheme::renderLayout('additem', array(
			'item' => $item,
			'cats' => $cats,
			'icats' => $icats,
			'par' => $par,
			'params' => $this->params,
		), 'plugin', $this->_name);
	}
	
	function onAjaxMulticategoriesGetCategorySelect()
	{
		header("Content-type: text/html; charset=utf-8");
		$app = JFactory::getApplication();
        $db = JFactory::getDBO();
		$par = JComponentHelper::getParams('com_djclassifieds');
		$id = $app->input->get('cat_id', 0);
		$subscr_id = $app->input->getInt('subscr_id', 0);
		$mc = $app->input->getInt('mc', 0);

		if(strpos($id, 'p') !== false){
			$app->close();
		}
		
        require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djtheme.php');
        DJClassifiedsTheme::loadLanguage();

		if($id){
			$query = "SELECT * FROM #__djcf_categories WHERE parent_id=".$id." AND published=1 ORDER BY name";
			$db->setQuery($query);
			$cats = $db->loadObjectList();

			$context = 'multicategories';
			$app->triggerEvent('onDJClassifiedsItemEditGetCategorySelect', array(&$cats, &$par, $subscr_id, $context));

			if($cats){
				return DJClassifiedsTheme::renderLayout('selectcategory', array(
					'cats' => $cats,
					'cat_id' => $id,
					'mc' => $mc,
					'par' => $par,
					'params' => $this->params
				), 'plugin', $this->_name);
			}
		}
		
		$app->close();
	}
	
	function onAfterDJClassifiedsSaveAdvert(&$row, $is_new)
	{
        $app = JFactory::getApplication();
		$db	= JFactory::getDBO();
		
		$mcat_limit = $app->input->getInt('mcat_limit', 0);
		$cat_ord = 0;

		if($mcat_limit){
			if(!$is_new){
				$query = "DELETE FROM #__djcf_items_categories WHERE item_id= ".$row->id;
				$db->setQuery($query);
				$db->execute();
			}
			
			$ins_arr = array();
			for($mi=0; $mi<$mcat_limit; $mi++){
				$mcat = array_filter($app->input->get('mcats'.$mi, array(), 'ARRAY'));
				if($mcat){
					$mr = intval(str_ireplace('p', '', end($mcat)));
					if($mr){
						$ins_arr[] = "(".$row->id.",".$mr.",".$cat_ord.")";
						$cat_ord++;
					}
				}
			}

			if($ins_arr){
				$query = "INSERT INTO #__djcf_items_categories(`item_id`,`cat_id`,`ordering`) VALUES "
						.implode(', ', $ins_arr);
				$db->setQuery($query);
				$db->execute();
			}
		}
	}
	
	function onAdminItemEditCategory($item)
	{
		$db	= JFactory::getDBO();

		$icats = array();
		if($item->id){
			$query = "SELECT cat_id FROM #__djcf_items_categories WHERE item_id=".$item->id;
			$db->setQuery($query);
			$icats = $db->loadColumn();
		}
		
		$form = JForm::getInstance('adminitem', JPATH_ROOT.'/plugins/djclassifieds/multicategories/forms/adminitem.xml');
		$form->setValue('mcat_ids', null, $icats);
		$content = $form->renderField('mcat_ids');
		
		return $content;
	}
	
	function onAfterAdminDJClassifiedsSaveAdvert($row, $is_new)
	{
        $app = JFactory::getApplication();
		$db	= JFactory::getDBO();
		$cat_ids = $app->input->get('mcat_ids', array(), 'ARRAY');

		if(!$is_new){
			$query = "DELETE FROM #__djcf_items_categories WHERE item_id=".$row->id;
			$db->setQuery($query);
			$db->execute();
		}

		if($cat_ids){
			$query = "SELECT * FROM #__djcf_categories WHERE id IN (".implode(',', $cat_ids).")";
			$db->setQuery($query);
			$cats = $db->LoadObjectList();
	
			$ins_arr = array();
			foreach($cats as $c){
				$ins_arr[] = "(".$row->id.",".$c->id.",".$c->ordering.")";
			}
			if($ins_arr){
				$query = "INSERT INTO #__djcf_items_categories(`item_id`,`cat_id`,`ordering`) VALUES "
						.implode(', ', $ins_arr);
				$db->setQuery($query);
				$db->execute();
			}
		}
	}

	function onDJClassifiedsPrepareItem(&$item, &$par, $context)
	{
		$db	= JFactory::getDBO();
		$query = "SELECT c.*, ic.item_id, ic.cat_id "
		."FROM #__djcf_items_categories ic "
		."INNER JOIN #__djcf_categories c ON ic.cat_id=c.id "
		."WHERE ic.item_id = ".$item->id." "
		."ORDER BY ic.ordering";
		$db->setQuery($query);
		$item->extra_cats = $db->loadObjectList();
	}

	function onDJClassifiedsDisplayCategory(&$item, &$par, $view)
	{
		$db = JFactory::getDBO();
		
		$link = true;
		if(($view == 'items.blog' && $par->get('blog_category','0') != 2) || ($view == 'module.items' && $par->get('cat_link') != 1) || $view == 'useritems'){
			$link = false;
		}

		$fullpath = $view == 'useritems' ? true : false;

		$cat_main = new stdClass;  
		$cat_main->id = $item->cat_id;
		$cat_main->alias = $item->c_alias;
		$cat_main->name = $item->c_name;
	 	
		$query = "SELECT c.* "
		."FROM #__djcf_items_categories ic "
		."INNER JOIN #__djcf_categories c ON ic.cat_id=c.id "
		."WHERE ic.item_id=".$item->id." "
		."ORDER BY ic.ordering";
		$db->setQuery($query);
		$cats = $db->loadObjectList();

		if($cat_main->id){
			array_unshift($cats, $cat_main);
		}

		return DJClassifiedsTheme::renderLayout('item', array(
			'cats' => $cats,
			'link' => $link,
			'fullpath' => $fullpath,
			'par' => $par,
			'params' => $this->params
		), 'plugin', $this->_name);
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

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