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

204 lines
8.2 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");
if($_SESSION['id'] && $_POST['id_object']) {
$tel = new Telegram();
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$moderationAdvertClass = new ModerationAdvert();
$advertBudgets = new AdvertBudgets();
$post = clearInputData($_POST);
$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_avito_feed from objects WHERE id = $post[id_object]";
$objData = mysql_fetch_assoc(mysql_query($sqlObjData));
if (isset($post['state'])) {
$service_id = $advertBudgets->getServiceIdByCommonId('AVITO_JW_FEED');
if (boolval($post['state'])) {
//проверяем текущее состояние объекта
if (isset($objData['add_to_avito_feed']) && $objData['add_to_avito_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_avito_feed', 'value'=>1]);
$on_moderation = 1;
} else {
$sql = "UPDATE objects SET use_in_advert = 1, add_to_avito_feed='$post[state]', is_main = 0 WHERE id=$post[id_object]";
$sql_sph = "UPDATE objects SET use_in_advert = 1, add_to_avito_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 = 'AVITO_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',
'AVITO_JW_FEED',
'$price',
'$price_period',
'{$on_moderation}'
)";
mysql_query($sqlBaseStat);
}
} else {
//уведомление о съеме с рекламы
$sql_tg = "SELECT add_to_avito_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_avito_feed'] > 0){
$tel->object_ad($post['id_object'], 0, 'avito');
}
$sql = "UPDATE objects
SET
add_to_avito_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_emls_feed = 0 AND
add_to_cian_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_avito_feed=$post[state]
WHERE id=$post[id_object]";
//проставляем дату отмены в статистике
$advertBudgets->updateObjectCost($post['id_object'], $service_id);
$moderationAdvertClass->checkAndClear($post['id_object'],'add_to_avito_feed');
}
if ($db_sphinx->query($sql_sph)) {
AdvertStats::cleanUpStats('avito', $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_avito_feed');
$w_in = new WebHookIn(null, $currentUser->agencyId);
$w_in->check_send($dataWhook);
}
mysql_query($sql);
}
}