Joywork/ajax/analytics/loadAnalyticsRadius.php
2026-05-22 21:21:54 +03:00

474 lines
15 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
//ini_set('display_errors', 1);
//error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
echo '<ul class="object__list">';
if ($_SESSION['id'] && isset($_POST['objId'])) {
$numOnPage = 10;
$latitude = null;
$longitude = null;
$view = array();
$favour = array();
$sql = "SELECT * FROM views WHERE id_user = $_SESSION[id]";
$rez = mysql_query($sql);
while($f=mysql_fetch_assoc($rez)) $view[] = $f['id_obj'];
$sql = "SELECT * FROM favor WHERE id_user = $_SESSION[id]";
$rez = mysql_query($sql);
while($f=mysql_fetch_assoc($rez)) $favour[] = $f['id_obj'];
$agencyId = User::getAgencyIdForUser($_SESSION['id']);
$usersIds = User::getAllAgencyUsers($agencyId);
$usersIds[] = $_SESSION['id'];
$usersIds = array_unique($usersIds);
$notes_bd_usl = "created_by IN (" . implode(",", $usersIds) . ")";
$cabinetObjCompetitors = [];
$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 = $objectIdForLowPrice = 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'];
if (isset($post['selectedObjLat']) && isset($post['selectedObjLon'])) {
$latitude = trim($post['selectedObjLat']);
$longitude = trim($post['selectedObjLon']);
}
$forCabinet = isset($post['cabinet']) && $post['cabinet'] == 1;
//если у нас форма для кабинета, то тащим все, что было выбрано раньше для отметка как выбранного
if ($forCabinet) {
$cabinetObjCompetitors[] = ObjectCabinet::getCabinetObjCompetitorsAsObjectIds($mdb, $objectId);
}
$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 ";
}
if ($latitude == null || $longitude == null) {
echo "Объекты не найдены.";
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,
IF(use_in_advert = 1 OR ads_source > 0, 1, 0) AS is_advert_enabled_or_rscan
FROM objects, objects_delta
WHERE archive = 0
AND is_advert_enabled_or_rscan = 1
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) {
$asScript = true;
//подключаем расчет цен
include($_SERVER['DOCUMENT_ROOT'] . "/ajax/analytics/getAnalyticsPriceStats.php");
$from = ($pageNumber - 1) * $numOnPage;
$all_pages = ceil($vsego / $numOnPage);
$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,
IF(use_in_advert = 1 OR ads_source > 0, 1, 0) AS is_advert_enabled_or_rscan
FROM objects, objects_delta
WHERE id in (" . implode(",", $foundIds) . ")
AND is_advert_enabled_or_rscan = 1
ORDER BY $order $order_by
LIMIT $from, $numOnPage OPTION max_matches=1000000"
;
/*if ($_SESSION['id'] == 93) {
echo $sqlSearch;
}*/
$rezSearch = $db->query($sqlSearch);
if ($db->num_rows($rezSearch) > 0) {
$user = new User;
$user->get($_SESSION['id']);
if (!isset($user->agencyId)) {
$user->agencyId = $_SESSION['id'];
$user->agencyName = $user->agency_name;
$user->fio = trim($user->last_name . ' ' . $user->first_name . ' ' . $user->middle_name);
}
while ($obj = $db->fetch_assoc($rezSearch)) {
$photo = "";
$sqlPhotoInfo = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $obj[id] ORDER BY oop.sort_order";
$rezPhotoInfo = mysql_query($sqlPhotoInfo);
if (mysql_num_rows($rezPhotoInfo) > 0) {
while ($photoInfo = mysql_fetch_assoc($rezPhotoInfo)) {
$photo = $photoInfo;
$obj['photo' . $photoInfo['sort_order']] = $photoInfo['photo'];
}
}
$sql_count_notes = "SELECT COUNT(*) FROM object_notes WHERE object_id = $obj[id] AND $notes_bd_usl";
if ($_SESSION['id'] == 10246) {
echo '<div style="display: none;">' . $sql_count_notes . '</div>';
}
$obj['notes'] = mysql_result(mysql_query($sql_count_notes), 0);
include($_SERVER['DOCUMENT_ROOT'] . "/templates/object_analytics_template.php");
}
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
if ($all_pages > 1) {
paging($pageNumber, $all_pages, $objectId);
}
echo '</ul></div>';
echo '<script type="text/javascript">$("#selectedObjLat").val("'. $latitude . '");</script>';
echo '<script type="text/javascript">$("#selectedObjLon").val("'. $longitude . '");</script>';
}
} else {
echo "Объекты не найдены.";
$script = '$("#analyticsDempAllPrice").html("-");';
$script .= '$("#analyticsNowPrice").html("-");';
$script .= '$("#analyticsAvarageAllPrice").html("-");';
$script .= '$("#analyticsThreeMonthPrice").html("-");';
$script .= '$("#analyticsHighAllPrice").html("-");';
$script .= '$("#analyticsTwelveMonthPrice").html("-");';
$script .= '$("#analyticsDempMeters").html("-");';
$script .= '$("#analyticsAvarageMeters").html("-");';
$script .= '$("#analyticsHighMeters").html("-");';
$script .= '$("#analyticsMetersTitleWarning").show();';
$script .= '$("#analyticsDempAllPriceLink").hide();';
$script .= '$("#analyticsAvarageAllPriceLink").hide();';
$script .= '$("#analyticsHighAllPriceLink").hide();';
$script .= '$("#averageCountNumber").html("");';
echo '<script type="text/javascript">' . $script . '</script>';
}
}
echo "</ul>";
function paging($page, $all_pages, $objId) {
if ($page == 1) {
echo "<li class=active><a class='obj-analysis-paging3' data-id='$objId' data-page-num='1' href='javascript:void(0);'>1</a></li>";
} else {
$prev = $page - 1;
echo "<li><a data-page-num='$prev' class='obj-analysis-paging3' data-id='$objId' href='javascript:void(0);'>&laquo;</a></li>";
echo "<li><a data-page-num='1' class='obj-analysis-paging3' data-id='$objId' href='javascript:void(0);'>1</a></li>";
}
if ($all_pages > 8) {
if ($page > 4) {
$ot = $page - 3;
echo "<li><a href='javascript:void(0);'>...</a></li>";
} else {
$ot = 2;
}
if ($page < $all_pages - 4) {
$do = $page + 3;
} else {
$do = $all_pages;
}
} else {
$ot = 2;
$do = $all_pages;
}
for ($i = $ot; $i < $do; $i++) {
if ($i == $page) $cl = "active"; else $cl = "";
echo "<li class='$cl'><a class='obj-analysis-paging3' data-id='$objId' data-page-num='$i' href='javascript:void(0);'>$i</a></li>";
}
if ($all_pages > 8 and $page < $all_pages - 4) {
echo "<li><a href='javascript:void(0);'>...</a></li>";
}
if ($page == $all_pages)
echo "<li class=active><a class='obj-analysis-paging3' data-id='$objId' data-page-num='$all_pages' href='javascript:void(0);'>$all_pages</a></li>";
else {
echo "<li><a class='obj-analysis-paging3' data-id='$objId' data-page-num='$all_pages' href='javascript:void(0);'>$all_pages</a></li>";
$nxt = $page + 1;
echo "<li><a class='obj-analysis-paging3' data-id='$objId' data-page-num='$nxt' href='javascript:void(0);'>&raquo;</a></li>";
}
}
?>
<script type="text/javascript">
$(document).ready(function () {
getReSearchObjectsCountsAnalytics();
getTaskCountersForObjects('.modal__content .object__list', '.object-card');
});
</script>
<script type="text/javascript" src="/js/analytics/bundle.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/analytics/bundle.js')?>"></script>