210 lines
8.9 KiB
PHP
210 lines
8.9 KiB
PHP
<?php
|
||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||
|
||
set_time_limit(0);
|
||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||
?>
|
||
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Публикация объектов на Zipal.ru</title>
|
||
</head>
|
||
|
||
<body>
|
||
<?php
|
||
|
||
$sql = "SELECT * from zipal_objects WHERE sended = 1 AND published = 0 AND unpublish = 0 ORDER BY id DESC";
|
||
$rez_obj = mysql_query($sql);
|
||
|
||
while($obj = mysql_fetch_assoc($rez_obj)) {
|
||
|
||
if (!$obj['zipal_id'] || $obj['zipal_id'] == null) {
|
||
$sql = "UPDATE zipal_objects SET sended = 0, send_to_update = 0 WHERE id = $obj[id]";
|
||
mysql_query($sql);
|
||
continue;
|
||
}
|
||
|
||
$objectId = $obj['object_id'];
|
||
|
||
$sqlObjData = "SELECT id, nazv, id_add_user from objects WHERE id = $objectId";
|
||
$objData = mysql_fetch_assoc(mysql_query($sqlObjData));
|
||
|
||
$curUser = new User();
|
||
$curUser->get($obj['user_id']);
|
||
|
||
$requestToSend = [];
|
||
|
||
$login = $curUser->zipal_login;
|
||
$password = $curUser->zipal_password;
|
||
|
||
if (empty($login) || empty($password)) {
|
||
$login = $curUser->agencyZipalLogin;
|
||
$password = $curUser->agencyZipalPassword;
|
||
}
|
||
|
||
$requestPublishPrices = [];
|
||
$requestPublishPrices['login'] = $login;
|
||
$requestPublishPrices['password'] = $password;
|
||
$requestPublishPrices['method'] = 'GetPrices';
|
||
$requestPublishPrices['request'] = [];
|
||
$requestPublishPrices['request']['requestType'] = 'GetPricesByObjectRequestType';
|
||
$requestPublishPrices['request']['objectId'] = $obj['zipal_id'];
|
||
$requestPublishPrices['request']['days'] = $obj['days'];
|
||
|
||
$requestToSend = [];
|
||
|
||
$requestToSend['login'] = $login;
|
||
$requestToSend['password'] = $password;
|
||
$requestToSend['method'] = 'Publish';
|
||
$requestToSend['request'] = [];
|
||
$requestToSend['request']['requestType'] = 'CustomPublishRequestType';
|
||
$requestToSend['request']['objectId'] = $obj['zipal_id'];
|
||
$requestToSend['request']['days'] = $obj['days'];
|
||
$requestToSend['request']['autoProlong'] = false;
|
||
$requestToSend['request']['destination'] = json_decode($obj['destinations'], true);
|
||
|
||
$request = json_encode($requestToSend);
|
||
$requestPrices = json_encode($requestPublishPrices);
|
||
|
||
//echo $request;
|
||
//echo "<br/>";
|
||
|
||
$user_agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch_Diamond2_T5353; Windows Phone 6.5)';
|
||
|
||
//делаем запрос к zipal
|
||
$result = curl_request_zipal_json("https://zipal.ru/ws/json", $obj['user_id'], $user_agent, $request);
|
||
$resultPrices = curl_request_zipal_json("https://zipal.ru/ws/json", $obj['user_id'], $user_agent, $requestPrices);
|
||
|
||
//echo $result;
|
||
|
||
$jsonResult = json_decode($result, true);
|
||
$jsonResultPrices = json_decode($resultPrices, true);
|
||
|
||
if (!$jsonResult) {
|
||
$jsonResult['resultCode'] = "FAIL";
|
||
$jsonResult['result'] = "NO RESPONSE";
|
||
}
|
||
|
||
if ($jsonResult['resultCode'] == "FAIL") {
|
||
$sql = "UPDATE zipal_objects SET error_text = '$result' WHERE id = $obj[id]";
|
||
mysql_query($sql);
|
||
|
||
if (empty($obj['error_text'])) {
|
||
if (empty($curUser->zipal_balance)) {
|
||
$newBalance = $curUser->agencyZipalBalance + $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->agencyId;
|
||
mysql_query($sql);
|
||
} else {
|
||
$newBalance = $curUser->zipal_balance + $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->id;
|
||
mysql_query($sql);
|
||
}
|
||
|
||
$sql = "UPDATE objects SET add_to_zipal='0' WHERE id=$objectId";
|
||
mysql_query($sql);
|
||
}
|
||
|
||
$logText = "Ошибка публикации через кнопку С отчетами: $result";
|
||
|
||
$sqlLog = "INSERT INTO object_publish_log(object_id, created_at, user_id, log_text) VALUES ('$objectId', NOW(), '$curUser->id', '$logText')";
|
||
mysql_query($sqlLog);
|
||
} else {
|
||
if ($jsonResult['result']['status'] == "SuccessPublishResponseType") {
|
||
$sql = "UPDATE zipal_objects SET error_text = NULL, published = 1 WHERE id = $obj[id]";
|
||
mysql_query($sql);
|
||
|
||
if (!empty($obj['error_text'])) {
|
||
//если была ошибка перед этим - вычитаем деньги и ставим флаг в JW
|
||
|
||
if (empty($curUser->zipal_balance)) {
|
||
$newBalance = $curUser->agencyZipalBalance - $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->agencyId;
|
||
mysql_query($sql);
|
||
} else {
|
||
$newBalance = $curUser->zipal_balance - $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->id;
|
||
mysql_query($sql);
|
||
}
|
||
}
|
||
|
||
$sql = "UPDATE objects SET add_to_zipal='1' WHERE id=$objectId";
|
||
mysql_query($sql);
|
||
|
||
$logText = "Опубликовано через кнопку С отчетами на $obj[days] дней";
|
||
|
||
$sqlLog = "INSERT INTO object_publish_log(object_id, created_at, user_id, log_text) VALUES ('$objectId', NOW(), '$curUser->id', '$logText')";
|
||
mysql_query($sqlLog);
|
||
|
||
$packageDestinations = json_decode($obj['destinations'], true);
|
||
|
||
if ($packageDestinations && $jsonResultPrices['resultCode'] == "OK") {
|
||
|
||
$zipalBase = $jsonResultPrices['result']['basePrice'] / 100;
|
||
|
||
$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, zipal_objects_id)
|
||
VALUES ('$objectId', '$objData[id_add_user]', '$curUser->id', NOW(), NOW(), DATE_ADD(NOW(), INTERVAL $obj[days] DAY), '$obj[days]', 'ZIPAL', '$zipalBase', '$zipalBase', '0', '$obj[id]')";
|
||
mysql_query($sqlBaseStat);
|
||
|
||
foreach ($jsonResultPrices['result']['destination'] as $dest) {
|
||
//записываем актуальные цены публикации на те площадки, куда публикуем
|
||
|
||
$dbDestFound = null;
|
||
|
||
//ищем площадку, используется ли она в пакете
|
||
foreach ($packageDestinations as $dbDest) {
|
||
if ($dest['destination'] === $dbDest['destination']) {
|
||
$dbDestFound = $dbDest;
|
||
break;
|
||
}
|
||
}
|
||
|
||
//если такая площадка используется, то записываем ее в БД
|
||
if ($dbDestFound != null) {
|
||
$publishPrice = 0;
|
||
|
||
//смотрим цену зипала
|
||
foreach ($dest['price'] as $price) {
|
||
if ($price['type'] === $dbDestFound['placementType']) {
|
||
$publishPrice = $price['price'] / 100;
|
||
}
|
||
}
|
||
|
||
$sqlStat = "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, zipal_objects_id)
|
||
VALUES ('$objectId', '$objData[id_add_user]', '$curUser->id', NOW(), NOW(), DATE_ADD(NOW(), INTERVAL $obj[days] DAY), '$obj[days]', '$dbDestFound[destination]', '$publishPrice', '$obj[id]')";
|
||
mysql_query($sqlStat);
|
||
}
|
||
}
|
||
}
|
||
|
||
} else {
|
||
$sql = "UPDATE zipal_objects SET error_text = '$result' WHERE id = $obj[id]";
|
||
mysql_query($sql);
|
||
|
||
if (empty($obj['error_text'])) {
|
||
if (empty($curUser->zipal_balance)) {
|
||
$newBalance = $curUser->agencyZipalBalance + $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->agencyId;
|
||
mysql_query($sql);
|
||
} else {
|
||
$newBalance = $curUser->zipal_balance + $obj['price'];
|
||
$sql = "UPDATE users SET zipal_balance='$newBalance' WHERE id=" . $curUser->id;
|
||
mysql_query($sql);
|
||
}
|
||
|
||
$sql = "UPDATE objects SET add_to_zipal='0' WHERE id=$objectId";
|
||
mysql_query($sql);
|
||
}
|
||
|
||
$logText = "Ошибка публикации через кнопку С отчетами: $result";
|
||
|
||
$sqlLog = "INSERT INTO object_publish_log(object_id, created_at, user_id, log_text) VALUES ('$objectId', NOW(), '$curUser->id', '$logText')";
|
||
mysql_query($sqlLog);
|
||
}
|
||
}
|
||
|
||
sleep(2);
|
||
}
|
||
?>
|
||
</body>
|
||
</html>
|