· 5 years ago · Jun 25, 2020, 07:50 AM
1<?php
2/**
3* ==========================================
4*
5* API Туроператоров
6*
7* ==========================================
8*/
9
10namespace core;
11use core\config\Config;
12use core\DBController;
13use core\HelpersController;
14class TuiApiController extends Config
15{ // start class
16
17
18
19const TOKEN_TUI = ""; // Токен для оператора ТУИ
20
21
22
23/* =================== НАЧАЛО Основной метод поиска по Турам ================== */
24/**
25* ----------------------------
26* Функция возвращает ID категорий отелей для разных Операторов
27* @return string
28* ----------------------------
29*/
30public function hotels_cat_multiple() {
31 // --- Exemple ---
32 /*
33// Call func
34$arr = hotels_cat_multiple();
35$tui_hotel_cats = $arr['tui']['cats'][$_POST['hotels_cats']];
36$tez_hotel_cats = $arr['tez']['cats'][$_POST['hotels_cats']];
37 */
38
39 $data = [
40 "tui" => [ "cats" => [ "apt" => "10006", "1" => "10001", "2" => "10002", "3" => "10003", "4" => "10004", "5" => "10005", ], ],
41 "tez" => [ "cats" => [ "apt" => "253005", "1" => "2566", "2" => "2567", "3" => "2568", "4" => "2569", "5" => "2570", ], ],
42 "koditour" => [ "cats" => [ "3" => "...", "4" => "...", "5" => "...", ], ],
43 ];
44
45 return $data;
46}
47
48
49
50
51
52
53
54
55
56/**
57* ----------------------------
58* Функция возвращает ID Типы туров для разных Операторов
59* @return string
60* ----------------------------
61*/
62public function type_tours_multiple() {
63 // --- Exemple ---
64 /*
65// Call func
66$arr_2 = type_tours_multiple();
67$tui_type_tours = $arr_2['tui']['type'][$_POST['typeTour']];
68$tez_type_tours = $arr_2['tez']['type'][$_POST['typeTour']];
69 */
70
71 $data = [
72 "tui" => [ "type" => [ "1" => "0", "2" => "2", "3" => "1", ], ],
73 "tez" => [ "type" => [ "1" => "1", "2" => "3", "3" => "6", ], ],
74 "koditour" => [ "type" => [ "1" => "...", "2" => "...", "3" => "...", ], ],
75 ];
76
77 return $data;
78}
79
80
81
82
83
84
85
86
87
88/**
89* ----------------------------
90* Функция возвращающая данные по Типу Питания
91* прилета для разных операторов
92* @return string
93* ----------------------------
94*/
95public function meals_multiple() {
96/*
97// Call func country multiple
98$arr_4 = stateinc_multiple();
99$tui_stateinc = $arr_4['tui'][$_POST['meal']];
100$tez_stateinc = $arr_4['tez'][$_POST['meal']];
101$kodi_stateinc = $arr_4['koditour'][$_POST['meal']];
102*/
103 $data = [
104 "tui" => [ "BB" => "10001", "FB" => "10003", "HB" => "10002", "AI" => "10004", "none" => "", "UAI" => "" ], // tui
105 "tez" => [ "BB" => "2424", "FB" => "2749", "HB" => "2474", "AI" => "5737", "none" => "152136", "UAI" => "5738" ], // tez
106 "koditour" => [ "BB" => "...", "FB" => "...", "HB" => "...", "AI" => "...", ], // koditour
107 ];
108 return $data;
109}
110
111
112
113
114
115
116
117
118
119
120
121/**
122* ----------------------------
123* Функция возвращающая данные о странах
124* прилета для разных операторов
125* @return string
126* ----------------------------
127*/
128public function stateinc_multiple( $value = array() ) {
129/*
130// Call func country multiple
131$arr = stateinc_multiple([
132 "country" => "turkey",
133]);
134$tui_stateinc = $arr['tui'];
135$tez_stateinc = $arr['tez'];
136$kodi_stateinc = $arr['koditour'];
137*/
138 $data = [
139 "turkey" => [ "tui" => "18803", "tez" => "1104", "koditour" => "..." ], // Турция
140 "egypt" => [ "tui" => "18498", "tez" => "5732", "koditour" => "..." ], // Египет
141 "bulgaria" => [ "tui" => "", "tez" => "158976", "koditour" => "..." ], // Болгария
142 "greece" => [ "tui" => "18741", "tez" => "7067498", "koditour" => "..." ], // Греция
143 "cyprus" => [ "tui" => "", "tez" => "7067673", "koditour" => "..." ], // Кипр
144 "portugal" => [ "tui" => "", "tez" => "132579", "koditour" => "..." ], // Португалия
145 "spain" => [ "tui" => "18747", "tez" => "5733", "koditour" => "..." ], // Испания
146 "thailand" => [ "tui" => "", "tez" => "12695", "koditour" => "..." ], // Тайланд
147 ];
148 return $data[$value['country']];
149}
150
151
152
153
154
155
156
157
158
159
160
161
162/*
163------------------------------------------------
164 Функции вывода Туров по ID Отеля
165------------------------------------------------
166*/
167
168/**
169* ------------------------------------------------
170* Функция вывода Туров по ID Отеля
171* Операторы: ТЕЗ-ТУР
172* Версия системы: 1.0
173* @return array
174* ------------------------------------------------
175*/
176public function get_tours_tez( $id_hotel_tez, $price_from, $price_to, $nightsMax, $cityId, $countryId, $dateMin, $dateMax, $region_id, $locality_from, $nights, $typetour, $tez_version, $tez_meal, $tez_hotel_cats, $tez_type_tours ) {
177$url_tez = 'https://search.tez-tour.com/tariffsearch/getResult?priceMin='.$price_from.'&priceMax='.$price_to.'¤cy='.$currency.'&nightsMin=6&nightsMax='.$nightsMax.'&hotelClassId='.$tez_hotel_cats.'&tourType='.$tez_type_tours.'&locale=ru&cityId='.$cityId.'&countryId='.$countryId.'&after='.$dateMin.'&before='.$dateMax.'&tourId='.$region_id.'&hotelClassBetter=false&rAndBBetter=false&hotelInStop=false&specialInStop=false&noTicketsTo=false&noTicketsFrom=false&promoFlag=true&version='.$tez_version.'&searchTypeId=6&groupByHotel=2&accommodationId=2&rAndBId='.$tez_meal.'&birthdays=';
178$ch = curl_init();
179 curl_setopt_array($ch, array(
180 CURLOPT_URL => $url_tez,
181 CURLOPT_RETURNTRANSFER => true,
182 CURLOPT_ENCODING => "",
183 CURLOPT_MAXREDIRS => 10,
184 CURLOPT_TIMEOUT => 0,
185 CURLOPT_FOLLOWLOCATION => true,
186 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
187 CURLOPT_CUSTOMREQUEST => "GET",
188));
189$out_tez = curl_exec($ch);
190curl_close($ch);
191$response = json_decode($out_tez, true);
192
193/**
194* Выводим результаты от TEZ-TOUR
195*
196*/
197$show_tour = '
198<table class="table table-sm">
199<thead class="thead-light">
200<tr>
201 <th> ID </th>
202 <th> Отель </th>
203 <th> Тур </th>
204 <th> Номер </th>
205 <th> Стоимость </th>
206 <th> </th>
207</tr>
208</thead>
209<tbody>
210';
211
212for( $i2 = 0; $i2 < $response['info'][1][1]; $i2++ ) :
213
214if( $i2 > 10 ) $show_tour .= '';
215else {
216 if( $response['data'][$i2][6][1] == $id_hotel_tez ) { // start id_tour hotel
217
218$show_tour .= '
219<tr>
220<td> '. $response['data'][$i2][5][2] .' </td>
221<td> <a target="_blanc" class="text-primary text-decoration-none" href="/?action=details&id='. $i2 .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&locality_from='.$locality_from.'&input_price='.$response['data'][$i2][10]['total'].'&hotel_cat='.$tez_hotel_cats.'&meal='.$tez_meal.'&tour_type='.$tez_type_tours.'&date_start='.$dateMin.'&date_end='.$dateMax.'&tz=1">
222 '. $response['data'][$i2][6][1] .' </a </td>
223<td> '. $response['data'][$i2][7][0] .' </td>
224<td> '. $response['data'][$i2][7][1] .' </td>
225<td> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $response['data'][$i2][10]['total'] , 0, "", " ") .' </b> </span> <span class="text-muted"> '. $response['data'][0][10]['currency'] .' </span> </td>
226<td> <a target="_blanc" href="/?action=details&id='. $i2 .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&locality_from='.$locality_from.'&input_price='.$response['data'][$i2][10]['total'].'&hotel_cat='.$tez_hotel_cats.'&meal='.$tez_meal.'&tour_type='.$tez_type_tours.'&date_start='.$dateMin.'&date_end='.$dateMax.'&tz=1" class="btn btn-dark btn-sm"> Подробнее </a> </td>
227</tr>';
228
229 } // end id_tour hotel
230 else $show_tour .= '';
231}
232
233endfor;
234
235$show_tour .= '</tbody>
236</table>';
237
238return $show_tour;
239
240} // Конец функции
241
242
243
244
245
246
247
248
249
250
251/**
252* ------------------------------------------------
253* Функция вывода Туров по ID Отеля
254* Операторы: ТУИ
255* Версия системы: 1.0
256* @return array
257* ------------------------------------------------
258*/
259public function get_tours_tui( $id_hotel, $price_from, $price_to, $nightsMax, $cityId, $countryId, $dateMin, $dateMax, $locality_from, $nights, $adult, $child, $ages_res, $tui_meal, $tui_type_tours, $tui_hotel_cats ) {
260
261// Token
262$token = '';
263
264$typetour = 0;
265
266
267$url2 = "http://b2b.tuibaltics.eu/export/default.php?";
268$fields2 = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_PRICES&TOWNFROMINC=$cityId&STATEINC=$countryId";
269$fields2 .= "&CHECKIN_BEG=$dateMin_TUI&CHECKIN_END=$dateMax_TUI&NIGHTS_FROM=7&NIGHTS_TILL=$nights&ADULT=$adult&CHILD=$child&AGES=$ages_res&CURRENCY=2&COSTMIN=$price_from&COSTMAX=$price_to&PRICEPAGE=1&MEALS=$tui_meal";
270$fields2 .= "&SORT=DESC&PACKET=$tui_type_tours&STARS=$tui_hotel_cats&TOURTYPE=$typetour";
271
272$response_tui2 = file_get_contents($url2.$fields2);
273$out_2 = json_decode($response_tui2, true);
274
275$show_tours_tui = '
276<table class="table table-sm">
277<thead class="thead-light">
278<tr>
279 <th> ID </th>
280 <th> Отель </th>
281 <th> Тур </th>
282 <th> Номер </th>
283 <th> Стоимость </th>
284 <th> </th>
285</tr>
286</thead>
287<tbody>';
288
289for( $i3 = 0; $i3 < count($out_2['SearchTour_PRICES']['prices']); $i3++ ) :
290
291if( $i3 > 10 ) $show_tours_tui .= '';
292else {
293
294if( $out_2['SearchTour_PRICES']['prices'][$i3]['hotelKey'] == $id_hotel ) { // start id_tour hotel
295
296$show_tours_tui .= '
297<tr>
298<td> '. $out_2['SearchTour_PRICES']['prices'][$i3]['hotelKey'] .' </td>
299<td> <a target="_blanc" class="text-primary text-decoration-none" href="/?action=details&id='. $i .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&price_from='.$price_from.'&price_to='.$price_to.'&locality_from='.$locality_from.'&input_price='.$out['SearchTour_PRICES']['prices'][$i]['price'].'&date_end='.$dateMax.'&date_min='.$dateMin.'&meal='.$tui_meal.'&adult='.$adult.'&child='.$child.'&ages='.$age_res.'&packet='.$tui_type_tours.'&stars='.$tui_hotel_cats.'">
300'. $out_2['SearchTour_PRICES']['prices'][$i3]['hotel'] .' </a> </td>
301<td> '. $out_2['SearchTour_PRICES']['prices'][$i3]['tour'] .' </td>
302<td> '. $out_2['SearchTour_PRICES']['prices'][$i3]['room'] .' </td>
303<td> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $out_2['SearchTour_PRICES']['prices'][$i3]['price'], 0, "", " ") .' </b> </span> <span class="text-muted"> '. $out_2['SearchTour_PRICES']['prices'][$i3]['currency'] .' </span> </td>
304<td> <a target="_blanc" href="/?action=details&id='. $i .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&price_from='.$price_from.'&price_to='.$price_to.'&locality_from='.$locality_from.'&input_price='.$out['SearchTour_PRICES']['prices'][$i]['price'].'&date_end='.$dateMax.'&date_min='.$dateMin.'&meal='.$tui_meal.'&adult='.$adult.'&child='.$child.'&ages='.$age_res.'&packet='.$tui_type_tours.'&stars='.$tui_hotel_cats.'" class="btn btn-dark btn-sm"> Подробнее </a> </td>
305</tr>';
306
307 } // end id_tour hotel
308 else $show_tours_tui .= '';
309}
310
311endfor;
312
313$show_tours_tui .= '</tbody>
314</table>';
315
316return $show_tours_tui;
317
318} // Конец функции
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335/**
336* ------------------------------------------------
337* Разрабокта системы вывода туров в календаре по ценам
338* Операторы: ТУИ, ТЕЗ-ТУР
339* Версия системы: 1.0
340* @return array
341* ------------------------------------------------
342*/
343public function Tui() {
344 if( isset($_POST['submit']) ) :
345
346 // Basic
347 $token = self::TOKEN_TUI; // TOKEN для оператора TUI
348 $tui_version = '1.0'; // Версия API для оператора TUI
349 $tez_version = '2'; // Версия API для ТЕЗ-ТУР
350
351// Params
352
353// Страна прилета
354$stateinc = $_POST['stateinc']; // ...
355
356// Показать лучше
357$better = $_POST['better']; // ...
358if( $better == '' ) $better = 'false';
359else $better = 'true';
360
361// Call func country multiple
362$arr = $this->stateinc_multiple([
363 "country" => $stateinc,
364]);
365$tui_stateinc = $arr['tui'];
366$tez_stateinc = $arr['tez'];
367// $kodi_stateinc = $arr['koditour'];
368
369
370
371
372// --- Категория отелей (звёздность) ---
373if( $_POST['hotels_cats'] == '' ) {
374 $tui_hotel_cats = '10003';
375 $tez_hotel_cats = '2568';
376} else {
377 $arr_1 = $this->hotels_cat_multiple();
378 $tui_hotel_cats = $arr_1['tui']['cats'][$_POST['hotels_cats']];
379 $tez_hotel_cats = $arr_1['tez']['cats'][$_POST['hotels_cats']];
380}
381
382
383
384// Тип тура (полный пакет, проживание, перелёт)
385if( $_POST['typeTour'] == '' ) {
386 $tui_type_tours = '0';
387 $tez_type_tours = '1';
388} else {
389 $arr_2 = $this->type_tours_multiple();
390 $tui_type_tours = $arr_2['tui']['type'][$_POST['typeTour']];
391 $tez_type_tours = $arr_2['tez']['type'][$_POST['typeTour']];
392}
393
394
395
396// --- Тип Питания операторов ---
397if( $_POST['meal'] == '' ) {
398 $tui_meal = '10004';
399 $tez_meal = '5737';
400 $kodi_meal = '...';
401} else {
402 $arr_4 = $this->meals_multiple();
403 $tui_meal = $arr_4['tui'][$_POST['meal']];
404 $tez_meal = $arr_4['tez'][$_POST['meal']];
405 $kodi_meal = $arr_4['koditour'][$_POST['meal']];
406}
407
408
409// Дети кол-во
410$child = $_POST['child'];
411if( $child == '' or $child == '3_del' ) $child = 0;
412else $child = $child;
413
414
415
416// Дети кол-во, параметер для опертора TUI
417$age = $_POST['age'];
418if( $age == '' ) {
419 $age_res = '';
420} else {
421 $age_res = '';
422 foreach ($age as $key => $val ) {
423 if( $val == end($age) ) $age_res .= $val.'';
424 else $age_res .= $val.',';
425 }
426}
427
428
429
430
431
432// --- Преобразование возраса в дату рождения для оператора TEZ-TOUR ---
433$date_now = date("Y-m-d");
434$date_1 = date_create($date_now);
435
436$birthdays_out = '';
437foreach( $age as $key => $val2 ) {
438
439 if( $val2 == end($age) ) {
440 $date_1->modify("-$val2 year");
441 $date_out = $date_1->format('Y-m-d');
442 $birthdays_out .= $date_out."";
443 } else {
444 $date_1->modify("-$val2 year");
445 $date_out = $date_1->format('Y-m-d');
446 $birthdays_out .= $date_out.",";
447 }
448
449}
450
451
452
453
454
455// Значения из фильтра
456$dates = $_POST['dateMin'];
457
458// Значения даты по умолчанию для TUI
459$dates_items = explode( "-", $dates );
460$dateMin = $dates_items[0];
461$dateMax = $dates_items[1];
462
463
464if( $dateMin == '' ) $dateMin = date("y").''.date("m").''.date("d");
465else {
466 $dateMin = explode( ".", $dateMin );
467 $dateMin_TUI = $dateMin[2] . "" . $dateMin[1] . "" . $dateMin[0];
468}
469if( $dateMax == '' ) $dateMax = date("y").''.date("m").'18';
470else {
471 $dateMax = explode( ".", $dateMax );
472 $dateMax_TUI = $dateMax[2] . "" . $dateMax[1] . "" . $dateMax[0];
473}
474
475
476
477// Params search
478// $town = explode( "-", $_POST['townfrominc'] );// !!!! Не нужная переменная, возможно потребуется удалить, нужно проверить.
479$townfrominc = '387442'; // $town[0];
480$locality_from = 'Таллин'; // $town[1];
481
482
483
484// Params Filter
485$price_from = $_POST['price_from'];
486$price_to = $_POST['price_to'];
487
488/*
489if( $_POST['price_from'] == '' ) $price_from = 0;
490else $price_from = $_POST['price_from'];
491if( $_POST['price_to'] == '' ) $price_to = 15000;
492else $price_to = $_POST['price_to'];
493*/
494
495// Количество ночей
496$nights = $_POST['nights'];
497if( $nights == '' ) $nights = 7;
498else $nights = $nights;
499
500// Количество гостей (Взрослых)
501$adult = $_POST['adult'];
502if( $adult == '' ) $adult = 1;
503else $adult = $adult;
504
505$typetour = 0;
506
507
508
509/**
510* Основной метода поиска
511* TUI
512*/
513$url = "http://b2b.tuibaltics.eu/export/default.php?";
514$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_PRICES&TOWNFROMINC=$townfrominc&STATEINC=$tui_stateinc";
515$fields .= "&CHECKIN_BEG=$dateMin_TUI&CHECKIN_END=$dateMax_TUI&NIGHTS_FROM=7&NIGHTS_TILL=$nights&ADULT=$adult&CHILD=$child&AGES=$ages_res&CURRENCY=2&COSTMIN=$price_from&COSTMAX=$price_to&PRICEPAGE=1&MEALS=$tui_meal";
516$fields .= "&SORT=ASC&PACKET=$tui_type_tours&STARS=$tui_hotel_cats&TOURTYPE=$typetour";
517
518$response = file_get_contents($url.$fields);
519$out = json_decode($response, true);
520
521
522
523
524
525
526
527
528
529/**
530* Основной метод поиска ТЕЗ ТУР
531* TEZ-TOUR
532*/
533// Currency
534if( $tez_stateinc == 12695 ) $currency = 5561;
535else $currency = 18864;
536
537
538// Кол-во ночей
539$nightsMax = $_POST['nights'];
540if( $nightsMax == '' ) $nightsMax = 14;
541else $nightsMax = $nightsMax;
542
543
544
545
546// Оперции с Датами мин и макс TEZ
547// Значения из фильтра
548$dates = trim($_POST['dateMin']);
549$dates_items = explode( "-", $dates );
550$dateMin = $dates_items[0];
551$dateMax = $dates_items[1];
552
553if( $dateMin == '' ) $dateMin = date("d").'.'. date("m") .'.'.date("y");
554else {
555 $dateMin = $dateMin;
556}
557if( $dateMax == '' ) $dateMax = '18.'. date("m") .'.'.date("y");
558else {
559 $dateMax = $dateMax;
560}
561
562
563
564// Цены
565if( $_POST['price_from'] == '' ) $price_from = 500; // ...
566else $price_from = $_POST['price_from'];
567if( $_POST['price_to'] == '' ) $price_to = 1350; // ...
568else $price_to = $_POST['price_to'];
569
570
571$cityId = 345; // Город отправки по умолчанию Таллин
572$countryId = $tez_stateinc; // Страна прибытия
573
574
575// Region ID, 2C14358 - Тайланд, Португалия - 132579, Кипр - 7067673, Болгария - 158976
576if( $tez_stateinc == 12695 ) $region_id = '2C14358';
577else {
578 if( $_POST['regions'] != '' ) $region_id = $_POST['regions'];
579 else $region_id = '';
580}
581
582
583$url_tez = 'https://search.tez-tour.com/tariffsearch/getResult?priceMin='.$price_from.'&priceMax='.$price_to.'¤cy='.$currency.'&nightsMin=6&nightsMax='.$nightsMax.'&hotelClassId='.$tez_hotel_cats.'&tourType='.$tez_type_tours.'&locale=ru&cityId='.$cityId.'&countryId='.$countryId.'&after='.$dateMin.'&before='.$dateMax.'&tourId='.$region_id.'&hotelClassBetter=false&rAndBBetter='.$better.'&hotelInStop=false&specialInStop=false&noTicketsTo=false&noTicketsFrom=false&promoFlag=true&version='.$tez_version.'&searchTypeId=6&groupByHotel=2&accommodationId=2&rAndBId='.$tez_meal.'&birthdays='.$birthdays_out;
584
585$ch = curl_init();
586 curl_setopt_array($ch, array(
587 CURLOPT_URL => $url_tez,
588 CURLOPT_RETURNTRANSFER => true,
589 CURLOPT_ENCODING => "",
590 CURLOPT_MAXREDIRS => 10,
591 CURLOPT_TIMEOUT => 0,
592 CURLOPT_FOLLOWLOCATION => true,
593 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
594 CURLOPT_CUSTOMREQUEST => "GET",
595));
596$out_tez = curl_exec($ch);
597curl_close($ch);
598$response = json_decode($out_tez, true);
599
600
601
602
603
604
605
606
607
608
609
610
611/**
612* Выводим общее количество результатов всех операторов (TUI + TEZ-TOUR)
613*
614*/
615$tui_total = count($out['SearchTour_PRICES']['prices']);
616$tez_total = $response['info'][1][1];
617$total_out = $tui_total + $tez_total;
618$total_result_operators = '<h5 class="mt-3 text-right"> <span class="text-muted">Всего туров найдено:</span> <span class="dashed text-dark bold">'. $total_out .'</span> </h5>';
619// Всего найдено
620echo $total_result_operators;
621
622
623
624
625
626
627
628
629
630
631
632
633
634/**
635* Выводим результаты от TUI
636*
637*/
638// Выводим список туров (ТУИ)
639for( $i = 0; $i < count($out['SearchTour_PRICES']['prices']); $i++ ) :
640
641if( $i > 80 ) echo '';
642else { // limit count array
643
644$arr = str_split( $out['SearchTour_PRICES']['prices'][$i]['checkIn'] );
645$arr2 = str_split( $out['SearchTour_PRICES']['prices'][$i]['checkOut'] );
646
647echo '
648<div class="card my-3 card-body">
649<p> ';
650
651$total_stars = explode("*", $out['SearchTour_PRICES']['prices'][$i]['star'] );
652
653for( $star = 0; $star < $total_stars[0]; $star++ ) {
654
655if( $total_stars[0] == 3 ) $warning = 'text-warning';
656else if( $total_stars[0] < 3 ) $warning = 'text-danger';
657else if( $total_stars[0] > 3 ) $warning = 'text-success';
658
659 echo ' <i id="t-'.$star.'" class="fa '.$warning.' fa-star fa-lg"></i> ';
660}
661
662echo '
663 ('. $total_stars[0] .') </p>
664<h5 class="card-title text-primary">
665
666<a target="_blanc" class="text-primary text-decoration-none" href="/?action=details&id='. $i .'&townfrominc='. $townfrominc .'&stateinc='. $tui_stateinc .'&nights='.$nights.'&typetour='.$typetour.'&price_from='.$price_from.'&price_to='.$price_to.'&locality_from='.$locality_from.'&input_price='.$out['SearchTour_PRICES']['prices'][$i]['price'].'&date_end='.$dateMax_TUI.'&date_min='.$dateMin_TUI.'&meal='.$tui_meal.'&adult='.$adult.'&child='.$child.'&ages='.$age_res.'&packet='.$tui_type_tours.'&stars='.$tui_hotel_cats.'">
667
668
669'. $out['SearchTour_PRICES']['prices'][$i]['hotel'] .' </a> </h5>
670<p class="card-subtitles text-secondary"> Тур: '. $out['SearchTour_PRICES']['prices'][$i]['tour'] .'</p>
671
672<div class="row">
673<div class="col-md-5">
674
675 <img src="images/default_hotel_img.jpg" width="300" height="300" alt="images/default_hotel_img.jpg" class="img-fluid" />
676
677</div>
678
679<div class="col-md-7">
680
681<div class="row">
682<div class="col">
683
684<p class="mt-3"> <span class="badge badge-info p-2"> '. $out['SearchTour_PRICES']['prices'][$i]['meal'] .' <span> </p>
685<p class="mt-3"> <span class="text-muted"> Номер: </span> '. $out['SearchTour_PRICES']['prices'][$i]['room'] .'</p>
686
687</div>
688<div class="col">
689
690<p class="mt-3"> <span class="text-muted"> Дата заезда: </span> '. $arr[0].$arr[1].$arr[2].$arr[3] .' '. $arr[4].$arr[5] .' '. $arr[6].$arr[7] .' </p>
691<p class="mt-3"> <span class="text-muted"> Дата выезда: </span> '. $arr2[0].$arr2[1].$arr2[2].$arr2[3] .' '. $arr2[4].$arr2[5] .' '. $arr2[6].$arr2[7] .' </p>
692
693</div>
694</div>
695
696
697<div class="row">
698<div class="col">
699
700<p class="mt-3"> <span class="text-muted"> <i class="fa fa-map-marker text-primary fa-lg"></i> </span> '. $out['SearchTour_PRICES']['prices'][$i]['town'] .' </p>
701
702</div>
703
704<div class="col">
705<p class="text-right"> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $out['SearchTour_PRICES']['prices'][$i]['price'], 0, "", " ") .' </b> </span> <span class="text-muted"> '. $out['SearchTour_PRICES']['prices'][$i]['currency'] .' </span> </p>
706<p class="text-right">
707 <a onclick="button_readmore( '.$i.' );" data-toggle="collapse" href="#collapseExample_'.$i.'" role="button" aria-expanded="false" aria-controls="collapseExample_'.$i.'" class="btn btn-in btn-sm"> Посмотреть <i id="button-readmore-'.$i.'" class="fa fa-angle-down fa-sm ml-1"></i> </a> </a>
708</p>
709</div>
710</div>
711
712
713</div>
714</div>
715
716
717
718<!-- Вывод Таблицы с Турами по Отелю -->
719<div class="collapse" id="collapseExample_'.$i.'">
720 <div class="card card-body">
721
722
723'. $this->get_tours_tui( $out['SearchTour_PRICES']['prices'][$i]['hotelKey'], $price_from, $price_to, $nightsMax, $townfrominc, $tui_stateinc, $dateMin_TUI, $dateMax_TUI, $locality_from, $nights, $adult, $child, $ages_res, $tui_meal, $tui_type_tours, $tui_hotel_cats ) .'
724
725
726 </div>
727</div>
728<!-- /. Вывод Таблицы с Турами по Отелю -->
729
730
731
732<small class="text-black-50"> ID: '. $out['SearchTour_PRICES']['prices'][$i]['hotelKey'] .' </small>
733</div>
734';
735
736
737
738// Вставляем минимальную цену в форму Фильтра (TUI)
739if( $i == 0 ) {
740 echo '
741 <script>
742 setTimeout(function() {
743 $("#price_from").val("'.$out['SearchTour_PRICES']['prices'][$i]['price'].'");
744 }, 1500);
745 </script>';
746}
747
748} // limit count array end
749
750endfor;
751
752
753
754
755
756
757
758
759/**
760* Выводим результаты от TEZ-TOUR
761*
762*/
763// Выводим список туров
764for( $i = 0; $i < $response['info'][1][1]; $i++ ) :
765
766if( $i > 50 ) echo '';
767else {
768
769
770
771 echo '
772 <div class="card my-3 card-body">
773
774 <h5 class="card-title text-primary">
775
776 <a target="_blanc" class="text-primary text-decoration-none" href="/?action=details&id='. $i .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&locality_from='.$locality_from.'&input_price='.$response['data'][$i][10]['total'].'&hotel_cat='.$tez_hotel_cats.'&meal='.$tez_meal.'&tour_type='.$tez_type_tours.'&date_start='.$dateMin.'&date_end='.$dateMax.'&tz=1"> '. $response['data'][$i][6][1] .' </a>
777
778 </h5>
779
780 <p class="card-subtitles text-secondary"> </p>
781
782 <div class="row">
783 <div class="col-md-5">
784
785 <img src="' . $response['data'][$i][6][2] . '" alt="..." class="img-fluid" />
786
787 </div>
788
789 <div class="col-md-7">
790
791 <div class="row">
792 <div class="col">
793
794 <p class="mt-3"> <span class="badge badge-info p-2"> '. $response['data'][$i][7][0] .' <span> </p>
795 <p class="mt-3"> <span class="text-muted"> Номер: </span> '. $response['data'][$i][7][1] .'</p>
796
797 </div>
798 <div class="col">
799
800 <p class="mt-3"> <span class="text-muted"> Дата заезда: </span> '. $response['data'][$i][0] . ' </p>
801 <p class="mt-3"> <span class="text-muted"> Дата выезда: </span> '. $response['data'][$i][4] . '.' . date("Y") .' </p>
802
803 </div>
804 </div>
805
806
807 <div class="row">
808 <div class="col">
809
810 <p class="mt-3"> <span class="text-muted"> <i class="fa fa-map-marker text-primary fa-lg"></i> </span> '. $response['data'][$i][5][1] .' </p>
811
812 </div>
813
814 <div class="col">
815 <p class="text-right"> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $response['data'][$i][10]['total'] , 0, "", " ") .' </b> </span> <span class="text-muted"> '. $response['data'][0][10]['currency'] .' </span> </p>
816 <p class="text-right">
817 <a onclick="button_readmore( '.$i.'0 );" data-toggle="collapse" href="#collapseExample_0'.$i.'" role="button" aria-expanded="false" aria-controls="collapseExample_0'.$i.'" class="btn btn-in btn-sm"> Посмотреть <i id="button-readmore-'.$i.'0" class="fa fa-angle-down fa-sm ml-1"></i> </a>
818 </p>
819 </div>
820 </div>
821
822
823 </div>
824 </div>
825
826
827<!-- Вывод Таблицы с Турами по Отелю -->
828<div class="collapse" id="collapseExample_0'.$i.'">
829 <div class="card card-body">
830
831
832'. $this->get_tours_tez( $response['data'][$i][6][1], $price_from, $price_to, $nightsMax, $cityId, $countryId, $dateMin, $dateMax, $region_id, $locality_from, $nights, $typetour, $tez_version, $tez_meal, $tez_hotel_cats, $tez_type_tours ) .'
833
834
835 </div>
836</div>
837<!-- /. Вывод Таблицы с Турами по Отелю -->
838
839
840 <small class="text-black-50"> ID: '. $response['data'][$i][5][2] .' </small>
841 </div>
842 ';
843
844}
845endfor;
846
847
848
849
850
851
852
853
854
855 endif; // Конец проверки на отправку формы
856} // Конец функции
857
858/* =================== КОНЕЦ Основной метод поиска по Турам ================== */
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873// Details page TUI
874public function Tui_details_page() {
875
876$token = self::TOKEN_TUI;
877
878// Params search
879$townfrominc = $_GET['townfrominc'];
880$stateinc = $_GET['stateinc'];
881
882// Params Filter
883$price_from = ''; //$_GET['price_from'];
884$price_to = ''; // $_GET['price_to'];
885
886$typetour = 0;
887
888$date_start = $_GET['date_min'];
889$date_end = $_GET['date_end'];
890
891$nights = $_GET['nights'];
892if( $$nights == '' ) $nights = 7;
893else $nights = $nights;
894
895$adult = $_GET['adult'];
896$child = $_GET['child'];
897$ages_res = $_GET['ages'];
898$tui_meal = $_GET['meal'];
899$tui_type_tours = $_GET['packet'];
900$tui_hotel_cats = $_GET['stars'];
901
902$i = $_GET['id'];
903
904
905/**
906* Основной метода поиска
907* TUI
908*/
909$url = "http://b2b.tuibaltics.eu/export/default.php?";
910$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_PRICES&TOWNFROMINC=$townfrominc&STATEINC=$stateinc";
911$fields .= "&CHECKIN_BEG=$date_start&CHECKIN_END=$date_end&NIGHTS_FROM=7&NIGHTS_TILL=$nights&ADULT=$adult&CHILD=$child&AGES=$ages_res&CURRENCY=2&COSTMIN=$price_from&COSTMAX=$price_to&PRICEPAGE=1&MEALS=$tui_meal";
912$fields .= "&SORT=ASC&PACKET=$tui_type_tours&STARS=$tui_hotel_cats&TOURTYPE=$typetour";
913
914$response = file_get_contents($url.$fields);
915$out = json_decode($response, true);
916
917// ID Тура значение для Агентства добавляется в заказы
918$for_agency = $out['SearchTour_PRICES']['prices'][$i]['id'];
919$location_to = $out['SearchTour_PRICES']['prices'][$i]['town'];
920echo '
921<script>
922 setTimeout(function(){
923 $("#id_tour").val("'.$for_agency.'");
924 $("#location_to").val("'.$location_to.'");
925 }, 100);
926</script>
927';
928
929
930$arr = str_split( $out['SearchTour_PRICES']['prices'][$i]['checkIn'] );
931$arr2 = str_split( $out['SearchTour_PRICES']['prices'][$i]['checkOut'] );
932
933
934echo '
935<div class="card my-3 card-body">
936<p> ';
937
938$total_stars = explode("*", $out['SearchTour_PRICES']['prices'][$i]['star'] );
939
940for( $star = 0; $star < $total_stars[0]; $star++ ) {
941
942if( $total_stars[0] == 3 ) $warning = 'text-warning';
943else if( $total_stars[0] < 3 ) $warning = 'text-danger';
944else if( $total_stars[0] > 3 ) $warning = 'text-success';
945
946 echo ' <i id="t-'.$star.'" class="fa '.$warning.' fa-star fa-lg"></i> ';
947}
948
949echo '
950 ('. $total_stars[0] .') </p>
951<h5 class="card-title text-primary"> '. $out['SearchTour_PRICES']['prices'][$i]['hotel'] .' </h5>
952<p class="card-subtitles text-secondary"> Тур: '. $out['SearchTour_PRICES']['prices'][$i]['tour'] .'</p>
953
954<div class="row">
955<div class="col-md-5">
956
957<img src="images/default_hotel_img.jpg" width="300" height="300" alt="..." class="img-fluid" />
958
959</div>
960
961<div class="col-md-7">
962
963<div class="row">
964<div class="col">
965
966<p class="mt-3"> <span class="badge badge-info p-2"> '. $out['SearchTour_PRICES']['prices'][$i]['meal'] .' <span> </p>
967<p class="mt-3"> <span class="text-muted"> Номер: </span> '. $out['SearchTour_PRICES']['prices'][$i]['room'] .'</p>
968
969</div>
970<div class="col">
971
972<p class="mt-3"> <span class="text-muted"> Дата заезда: </span> '. $arr[0].$arr[1].$arr[2].$arr[3] .' '. $arr[4].$arr[5] .' '. $arr[6].$arr[7] .' </p>
973<p class="mt-3"> <span class="text-muted"> Дата выезда: </span> '. $arr2[0].$arr2[1].$arr2[2].$arr2[3] .' '. $arr2[4].$arr2[5] .' '. $arr2[6].$arr2[7] .' </p>
974
975</div>
976</div>
977
978
979<div class="row">
980<div class="col">
981
982<p class="mt-3"> <span class="text-muted"> <i class="fa fa-map-marker text-primary fa-lg"></i> </span> '. $out['SearchTour_PRICES']['prices'][$i]['town'] .' </p>
983
984</div>
985
986<div class="col">
987<p class="text-right"> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $out['SearchTour_PRICES']['prices'][$i]['price'], 0, "", " ") .' </b> </span> <span class="text-muted"> '. $out['SearchTour_PRICES']['prices'][$i]['currency'] .' </span> </p>
988</div>
989</div>
990
991
992</div>
993</div>
994<small class="text-black-50"> ID: '. $out['SearchTour_PRICES']['prices'][$i]['hotelKey'] .' </small>
995</div>
996';
997
998
999echo '<br />';
1000echo 'ID: '.$i." <br />";
1001echo 'Meal: '.$tui_meal." <br />";
1002echo 'stateinc: '.$stateinc." <br />";
1003
1004
1005}
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017// Details page TEZ-TOUR
1018public function Tez_details_page() {
1019
1020$tez_version = '2'; // version
1021$tez_meal = $_GET['meal'];
1022$tez_hotel_cats = $_GET['hotel_cat'];
1023$tez_type_tours = $_GET['tour_type'];
1024
1025$dateMin = $_GET['date_start'];
1026$dateMax = $_GET['date_end'];
1027
1028// Кол-во ночей
1029$nightsMax = $_GET['nights'];
1030if( $nightsMax == '' ) $nightsMax = 14;
1031else $nightsMax = $nightsMax;
1032
1033
1034// Цены
1035if( $_GET['price_from'] == '' ) $price_from = 0; // ...
1036else $price_from = $_GET['price_from'];
1037if( $_GET['price_to'] == '' ) $price_to = 15000; // ...
1038else $price_to = $_GET['price_to'];
1039
1040
1041$cityId = 345;
1042$countryId = $_GET['stateinc'];
1043
1044// Currency
1045if( $countryId == 12695 ) $currency = 5561;
1046else $currency = 18864;
1047
1048// Region ID, 2C14358 - Тайланд, Португалия - 132579, Кипр - 7067673
1049if( $countryId == 12695 ) $region_id = '2C14358';
1050else $region_id = '';
1051
1052
1053$url_tez = 'https://search.tez-tour.com/tariffsearch/getResult?priceMin='.$price_from.'&priceMax='.$price_to.'¤cy='.$currency.'&nightsMin=6&nightsMax='.$nightsMax.'&hotelClassId='.$tez_hotel_cats.'&tourType='.$tez_type_tours.'&locale=ru&cityId='.$cityId.'&countryId='.$countryId.'&after='.$dateMin.'&before='.$dateMax.'&tourId='.$region_id.'&hotelClassBetter=false&rAndBBetter=false&hotelInStop=false&specialInStop=false&noTicketsTo=false&noTicketsFrom=false&promoFlag=true&version='.$tez_version.'&searchTypeId=6&groupByHotel=2&accommodationId=2&rAndBId='.$tez_meal.'&birthdays=';
1054
1055$ch = curl_init();
1056 curl_setopt_array($ch, array(
1057 CURLOPT_URL => $url_tez,
1058 CURLOPT_RETURNTRANSFER => true,
1059 CURLOPT_ENCODING => "",
1060 CURLOPT_MAXREDIRS => 10,
1061 CURLOPT_TIMEOUT => 0,
1062 CURLOPT_FOLLOWLOCATION => true,
1063 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
1064 CURLOPT_CUSTOMREQUEST => "GET",
1065));
1066$out = curl_exec($ch);
1067curl_close($ch);
1068$response = json_decode($out, true);
1069
1070// [..]
1071$i = $_GET['id'];
1072
1073// ID Тура значение для Агентства добавляется в заказы
1074$for_agency = $response['data'][$i][5][2];
1075$location_to = $response['data'][$i][5][1];
1076echo '
1077<script>
1078 setTimeout(function(){
1079 $("#id_tour").val("'.$for_agency.'");
1080 $("#location_to").val("'.$location_to.'");
1081 }, 100);
1082</script>
1083';
1084
1085
1086// праавильная краточка
1087echo '
1088<div class="card my-3 card-body">
1089<h5 class="card-title text-primary"> '. $response['data'][$i][6][1] .' </h5>
1090
1091<div class="row">
1092<div class="col-md-5">
1093
1094 <img src="' . $response['data'][$i][6][2] . '" alt="..." class="img-fluid" />
1095
1096</div>
1097
1098<div class="col-md-7">
1099
1100<div class="row">
1101<div class="col">
1102
1103<p class="mt-3"> <span class="badge badge-info p-2"> '. $response['data'][$i][7][0] .' <span> </p>
1104<p class="mt-3"> <span class="text-muted"> Номер: </span> '. $response['data'][$i][7][1] .' </p>
1105
1106</div>
1107<div class="col">
1108
1109<p class="mt-3"> <span class="text-muted"> Дата заезда: </span> '. $response['data'][$i][0] . ' </p>
1110<p class="mt-3"> <span class="text-muted"> Дата выезда: </span> '. $response['data'][$i][4] . '.' . date("Y") .' </p>
1111
1112</div>
1113</div>
1114
1115
1116<div class="row">
1117<div class="col">
1118
1119<p class="mt-3"> <span class="text-muted"> <i class="fa fa-map-marker text-primary fa-lg"></i> </span> '. $response['data'][$i][5][1] .' </p>
1120
1121</div>
1122
1123<div class="col">
1124<p class="text-right"> <span style="font-size:18pt;" class="text-success"> <b> '. number_format( $response['data'][$i][10]['total'] , 0, "", " ") .' </b> </span> <span class="text-muted"> '. $response['data'][0][10]['currency'] .' </span> </p>
1125</div>
1126</div>
1127
1128
1129</div>
1130</div>
1131<small class="text-black-50"> ID: '. $response['data'][$i][5][2] .' </small>
1132</div>
1133';
1134
1135}
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147// Города вылета
1148public function get_list_towns() {
1149
1150$token = self::TOKEN_TUI;
1151$url = "http://b2b.tuibaltics.eu/export/default.php?";
1152$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_TOWNFROMS";
1153
1154
1155$response = file_get_contents($url.$fields);
1156$out = json_decode($response, true);
1157
1158
1159 for( $i = 0; $i < count($out['SearchTour_TOWNFROMS']); $i++ ) {
1160
1161 echo '<option value="'. $out['SearchTour_TOWNFROMS'][$i]['id'] .'-'. $out['SearchTour_TOWNFROMS'][$i]['nameAlt'] .'"> '. $out['SearchTour_TOWNFROMS'][$i]['nameAlt'] .' </option>';
1162
1163 }
1164}
1165
1166
1167
1168
1169
1170// Доступные страны прилета
1171public function get_list_states() {
1172
1173$token = self::TOKEN_TUI;
1174$url = "http://b2b.tuibaltics.eu/export/default.php?";
1175$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_STATES&TOWNFROMINC=387442";
1176
1177$response = file_get_contents($url.$fields);
1178$out = json_decode($response, true);
1179
1180 echo '<option value="12695">Тайланд</option>';
1181 echo '<option value="132579">Португалия</option>';
1182 echo '<option value="7067673">Кипр</option>';
1183 echo '<option value="158976">Болгария</option>';
1184 for( $i = 0; $i < count($out['SearchTour_STATES']); $i++ ) {
1185
1186 echo '<option value="'. $out['SearchTour_STATES'][$i]['id'] .'"> '. $out['SearchTour_STATES'][$i]['nameAlt'] .' - '.$out['SearchTour_STATES'][$i]['id'].' </option>';
1187
1188 }
1189}
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202/**
1203* Вывод Лучших предложений на главной TEZ (Тайланд)
1204*/
1205public function best_sales_tez() {
1206
1207$locality_from = 'Таллин'; // $town[1];
1208
1209 // Basic
1210 //$token = self::TOKEN_TUI; // TOKEN для оператора TUI
1211 //$tui_version = '1.0'; // Версия API для оператора TUI
1212 $tez_version = '2'; // Версия API для ТЕЗ-ТУР
1213
1214// Params
1215
1216// Страна прилета
1217$stateinc = 12695; //$_POST['stateinc'];
1218
1219
1220// Call func country multiple
1221$arr = $this->stateinc_multiple([
1222 "country" => $stateinc,
1223]);
1224$tui_stateinc = $arr['tui'];
1225$tez_stateinc = $arr['tez'];
1226// $kodi_stateinc = $arr['koditour'];
1227
1228
1229
1230
1231// --- Категория отелей (звёздность) ---
1232if( $_POST['hotels_cats'] == '' ) {
1233 $tui_hotel_cats = '10003';
1234 $tez_hotel_cats = '2568';
1235} else {
1236 $arr_1 = $this->hotels_cat_multiple();
1237 $tui_hotel_cats = $arr_1['tui']['cats'][$_POST['hotels_cats']];
1238 $tez_hotel_cats = $arr_1['tez']['cats'][$_POST['hotels_cats']];
1239}
1240
1241
1242
1243// Тип тура (полный пакет, проживание, перелёт)
1244if( $_POST['typeTour'] == '' ) {
1245 $tui_type_tours = '0';
1246 $tez_type_tours = '1';
1247} else {
1248 $arr_2 = $this->type_tours_multiple();
1249 $tui_type_tours = $arr_2['tui']['type'][$_POST['typeTour']];
1250 $tez_type_tours = $arr_2['tez']['type'][$_POST['typeTour']];
1251}
1252
1253
1254
1255// --- Тип Питания операторов ---
1256if( $_POST['meal'] == '' ) {
1257 $tui_meal = '10004';
1258 $tez_meal = '5737';
1259 $kodi_meal = '...';
1260} else {
1261 $arr_4 = $this->meals_multiple();
1262 $tui_meal = $arr_4['tui'][$_POST['meal']];
1263 $tez_meal = $arr_4['tez'][$_POST['meal']];
1264 $kodi_meal = $arr_4['koditour'][$_POST['meal']];
1265}
1266
1267
1268// Дети кол-во
1269$child = $_POST['child'];
1270if( $child == '' or $child == '3_del' ) $child = 0;
1271else $child = $child;
1272
1273
1274
1275// Дети кол-во, параметер для опертора TUI
1276$age = $_POST['age'];
1277if( $age == '' ) {
1278 $age_res = '';
1279} else {
1280 $age_res = '';
1281 foreach ($age as $key => $val ) {
1282 if( $val == end($age) ) $age_res .= $val.'';
1283 else $age_res .= $val.',';
1284 }
1285}
1286
1287
1288
1289
1290
1291// --- Преобразование возраса в дату рождения для оператора TEZ-TOUR ---
1292$date_now = date("Y-m-d");
1293$date_1 = date_create($date_now);
1294
1295$birthdays_out = '';
1296foreach( $age as $key => $val2 ) {
1297
1298 if( $val2 == end($age) ) {
1299 $date_1->modify("-$val2 year");
1300 $date_out = $date_1->format('Y-m-d');
1301 $birthdays_out .= $date_out."";
1302 } else {
1303 $date_1->modify("-$val2 year");
1304 $date_out = $date_1->format('Y-m-d');
1305 $birthdays_out .= $date_out.",";
1306 }
1307
1308}
1309
1310
1311
1312
1313
1314// Значения из фильтра
1315
1316$dateMin = ''; //$dates_items[0];
1317$dateMax = ''; // $dates_items[1];
1318
1319
1320if( $dateMin == '' ) $dateMin = date("y").''.date("m").''.date("d");
1321else {
1322 $dateMin = explode( ".", $dateMin );
1323 $dateMin_TUI = $dateMin[2] . "" . $dateMin[1] . "" . $dateMin[0];
1324}
1325if( $dateMax == '' ) $dateMax = date("y").''.date("m").'18';
1326else {
1327 $dateMax = explode( ".", $dateMax );
1328 $dateMax_TUI = $dateMax[2] . "" . $dateMax[1] . "" . $dateMax[0];
1329}
1330
1331
1332
1333// Params search
1334// $town = explode( "-", $_POST['townfrominc'] );// !!!! Не нужная переменная, возможно потребуется удалить, нужно проверить.
1335$townfrominc = '387442'; // $town[0];
1336$locality_from = 'Таллин'; // $town[1];
1337
1338
1339// Params Filter
1340$price_from = $_POST['price_from'];
1341$price_to = $_POST['price_to'];
1342
1343
1344// Количество ночей
1345$nights = $_POST['nights'];
1346if( $nights == '' ) $nights = 7;
1347else $nights = $nights;
1348
1349
1350// Количество гостей (Взрослых)
1351$adult = $_POST['adult'];
1352if( $adult == '' ) $adult = 1;
1353else $adult = $adult;
1354
1355$typetour = 0;
1356
1357
1358
1359/**
1360* Основной метод поиска ТЕЗ ТУР
1361* TEZ-TOUR
1362*/
1363
1364$birthdays_out = '';
1365
1366$tez_stateinc = 12695;
1367
1368// Currency
1369if( $tez_stateinc == 12695 ) $currency = 5561;
1370else $currency = 18864;
1371
1372
1373// Кол-во ночей
1374$nightsMax = $_POST['nights'];
1375if( $nightsMax == '' ) $nightsMax = 14;
1376else $nightsMax = $nightsMax;
1377
1378
1379
1380
1381// Оперции с Датами мин и макс TEZ
1382// Значения из фильтра
1383$dates = trim($_POST['dateMin']);
1384$dates_items = explode( "-", $dates );
1385$dateMin = $dates_items[0];
1386$dateMax = $dates_items[1];
1387
1388if( $dateMin == '' ) $dateMin = date("d").'.'. date("m") .'.'.date("y");
1389else {
1390 $dateMin = $dateMin;
1391}
1392if( $dateMax == '' ) $dateMax = '18.'. date("m") .'.'.date("y");
1393else {
1394 $dateMax = $dateMax;
1395}
1396
1397
1398
1399// Цены
1400if( $_POST['price_from'] == '' ) $price_from = 500; // ...
1401else $price_from = $_POST['price_from'];
1402if( $_POST['price_to'] == '' ) $price_to = 1350; // ...
1403else $price_to = $_POST['price_to'];
1404
1405
1406$cityId = 345; // Город отправки по умолчанию Таллин
1407$countryId = $tez_stateinc; // Страна прибытия
1408
1409// Region ID, 2C14358 - Тайланд, Португалия - 132579, Кипр - 7067673, Болгария - 158976
1410if( $tez_stateinc == 12695 ) $region_id = '2C14358';
1411else $region_id = '';
1412
1413
1414$url_tez = 'https://search.tez-tour.com/tariffsearch/getResult?priceMin='.$price_from.'&priceMax='.$price_to.'¤cy='.$currency.'&nightsMin=6&nightsMax='.$nightsMax.'&hotelClassId='.$tez_hotel_cats.'&tourType='.$tez_type_tours.'&locale=ru&cityId='.$cityId.'&countryId='.$countryId.'&after='.$dateMin.'&before='.$dateMax.'&tourId='.$region_id.'&hotelClassBetter=false&rAndBBetter=false&hotelInStop=false&specialInStop=false&noTicketsTo=false&noTicketsFrom=false&promoFlag=true&version='.$tez_version.'&searchTypeId=6&groupByHotel=2&accommodationId=2&rAndBId='.$tez_meal.'&birthdays='.$birthdays_out;
1415
1416$ch = curl_init();
1417 curl_setopt_array($ch, array(
1418 CURLOPT_URL => $url_tez,
1419 CURLOPT_RETURNTRANSFER => true,
1420 CURLOPT_ENCODING => "",
1421 CURLOPT_MAXREDIRS => 10,
1422 CURLOPT_TIMEOUT => 0,
1423 CURLOPT_FOLLOWLOCATION => true,
1424 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
1425 CURLOPT_CUSTOMREQUEST => "GET",
1426));
1427$out_tez = curl_exec($ch);
1428curl_close($ch);
1429$response = json_decode($out_tez, true);
1430
1431
1432// Сарт цикла
1433for( $i = 0; $i < 3; $i++ ) :
1434
1435// Новая карточка
1436echo '
1437<!--item -->
1438<div class="col-md-4">
1439<div class="card card-body shadow-sm my-3">
1440<div style="overflow:hidden;height:250px;">
1441 <img src="'. $response['data'][$i][6][2] .'" class="card-img-top" alt="..." />
1442</div>
1443<h5 class="card-title"> '. $response['data'][$i][6][1] .' </h5>
1444<p class="card-text mt-3"> <i class="fa-map-marker fa"></i> '. $response['data'][$i][5][1] .' <span class="float-right"> '. number_format( $response['data'][$i][10]['total'] , 0, "", " ") .' '. $response['data'][0][10]['currency'] .' </span> </p>
1445<p class="text-center">
1446
1447<a href="/?action=details&id='. $i .'&townfrominc='. $cityId .'&stateinc='. $countryId .'&nights='.$nights.'&typetour='.$typetour.'&locality_from='.$locality_from.'&input_price='.$response['data'][$i][10]['total'].'&tz=1" target="_blanc" class="btn btn-dark btn-block"> Выбрать тур </a> </p>
1448
1449
1450</div>
1451</div>
1452<!-- /. item -->
1453';
1454
1455endfor;
1456
1457}
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468/**
1469* TUI Лучшие предложения на главной TUI (Турция)
1470*/
1471public function best_sales_tui_turkey() {
1472
1473$token = self::TOKEN_TUI;
1474$url = "http://b2b.tuibaltics.eu/export/default.php?";
1475$typetour = 0;
1476
1477// Calendar...
1478$dateMin = $_POST['dateMin'];
1479$long = $_POST['long'];
1480
1481// Вычисление даты Дата вылета + кол-во дней тура
1482$date = date_create($dateMin);
1483$date->modify("+$long day");
1484$date_f = $date->format('Y-m-d');
1485$dateMin = str_replace("-", "", $date1 );
1486$dateMax = $date_f;
1487// end
1488
1489
1490if( $dateMin == '' ) $dateMin = '20200801';
1491else $dateMin = $dateMin;
1492if( $dateMax == '' ) $dateMax = '20200825';
1493else $dateMax = $dateMax;
1494
1495
1496// Params search
1497$town = explode( "-", $_POST['townfrominc'] );
1498$townfrominc = '387442'; // $town[0];
1499$locality_from = 'Таллин'; // $town[1];
1500
1501$stateinc = '18803';
1502
1503// Params Filter
1504$price_from = $_POST['price_from'];
1505$price_to = $_POST['price_to'];
1506
1507$nights = $_POST['nights'];
1508if( $nights == '' ) $nights = 7;
1509else $nights = $nights;
1510
1511
1512/**
1513* Основной метода поиска
1514* TUI
1515*/
1516$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_PRICES&TOWNFROMINC=$townfrominc&STATEINC=$stateinc";
1517$fields .= "&CHECKIN_BEG=$dateMin&CHECKIN_END=$dateMax&NIGHTS_FROM=7&NIGHTS_TILL=$nights&ADULT=2&CHILD=0&AGES=&CURRENCY=2&COSTMIN=$price_from&COSTMAX=$price_to&PRICEPAGE=1";
1518$fields .= "&SORT=DESC&TOURTYPE=$typetour";
1519
1520$response = file_get_contents($url.$fields);
1521$out = json_decode($response, true);
1522
1523for( $i = 0; $i < 3; $i++ ) :
1524
1525// Новая карточка
1526echo '
1527<!-- item -->
1528<div class="col-md-4">
1529<div class="card card-body shadow-sm my-3">
1530<div style="overflow:hidden;height:250px;">
1531 <img src="https://media-cdn.tripadvisor.com/media/photo-s/08/dd/04/af/concorde-de-luxe-resort.jpg" class="card-img-top" alt="..." />
1532</div>
1533<h5 class="card-title"> '. $out['SearchTour_PRICES']['prices'][$i]['hotel'] .' </h5>
1534<p class="card-text mt-3"> <i class="fa-map-marker fa"></i> '. $out['SearchTour_PRICES']['prices'][$i]['town'] .' <span class="float-right"> '. number_format( $out['SearchTour_PRICES']['prices'][$i]['price'] , 0, "", " " ) .' '. $out['SearchTour_PRICES']['prices'][$i]['currency'].' </span> </p>
1535<p class="text-center">
1536
1537<a href="/?action=details&id='. $i .'&townfrominc='. $townfrominc .'&stateinc='. $stateinc .'&nights='.$nights.'&typetour='.$typetour.'&price_from='.$price_from.'&price_to='.$price_to.'&locality_from='.$locality_from.'&input_price='.$out['SearchTour_PRICES']['prices'][$i]['price'].'" target="_blanc" class="btn btn-dark btn-block"> Выбрать тур </a> </p>
1538
1539</div>
1540</div>
1541<!-- /. item -->
1542';
1543
1544endfor;
1545
1546}
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560/**
1561* TUI Лучшие предложения на главной TUI (Греция)
1562*/
1563public function best_sales_tui_greece() {
1564
1565$token = self::TOKEN_TUI;
1566$url = "http://b2b.tuibaltics.eu/export/default.php?";
1567$typetour = 0;
1568
1569// Дата
1570$dateMin = '20200801';
1571$dateMax = '20200830';
1572
1573// Params search
1574$townfrominc = '387442'; // $town[0];
1575$locality_from = 'Таллин'; // $town[1];
1576
1577// Страна прилёта
1578$stateinc = '18741'; // 18747 - Испания, 18741 - Греция
1579
1580// Params Filter
1581$price_from = 0;
1582$price_to = 15000;
1583
1584// Nights
1585$nights = 7;
1586
1587
1588/**
1589* Основной метода поиска
1590* TUI
1591*/
1592$fields = "samo_action=api&version=1.0&oauth_token=$token&type=json&action=SearchTour_PRICES&TOWNFROMINC=$townfrominc&STATEINC=$stateinc";
1593$fields .= "&CHECKIN_BEG=$dateMin&CHECKIN_END=$dateMax&NIGHTS_FROM=7&NIGHTS_TILL=$nights&ADULT=2&CHILD=0&AGES=&CURRENCY=2&COSTMIN=$price_from&COSTMAX=$price_to&PRICEPAGE=1";
1594$fields .= "&SORT=DESC&TOURTYPE=$typetour";
1595
1596$response = file_get_contents($url.$fields);
1597$out = json_decode($response, true);
1598
1599for( $i = 0; $i < 3; $i++ ) :
1600
1601// Новая карточка
1602echo '
1603<!--item -->
1604<div class="col-md-4">
1605<div class="card card-body shadow-sm my-3">
1606<div style="overflow:hidden;height:250px;">
1607 <img src="https://media-cdn.tripadvisor.com/media/photo-s/08/dd/04/af/concorde-de-luxe-resort.jpg" class="card-img-top" alt="..." />
1608</div>
1609<h5 class="card-title"> '. $out['SearchTour_PRICES']['prices'][$i]['hotel'] .' </h5>
1610<p class="card-text mt-3"> <i class="fa-map-marker fa"></i> '. $out['SearchTour_PRICES']['prices'][$i]['town'] .' <span class="float-right"> '. number_format( $out['SearchTour_PRICES']['prices'][$i]['price'] , 0, "", " ") .' '. $out['SearchTour_PRICES']['prices'][$i]['currency'].' </span> </p>
1611<p class="text-center">
1612
1613<a href="/?action=details&id='. $i .'&townfrominc='. $townfrominc .'&stateinc='. $stateinc .'&nights='.$nights.'&typetour='.$typetour.'&price_from='.$price_from.'&price_to='.$price_to.'&locality_from='.$locality_from.'&input_price='.$out['SearchTour_PRICES']['prices'][$i]['price'].'" target="_blanc" class="btn btn-dark btn-block"> Выбрать тур </a> </p>
1614
1615</div>
1616</div>
1617<!-- /. item -->
1618';
1619
1620endfor;
1621
1622}
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637} // end class
1638?>