0) { while($row = mysql_fetch_assoc($resRegion)){ if ($row['parent']) { $parentRegion = $row['parent']; } } } $sqlParentRegion = "SELECT name FROM rf_regions WHERE id=$parentRegion"; $resParentRegion = mysql_query($sqlParentRegion); if (mysql_num_rows($resParentRegion)) { $parentReg = mysql_fetch_assoc($resParentRegion); $parentRegionName = $parentReg['name']; } //ищем исключения для этого объекта и этого пользователя $sqlExcl = "SELECT excluded_object_id FROM objects_analytic_exclude WHERE object_id = $objectId and user_id = $_SESSION[id]"; $resExcl = mysql_query($sqlExcl); $exclIds = array(); $exclSql = ""; $komnSql = ""; $komnSqlWhere = ""; $commTypeSql = ""; if (mysql_num_rows($resExcl) > 0) { while($row = mysql_fetch_assoc($resExcl)){ if ($row['excluded_object_id']) { $exclIds[] = $row['excluded_object_id']; } } } if (count($exclIds)) { $exclSql = "AND id NOT IN (" . implode(",", $exclIds) . ")"; } $komnArray = []; $studioFlag = false; if ($obj['studio_flag'] > 0) { $studioFlag = true; $komnArray[] = "studio_flag = '1'"; } if ($obj['type'] == 1) { if ($kvType) { foreach ($kvType as $key => $value) { if ($value <= 9) { $komnArray[] = "komnat = $value"; } else { if ($value == 100) { $komnArray[] = "komnat > 9"; } else { if (!$studioFlag && $value == 1000) { $komnArray[] = "studio_flag = '1'"; } } } } } } if ($obj['komnat'] && !$studioFlag && $obj['type'] != 3) { $komnArray[] = "komnat = " . $obj['komnat']; } if (count($komnArray) > 0) { $komnSql = ", (" . implode(' OR ', $komnArray) . ") AS komnCond"; $komnSqlWhere = ' AND komnCond > 0 '; } if ($obj['type'] == 4) { $commArray = []; if ($commType) { foreach ($commType as $key => $value) { $commArray[] = $value; } } $commArray[] = $obj['type_category']; if (count($commArray) > 0) { if (count($commArray) == 1) { $commTypeSql = "AND type_category=$commArray[0]"; } else { $commTypeSql = "AND type_category in (" . implode(",", $commArray) . ")"; } } } $distanceSql = ""; if ($rangeFrom) { $distanceSql .= "AND distance >= $rangeFrom "; } if ($rangeTo) { $distanceSql .= "AND distance <= $rangeTo "; } $areaSql = ""; $yearSql = ""; if ($areaFrom) { $areaSql .= "AND ploshad >= $areaFrom "; } if ($areaTo) { $areaSql .= "AND ploshad <= $areaTo "; } if ($yearFrom) { $yearSql .= "AND build_year >= $yearFrom "; } if ($yearTo) { $yearSql .= "AND build_year <= $yearTo "; } $kitchenAreaSql = ""; if ($kitchenAreaFrom) { $kitchenAreaSql .= "AND ploshad_k >= $kitchenAreaFrom "; } if ($kitchenAreaTo) { $kitchenAreaSql .= "AND ploshad_k <= $kitchenAreaTo "; } $latitude = null; $longitude = null; if (isset($post['selectedObjLat']) && isset($post['selectedObjLon'])) { $latitude = trim($post['selectedObjLat']); $longitude = trim($post['selectedObjLon']); } $resultArrayMap = array(); $data = array( "type" => "FeatureCollection" ); if ($latitude == null || $longitude == null) { echo json_encode($data, JSON_UNESCAPED_UNICODE); exit(); } $adres_usl = " AND MATCH ('(@(id_rf_region,parent) $parentRegion)') "; $sql = "SELECT id, GEODIST(" . $latitude . ", " . $longitude . ", latitude, longitude, {in=degrees, out=meters}) as distance $komnSql FROM objects, objects_delta WHERE archive = 0 AND fbn_id = 0 AND black = 0 AND moder = 0 AND id <> $obj[id] AND operation_type = $obj[operation_type] AND type=$obj[type] $kitchenAreaSql $commTypeSql $areaSql $yearSql $komnSqlWhere $adres_usl $distanceSql $exclSql LIMIT 0, 100000 OPTION max_matches=1000000"; if ($_SESSION['id'] == 93) { //echo $sql; } $foundIds = array(); $res = $db->query($sql); if ($db->num_rows($res) > 0) { while ($objAddr = $db->fetch_assoc($res)) { $foundIds[] = $objAddr['id']; } } $vsego = count($foundIds); if ($vsego > 0) { $pageNumber = 1; //подключаем расчет цен include($_SERVER['DOCUMENT_ROOT'] . "/ajax/analytics/getAnalyticsPriceStats.php"); $order = 'date_add'; $order_by = 'DESC'; if(isset($post['order'])){ switch(trim($post['order'])){ case 'date_desc' : { $order = 'date_add'; $order_by = 'DESC'; break; } case 'date_asc' : { $order = 'date_add'; $order_by = 'ASC'; break; } case 'date_publish_desc' : { $order = 'date_really_add'; $order_by = 'DESC'; break; } case 'date_publish_asc' : { $order = 'date_really_add'; $order_by = 'ASC'; break; } case 'price_desc' : { $order = 'stoim'; $order_by = 'DESC'; break; } case 'price_asc' : { $order = 'stoim'; $order_by = 'ASC'; break; } case 'pricekv_desc' : { $order = 'stoim_kvm'; $order_by = 'DESC'; break; } case 'pricekv_asc' : { $order = 'stoim_kvm'; $order_by = 'ASC'; break; } case 'area_desc' : { $order = 'ploshad'; $order_by = 'DESC'; break; } case 'area_asc' : { $order = 'ploshad'; $order_by = 'ASC'; break; } } } $sqlSearch = "SELECT *, (stoim/ploshad) as stoim_kvm FROM objects, objects_delta WHERE id in (" . implode(",", $foundIds) . ") ORDER BY $order $order_by LIMIT 0, 100000 OPTION max_matches=1000000"; $rezSearch = $db->query($sqlSearch); $i = 0; while ($obj = $db->fetch_assoc($rezSearch)) { if($obj['latitude'] && $obj['longitude']) { $options = []; if (isset($_SESSION['analytics']) && isset($_SESSION['analytics'][$objectId]) && isset($_SESSION['analytics'][$objectId]['low']) && in_array($obj['id'], $_SESSION['analytics'][$objectId]['low'])) { $options = [ "preset" => "islands#redIcon" ]; } $data["features"][] =[ "type" => "Feature", "id" => $i, "geometry" => [ "type" => "Point", "coordinates" => [$obj['latitude'], $obj['longitude']] ], "properties" => [ "balloonContent" => $obj['id'], "clusterCaption" => str_replace(array('"', '\''), '', $obj['adres']), "hintContent" => str_replace(array('"', '\''), '', $obj['adres']) ], "options" => $options ]; $i++; } } } $resultArrayMap['data'] = $data; echo json_encode($resultArrayMap, JSON_UNESCAPED_UNICODE); exit; } ?>