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); } } } ?>