get($obj['user_id']);
$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;
$destinations = [];
$sqlTargets = "SELECT * from advertising_package_destinations WHERE advertising_package_id=$obj[advertising_package_id] AND deleted = 0";
$rezTargets = mysql_query($sqlTargets);
$packageDestinations = [];
while($dest = mysql_fetch_assoc($rezTargets)) {
$d = [];
$d["destination"] = $dest["destination"];
$d["feed"] = $dest["feed"] == 1 ? true : false;
$d["placementType"] = $dest["placement_type"];
$destinations[] = $d;
array_push($packageDestinations, $dest);
}
$requestToSend['request']['destination'] = $destinations;
$request = json_encode($requestToSend);
$requestPrices = json_encode($requestPublishPrices);
//echo $request;
//echo "
";
$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 $resultPrices;
$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 advertising_package_object_publish SET error_text = '$result', active=0 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);
}
}
$logText = "Ошибка публикации через пакет $package[name] (ID = $packageId): $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 advertising_package_object_publish SET error_text = NULL, published = 1, active=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);
}
}
$logText = "Опубликован через пакет $package[name] (ID = $packageId) на $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);
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, advertising_package_object_publish_id)
VALUES ('$objectId', '$objData[id_add_user]', '$curUser->id', NOW(), NOW(), DATE_ADD(NOW(), INTERVAL $obj[days] DAY), '$obj[days]', 'ZIPAL', '$zipalBase', '$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;
//если указана цена руками - фиксируем ее
if ($dbDestFound['manual_price'] > 0) {
if ($dbDestFound['destination'] === 'AVITO') {
$publishPrice = $dbDestFound['manual_price'];
} else {
$publishPrice = $dbDestFound['manual_price'] * $obj['days'];
}
} else {
//иначе смотрим цену зипала
foreach ($dest['price'] as $price) {
if ($price['type'] === $dbDestFound['placement_type']) {
$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, advertising_package_object_publish_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 advertising_package_object_publish SET error_text = '$result', active=0 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);
}
}
$logText = "Ошибка публикации через пакет $package[name] (ID = $packageId): $result";
$sqlLog = "INSERT INTO object_publish_log(object_id, created_at, user_id, log_text) VALUES ('$objectId', NOW(), '$curUser->id', '$logText')";
mysql_query($sqlLog);
}
}
}
?>