349 lines
15 KiB
PHP
349 lines
15 KiB
PHP
|
|
<?php
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
|
|||
|
|
error_reporting(E_ALL | E_STRICT);
|
|||
|
|
ini_set('display_errors', 1);
|
|||
|
|
if($_SESSION['id'] && $_POST['id_object'] && (isset($_SESSION['checked']) && count($_SESSION['checked']) > 0)) {
|
|||
|
|
$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'];
|
|||
|
|
|
|||
|
|
$currentUser = new User;
|
|||
|
|
$currentUser->get($userId);
|
|||
|
|
if($currentUser->agencyId > 0){
|
|||
|
|
$action = 'object_unadvertise';
|
|||
|
|
if($post['state'] == 1){
|
|||
|
|
$action = 'object_advertise';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$w = new WebHookIn(null, $currentUser->agencyId);
|
|||
|
|
$is_object_webhook = $w->check_hook($action, 'object');
|
|||
|
|
|
|||
|
|
|
|||
|
|
$price = 0;
|
|||
|
|
$days = 5000;
|
|||
|
|
|
|||
|
|
if (isset($post['numDays']) && $post['numDays']) {
|
|||
|
|
$days = $post['numDays'];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($days > 5000) {
|
|||
|
|
$days = 5000;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$feed = $post['feed'];
|
|||
|
|
$field = '';
|
|||
|
|
$plase = '';
|
|||
|
|
switch($feed){
|
|||
|
|
case 'AVITO_JW_FEED':{
|
|||
|
|
$field = 'add_to_avito_feed';
|
|||
|
|
$plase = 'avito';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case 'EMLS_JW_FEED': {
|
|||
|
|
$field = 'add_to_emls_feed';
|
|||
|
|
$plase = '';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case 'CIAN_JW_FEED': {
|
|||
|
|
$field = 'add_to_cian_feed';
|
|||
|
|
$plase = 'cian';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'YANDEX_JW_FEED': {
|
|||
|
|
$field = 'add_to_bn_feed';
|
|||
|
|
$plase = 'yandex';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'FREE_JW_FEED': {
|
|||
|
|
$field = 'add_to_yandex_feed';
|
|||
|
|
$plase = 'yandex';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'DOMCLICK_JW_FEED': {
|
|||
|
|
$field = 'add_to_domclick_feed';
|
|||
|
|
$plase = 'domclick';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'EMLS_JW_FEED': {
|
|||
|
|
$field = 'add_to_emls_feed';
|
|||
|
|
$plase = '';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'ALL_FEED': {
|
|||
|
|
$field = null;
|
|||
|
|
$plase = '';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!empty($field)){
|
|||
|
|
$sqlObjData = "SELECT id, nazv, id_add_user, $field from objects WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
$objDataRez = mysql_query($sqlObjData);
|
|||
|
|
|
|||
|
|
$service_id = $advertBudgets->getServiceIdByCommonId($feed);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (isset($post['state'])) {
|
|||
|
|
if (boolval($post['state'])) {
|
|||
|
|
$sql = "UPDATE objects SET use_in_advert = 1, $field='$post[state]', is_main = 0 WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
$sql_sph = "UPDATE objects SET use_in_advert = 1, $field=$post[state] WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
$db_sphinx->query($sql_sph, true);
|
|||
|
|
|
|||
|
|
mysql_query($sql);
|
|||
|
|
} else {
|
|||
|
|
$sql_sph = "UPDATE objects SET $field=$post[state] WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
|
|||
|
|
$db_sphinx->query($sql_sph, true);
|
|||
|
|
|
|||
|
|
$user = new User;
|
|||
|
|
$user->get($userId);
|
|||
|
|
$agency_id = $user->agencyId;
|
|||
|
|
|
|||
|
|
$sql_promo = "DELETE FROM ads_promo WHERE object_id in (".implode(',', $_SESSION['checked']).") AND agency_id = {$agency_id}";
|
|||
|
|
mysql_query($sql_promo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
while($objData = mysql_fetch_assoc($objDataRez)){
|
|||
|
|
if (boolval($post['state'])) {
|
|||
|
|
|
|||
|
|
//проверяем текущее состояние объекта
|
|||
|
|
if (isset($objData[$field]) && $objData[$field] == 1) {
|
|||
|
|
//если опубликован - выходим
|
|||
|
|
// exit();
|
|||
|
|
continue;
|
|||
|
|
} else {
|
|||
|
|
// скидываем размещение и обновляем статистику
|
|||
|
|
$advertBudgets->updateObjectCost($objData['id'], $service_id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$results = $advertBudgets->getObjectAdvertPrices($objData['id'], $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) // Если нехватка бюджета - выходим
|
|||
|
|
exit();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$no_insert = false;
|
|||
|
|
$on_moderation = 0;
|
|||
|
|
/* if (isset($post['is_moderation']) && $post['is_moderation'] > 0) {
|
|||
|
|
$moderationAdvertClass->addUpdate($userId, $post['id_object'], ['field'=>$field, 'value'=>1]);
|
|||
|
|
$on_moderation = 1;
|
|||
|
|
} else {
|
|||
|
|
$sql = "UPDATE objects SET use_in_advert = 1, $field='$post[state]', is_main = 0 WHERE id=$post[id_object]";
|
|||
|
|
$sql_sph = "UPDATE objects SET use_in_advert = 1, $field=$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 (
|
|||
|
|
'$objData[id]',
|
|||
|
|
'$objData[id_add_user]',
|
|||
|
|
'$userId',
|
|||
|
|
NOW(),
|
|||
|
|
NOW(),
|
|||
|
|
DATE_ADD(NOW(), INTERVAL $days DAY),
|
|||
|
|
'$days',
|
|||
|
|
'$feed',
|
|||
|
|
'$price',
|
|||
|
|
'$price_period',
|
|||
|
|
'{$on_moderation}'
|
|||
|
|
)";
|
|||
|
|
|
|||
|
|
mysql_query($sqlBaseStat);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
//уведомление о съеме с рекламы
|
|||
|
|
$sql_tg = "SELECT $field FROM objects WHERE id={$objData['id']}";
|
|||
|
|
//echo $sql_tg;
|
|||
|
|
$q_tg = mysql_query($sql_tg);
|
|||
|
|
$r_tg = mysql_fetch_assoc($q_tg);
|
|||
|
|
|
|||
|
|
if($r_tg[$field] > 0 && !empty($plase)){
|
|||
|
|
$tel->object_ad($objData['id'], 0, $plase);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/* $sql_sph_tmp = "SELECT if(
|
|||
|
|
add_to_emls_feed = 0 AND
|
|||
|
|
add_to_avito_feed = 0 AND
|
|||
|
|
add_to_emls_feed = 0 AND
|
|||
|
|
add_to_cian_feed = 0 AND
|
|||
|
|
add_to_yandex_feed = 0 AND
|
|||
|
|
add_to_domclick_feed = 0 AND
|
|||
|
|
add_to_bn_feed = 0, 0, 1) FROM objects WHERE id=$objData[id]";
|
|||
|
|
|
|||
|
|
$q_sph_tmp = $db_sphinx->query($sql_sph_tmp);
|
|||
|
|
$use_in_advert = $db_sphinx->result($q_sph_tmp);
|
|||
|
|
$sql_sph = "UPDATE objects
|
|||
|
|
SET use_in_advert = $use_in_advert
|
|||
|
|
WHERE id=$objData[id]";*/
|
|||
|
|
//echo $sql_sph."\n";
|
|||
|
|
$sql = "UPDATE objects
|
|||
|
|
SET
|
|||
|
|
$field='$post[state]',
|
|||
|
|
is_main = 0
|
|||
|
|
WHERE id=$objData[id]";
|
|||
|
|
//echo $sql."\n";
|
|||
|
|
//проставляем дату отмены в статистике
|
|||
|
|
$advertBudgets->updateObjectCost($objData['id'], $service_id);
|
|||
|
|
|
|||
|
|
// $moderationAdvertClass->checkAndClear($objData['id'],$field);
|
|||
|
|
if (!empty($plase)) {
|
|||
|
|
AdvertStats::cleanUpStats($plase, $objData['id']);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mysql_query($sql);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!empty($field) && $is_object_webhook) {
|
|||
|
|
|
|||
|
|
$w->save_webhook_cron($currentUser->id, 'object', $action, $objData['id'], $field);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
} else if($feed == 'ALL_FEED' && isset($post['state']) && $post['state'] == 0){
|
|||
|
|
$sqlObjData = "SELECT id, nazv, id_add_user from objects WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
$objDataRez = mysql_query($sqlObjData);
|
|||
|
|
$sql = "UPDATE objects
|
|||
|
|
SET use_in_advert = 0,
|
|||
|
|
add_to_bn_feed = 0,
|
|||
|
|
add_to_yandex_feed = 0,
|
|||
|
|
add_to_domclick_feed = 0,
|
|||
|
|
add_to_avito_feed = 0,
|
|||
|
|
add_to_emls_feed = 0,
|
|||
|
|
add_to_cian_feed = 0,
|
|||
|
|
add_to_zipal = 0,
|
|||
|
|
is_main = 0
|
|||
|
|
WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
$sql_sph = "UPDATE objects
|
|||
|
|
SET use_in_advert = 0,
|
|||
|
|
add_to_bn_feed = 0,
|
|||
|
|
add_to_yandex_feed = 0,
|
|||
|
|
add_to_domclick_feed = 0,
|
|||
|
|
add_to_avito_feed = 0,
|
|||
|
|
add_to_emls_feed = 0,
|
|||
|
|
add_to_cian_feed = 0,
|
|||
|
|
add_to_zipal = 0
|
|||
|
|
WHERE id in (".implode(',', $_SESSION['checked']).")";
|
|||
|
|
|
|||
|
|
//проставляем дату отмены в статистике
|
|||
|
|
$sqlUpdateStat = "UPDATE object_publish_statistic SET unpublish_user_id = '$userId', publish_end_date = NOW(), days_count = DATEDIFF(NOW(), publish_start_date) WHERE object_id in (".implode(',', $_SESSION['checked']).") AND (publish_end_date = '0000-00-00 00:00:00' OR publish_end_date IS NULL OR publish_end_date > NOW())";
|
|||
|
|
mysql_query($sqlUpdateStat);
|
|||
|
|
|
|||
|
|
if ($db_sphinx->query($sql_sph)) {
|
|||
|
|
|
|||
|
|
while($objData = mysql_fetch_assoc($objDataRez)){
|
|||
|
|
$moderationClass = new ModerationAdvert();
|
|||
|
|
|
|||
|
|
$moderationClass->checkAndClear($objData['id'], 'use_in_advert');
|
|||
|
|
|
|||
|
|
$userId = $_SESSION['id'];
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
AdvertStats::cleanUpStats('avito', $objData['id']);
|
|||
|
|
AdvertStats::cleanUpStats('cian', $objData['id']);
|
|||
|
|
AdvertStats::cleanUpStats('yandex', $objData['id']);
|
|||
|
|
AdvertStats::cleanUpStats('domclick', $objData['id']);
|
|||
|
|
|
|||
|
|
$tel->object_ad($objData['id'], 0);
|
|||
|
|
if ($is_object_webhook) {
|
|||
|
|
|
|||
|
|
$w->save_webhook_cron($currentUser->id, 'object', $action, $objData['id'], 'all');
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return json_encode(['result' => mysql_query($sql)]);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|