| Server IP : 54.36.91.62 / Your IP : 216.73.217.111 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/nice2/modules/mod_djclassifieds_maps/ |
Upload File : |
<?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 modDjClassifiedsMaps
{
static function getItems($params, $par)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$djmodel = new DJClassifiedsModel();
$ord = "i.date_start DESC";
if($params->get('items_ord')==1){
$ord = "i.display DESC";
}else if($params->get('items_ord')==2){
$ord = "rand()";
}
if($params->get('follow_search',1)==1 && $app->input->getInt('se')){
require_once JPATH_ROOT.'/components/com_djclassifieds/models/items.php';
$items_query = explode('ORDER BY', DjclassifiedsModelItems::$_items_query)[0];
$items_query .= "ORDER BY i.special DESC, ".$ord." LIMIT ".$params->get('items_limit');
$db->setQuery($items_query);
$items = $db->loadObjectList();
}else{
$where = '';
$mcat_lj = '';
$cat_ids = array();
if($params->get('follow_category',1)){
$cid = 0;
if($app->input->get('se')){
$cid = DJClassifiedsTheme::getIdFromTree($app->input->getVar('se_cats'));
}
if(!$cid){
$cid = $app->input->getInt('cid');
}
if($cid){
$cats = DJClassifiedsCategory::getSubCat($cid);
$cat_ids = array_map(function($v){
return $v->id;
}, $cats);
$cat_ids[] = $cid;
}
}
if(!$cat_ids){
$cat_ids = $params->get('cat_id', array());
}
if($cat_ids){
$catlist = implode(',', $cat_ids);
if(JPluginHelper::isEnabled('djclassifieds', 'multicategories')){
$where = 'AND (i.cat_id IN ('.$catlist.') OR mc.mcat_c>0) ';
$mcat_lj = "LEFT JOIN ( SELECT item_id, count(id) as mcat_c FROM #__djcf_items_categories WHERE cat_id IN (".$catlist.") GROUP BY item_id ) mc ON i.id=mc.item_id ";
}else{
$where = 'AND i.cat_id IN ('.$catlist.') ';
}
}
$reg_ids = array();
if($params->get('follow_region', '0')){
$rid = 0;
if($app->input->get('se')){
$rid = DJClassifiedsTheme::getIdFromTree($app->input->getVar('se_regs'));
}
if(!$rid){
$rid = $app->input->getInt('rid');
}
if(!$rid){
$rid = DJClassifiedsRegion::getDefaultRegion();
}
if($rid){
$regs = DJClassifiedsRegion::getSubReg($rid);
$reg_ids = array_map(function($v){
return $v->id;
}, $regs);
$reg_ids[] = $rid;
}
}
if(!$reg_ids){
$reg_ids = $params->get('region_id', array());
}
if($reg_ids){
$where .= 'AND i.region_id IN ('.implode(',', $reg_ids).') ';
}
$types_ids = array();
if($params->get('follow_type','0')==1 && $app->input->get('option') == 'com_djclassifieds'){
if($app->input->get('view') == 'items' && $app->input->get('Itemid')){
$menus = $app->getMenu('site');
$menu_item = $menus->getItem($app->input->get('Itemid'));
$it_par = $menu_item->getParams();
if($it_par->get('type_id')){
$types_ids = $it_par->get('type_id');
}
}elseif($app->input->getVar('view') == 'item' && $app->input->getInt('id')){
$item = $djmodel->getItemById($app->input->getInt('id'));
$types_ids = array($item->type_id);
}
}
if(!$types_ids){
$types_ids = $params->get('type_id', array());
}
if($types_ids){
$where .= "AND i.type_id IN (".implode(',', $types_ids).") ";
}
$groups_acl = '0,'.implode(',', $user->getAuthorisedViewLevels());
$where .= "AND c.access_view IN (" . $groups_acl . ") ";
if($params->get('guest_adverts',1)==0){
$where .= "AND i.user_id!=0 ";
}
if($par->get('show_archived',0)==2){
$where .= "AND ((i.published=1 AND i.date_exp > '".JFactory::getDate()->toSQL()."') OR i.published=2) ";
}else{
$where .= "AND i.published=1 AND i.date_exp > '".JFactory::getDate()->toSQL()."' ";
}
$select = "SELECT i.*, c.id c_id, c.name c_name, c.alias c_alias, r.id r_id, r.name r_name, r.alias r_alias, p.verified p_verified ";
$from = "FROM #__djcf_items i "
."INNER JOIN #__djcf_categories c ON c.id=i.cat_id "
."LEFT JOIN #__djcf_regions r ON i.region_id=r.id "
."LEFT JOIN #__djcf_profiles p ON i.user_id=p.user_id "
.$mcat_lj;
$where = "WHERE i.blocked=0 AND c.published != 0 AND i.latitude!='0.000000000000000' AND i.longitude!='0.000000000000000' ".$where." ";
if($ord == 'rand()'){
$query = $select.$from."JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM #__djcf_items)) AS num, @num:=@num+1 FROM (SELECT @num:=0) AS a, #__djcf_items LIMIT ".$params->get('items_limit').") AS tmp ON tmp.num = i.id ".$where;
}else{
$query = $select.$from.$where."ORDER BY ".$ord." limit ".$params->get('items_limit');
}
$db->setQuery($query);
$items = $db->loadObjectList();
if($ord == 'rand()'){
if(count($items) != $params->get('items_limit')){
$db->setQuery("SELECT count(*) FROM (".$select.$from.$where.") v");
$items_c = $db->loadResult();
if($items_c > $params->get('items_limit')){ // retry query with random sort join
$db->setQuery($query);
$items = $db->loadObjectList();
}
}
if(count($items) != $params->get('items_limit')){ // standard rand() order
$db->setQuery($select.$from.$where."ORDER BY rand() LIMIT ".$params->get('items_limit'));
$items = $db->loadObjectList();
}
}
}
if($items){
$items_img = DJClassifiedsImage::getAdsImages(implode(',', array_map(function($v){return $v->id;}, $items)), true);
$marker_img = DJClassifiedsGeocode::getMarkerIconImg($par);
for($i=0;$i<count($items);$i++){
$items[$i]->images = !empty($items_img[$items[$i]->id]) ? $items_img[$items[$i]->id] : array();
$cat_marker_img = DJClassifiedsGeocode::getCategoryMarkerIconImg($items[$i]->cat_id);
$items[$i]->marker_img = $cat_marker_img ? $cat_marker_img : $marker_img;
$items[$i]->item_uri = DJClassifiedsSEO::getItemRoute($items[$i]->id.':'.$items[$i]->alias,$items[$i]->cat_id.':'.$items[$i]->c_alias,$items[$i]->region_id.':'.$items[$i]->r_alias, true);
}
}
return $items;
}
static function getSearchCoordinates()
{
$app = JFactory::getApplication();
$coords = null;
$postcode = $app->input->getVar('se_postcode');
$radius = $app->input->getInt('se_radius', 0);
$se_address = $app->input->getVar('se_address');
$se_geoloc = $app->input->getVar('se_geoloc');
if($radius){
if($se_geoloc){
$user_latlog = explode('_', $_COOKIE["djcf_latlon"]);
$coords = array();
$coords['lat'] = $user_latlog[0];
$coords['lng'] = $user_latlog[1];
}else if($postcode){
$postcode_country = $app->input->getVar('se_postcode_c');
$post_coord = DJClassifiedsGeocode::getLocationPostCode($postcode, $postcode_country);
if($post_coord){
$coords = $post_coord;
}
}else if($se_address){
$se_address_coord = DJClassifiedsGeocode::getLocation($se_address);
if($se_address_coord){
$coords = $se_address_coord;
}
}
}
if(!$coords){
$reg_id = DJClassifiedsTheme::getIdFromTree($app->input->getVar('se_regs'));
if($reg_id){
$se_address_coord = DJClassifiedsGeocode::getLocation('', $reg_id);
if($se_address_coord){
$coords = $se_address_coord;
}
}
}
return $coords;
}
}