Joywork/ajax/getAdObjectStats.php

304 lines
20 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
if($_SESSION['id'] && $_GET['id'] && is_numeric($_GET['id'])) {
//error_reporting(E_ALL | E_STRICT);
//ini_set('display_errors', 1);
$user = new User;
$user->checkPermissions();
$sql3="SELECT objects.* FROM objects objects WHERE objects.id = $_GET[id]";
$rez_obj=mysql_query($sql3);
$obj=mysql_fetch_assoc($rez_obj);
$whereSqlPack = "zipal_id in (select pp.zipal_id from advertising_package_object_publish pp where pp.object_id = $obj[id] and pp.active=1)";
$whereSqlBut = "";
if ($obj['add_to_zipal'] == 1) {
$whereSqlBut = "or zipal_id in (select zo.zipal_id from zipal_objects zo where zo.object_id = $obj[id])";
}
$whereSqlJcat = "or jcat_id in (select zo.jcat_id from jcat_feed_report_objects zo where zo.object_id = $obj[id] and zo.active = 1)";
$sqlStat = "SELECT * from object_feed_stat where object_id = $_GET[id] and deleted = 0 and ($whereSqlPack $whereSqlBut $whereSqlJcat)";
$rezStat = mysql_query($sqlStat);
$sqlSumStat = "SELECT sum(view_count) as sum_view_count from object_feed_stat where object_id = $_GET[id] and deleted = 0 and ($whereSqlPack $whereSqlBut $whereSqlJcat)";
$rezSumStat = mysql_query($sqlSumStat);
$rezSumStatRes = mysql_fetch_assoc($rezSumStat);
echo "<p><b>Общее количество просмотров</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='ti-eye'></span>&nbsp;" . $rezSumStatRes['sum_view_count'] . "</p>";
while ($stat = mysql_fetch_assoc($rezStat)) {
echo "<p><a href='" . $stat['link'] ."' target='_blank'>" . $stat['feed_name'] ."</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='ti-eye'></span>&nbsp;" . $stat['view_count'] . "</p>";
}
if (isset($user)) {
$advrStat = [];
$obj_id = $obj['id'];
$period = [
'date_from' => date('Y-m-d', strtotime($obj['date_add'])),
'date_to' => date('Y-m-d'),
];
$api = new AdvertStats();
$agency_id = User::getUserAgencyID();
$available = [];
if ($obj['add_to_avito_feed'] == 1)
$available[1] = 'avito';
if ($obj['add_to_cian_feed'] == 1)
$available[2] = 'cian';
if ($obj['add_to_bn_feed'] == 1)
$available[3] = 'yandex';
if ($obj['add_to_domclick_feed'] == 1)
$available[4] = 'domclick';
$services = [];
$settings = $api->getApiSettings($agency_id, true);
if (count($settings)) {
foreach ($settings as $setting) {
$service_id = $setting['service_id'];
$service = $api->getServiceName($service_id);
$services[] = $service;
}
$reports = $api->getReports(null, $agency_id, $obj_id);
foreach ($reports as $service => $report) {
if (!is_null($report)) {
$advrStat['stats'][$service] = $report;
}
}
/*if (count($available)) {
foreach ($settings as $setting) {
$service_id = $setting['service_id'];
if ($service = $available[$service_id]) {
if ($service == 'yandex' && strtotime($period['date_from']) < strtotime('-120 days')) {
$period['date_from'] = date('Y-m-d', strtotime('-120 days'));
} else if ($service == 'cian' && strtotime($period['date_from']) < strtotime('-180 days')) {
$period['date_from'] = date('Y-m-d', strtotime('-180 days'));
} else if ($service == 'avito' && strtotime($period['date_from']) < strtotime('-270 days')) {
$period['date_from'] = date('Y-m-d', strtotime('-270 days'));
}
if (!isset($advrStat['stats'][$service])) {
$client_id = $setting['client_id'];
$secret_key = $setting['secret_key'];
$ext_user_id = $setting['ext_user_id'];
if ($stats = $api->getStats($service_id, $period, $client_id, $secret_key, $ext_user_id, $obj_id, true))
$advrStat['stats'][$service] = $stats;
else
$advrStat['stats'][$service] = null;
if (count($api->errors))
$advrStat['errors'][$service] = array_merge($advrStat['stats'][$service]['errors'], array_unique($api->errors));
if (count($advrStat['errors'][$service]))
$advrStat['errors'][$service] = array_unique($advrStat['errors'][$service]);
}
}
}
}*/
}
}
/*echo "<!-- advrStat: " . var_export($advrStat, true) . " -->";
echo "<!-- logs: " . var_export($api->logs, true) . " -->";
echo "<!-- errors: " . var_export($api->errors, true) . " -->";*/
$not_av = "Не предоставляется сайтом";
?>
<div class="clear"></div>
<?php if (count($advrStat) > 0) : ?>
<h3 style="font-size:22px;margin:30px 0 5px 0;">
Статистика размещения
<?php /*= (isset($period['date_from']) && isset($period['date_to'])) ? ' <span style="font-size:14px;float:right;">с '.date('d.m.Y', strtotime($period['date_from'])).' по '.date('d.m.Y', strtotime($period['date_to'])).'</span>' : "" */ ?>
</h3>
<div class="jw__NB">
<div class="jw__NB__flat-list">
<table style="width:100%;">
<thead>
<tr>
<th>Площадка</th>
<th style="text-align:center;">Просмотров объявления</th>
<th style="text-align:center;">Просмотров контактов</th>
<th style="text-align:center;">Добавили в избранное</th>
<th style="text-align:center;">Звонков с сайта</th>
</tr>
</thead>
<tbody>
<?php if (in_array('avito', $services)) : ?>
<?php if (!is_null($advrStat['stats']['avito'])) :
$stats = $advrStat['stats']['avito'];
?>
<tr>
<td style="font-weight:bold;min-width:196px;">
<?= (!is_null($stats['url'])) ? '<a href="'.$stats['url'].'" title="'.$stats['url'].'" target="_blank">Авито</a>' : "Авито" ?>
<?= (count($stats['errors']) > 0) ? '<span title="'.implode(' ', $stats['errors']).'" style="color:lightcoral;">&nbsp<i class="ti-alert"></i>&nbsp</span>' : "" ?>
</td>
<td style="text-align:center;"><?= (!is_null($stats['views'])) ? $stats['views'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['contacts'])) ? $stats['contacts'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['favorites'])) ? $stats['favorites'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['calls'])) ? $stats['calls'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
</tr>
<?php elseif (!is_null($advrStat['avito']['error'])) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Авито</td>
<td colspan="4" style="text-align:center;color: lightcoral;"><i class="ti-alert"></i> <?= implode('<br/>', $advrStat['avito']['error']); ?></td>
</tr>
<?php else : ?>
<?php if ($obj['add_to_avito_feed'] == 1) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Авито</td>
<td colspan="4" style="text-align:center;">Ожидается получение информации от площадки</td>
</tr>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Авито</td>
<td colspan="4" style="text-align:center;">Объект не размещается через XML-фид</td>
</tr>
<?php endif; ?>
<?php endif; ?>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Авито</td>
<td colspan="4" style="text-align:center;color:lightcoral;"><i class="ti-alert"> Не настроен доступ к API. Вы можете сделать это из <a href="/settings.php#advertApi" target="_blank">настроек профиля</a>.</td>
</tr>
<?php endif; ?>
<?php if (in_array('cian', $services)) : ?>
<?php if (!is_null($advrStat['stats']['cian'])) :
$stats = $advrStat['stats']['cian'];
?>
<tr>
<td style="font-weight:bold;min-width:196px;">
<?= (!is_null($stats['url'])) ? '<a href="'.$stats['url'].'" title="'.$stats['url'].'" target="_blank">ЦИАН</a>' : "ЦИАН" ?>
<?= (count($stats['errors']) > 0) ? '<span title="'.implode(' ', $stats['errors']).'" style="color:lightcoral;">&nbsp<i class="ti-alert"></i>&nbsp</span>' : "" ?>
</td>
<td style="text-align:center;"><?= (!is_null($stats['views'])) ? $stats['views'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['contacts'])) ? $stats['contacts'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['favorites'])) ? $stats['favorites'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['calls'])) ? $stats['calls'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
</tr>
<?php elseif (!is_null($advrStat['cian']['error'])) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ЦИАН</td>
<td colspan="4" style="text-align:center;color: lightcoral;"><i class="ti-alert"></i> <?= implode('<br/>', $advrStat['cian']['error']); ?></td>
</tr>
<?php else : ?>
<?php if ($obj['add_to_cian_feed'] == 1) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ЦИАН</td>
<td colspan="4" style="text-align:center;">Ожидается получение информации от площадки</td>
</tr>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ЦИАН</td>
<td colspan="4" style="text-align:center;">Объект не размещается через XML-фид</td>
</tr>
<?php endif; ?>
<?php endif; ?>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ЦИАН</td>
<td colspan="4" style="text-align:center;color:lightcoral;"><i class="ti-alert"> Не настроен доступ к API. Вы можете сделать это из <a href="/settings.php#advertApi" target="_blank">настроек профиля</a>.</td>
</tr>
<?php endif; ?>
<?php if (in_array('yandex', $services)) : ?>
<?php if (!is_null($advrStat['stats']['yandex'])) :
$stats = $advrStat['stats']['yandex'];
?>
<tr>
<td style="font-weight:bold;min-width:196px;">
<?= (!is_null($stats['url'])) ? '<a href="'.$stats['url'].'" title="'.$stats['url'].'" target="_blank">Я.Недвижимость</a>' : "Яндекс.Недвижимость" ?>
<?= (count($stats['errors']) > 0) ? '<span title="'.implode(' ', $stats['errors']).'" style="color:lightcoral;">&nbsp<i class="ti-alert"></i>&nbsp</span>' : "" ?>
</td>
<td style="text-align:center;"><?= (!is_null($stats['views'])) ? $stats['views'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['contacts'])) ? $stats['contacts'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['favorites'])) ? $stats['favorites'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['calls'])) ? $stats['calls'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
</tr>
<?php elseif (!is_null($advrStat['yandex']['error'])) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Я.Недвижимость</td>
<td colspan="4" style="text-align:center;color: lightcoral;"><i class="ti-alert"></i> <?= implode('<br/>', $advrStat['yandex']['error']); ?></td>
</tr>
<?php else : ?>
<?php if ($obj['add_to_bn_feed'] == 1) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Я.Недвижимость</td>
<td colspan="4" style="text-align:center;">Ожидается получение информации от площадки</td>
</tr>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Я.Недвижимость</td>
<td colspan="4" style="text-align:center;">Объект не размещается через XML-фид</td>
</tr>
<?php endif; ?>
<?php endif; ?>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">Я.Недвижимость</td>
<td colspan="4" style="text-align:center;color:lightcoral;"><i class="ti-alert"> Не настроен доступ к API. Вы можете сделать это из <a href="/settings.php#advertApi" target="_blank">настроек профиля</a>.</td>
</tr>
<?php endif; ?>
<?php if (in_array('domclick', $services)) : ?>
<?php if (!is_null($advrStat['stats']['domclick'])) :
$stats = $advrStat['stats']['domclick'];
?>
<tr>
<td style="font-weight:bold;min-width:196px;">
<?= (!is_null($stats['url'])) ? '<a href="'.$stats['url'].'" title="'.$stats['url'].'" target="_blank">ДомКлик</a>' : "ДомКлик" ?>
<?= (count($stats['errors']) > 0) ? '<span title="'.implode(' ', $stats['errors']).'" style="color:lightcoral;">&nbsp<i class="ti-alert"></i>&nbsp</span>' : "" ?>
</td>
<td style="text-align:center;"><?= (!is_null($stats['views'])) ? $stats['views'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['contacts'])) ? $stats['contacts'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['favorites'])) ? $stats['favorites'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
<td style="text-align:center;"><?= (!is_null($stats['calls'])) ? $stats['calls'] : '<span style="color:#a1a1a1;"><small>' . $not_av . '</small></span>'; ?></td>
</tr>
<?php elseif (!is_null($advrStat['domclick']['error'])) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ДомКлик</td>
<td colspan="4" style="text-align:center;color: lightcoral;"><i class="ti-alert"></i> <?= implode('<br/>', $advrStat['domclick']['error']); ?></td>
</tr>
<?php else : ?>
<?php if ($obj['add_to_domclick_feed'] == 1) : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ДомКлик</td>
<td colspan="4" style="text-align:center;">Ожидается получение информации от площадки</td>
</tr>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ДомКлик</td>
<td colspan="4" style="text-align:center;">Объект не размещается через XML-фид</td>
</tr>
<?php endif; ?>
<?php endif; ?>
<?php else : ?>
<tr>
<td style="font-weight:bold;min-width:196px;">ДомКлик</td>
<td colspan="4" style="text-align:center;color:lightcoral;"><i class="ti-alert"> Не настроен доступ к API. Вы можете сделать это из <a href="/settings.php#advertApi" target="_blank">настроек профиля</a>.</td>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<?php endif; ?>
<?php
}
?>
<script>
$('#ad_stat_bg .object-content__preloader').fadeOut();
</script>