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

425 lines
14 KiB
PHP
Raw 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($_GET['objectId'])) {
$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 = [];
$numOnPage = 10;
$db = new MysqlPdo(hstsph, null, null, null, true, '9306');
$get = clearInputData($_GET);
$objectId = trim($_GET['objectId']);
$pageNumber = trim($_GET['page']);
if (!$pageNumber) {
$pageNumber = 1;
}
$sql = "SELECT * FROM objects WHERE id = $objectId";
$res = mysql_query($sql);
$obj = mysql_fetch_assoc($res);
$forCabinet = isset($get['cabinet']) && $get['cabinet'] == 1;
//если у нас форма для кабинета, то тащим все, что было выбрано раньше для отметка как выбранного
if ($forCabinet) {
$cabinetObjCompetitors[] = ObjectCabinet::getCabinetObjCompetitorsAsObjectIds($mdb, $objectId);
}
$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 = "";
$commTypeSql = "";
$studioSql = "";
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) . ")";
}
if ($obj['komnat'] && $obj['type'] != 3) {
$komnSql = "AND komnat=$obj[komnat]";
}
if ($obj['type'] == 4) {
$commTypeSql = "AND type_category=$obj[type_category]";
}
if ($obj['studio_flag'] > 0) {
$studioSql .= "AND studio_flag = '1'";
}
if (!preg_match('~\d~', $obj['adres']) && $obj['dom']) {
$obj['adres'] = $obj['adres'] . " " . $obj['dom'];
}
$adres_search = getAdresSearch($obj['adres']);
$adres_mas = explode(" ", $adres_search);
$ausl_mas = array();
for ($a = 0; $a < count($adres_mas); $a++) {
if ($adres_mas[$a]) {
$ausl_mas[] = trim($adres_mas[$a]);
}
}
$foundIds = array();
$latitude = null;
$longitude = null;
$objectLatitude = null;
$objectLongitude = null;
$hasLocRecord = false;
$sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=$objectId";
$rezLocationInfo = mysql_query($sqlLocationInfo);
if (mysql_num_rows($rezLocationInfo) > 0) {
$objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
$objectLatitude = $objLocationInfo['latitude'];
$objectLongitude = $objLocationInfo['longitude'];
$hasLocRecord = true;
}
//берем координаты по адресу
if (!preg_match('~\d~', $obj['adres']) && $obj['dom']) {
$obj['adres'] = $obj['adres'] . " " . $obj['dom'];
if ($obj['korpus']) {
$obj['adres'] = $obj['adres'] . " " . $obj['korpus'];
}
if (!$obj['litera']) {
$obj['adres'] = $obj['adres'] . " " . $obj['litera'];
}
}
$yaParams['geocode'] = $obj['adres'];
$yaParams['format'] = 'json';
$yaParams['results'] = "1";
$yaParams['apikey'] = "898fc684-cdf6-4af8-af57-15e2781d68d1";
$yaUrlParams = http_build_query($yaParams);
$url = "https://geocode-maps.yandex.ru/1.x/?" . $yaUrlParams;
$json = file_get_contents($url);
$json = json_decode($json, true);
if ($json['response'] && $json['response']['GeoObjectCollection'] &&
$json['response']['GeoObjectCollection']['featureMember'] && $json['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']) {
$geoObj = $json['response']['GeoObjectCollection']['featureMember'][0]['GeoObject'];
if ($geoObj['Point'] && $geoObj['Point']['pos']) {
$coordsArrayStr = $geoObj['Point']['pos'];
$coordsArray = explode(" ", $coordsArrayStr);
$latitude = $coordsArray[1];
$longitude = $coordsArray[0];
if (!$hasLocRecord) {
$sql = "INSERT INTO object_location (object_id, address, latitude, longitude) VALUES ('$obj[id]', '$obj[adres]', '$latitude', '$longitude')";
mysql_query($sql);
}
}
}
$coordinatesSql = "";
if ($latitude != null && $longitude != null) {
$coordinatesSql = "MATCH ('@(id_rf_region,parent) $parentRegion') AND latitude = " . $latitude ." AND longitude = " . $longitude;
$sqlCountCoords = "SELECT id,
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 fbn_id = 0
AND black = 0
AND moder = 0
AND is_advert_enabled_or_rscan = 1
AND id <> $obj[id]
AND operation_type = $obj[operation_type]
AND type=$obj[type] $commTypeSql $komnSql $exclSql $studioSql
AND $coordinatesSql
LIMIT 0, 10000 OPTION max_matches=1000000"
;
if ($_SESSION['id'] == 93) {
echo $sqlCountCoords;
}
$rezCoordsSearch = $db->query($sqlCountCoords, true);
if ($db->num_rows($rezCoordsSearch) > 0) {
while ($objCoords = $db->fetch_assoc($rezCoordsSearch)) {
$foundIds[] = $objCoords['id'];
}
}
}
if ($objectLatitude != null && $objectLongitude != null) {
$coordinatesSql = "MATCH ('@(id_rf_region,parent) $parentRegion') AND latitude = " . $objectLatitude ." AND longitude = " . $objectLongitude;
$sqlCountCoords = "SELECT id,
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 fbn_id = 0
AND black = 0
AND moder = 0
AND is_advert_enabled_or_rscan = 1
AND id <> $obj[id]
AND operation_type = $obj[operation_type]
AND type=$obj[type] $commTypeSql $komnSql $exclSql $studioSql
AND $coordinatesSql
LIMIT 0, 10000 OPTION max_matches=1000000"
;
if ($_SESSION['id'] == 93) {
echo $sqlCountCoords;
}
$rezCoordsSearch = $db->query($sqlCountCoords, true);
if ($db->num_rows($rezCoordsSearch) > 0) {
while ($objCoords = $db->fetch_assoc($rezCoordsSearch)) {
$foundIds[] = $objCoords['id'];
}
}
}
$strSph = '';
for ($a = 0; $a < count($ausl_mas); $a++) {
if (strlen($strSph) > 1) {
$strSph = $strSph . ' ';
}
$strSph = $strSph . '@adres ' . trim(str_replace("/","-",$ausl_mas[$a]));
}
$adres_usl = "MATCH ('@(id_rf_region,parent) $parentRegion $strSph')";
$sqlCount = "SELECT id,
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 fbn_id = 0
AND black = 0
AND moder = 0
AND is_advert_enabled_or_rscan = 1
AND id <> $obj[id]
AND operation_type = $obj[operation_type]
AND type=$obj[type] $commTypeSql $komnSql $exclSql $studioSql
AND $adres_usl
LIMIT 0, 10000 OPTION max_matches=1000000"
;
if ($_SESSION['id'] == 93) {
echo $sqlCount;
}
$rezAddressSearch = $db->query($sqlCount, true);
if ($db->num_rows($rezAddressSearch) > 0) {
while ($objAddr = $db->fetch_assoc($rezAddressSearch)) {
if (!in_array($objAddr['id'], $foundIds)) {
$foundIds[] = $objAddr['id'];
}
}
}
$vsego = count($foundIds);
if ($vsego > 0) {
$from = ($pageNumber - 1) * $numOnPage;
$all_pages = ceil($vsego / $numOnPage);
$sqlSearch = "SELECT *,
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 date_add DESC
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) {
pagingCurHouse($pageNumber, $all_pages, $objectId);
}
echo '</ul></div>';
} else {
echo "Объекты не найдены.";
}
} else {
echo "Объекты не найдены.";
}
}
function pagingCurHouse($page, $all_pages, $objId) {
if ($page == 1) {
echo "<li class=active><a class='obj-analysis-paging2' 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-paging2' data-id='$objId' href='javascript:void(0);'>&laquo;</a></li>";
echo "<li><a data-page-num='1' class='obj-analysis-paging2' 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-paging2' 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-paging2' data-id='$objId' data-page-num='$all_pages' href='javascript:void(0);'>$all_pages</a></li>";
else {
echo "<li><a class='obj-analysis-paging2' 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-paging2' data-id='$objId' data-page-num='$nxt' href='javascript:void(0);'>&raquo;</a></li>";
}
}
?>
<script type="text/javascript">
initPaging();
$(document).ready(function () {
getReSearchObjectsCountsAnalytics();
});
</script>
<script type="text/javascript" src="/js/analytics/bundle.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/analytics/bundle.js')?>"></script>