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);
}
}