202 lines
8.2 KiB
PHP
202 lines
8.2 KiB
PHP
<?php
|
||
|
||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||
|
||
|
||
if($_SESSION['id'] && $_POST['id_object']) {
|
||
$tel = new Telegram();
|
||
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
|
||
|
||
$post = clearInputData($_POST);
|
||
|
||
$moderationAdvertClass = new ModerationAdvert();
|
||
$advertBudgets = new AdvertBudgets();
|
||
|
||
$userId = $_SESSION['id'];
|
||
|
||
$price = 0;
|
||
$days = 5000;
|
||
|
||
if (isset($post['numDays']) && $post['numDays']) {
|
||
$days = $post['numDays'];
|
||
}
|
||
|
||
if ($days > 5000) {
|
||
$days = 5000;
|
||
}
|
||
|
||
$sqlObjData = "SELECT id, nazv, id_add_user, add_to_cian_feed from objects WHERE id = $post[id_object]";
|
||
$objData = mysql_fetch_assoc(mysql_query($sqlObjData));
|
||
|
||
if (isset($post['state'])) {
|
||
|
||
$service_id = $advertBudgets->getServiceIdByCommonId('CIAN_JW_FEED');
|
||
|
||
if (boolval($post['state'])){
|
||
|
||
//проверяем текущее состояние объекта
|
||
if (isset($objData['add_to_cian_feed']) && $objData['add_to_cian_feed'] == 1) {
|
||
//если опубликован - выходим
|
||
exit();
|
||
} else {
|
||
//иначе скидываем все размещения
|
||
$advertBudgets->updateObjectCost($post['id_object'], $service_id);
|
||
}
|
||
|
||
$results = $advertBudgets->getObjectAdvertPrices($post['id_object'], $service_id, $days);
|
||
|
||
// Стоимость размещения за весь период
|
||
if (!is_null($results['price']))
|
||
$price = $results['price'];
|
||
|
||
// Стоимость размещения за 1 период (30 дней)
|
||
$price_period = 0;
|
||
if (!is_null($results['price_period']))
|
||
$price_period = $results['price_period'];
|
||
|
||
// Если агентство использует рекламный бюджет
|
||
if (!is_null($results['budget'])) {
|
||
|
||
// Если пользователь руковод или у него безлимит
|
||
$unlimited = false;
|
||
if (isset($results['is_unlimited']))
|
||
$unlimited = boolval($results['is_unlimited']);
|
||
|
||
$budget = $results['budget'];
|
||
if ($price > $budget && !$unlimited) { // Если нехватка бюджета - выходим
|
||
echo "Размещение не возможно по причине не достаточного баланса рекламного бюджета.";
|
||
exit();
|
||
}
|
||
|
||
}
|
||
|
||
$no_insert = false;
|
||
$on_moderation = 0;
|
||
if (isset($post['is_moderation']) && $post['is_moderation'] > 0) {
|
||
$moderationAdvertClass->addUpdate($userId, $post['id_object'], ['field'=>'add_to_cian_feed', 'value'=>1]);
|
||
$on_moderation = 1;
|
||
} else {
|
||
$sql = "UPDATE objects SET use_in_advert = 1, add_to_cian_feed='$post[state]', is_main = 0 WHERE id=$post[id_object]";
|
||
$sql_sph = "UPDATE objects SET use_in_advert = 1, add_to_cian_feed=$post[state] WHERE id = $post[id_object]";
|
||
|
||
// Обновляем в статистике старую запись объекта из модерации
|
||
/*$sqlCheck = "SELECT object_publish_statistic.id AS stat_id
|
||
FROM object_publish_statistic
|
||
WHERE object_id = {$post['id_object']} AND
|
||
destination = 'CIAN_JW_FEED' AND
|
||
publish_user_id = (
|
||
SELECT moderation.agent_id
|
||
FROM objects_moderation_advert AS moderation
|
||
LEFT JOIN objects_moderation_advert_user_work AS user_work ON user_work.moderation_id = moderation.id
|
||
WHERE moderation.object_id = {$post['id_object']} AND
|
||
DATE(moderation.created_at) >= DATE(object_publish_statistic.created_at) AND
|
||
moderation.send_moderation = 0
|
||
LIMIT 1
|
||
)";
|
||
|
||
if ($sqlCheckRez = mysql_query($sqlCheck)) {
|
||
if (mysql_num_rows($sqlCheckRez)) {
|
||
|
||
$stat_id = mysql_fetch_assoc($sqlCheckRez)['stat_id'];
|
||
$sqlUpRc = "UPDATE object_publish_statistic
|
||
SET publish_start_date = NOW(),
|
||
publish_end_date = DATE_ADD(NOW(), INTERVAL $days DAY),
|
||
days_count = '$days',
|
||
price = '$price',
|
||
publish_user_id = '$userId',
|
||
on_moderation = 0
|
||
WHERE id = $stat_id";
|
||
|
||
mysql_query($sqlUpRc);
|
||
$no_insert = true;
|
||
}
|
||
}*/
|
||
}
|
||
|
||
// Добавляем запись в статистику размещения
|
||
if (!$no_insert) {
|
||
$sqlBaseStat = "INSERT INTO object_publish_statistic(
|
||
object_id,
|
||
user_owner_id,
|
||
publish_user_id,
|
||
created_at,
|
||
publish_start_date,
|
||
publish_end_date,
|
||
days_count,
|
||
destination,
|
||
price,
|
||
price_period,
|
||
on_moderation
|
||
) VALUES (
|
||
'$post[id_object]',
|
||
'$objData[id_add_user]',
|
||
'$userId',
|
||
NOW(),
|
||
NOW(),
|
||
DATE_ADD(NOW(), INTERVAL $days DAY),
|
||
'$days',
|
||
'CIAN_JW_FEED',
|
||
'$price',
|
||
'$price_period',
|
||
'{$on_moderation}'
|
||
)";
|
||
|
||
mysql_query($sqlBaseStat);
|
||
}
|
||
} else {
|
||
//уведомление о съеме с рекламы
|
||
$sql_tg = "SELECT add_to_cian_feed FROM objects WHERE id={$post['id_object']}";
|
||
$q_tg = mysql_query($sql_tg);
|
||
$r_tg = mysql_fetch_assoc($q_tg);
|
||
if($r_tg['add_to_cian_feed'] > 0){
|
||
$tel->object_ad($post['id_object'], 0, 'cian');
|
||
}
|
||
$sql = "UPDATE objects
|
||
SET
|
||
add_to_cian_feed='$post[state]',
|
||
is_main = 0
|
||
WHERE id=$post[id_object]";
|
||
|
||
/* $sql_sph_tmp = "SELECT if(
|
||
add_to_bn_feed = 0 AND
|
||
add_to_yandex_feed = 0 AND
|
||
add_to_domclick_feed = 0 AND
|
||
add_to_avito_feed = 0 AND
|
||
add_to_emls_feed = 0 AND
|
||
add_to_zipal = 0, 0, 1) FROM objects WHERE id=$post[id_object]";
|
||
|
||
$q_sph_tmp = $db_sphinx->query($sql_sph_tmp);
|
||
$use_in_advert = $db_sphinx->result($q_sph_tmp);*/
|
||
$sql_sph = "UPDATE objects
|
||
SET
|
||
add_to_cian_feed=$post[state]
|
||
WHERE id=$post[id_object]";
|
||
|
||
//проставляем дату отмены в статистике
|
||
$advertBudgets->updateObjectCost($post['id_object'], $service_id);
|
||
|
||
$moderationAdvertClass->checkAndClear($post['id_object'],'add_to_cian_feed');
|
||
|
||
}
|
||
|
||
if ($db_sphinx->query($sql_sph)) {
|
||
AdvertStats::cleanUpStats('cian', $post['id_object']);
|
||
}
|
||
$currentUser = new User;
|
||
$currentUser->get($_SESSION['id']);
|
||
if($currentUser->agencyId > 0){
|
||
$action = 'object_unadvertise';
|
||
if($post['state'] == 1){
|
||
$action = 'object_advertise';
|
||
}
|
||
|
||
$dataWhook = array('action'=>$action, 'object_id'=>$post['id_object'], 'section'=>'object', 'user_id'=>$userId, 'agency_id'=>$currentUser->agencyId, 'button'=>'add_to_cian_feed');
|
||
$w_in = new WebHookIn(null, $currentUser->agencyId);
|
||
$w_in->check_send($dataWhook);
|
||
}
|
||
|
||
|
||
mysql_query($sql);
|
||
}
|
||
}
|