Current File : /home/pacjaorg/public_html/km/administrator/components/com_djclassifieds/controllers/field.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 DJClassifiedsControllerField extends JControllerForm
{
public function save($key = null, $urlVar = null) {
return parent::save($key, $urlVar);
}
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$field_id = $model->getItem()->id;
$jform = $app->input->getArray()['jform'];
// custom plugins support (saving additional columns with no jform wrapper)
$row = JTable::getInstance('Fields', 'DJClassifiedsTable');
$row->load($field_id);
$row->bind($app->input->post->getArray());
if($app->input->get('task') == 'save2copy' && $app->input->getInt('id')){
$old_row = JTable::getInstance('Fields', 'DJClassifiedsTable');
$old_row->load($app->input->getInt('id'));
$row->source = $old_row->source;
}
$row->store();
$query = "SELECT cat_id, ordering FROM #__djcf_fields_xref WHERE field_id=".$field_id;
$db->setQuery($query);
$xref_ord = $db->loadAssocList('cat_id', 'ordering');
$query = "DELETE FROM #__djcf_fields_xref WHERE field_id=".$field_id;
$db->setQuery($query);
$db->execute();
if($model->getItem()->source){ // save cat xref only for category custom fields (source=0)
return;
}
if(!empty($jform['all_cats'])){
$query = "SELECT * FROM #__djcf_categories";
$db->setQuery($query);
$all_cats = $db->LoadObjectList();
$ins_arr = array();
foreach($all_cats as $c){
$ins_arr[] = "(".$c->id.", ".$field_id.", ".(!empty($xref_ord[$c->id]) ? $xref_ord[$c->id] : $c->ordering).")";
}
if($ins_arr){
$query = "INSERT INTO #__djcf_fields_xref(`cat_id`,`field_id`,`ordering`) VALUES "
.implode(', ', $ins_arr);
$db->setQuery($query);
$db->execute();
}
}elseif(!empty($jform['remove_from_all_cats'])){
return;
}else{
$jform_cat_ids = array();
if(!empty($jform['cat_id'])){
$jform_cat_ids = $jform['cat_id'];
}elseif($app->input->getStr('cat_ids_helper')){ // max_input_vars limit reach workaround
$jform_cat_ids = explode(',', $app->input->getStr('cat_ids_helper'));
}
if($jform_cat_ids){
if(!empty($jform['add_to_subcats'])){
$cat_ids = array();
foreach($jform_cat_ids as $cat_id){
$subcats = DJClassifiedsCategory::getSubCat($cat_id);
foreach($subcats as $subcat){
$cat_ids[] = $subcat->id;
}
}
}else{
$cat_ids = $jform_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[] = "(".$c->id.", ".$field_id.", ".(!empty($xref_ord[$c->id]) ? $xref_ord[$c->id] : $c->ordering).")";
}
if($ins_arr){
$query = "INSERT INTO #__djcf_fields_xref(`cat_id`,`field_id`,`ordering`) VALUES "
.implode(', ', $ins_arr);
$db->setQuery($query);
$db->execute();
}
}
}
}
}