337 lines
9.6 KiB
PHP
337 lines
9.6 KiB
PHP
<?php
|
|
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
|
|
|
//ini_set('display_errors', 1);
|
|
//error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
|
|
|
if ($_SESSION['id'] && isset($_POST['objId'])) {
|
|
|
|
$sql = "SELECT * FROM views WHERE id_user = $_SESSION[id]";
|
|
|
|
$rez = mysql_query($sql);
|
|
|
|
$db = new MysqlPdo(hstsph, null, null, null, true, '9306');
|
|
|
|
$post = clearInputData($_POST);
|
|
|
|
$pageNumber = 1;
|
|
|
|
if (isset($post['page'])) {
|
|
$pageNumber = trim($post['page']);
|
|
}
|
|
|
|
if (!$pageNumber) {
|
|
$pageNumber = 1;
|
|
}
|
|
|
|
$objectId = trim($post['objId']);
|
|
|
|
$rangeFrom = trim($post['rangeFrom']);
|
|
$rangeTo = trim($post['rangeTo']);
|
|
$areaFrom = trim($post['areaFrom']);
|
|
$areaTo = trim($post['areaTo']);
|
|
$kitchenAreaFrom = trim($post['kitchenAreaFrom']);
|
|
$kitchenAreaTo = trim($post['kitchenAreaTo']);
|
|
$yearFrom = trim($post['yearFrom']);
|
|
$yearTo = trim($post['yearTo']);
|
|
$kvType = $post['kvType'];
|
|
$commType = $post['commType'];
|
|
$type = trim($post['type']);
|
|
|
|
$sql = "SELECT * FROM objects WHERE id = $objectId";
|
|
$res = mysql_query($sql);
|
|
$obj = mysql_fetch_assoc($res);
|
|
|
|
$parentRegion = '2';
|
|
$parentRegionName = '';
|
|
|
|
$sqlRegion = "SELECT parent, name FROM rf_regions WHERE id=$obj[id_rf_region] or parent=$obj[id_rf_region]";
|
|
$resRegion = mysql_query($sqlRegion);
|
|
|
|
if (mysql_num_rows($resRegion) > 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;
|
|
}
|
|
?>
|