'5', 1 => '6'); $hotel_karakteristike['air_condition'] = array (0 => '35', 1 => '775'); $hotel_karakteristike['family'] = 842; $hotel_karakteristike['wellness'] = 140; $hotel_karakteristike['hall'] = 136; $hotel_karakteristike['free_kids7'] = 843; $hotel_karakteristike['free_kids8'] = 844; $hotel_karakteristike['free_kids9'] = 845; $hotel_karakteristike['free_kids10'] = 846; $hotel_karakteristike['free_kids11'] = 847; $hotel_karakteristike['free_kids12'] = 848; $hotel_karakteristike['free_kids13'] = 849; $hotel_karakteristike['free_kids14'] = 850; $hotel_karakteristike['free_kids15'] = 851; $hotel_karakteristike['free_kids16'] = 852; $hotel_karakteristike['free_kids17'] = 853; $hotel_karakteristike['free_kids18'] = 854; // prijevod $ln = 'en'; if (isset($_REQUEST['ln'])) { include('translation/' . $_REQUEST["ln"] . '.php'); $ln = $_REQUEST['ln']; } else { if (is_file('translation/en.php')) include('translation/en.php'); $ln = en; } // funkcija za provjeru karakteristike hotela function ima_karakteristiku($k, $arr) { for ($f=0; $f 100, 'kategorija' => 119, 'naziv' => 121, 'telefon_recepcija' => 500, 'kontakt_email' => 835, 'web_adresa' => 836, 'kontakt_telefon' => 837, 'kontakt_fax' => 838 ); // spoji se na soap server odmah kod includeanja fajla -> $klijent je soap objekt global $klijent, $klijent_error; $klijent_error = false; try { // http://adriatiq.itravelsoftware.com/itravel/API/WebService/iTravelAPI_2_0.asmx?WSDL $klijent = new SoapClient("http://booking.adriatiq-travel.com/itravel/API/WebService/iTravelAPI_2_0.asmx?WSDL", array('login' => "ivan.bagaric@adriatiq.com", 'password' => "Wresech9")); } catch (Exception $e) { echo 'Greska u spajanju na Itravel: ' . $e->getMessage(); $klijent_error = true; } // Return only hotels $objectTypeIDList[0] = 1; // Sort by price ascending //SortParameter sortParameter = new SortParameter(); //sortParameter.SortBy = SortBy.Price; //sortParameter.SortOrder = SortOrder.Ascending; //SortParameter[] sortParametarList = { sortParameter }; // Return only objects with 3 stars //AttributeFilter attributeFilter = new AttributeFilter(); //attributeFilter.AttributeID = 119; //attributeFilter.ComparisonType = ComparisonType.Equals; //attributeFilter.AttributeValue = "3"; //AttributeFilter[] objectAttributeFilterList = { attributeFilter }; // Return 5 object's photos //OutParameter outParameter = new OutParameter(); //outParameter.NumberOfResults = 5; //outParameter.ResponseDetail = ResponseDetail.ObjectPhotos; //OutParameter[] outParameterList = { outParameter }; // klasa za out parametre class OutParam { public $ResponseDetail = null; public $NumberOfResults = null; } // klasa za usporedbe class AttributeFilter { public $AttributeID = null; public $ComparisonType = null; public $AttributeValue = null; } // klasa za usporedbe class SortParameter { public $SortBy = null; public $SortOrder = null; } function daj_thumbnail($lista) { $ret = false; if (isset($lista)) { if (!is_array($lista)) $slike[0] = $lista; else $slike = $lista; } $ret = $slike[0]->ThumbnailUrl; return $ret; } function pom_daj_slike($lista) { $ret = false; if (isset($lista)) { if (!is_array($lista)) $slike[0] = $lista; else $slike = $lista; } for ($f=0; $fPhotoUrl; $ret[$f]['thumb'] = $slike[$f]->ThumbnailUrl; } return $ret; } function puni_karakteristike($hotel_karakteristike, $atid, &$cnt, &$van) { /*********** KARAKTERISTIKE ***********/ $koji = ''; // pisi i ['karakteristike'] za ikone foreach ($hotel_karakteristike as $key=>$value) { if (is_array($value)) $vn = $value; else { unset($vn); $vn[0] = $value; } for ($k=0; $k'; if ($vn[$k] == $atid) { $koji = $key; break; } } } if ($koji == '') return true; $ima = false; for ($i=0; $iAttributeID == $id) { $ret = $obj[$f]->AttributeValue; break; } } return $ret; } // Pomocna funkcija koja vraca aribut iz lemax objekata (koji su u arrayu) function pom_daj_grupu_atributa($id, $objx) { $ret = ''; if (!is_array($objx)) $obj[0] = $objx; else $obj = $objx; for ($f=0; $fGroupID == $id) { if (is_array($obj[$f]->AttributeList->Attribute)) $ret = $obj[$f]->AttributeList->Attribute; else $ret[0] = $obj[$f]->AttributeList->Attribute; break; } } return $ret; } // Pomocna funkcija koja vraca najjeftiniju sobu (za cijenu na naslovnici itd.) function najjeftinija_soba($sobe) { $min = 655350000; $ret = 'n/a'; if (!is_array($sobe)) $obj[0] = $sobe; else $obj = $sobe; for ($f=0; $fCalculatedPriceInfo->CalculatedPrice; if (($prc < $min) && ($prc > 0)) { $min = $prc; $ret = $obj[$f]->CalculatedPriceInfo->CalculatedPriceFormated; } /* $usluga = $obj[$f]->ServiceList->Service; if (!is_array($usluga)) $usluge[0] = $usluga; else $usluge = $usluga; for ($r=0; $rServiceName)) && ($usluge[$r]->Price < $min) && ($usluge[$r]->Price > 0)) { $min = $usluge[$r]->Price; $ret = $usluge[$r]->PriceFormated; } } */ } return $ret; } // funkcija vraæa array soba i cijena po uslugama, npr: // [0]['ime'] (UnitTypeName) // [0]['kapacitet'] // [0]['cijene']['ime_usluge'] /* function daj_sobe_i_cijene($sobe, $tip=false) { $prc = 'n/a'; if (!is_array($sobe)) $obj[0] = $sobe; else $obj = $sobe; for ($f=0; $fType->UnitTypeName; // daj kapacitet if (!is_array($sobe)) $obj[0] = $sobe; else $obj = $sobe; $usluga = $obj[$f]->ServiceList->Service; if (!is_array($usluga)) $usluge[0] = $usluga; else $usluge = $usluga; for ($r=0; $rServiceName)) && ($usluge[$r]->Price < $min) && ($usluge[$r]->Price > 0)) { $min = $usluge[$r]->Price; $ret = $usluge[$r]->PriceFormated; } } } return $ret; } */ // Funkcija vraca Lemax destinacije po zadanim parametrima: function daj_destinacije($param) { global $ln, $klijent; $ret['ok'] = true; if ($klijent_error) { $ret['ok'] = false; $ret['info'] = 'Itravel nije inicijaliziran.'; return $ret; } // pocetni parametri $p = array( 'regionID' => null, 'countryID' => null, 'objectTypeID' => null, 'objectTypeGroupID' => null, 'categoryID' => null, 'languageID' => $ln ); // izvedi try { $izl = $klijent->GetDestinations($p); } catch (Exception $e) { $ret['ok'] = false; $ret['info'] = 'Greska u spajanju na Itravel: ' . $e->getMessage(); return $ret; } $st = $izl->GetDestinationsResult->Destination; for ($f=0; $fDestinationName; $van[$f]['id'] = $st[$f]->DestinationID; } $ret['ok'] = true; $ret['rez'] = $van; return $ret; } // Funkcija dohvaca jedinice (hotele) prema tipu i parametrima: // $tip moze biti: // - 'naslovnica' - dohvaca podatke za naslovnicu, $param za ovaj tip (array): // - 'po_stranici' -> broj hotela po stranici // - 'stranica' -> trenutna stranica // - 'datum_od' -> pocetni datum // - 'datum_do' -> zavrsni datum // - 'ime' - > ogranici hotele po imenu // - 'grad' -> podaci o gradu // - 'samo_specijalne_ponude' -> daj samo specijalne ponude // - 'id_regije' -> ogranici samo na jedinice iz ove regije // - 'id_destinacije' -> ogranici samo na jedinice iz ove destinacije // - 'objekt_filter' // 'id' - id atributa koji se filtrira // 'val' - vrijednost // 'tip' - // - sort_opisni // 'Priority' 'Price_lowest' 'Price_highest' 'Name' // * Izlazni format: // - ret['ok'] = false u slucaju greske, ret['info'] - opis greske // - ret['ok'] = true, ako je ok, ret['rez'] - rezultati // * Format rezultata // // - array s poljima: // - naziv -> naziv jedinice (hotela) // - broj_zvjezdica // - thumbnail -> link na sliku // - id -> id jedinice (za dohvat punog opisa) // - cijena - zaokruzena cijena // - decimalna_cijena - cijena na 2 decomale // - broj_dana // // - ret['pages'] - daje podatak o trenutnoj stranici (['current']) // i broju stranica ['no'] // // // - 'trazilica_prijedlog' - dohvaca podatke za trazilicu, uz ove parametre moguci su jos: // - 'daj_gradove' - predlozi sve nazive gradova // - 'daj_imena_jedinica' - predlozi sva imena jedinica // // Jezik se prenosi preko globalne var. $ln, ako nije postavljen, default je 'en' function daj_jedinice($tip, $param) { global $klijent, $id_kat_broj_zvjezdica, $thumb_naslovnica, $thumb_list_view, $ln, $tr, $atributi_ime_id, $atributi_lokacije_hotela_id, $osnovni_atributi_hotela_id, $hotel_karakteristike, $atributi_oprema_hotela_id, $atributi_aktivnosti_id, $atributi_oprema_svih_soba_id, $atributi_ikone_id; $ret['ok'] = true; if ($klijent_error) { $ret['ok'] = false; $ret['info'] = 'Itravel nije inicijaliziran.'; return $ret; } // pocetni parametri $p = array( 'startDate' => null, 'endDate' => null, 'destinationIDList' => null, 'regionIDList' => null, 'countryIDList' => null, 'objectTypeIDList' => null, 'objectTypeGroupIDList' => null, 'categoryIDListUnion' => null, 'priceFrom' => null, 'priceTo' => null, 'priceType' => 'PerDay', 'sortParameterList' => null, 'pageSize' => 20, 'currentPage' => null, 'objectAttributeFilterList' => null, 'unitAttributeFilterList' => null, 'thumbnailWidth' => null, 'thumbnailHeight' => null, 'photoWidth' => null, 'photoHeight' => null, 'currencyID' => 978, 'outParameterList' => null, 'unitsAvailable' => null, 'languageID' => $ln, 'ignorePriceAndAvailability' => null, 'unitTypeIDList' => null, 'unitCategoryIDList' => null, 'affiliateID' => null, 'categoryIDListIntersection' => null, 'onlyOnSpecialOffer' => false ); if (isset($param['kategorija'])) $p['categoryIDListUnion'][0] = $param['kategorija']; // prvo dohvati gradove $gc = 0; $ret = false; $fp = fopen('data/gradovi.db', 'r'); while (!feof($fp)) { $lin = trim(fgets($fp)); $imid = explode(';*;', $lin); $ime = $imid[0]; $id = $imid[1]; $gradovi[$gc]['naziv'] = $ime; $gradovi[$gc]['id'] = $id; $gc++; } fclose($fp); $atcnt = 0; // Ako treba - ogranici ime if (isset($param['ime']) && ($param['ime']!='')) { $of = new AttributeFilter(); $of->AttributeID = $atributi_ime_id; $of->AttributeValue = $param['ime']; $of->ComparisonType = 'Equals'; $p['objectAttributeFilterList'][$atcnt] = $of; $atcnt++; } $objekt_filter = $param['objekt_filter'] ; if (is_array($objekt_filter)) foreach ($objekt_filter as $key=>$value) { if ($value<1)continue; $of = new AttributeFilter(); $of->AttributeID = $key; $of->AttributeValue = 1; $of->ComparisonType = 'Equals'; $p['objectAttributeFilterList'][$atcnt] = $of; $atcnt++; } // skuzi dimenzije slika $out_param = new OutParam(); $out_param2 = new OutParam(); $out_param->ResponseDetail = 'ObjectPhotos'; $out_param->NumberOfResults = 1; $out_param2->ResponseDetail = 'CalculatedPriceInfo'; $out_param2->NumberOfResults = 1; $out_params[0] = $out_param; $out_params[1] = $out_param2; if ($param['lokacija']) { $out_param3 = new OutParam(); $out_param3->ResponseDetail = 'ObjectDetailedAttributes'; $out_param3->NumberOfResults = 1; $out_params[2] = $out_param3; } $p['outParameterList'] = $out_params; $t = explode('x', $thumb_naslovnica); $p['thumbnailWidth'] = $t[0]; $p['thumbnailHeight'] = $t[1]; if ($p['thumbnailWidth'] == '?') $p['thumbnailWidth'] = null; if ($p['thumbnailHeight'] == '?') $p['thumbnailHeight'] = null; $sp = new SortParameter(); if (!isset($param['sort_opisni'])) { $sp->SortBy = 'Priority'; $sp->SortOrder = 'Descending'; } else { switch ($param['sort_opisni']) { case 'Priority': $sp->SortBy = 'Priority'; $sp->SortOrder = 'Descending'; break; case 'Price_lowest': $sp->SortBy = 'Price'; $sp->SortOrder = 'Ascending'; break; case 'Price_highest': $sp->SortBy = 'Price'; $sp->SortOrder = 'Descending'; break; case 'Name': $sp->SortBy = 'Price'; $sp->SortOrder = 'Ascending'; break; } } $p['sortParameterList'][0] = $sp; // stavi potrebne parametre (univerzalni) if (isset($param['po_stranici'])) { $p['pageSize'] = $param['po_stranici']; } if (isset($param['stranica'])) { $p['currentPage'] = $param['stranica']; } if (isset($param['id_regije'])) { $p['regionIDList'] = $param['id_regije']; } if (isset($param['id_destinacije'])) { $p['destinationIDList'] = $param['id_destinacije']; } // pretvori format datuma (ulaz - bilo koji format) if (isset($param['datum_od'])) $p['startDate'] = date('Y-m-d', strtotime($param['datum_od'])); if (isset($param['datum_do'])) $p['endDate'] = date('Y-m-d', strtotime($param['datum_do'])); if (isset($param['samo_specijalne_ponude'])) $p['onlyOnSpecialOffer'] = true; // izvedi try { $izl = $klijent->GetSearchResults($p); } catch (Exception $e) { $ret['ok'] = false; $ret['info'] = 'Greska u spajanju na Itravel: ' . $e->getMessage(); echo $ret['info']; return $ret; } if (isset($_REQUEST['debug'])) { echo "Upit: \n\n"; print_r($p); echo "\n\n\nOdgovor: \n\n"; print_r($izl); } // broj stranica $rez_total = $izl->GetSearchResultsResult->TotalNumberOfResults; $rez_psize = $izl->GetSearchResultsResult->PageSize; $rez_curr = $izl->GetSearchResultsResult->CurrentPage; $pgs = ceil($rez_total / (float)$rez_psize); // daj zapis za destinaciju // pretvori izlazni format u jednostavniji (po tipu) if (is_array($izl->GetSearchResultsResult->AccommodationObjectList->AccommodationObject)) $rez = $izl->GetSearchResultsResult->AccommodationObjectList->AccommodationObject; else $rez[0] = $izl->GetSearchResultsResult->AccommodationObjectList->AccommodationObject; $valuta = strtolower($izl->GetSearchResultsResult->Currency->CurrencyShortName); //print_r($rez); for ($f = 0; $fObjectID; $van[$f]['naziv'] = $rez[$f]->Name; // broj zvjezdica se upisuje u kategoriju $att_osn = pom_daj_grupu_atributa($osnovni_atributi_hotela_id, $rez[$f]->AttributeGroupList->AttributeGroup); $van[$f]['broj_zvjezdica'] = pom_daj_atribut($id_kat_broj_zvjezdica, $att_osn); // $van['broj_dana'] = // daj lokaciju if ($param['lokacija']) { $att_osn = pom_daj_grupu_atributa($atributi_lokacije_hotela_id, $rez[$f]->AttributeGroupList->AttributeGroup); // 290 odn. 291 su X i Y koordinata for ($u=0; $uAttributeID == 290) $van[$f]['lokacija']['x'] = $att_osn[$u]->AttributeValue; if ($att_osn[$u]->AttributeID == 291) $van[$f]['lokacija']['y'] = $att_osn[$u]->AttributeValue; } } // za ikone $att_osn = pom_daj_grupu_atributa($atributi_ikone_id, $rez[$f]->AttributeGroupList->AttributeGroup); $cnt = 0; for ($r=0; $rAttributeID, $cnt, $van[$f]['karakteristike']); } /* ovo je zakomentirano jer se sve ikone vuku iz kategorije "ikone" - odkomentirat da se vuku i iz drugih // zapisi opremu hotela $att_osn = pom_daj_grupu_atributa($atributi_oprema_hotela_id, $rez[$f]->AttributeGroupList->AttributeGroup); $cnt = 0; for ($r=0; $rAttributeName) == '') continue; puni_karakteristike($hotel_karakteristike, $att_osn[$r]->AttributeID, $cnt, $van[$f]['karakteristike']); } // zapisi aktivnosti $att_osn = pom_daj_grupu_atributa($atributi_aktivnosti_id, $rez[$f]->AttributeGroupList->AttributeGroup); for ($r=0; $rAttributeName) == '') continue; puni_karakteristike($hotel_karakteristike, $att_osn[$r]->AttributeID, $cnt, $van[$f]['karakteristike']); } // zapisi opremu svih soba $att_osn = pom_daj_grupu_atributa($atributi_oprema_svih_soba_id, $rez[$f]->AttributeGroupList->AttributeGroup); for ($r=0; $rAttributeName) == '') continue; puni_karakteristike($hotel_karakteristike, $att_osn[$r]->AttributeID, $cnt, $van[$f]['karakteristike']); } */ // daj zapis grada (vuci iz lokalnog sinkroniziranog fajla) $van[$f]['grad']['id'] = $rez[$f]->DestinationID; for ($g=0; $gUnitList->AccommodationUnit, false); if ($prc != 'n/a') $van[$f]['cijena'] = round($prc) . '' . str_replace('eur', '€', $valuta); else $van[$f]['cijena'] = $prc . '' . str_replace('eur', '€', $valuta); $van[$f]['decimalna_cijena'] = $prc . '' . str_replace('eur', '€', $valuta); $van[$f]['thumbnail'] = daj_thumbnail($rez[$f]->PhotoList->Photo); } else if ($tip == 'list_view') { $prc = najjeftinija_soba($rez[$f]->UnitList->AccommodationUnit, false); if ($prc != 'n/a') $van[$f]['cijena'] = round($prc) . '' . str_replace('eur', '€', $valuta); else $van[$f]['cijena'] = $prc . '' . str_replace('eur', '€', $valuta); $van[$f]['decimalna_cijena'] = $prc . '' . str_replace('eur', '€', $valuta); $van[$f]['thumbnail'] = daj_thumbnail($rez[$f]->PhotoList->Photo); } } $ret['ok'] = true; $ret['rez'] = $van; $ret['pages']['current'] = $rez_curr; $ret['pages']['no'] = $pgs; return $ret; } // Funkcija dohvaca opis jedinice (hotela) prema id-u i parametrima: // $param: // Povratna vrijednost sadrzi zapise iz lemaxovih objekata za: // ret['rez']['kontakt'] - osnovni zapisi, kontakti, ime, itd. // ret['rez']['udaljenoti'] - udaljenosti do raznih lokacija // ret['rez']['grad'] - podaci o destinaciji, i slike // ret['rez']['oprema_hotela'] // ret['rez']['aktivnosti'] // ret['rez']['plaze'] // ret['rez']['oprema_svih_soba'] // rez['rez']['karakteristike'] (array) - karakteristike hotela // prema glob. varijabli $hotel_karakteristike // - svi ovi parametri imaju ['ime'] - naziv parametra i ['val'] - vrijednost parametra // // ret['rez']['slike'] // // zapis soba je u ret['sobe'] a sadrzi: function daj_opis_jedinice($id, $param) { global $klijent, $id_kat_broj_zvjezdica, $thumb_naslovnica, $thumb_opis_pogled, $osnovni_atributi_hotela_id, $atributi_udaljenosti_hotela_id, $atributi_facebook_link_id, $atributi_ostali_podaci_o_smjestaju_id, $atributi_oprema_hotela_id, $atributi_aktivnosti_id, $atributi_plaze_id, $atributi_oprema_svih_soba_id, $hotel_karakteristike, $ln, $tr, $polupansion_id, $atributi_ikone_id; $ret['ok'] = true; if ($klijent_error) { $ret['ok'] = false; $ret['info'] = 'Itravel nije inicijaliziran.'; return $ret; } // pocetni parametri $p = array( 'startDate' => null, 'endDate' => null, 'numberOfPersons' => null, 'objectID' => $id, 'thumbnailWidth' => null, 'thumbnailHeight' => null, 'photoWidth' => null, 'photoHeight' => null, 'currencyID' => 978, 'unitsAvailable' => null, 'languageID' => $ln, 'ignorePriceAndAvailability' => null, 'unitID' => null, 'unitTypeID' => null, 'unitCategoryID' => null, 'mapWidth' => null, 'mapHeight' => null, 'priceType' => 'PerDay' ); $t = explode('x', $thumb_opis_pogled); $p['thumbnailWidth'] = $t[0]; $p['thumbnailHeight'] = $t[1]; if ($p['thumbnailWidth'] == '?') $p['thumbnailWidth'] = null; if ($p['thumbnailHeight'] == '?') $p['thumbnailHeight'] = null; if (isset($param['datum_od'])) $p['startDate'] = date('Y-m-d', strtotime($param['datum_od'])); if (isset($param['datum_do'])) $p['endDate'] = date('Y-m-d', strtotime($param['datum_do'])); if (isset($param['karta_w'])) $p['mapWidth'] = $param['karta_w']; if (isset($param['karta_h'])) $p['mapHeight'] = $param['karta_h']; // izvedi try { $izl = $klijent->GetDetailedDescription($p); } catch (Exception $e) { $ret['ok'] = false; $ret['info'] = 'Greska u spajanju na Itravel: ' . $e->getMessage(); return $ret; } if (isset($_REQUEST['debug'])) { echo "Upit: \n\n"; print_r($p); echo "\n\n\nOdgovor: \n\n"; print_r($izl); } $rez = $izl->GetDetailedDescriptionResult->AccommodationObject; $valuta = strtolower($izl->GetDetailedDescriptionResult->Currency->CurrencyShortName); // daj zapis grada $dst = $izl->GetDetailedDescriptionResult->Destination; $van['grad']['id'] = $dst->DestinationID; $van['grad']['naziv'] = $dst->DestinationName; $van['grad']['slike'] = pom_daj_slike($dst->PhotoList->Photo); $van['id'] = $rez->ObjectID; $van['naziv'] = $rez->Name; if (isset($rez->MapLocationUrl)) $van['karta'] = $rez->MapLocationUrl; // osnovni parametri $popis_atributa = $rez->AttributeGroupList->AttributeGroup; $att_osn = pom_daj_grupu_atributa($osnovni_atributi_hotela_id, $popis_atributa); $van['broj_zvjezdica'] = pom_daj_atribut($id_kat_broj_zvjezdica, $att_osn); $cnt = 0; // zapisi osnovne atribute for ($f=0; $fAttributeName) == '') continue; $van['kontakt'][$f]['id'] = $att_osn[$f]->AttributeID; $van['kontakt'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['kontakt'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['kontakt'][$f]['val'] = $tr['yes']; else $van['kontakt'][$f]['val'] = $tr['no']; } // zapisi udaljenosti $att_osn = pom_daj_grupu_atributa($atributi_udaljenosti_hotela_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['udaljenost'][$f]['id'] = $att_osn[$f]->AttributeID; $van['udaljenost'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['udaljenost'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['udaljenost'][$f]['val'] = $tr['yes']; else $van['udaljenost'][$f]['val'] = $tr['no']; } //IVAN ostali podaci o smještaju $att_osn = pom_daj_grupu_atributa($atributi_ostali_podaci_o_smjestaju_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['ostali_podaci'][$f]['id'] = $att_osn[$f]->AttributeID; $van['ostali_podaci'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['ostali_podaci'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['ostali_podaci'][$f]['val'] = $tr['yes']; else $van['ostali_podaci'][$f]['val'] = $tr['no']; } //IVAN facebook link $att_osn = pom_daj_grupu_atributa($atributi_facebook_link_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['face_link'][$f]['id'] = $att_osn[$f]->AttributeID; $van['face_link'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['face_link'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['face_link'][$f]['val'] = $tr['yes']; else $van['face_link'][$f]['val'] = $tr['no']; } // za ikone $att_osn = pom_daj_grupu_atributa($atributi_ikone_id, $popis_atributa); for ($f=0; $fAttributeID, $cnt, $van['karakteristike']); } // zapisi opremu hotela $att_osn = pom_daj_grupu_atributa($atributi_oprema_hotela_id, $popis_atributa); $cnt = 0; for ($f=0; $fAttributeName) == '') continue; $van['oprema_hotela'][$f]['id'] = $att_osn[$f]->AttributeID; $van['oprema_hotela'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['oprema_hotela'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['oprema_hotela'][$f]['val'] = $tr['yes']; else $van['oprema_hotela'][$f]['val'] = $tr['no']; //puni_karakteristike($hotel_karakteristike, $att_osn[$f]->AttributeID, $cnt, $van['karakteristike']); } // zapisi aktivnosti $att_osn = pom_daj_grupu_atributa($atributi_aktivnosti_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['aktivnosti'][$f]['id'] = $att_osn[$f]->AttributeID; $van['aktivnosti'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['aktivnosti'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['aktivnosti'][$f]['val'] = $tr['yes']; else $van['aktivnosti'][$f]['val'] = $tr['no']; // puni_karakteristike($hotel_karakteristike, $att_osn[$f]->AttributeID, $cnt, $van['karakteristike']); } // zapisi plaze $att_osn = pom_daj_grupu_atributa($atributi_plaze_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['plaze'][$f]['id'] = $att_osn[$f]->AttributeID; $van['plaze'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['plaze'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['plaze'][$f]['val'] = $tr['yes']; else $van['plaze'][$f]['val'] = $tr['no']; } // zapisi opremu svih soba $att_osn = pom_daj_grupu_atributa($atributi_oprema_svih_soba_id, $popis_atributa); for ($f=0; $fAttributeName) == '') continue; $van['oprema_svih_soba'][$f]['id'] = $att_osn[$f]->AttributeID; $van['oprema_svih_soba'][$f]['ime'] = $att_osn[$f]->AttributeName; $van['oprema_svih_soba'][$f]['val'] = $att_osn[$f]->AttributeValue; if ($att_osn[$f]->AttributeType == 'Logical') if ($att_osn[$f]->AttributeValue == 1) $van['oprema_svih_soba'][$f]['val'] = $tr['yes']; else $van['oprema_svih_soba'][$f]['val'] = $tr['no']; //puni_karakteristike($hotel_karakteristike, $att_osn[$f]->AttributeID, $cnt, $van['karakteristike']); } // zapisi slike i thumbnailove $van['slike'] = pom_daj_slike($rez->PhotoList->Photo); // zapisi sobe unset($sob); if (is_array($rez->UnitList->AccommodationUnit)) $sob = $rez->UnitList->AccommodationUnit; else $sob[0] = $rez->UnitList->AccommodationUnit; for ($f=0; $fAttributeGroupList->AttributeGroup->GroupName; // pisi atribute sobe $sob_attx = $sob[$f]->AttributeGroupList->AttributeGroup->AttributeList->Attribute; unset($sob_att); if (is_array($sob_attx)) $sob_att = $sob_attx; else $sob_att[0] = $sob_attx; for($r=0; $rAttributeID; $van['sobe'][$f]['atributi'][$r]['ime'] = $sob_att[$r]->AttributeName; $van['sobe'][$f]['atributi'][$r]['val'] = $sob_att[$r]->AttributeValue; if ($sob_att[$r]->AttributeType == 'Logical') if ($sob_att[$r]->AttributeValue == 1) $van['sobe'][$f]['atributi'][$r]['val'] = $tr['yes']; else $van['sobe'][$f]['atributi'][$r]['val'] = $tr['no']; } $van['sobe'][$f]['rezervacija'] = $sob[$f]->BookingAddress; $van['sobe'][$f]['zauzetost'] = $sob[$f]->AvailabilityCalendarAddress; $van['sobe'][$f]['kod'] = $sob[$f]->AccommodationUnitPublicCode; // zapisi calculatedprice $van['sobe'][$f]['cijena'] = round($sob[$f]->CalculatedPriceInfo->CalculatedPriceFormated); // zapisi cijene i usluge za sobe $sob_srvx = $sob[$f]->ServiceList->Service; if (is_array($sob_srvx)) $sob_srv = $sob_srvx; else $sob_srv[0] = $sob_srvx; for ($r=0; $rPriceFormated; if ($sob_srv[$r]->ServicePriceType == 'Percentage') $curr = '%'; else $curr = '€'; if (($prc == 0)) continue; $van['sobe'][$f]['usluge'][$r]['ime'] = $sob_srv[$r]->ServiceName; if ($prc == 0) $prc = 'n/a'; if ($prc != 'n/a') $van['sobe'][$f]['usluge'][$r]['cijena'] = round($prc) . '' . $curr; else $van['sobe'][$f]['usluge'][$r]['cijena'] = $prc . '' . $curr; $van['sobe'][$f]['usluge'][$r]['decimalna_cijena'] = $prc . '' . $curr; } } $ret['ok'] = true; $ret['rez'] = $van; //print_r($ret); return $ret; } // Funkcija za trazenje po imenu grada ili hotela - ako je u trazilici postavljeno ime grada // poziva se ova funkcija. Vraca id-ove i imena gradova u ['gradovi'] odnosno jedinica // u ['jedinice']. Ove se vrijednosti onda koriste u glavnoj funkciji za trazenje za // ogranicavanje i grupiranje rezultata function trazi_ime($search) { global $data_dir; if (!isset($data_dir)) $data_dir = 'data'; // prvo provjeri gradove $gc = 0; $ret = false; $fp = fopen($data_dir . '/gradovi.db', 'r'); while (!feof($fp)) { $lin = trim(fgets($fp)); $imid = explode(';*;', $lin); $ime = $imid[0]; $id = $imid[1]; if (mb_stristr($ime, trim($search))) { $gradovi[$gc]['naziv'] = $ime; $gradovi[$gc]['id'] = $id; $gc++; } } fclose($fp); // a sada hotele $gc = 0; $fp = fopen($data_dir . '/jedinice.db', 'r'); while (!feof($fp)) { $lin = trim(fgets($fp)); $imid = explode(';*;', $lin); $ime = $imid[0]; $id = $imid[1]; if (mb_stristr($ime, trim($search))) { $jedinice[$gc]['naziv'] = $ime; $jedinice[$gc]['id'] = $id; $gc++; } } fclose($fp); $ret['jedinice'] = $jedinice; $ret['gradovi'] = $gradovi; return $ret; } // Funkcija trazi hotele po parametrima: // 'trazi' - ogranici na gradove i imena koja se podudaraju // // 'datum_od' // 'datum_do' // // Takodjer se moze postaviti bilo koji parametar definiran u glob. // varijabli $hotel_karakteristike; tada funkcija suzava rezultate // samo na one koji zadovoljavaju parametre // // rezultat je u ['rez']['hoteli'] // a ako se trazi po imenu postoji i ['rez']['gradovi']['ime grada'] function trazi($param) { global $hotel_karakterisitke; $tg = false; $ret['ok'] = true; // dohvati gradove i id-ove hotela ako se trazi po imenu /*if (isset($param['trazi']) && trim($param['trazi']) != '') { $tr = trim($param['trazi']); $ret = trazi_ime($tr); if ($ret) $tg = true; }*/ if (isset($param['trazi']) && trim($param['trazi']) != '') $tg = true; // postavi parametre if (isset($param['datum_od'])) $p['datum_od'] = $param['datum_od']; if (isset($param['datum_do'])) $p['datum_do'] = $param['datum_do']; if (isset($param['objekt_filter'])) $p['objekt_filter'] = $param['objekt_filter']; $p['lokacija'] = true; $p['stranica'] = $param['stranica']; if (isset($hotel_karakteristike)) foreach ($hotel_karakteristike as $key=>$value) { $p['filter'][$key] = $value; } // ako se trati po imenu, trazi kako moras if ($tg) { $out = trazi_ime($param['trazi']); $htc = 0; // prvo po imenu for ($f=0; $f1) break; // ogranici na max 2 hotela po imenu kad se trazi (zbog brzine lemaxa) $p['ime'] = $out['jedinice'][$f]['naziv']; $jedd = daj_jedinice('list_view', $p); if (!$jedd['ok']) return $jedd; for ($r=0; $r
' . $data['pages']['current'] . ' ' . $data['pages']['no'] . '
'; $p['stranica']++; $data = daj_jedinice('list_view', $p); print_r($data); if (!$data['ok']) die ('Greska u sinkronizaciji'); for ($f=0; $f