Current File : /home/pacjaorg/public_html/km/administrator/components/com_djclassifieds/controllers/categories.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;
class DJClassifiedsControllerCategories extends JControllerAdmin
{
public function getModel($name = 'Category', $prefix = 'DJClassifiedsModel', $config = array('ignore_request' => true))
{
$model = parent::getModel($name, $prefix, $config);
return $model;
}
function delete()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$cid = $app->input->getVar('cid', array());
if(!$user->authorise('core.delete', 'com_djclassifieds')){
$this->setMessage(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED'), 'error');
$this->setRedirect( 'index.php?option=com_djclassifieds&view=categories' );
return false;
}
if($cid){
$cids = implode(',', $cid);
$query = "SELECT count(id) FROM #__djcf_items WHERE cat_id IN ( ".$cids." )";
$db->setQuery($query);
$items_count = $db->loadResult();
if($items_count>0){
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_DELETE_ADS_BEFORE_DELETE_BEFORE_CATEGORY'), 'error');
$app->redirect('index.php?option=com_djclassifieds&view=categories');
}
$query = "SELECT count(id) FROM #__djcf_categories WHERE id NOT IN ( ".$cids." ) AND parent_id IN ( ".$cids." )";
$db->setQuery($query);
$cats_count = $db->loadResult();
if($cats_count>0){
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_DELETE_CHILD_CATEGORIES_BEFORE_DELETE_PARENT_CATEGORY'),'error');
$app->redirect('index.php?option=com_djclassifieds&view=categories');
}
$query = "SELECT * FROM #__djcf_images WHERE item_id IN ( ".$cids." ) AND type='category' ";
$db->setQuery($query);
$items_images = $db->loadObjectList('id');
if($items_images){
foreach($items_images as $item_img){
$path_to_delete = JPATH_ROOT.$item_img->path.$item_img->name;
if (JFile::exists($path_to_delete.'.'.$item_img->ext)){
JFile::delete($path_to_delete.'.'.$item_img->ext);
}
if (JFile::exists($path_to_delete.'_ths.'.$item_img->ext)){
JFile::delete($path_to_delete.'_ths.'.$item_img->ext);
}
}
}
$query = "DELETE FROM #__djcf_categories WHERE ID IN ( ".$cids." )";
$db->setQuery($query);
$db->execute();
$query = "DELETE FROM #__djcf_fields_xref WHERE cat_id IN ( ".$cids." )";
$db->setQuery($query);
$db->execute();
$query = "DELETE FROM #__djcf_images WHERE item_id IN ( ".$cids." ) AND type='category' ";
$db->setQuery($query);
$db->execute();
}
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_CATEGORIES_DELETED'), 'success');
$app->redirect('index.php?option=com_djclassifieds&view=categories');
}
function recreateThumbnails()
{
$app = JFactory::getApplication();
$cid = $app->input->get('cid', array());
if (!$cid) {
$this->recreateThumbnailsAll();
return true;
}
$cat_id = $cid[0];
unset($cid[0]);
$this->_recreateCategoryThumbnails($cat_id);
if (!$cid) {
$this->setRedirect( 'index.php?option=com_djclassifieds&view=categories', JText::_('COM_DJCLASSIFIEDS_THUMBNAILS_RECREATED') );
} else {
$cids = '';
foreach ($cid as $value) {
$cids .= '&cid[]='.$value;
}
header("refresh: 0; url=".JURI::base().'index.php?option=com_djclassifieds&task=categories.recreateThumbnails'.$cids);
}
}
function recreateThumbnailsAll()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$prev_cat_id = $app->input->get('cat_id', '0');
$query = "SELECT item_id FROM #__djcf_images WHERE type='category' AND item_id > ".$prev_cat_id." ORDER BY item_id ASC LIMIT 1";
$db->setQuery($query);
$cat_id = $db->loadResult();
if(!$cat_id){
$this->setRedirect('index.php?option=com_djclassifieds&view=categories', JText::_('COM_DJCLASSIFIEDS_THUMBNAILS_RECREATED'));
}else{
$this->_recreateCategoryThumbnails($cat_id);
header("refresh: 0; url=".JURI::base().'index.php?option=com_djclassifieds&task=categories.recreateThumbnailsAll&cat_id='.$cat_id);
}
}
function _recreateCategoryThumbnails($cat_id)
{
JToolBarHelper::title(JText::_('COM_DJCLASSIFIEDS_RECREATING_THUMBNAILS'), 'generic.png');
echo '<h3>'.JTEXT::_('COM_DJCLASSIFIEDS_RESIZING_ITEM').' '.$cat_id.'... '.JTEXT::_('COM_DJCLASSIFIEDS_PLEASE_WAIT').'</h3>';
$par = JComponentHelper::getParams('com_djclassifieds');
$db = JFactory::getDBO();
$query = "SELECT * FROM #__djcf_images WHERE item_id = ".$cat_id." AND type='category'";
$db->setQuery($query);
$images = $db->loadObjectList();
if($images){
$nw = $par->get('catth_width','68');
$nh = $par->get('catth_height','50');
foreach($images as $image){
$path = JPATH_SITE.$image->path.$image->name;
if (JFile::exists($path.'.'.$image->ext)){
if (JFile::exists($path.'_ths.'.$image->ext)){
JFile::delete($path.'_ths.'.$image->ext);
}
DJClassifiedsImage::makeThumb($path.'.'.$image->ext,$path.'_ths.'.$image->ext, $nw, $nh);
echo '<img src="'.JUri::root(true).$image->path.$image->name.'_ths.'.$image->ext.'" style="margin-right:3px">';
}
}
}
}
function regenerateAliases()
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams( 'com_djclassifieds' );
$db = JFactory::getDBO();
$query = "SELECT * FROM #__djcf_categories";
$db->setQuery($query);
$cats = $db->loadObjectList();
foreach($cats as $c){
$alias = DJClassifiedsSEO::getAliasName($c->name);
$query = "UPDATE #__djcf_categories SET alias='".$alias."' WHERE id=".$c->id;
$db->setQuery($query);
$db->execute();
}
$redirect = 'index.php?option=com_djclassifieds&view=categories';
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_ALIASES_RECREATED'), 'success');
$app->redirect($redirect);
}
public function batch()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$redirect = 'index.php?option=com_djclassifieds&view=categories';
if (!$user->authorise('core.admin', 'com_djclassifieds')) {
$this->setMessage(JText::_('JGLOBAL_BATCH_CANNOT_EDIT'), 'error');
$this->setRedirect($redirect);
return false;
}
$cid_arr = $app->input->get('cid', array());
$cat_id = $app->input->get('batch_cid', '');
$cats_updated = '0';
if ($cid_arr && $cat_id != ''){
$ids = implode(',', $cid_arr);
$query = "UPDATE #__djcf_categories SET parent_id=".$cat_id." WHERE id IN (".$ids.")";
$db->setQuery($query);
$db->execute();
$cats_updated = count($cid_arr);
}
$message = JText::sprintf('COM_DJCLASSIFIEDS_BATCH_CATEGORIES_UPDATED', $cats_updated);
$app->enqueueMessage($message, 'success');
$app->redirect($redirect);
}
public function publish()
{
$app = JFactory::getApplication();
$task = $this->getTask();
$cid_arr = $app->input->get('cid');
if($task == 'unpublish'){
DJClassifiedsCategory::unpublishChildren($cid_arr);
}elseif($task == 'publish'){
DJClassifiedsCategory::publishParents($cid_arr);
}
$publish = parent::publish();
return $publish;
}
}