474 lines
15 KiB
PHP
474 lines
15 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);
|
||
|
||
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);'>«</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);'>»</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>
|