Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/models/item.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 DjclassifiedsModelItem extends DJClassifiedsModel
{
function getItem()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$par = $app->getParams('com_djclassifieds');
$id = $app->input->getInt('id', 0);
$query = "SELECT i.*, c.id as c_id, c.name as c_name, c.alias as c_alias, c.access_view as c_access_view, c.access_item_view as c_access_item_view, c.rev_group_id, r.id r_id, r.name as r_name, r.alias as r_alias, u.name u_name, u.username, u.".$par->get('authorname','name')." as authorname, u.email as u_email, p.group_id, iu.name as unit_name "
.($par->get('favourite','1') && $user->id ? ",f.id as f_id " : "")
.", t.id as t_id, t.name as t_name, t.params as t_params "
."FROM #__djcf_items i "
."LEFT JOIN #__djcf_categories c ON i.cat_id=c.id "
.($par->get('favourite','1') && $user->id ? "LEFT JOIN (SELECT * FROM #__djcf_favourites WHERE user_id=".$user->id.") f ON i.id=f.item_id " : "")
."LEFT JOIN #__djcf_types t ON t.id = i.type_id "
."LEFT JOIN #__users u ON u.id = i.user_id "
."LEFT JOIN #__djcf_profiles p ON i.user_id = p.user_id "
."LEFT JOIN #__djcf_regions r ON r.id = i.region_id "
."LEFT JOIN #__djcf_items_units iu ON iu.id = i.unit_id "
."WHERE i.id = ".$id." LIMIT 1";
$db->setQuery($query);
$item = $db->loadObject();
if($item){
$item->extra_cats = array();
DJClassifiedsField::convertOverwritableFieldsValues($item, $par);
$item->item_uri = DJClassifiedsSEO::getItemRoute($item->id.':'.$item->alias,$item->cat_id.':'.$item->c_alias,$item->region_id.':'.$item->r_alias);
$item->profile_uri = $item->user_id ? DJClassifiedsSEO::getViewUri('profile', array('group_id' => $item->group_id)).'&uid='.DJClassifiedsSEO::getUserSlug($item->user_id, $item->authorname) : null;
}
return $item;
}
function getFields($id, $par = null)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$ug = implode(',', $user->getAuthorisedViewLevels());
if($par === null){ // backward compatibility - $id might be cat_id
$id = $app->input->getInt('id', 0);
}
$par = $par ? $par : JComponentHelper::getParams('com_djclassifieds');
$item = $this->getItemById($id);
if(empty($item)){
DJClassifiedsSEO::redirectWrongItem();
}
$cid = $item->cat_id;
if(JPluginHelper::isEnabled('djclassifieds', 'multicategories')){
$cat_where = "fx.cat_id IN (SELECT cat_id FROM #__djcf_items_categories WHERE item_id=".$id." UNION SELECT ".$cid.")";
}else{
$cat_where = "fx.cat_id=".$cid;
}
$query = $db->getQuery(true);
$query->select(array('fv.*', 'f.*'))
->from('#__djcf_fields f')
->join('INNER', '#__djcf_fields_xref fx ON f.id = fx.field_id AND '.$cat_where)
->join('LEFT', '#__djcf_fields_values fv ON fv.field_id = fx.field_id AND fv.item_id = '.$id)
->where('f.source = 0')
->where('f.published = 1')
->where('f.access IN ('.$ug.')')
->where('f.name NOT IN ('.implode(',', DJClassifiedsField::getOverwritableFieldNames(true)).')')
->order('fx.ordering, f.ordering, f.label');
if(JPluginHelper::isEnabled('djclassifieds', 'conditionalfields')){
$query->join('LEFT', '#__djcf_conditionalfields cf ON f.id = cf.field_id');
$query->where('(cf.id IS NULL OR fv.id IS NOT NULL)');
}
$app->triggerEvent('onDJClassifiedsGetFieldsQuery', array(&$query, 'item'));
$db->setQuery($query);
$fields = $db->loadObjectList('id');
DJClassifiedsAccess::filterFieldsByGroupAccess($fields);
DJClassifiedsField::convertFieldsValues($fields, $par);
return $fields;
}
function getContactFields($id, $par)
{
$db = JFactory::getDBO();
$user = JFactory::getUser();
$ug = implode(',', $user->getAuthorisedViewLevels());
$query = $db->getQuery(true);
$query->select(array('fv.*', 'f.*',))
->from('#__djcf_fields f')
->join('LEFT', '#__djcf_fields_values fv ON f.id = fv.field_id AND fv.item_id = '.$id)
->where('f.source = 1')
->where('f.published = 1')
->where('f.access IN ('.$ug.')')
->where('f.name NOT IN ('.implode(',', DJClassifiedsField::getOverwritableFieldNames(true)).')')
->order('f.ordering, f.label');
if(JPluginHelper::isEnabled('djclassifieds', 'conditionalfields')){
$query->join('LEFT', '#__djcf_conditionalfields cf ON f.id = cf.field_id');
$query->where('(cf.id IS NULL OR fv.id IS NOT NULL)');
}
$db->setQuery($query);
$fields = $db->loadObjectList('id');
DJClassifiedsAccess::filterFieldsByGroupAccess($fields);
DJClassifiedsField::convertFieldsValues($fields, $par);
return $fields;
}
function isContactHiddenOnStart() // backward compatibility
{
$db = JFactory::getDBO();
$query = "SELECT hide_on_start FROM #__djcf_fields WHERE name='contact' AND published=1";
$db->setQuery($query);
$hide_on_start = $db->loadResult();
return $hide_on_start;
}
function gotPayment($item_id)
{
$db = JFactory::getDBO();
$query = "SELECT s.plan_id "
."FROM #__djcf_plans_subscr_items si "
."INNER JOIN #__djcf_plans_subscr s ON si.subscr_id=s.id "
."WHERE si.item_id=".$item_id;
$db->setQuery($query);
$plan_id = $db->loadResult();
if($plan_id){
$query = "SELECT COUNT(id) FROM #__djcf_payments WHERE price>0 AND item_id=".$plan_id." AND type=3 AND status='Completed'";
}else{
$query = "SELECT COUNT(id) FROM #__djcf_payments WHERE price>0 AND item_id=".$item_id." AND type=0 AND status='Completed'";
}
$db->setQuery($query);
$has_payment = $db->loadResult();
return $has_payment;
}
function updateLatestViewed($id)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = $app->getParams('com_djclassifieds');
$now = JFactory::getDate()->toSQL();
$query = "UPDATE #__djcf_items SET last_view=".$db->quote($now)." WHERE id=".$id;
$db->setQuery($query);
$db->execute();
$inputCookie = JFactory::getApplication()->input->cookie;
$latest_items = $inputCookie->get('djcf_lastitems', '');
$ids_limit = $par->get('last_viewed_limit',10)-1;
$time_limit = $par->get('last_viewed_time',7);
$latest_ids = $id;
if($latest_items){
$latest_items_ids = explode('_', $latest_items);
for($i=0;$i<count($latest_items_ids);$i++){
if($latest_items_ids[$i]==$id){
$ids_limit++;
continue;
}
if($i>=$ids_limit){break;}
$latest_ids .= '_'.$latest_items_ids[$i];
}
}
$inputCookie->set('djcf_lastitems',$latest_ids,time()+60*60*24*$time_limit,'/');
}
}