PageRenderTime 45ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/public_html/config/includes/class/class_circuite/class_circuit.php

https://bitbucket.org/ocaziituristice/ocaziituristice.ro
PHP | 490 lines | 441 code | 41 blank | 8 comment | 51 complexity | fe2583207daa59591a0591638e3c07bb MD5 | raw file
  1. <?php class CIRCUIT{
  2. var $id_circuit;
  3. var $denumire_continent;
  4. var $poza1;
  5. var $nume_poza1;
  6. var $denumire;
  7. var $denumire_lenght;
  8. var $oferta_speciala;
  9. var $nr_zile;
  10. var $obiective_turistice;
  11. var $obiective_turistice_lenght;
  12. var $localitati_traversate;
  13. var $localitati_traversate_lenght;
  14. var $tari_traversate;
  15. var $keywords_1_words;
  16. var $keywords_2_words;
  17. function __construct($id_circuit)
  18. {
  19. $this->id_circuit=$id_circuit;
  20. $this->denumire_continent=0;
  21. $this->denumire=0;
  22. $this->nr_zile=0;
  23. $this->obiective_turistice=0;
  24. $this->denumire_lenght=50;
  25. }
  26. function set_id_circuit($value)
  27. {
  28. $this->id_circuit=$value;
  29. }
  30. function set_denumire($value)
  31. {
  32. $this->denumire=$value;
  33. }
  34. function set_sigla($value)
  35. {
  36. $this->sigla=$value;
  37. }
  38. function load_localitati_traversate()
  39. {
  40. $sel="
  41. SELECT
  42. GROUP_CONCAT(localitati.denumire SEPARATOR '-') AS localitati
  43. FROM
  44. loc_circuit
  45. Inner Join localitati ON loc_circuit.id_localitate = localitati.id_localitate
  46. WHERE loc_circuit.id_circuit='".$this->id_circuit."'
  47. GROUP BY loc_circuit.id_circuit
  48. ";
  49. $rez=mysql_query($sel);
  50. $row=mysql_fetch_array($rez);
  51. @mysql_free_result($rez);
  52. $this->localitati_traversate=$row["localitati"];
  53. }
  54. function set_localitati_traversate_lenght($value)
  55. {
  56. $this->localitati_traversate_lenght=$value;
  57. }
  58. function set_oferta_speciala($value)
  59. {
  60. $this->oferta_speciala=$value;
  61. }
  62. function set_denumire_continent($value)
  63. {
  64. $this->denumire_continent=$value;
  65. }
  66. function set_denumire_lenght($value)
  67. {
  68. $this->denumire_lenght=$value;
  69. }
  70. function set_nr_zile($value)
  71. {
  72. $this->nr_zile=$value;
  73. }
  74. function set_obiective_turistice($value)
  75. {
  76. if($value)
  77. $this->obiective_turistice='<strong>Obiective:</strong> '.strip_tags($value);
  78. }
  79. function set_obiective_turistice_lenght($value)
  80. {
  81. $this->obiective_turistice_lenght=$value;
  82. }
  83. function set_denumire_circuit_lenght($value)
  84. {
  85. $this->set_denumire_circuit_lenght=$value;
  86. }
  87. function set_nume_poza1($value)
  88. {
  89. $this->nume_poza1=$value;
  90. }
  91. function set_poza1($value)
  92. {
  93. $this->poza1=$value;
  94. }
  95. function set_agentie_nume($value)
  96. {
  97. $this->agentie_nume=$value;
  98. }
  99. function set_pret($value)
  100. {
  101. $this->pret=$value;
  102. }
  103. function set_moneda($value)
  104. {
  105. $this->moneda=$value;
  106. }
  107. function resize($value, $limit)
  108. {
  109. if($limit==0) return $value;
  110. if(strlen($value)<=$limit) return $value;
  111. else
  112. {
  113. $value=substr($value,0,$limit)."...";
  114. return $value;
  115. }
  116. }
  117. function creaza_link()
  118. {
  119. $link=$GLOBALS['sitepath_class']."circuit/".fa_link($this->denumire_continent)."/".fa_link($this->denumire);
  120. if(strlen($link)>'100') $link=substr($link,0,100);
  121. $link=$link."-".$this->id_circuit.".html";
  122. return $link;
  123. }
  124. function afiseaza($template)
  125. {
  126. $link=$this->creaza_link();
  127. if(!$this->pret) {
  128. $pret=pret_minim_circuit($this->id_circuit);
  129. if($pret[1]=='EURO') $moneda='&euro;'; elseif($pret[1]=='USD') $moneda='$'; else $moneda=$pret[1];
  130. $pret_minim=$pret[0]." ".$moneda;
  131. } else {
  132. if($this->moneda=='EURO') $moneda='&euro;'; elseif($this->moneda=='USD') $moneda='$'; else $moneda=$this->moneda;
  133. $pret_minim=$this->pret." ".$moneda;
  134. }
  135. $denumire=$this->resize($this->denumire, $this->set_denumire_circuit_lenght);
  136. $obiective_turistice=$this->resize($this->obiective_turistice,$this->obiective_turistice_lenght);
  137. $localitati_traversate=$this->resize($this->localitati_traversate,$this->localitati_traversate_lenght);
  138. $tpl=new TPL($template);
  139. if(!$this->poza1) $poza=$GLOBALS['sitepath_class_parinte']."images/no_photo.jpg"; else $poza=$GLOBALS['sitepath_class_parinte'].'thumb_circuit/'.$this->poza1;
  140. $tpl->replace_tags(array(
  141. "id_circuit"=> $this->id_circuit,
  142. "denumire_continent"=> $this->denumire_continent,
  143. "poza1"=>$poza,
  144. "denumire"=> $denumire,
  145. "numar_zile"=> $this->nr_zile,
  146. "obiective_turistice"=>$obiective_turistice,
  147. "localitati_traversate"=>$localitati_traversate,
  148. "pret_minim"=> $pret_minim,
  149. "link"=>$link,
  150. "titlu_link"=>$this->denumire
  151. ));
  152. $tpl->output_tpl();
  153. }
  154. }
  155. class AFISARE_CIRCUITE {
  156. function __construct()
  157. { //se creaza paginatia_______________________________________________
  158. $this->tip_oferta=0;
  159. $this->tari=0;
  160. $this->zone=0;
  161. $this->agentie=0;
  162. $this->azi=date("Y-m-d");
  163. $this->last_minute=0;
  164. $this->random=0;
  165. $this->oferta_speciala=0;
  166. $this->pagini_id_uri="";
  167. $this->promovata=0;
  168. $this->jeka=0;
  169. $this->afisare_no_limit=0;
  170. $this->early='nu';
  171. $this->cazare='nu';
  172. $this->oferte_pagina=0;
  173. $this->templates_jeka="afisare_oferta_jeka.tpl";
  174. $this->templates_promo="afisare_oferta_lunga_promo.tpl";
  175. $this->templates="afisare_oferta_lunga.tpl";
  176. $this->denumire_tip_oferta='';
  177. $this->denTara='';
  178. $this->denZone='';
  179. $this->denTransport='';
  180. $this->denOrase='';
  181. $this->dimensiuneNumeHotel='';
  182. $nr_tot=0;
  183. $nr_jeka=0;
  184. $nr_promov=0;
  185. }
  186. //funtii pentru sortarea ofertelor__________________________
  187. function set_oferte_pagina($value)
  188. {
  189. $this->oferte_pagina=$value;
  190. }
  191. function setLastMinute()
  192. {
  193. $this->last_minute=1;
  194. }
  195. function setRandom()
  196. {
  197. $this->random=1;
  198. }
  199. function setIdFav($value)
  200. {
  201. $this->favorite_id=$value;
  202. }
  203. function setTipOferta($tip)
  204. {
  205. $this->tip_oferta="'".get_id_tip_sejur(desfa_link($tip))."'";
  206. $this->denumire_tip_oferta=fa_link($tip);
  207. }
  208. function setKeywords($keyword_old)
  209. {
  210. if(strlen($keyword_old)>2) $this->keywords=$keyword_old;
  211. }
  212. function setContinent($continent)
  213. {
  214. $this->continent="'".get_id_continent(desfa_link($continent))."'";
  215. $this->denContinent=$continent;
  216. }
  217. function setTari($tari)
  218. {
  219. $this->tari="'".get_id_tara(desfa_link($tari))."'";
  220. $this->denTara=$tari;
  221. }
  222. function setOfertaSpeciala($value)
  223. {
  224. $this->oferta_speciala=$value;
  225. }
  226. function setAgentie($agentie)
  227. {
  228. $this->agentie=$agentie;
  229. }
  230. function setOrdonarePret($value)
  231. {
  232. $this->ord_pret=$value;
  233. }
  234. function setOrdonareRelevanta($value)
  235. {
  236. $this->ord_relevanta=$value;
  237. }
  238. function setLocalitatiPlecare($value)
  239. {
  240. $this->localitati_plecare=get_id_localitate(desfa_link($value));
  241. $this->denLocalitatiPlecare=$value;
  242. }
  243. function set_oferte_vizitate($value)
  244. {
  245. $this->oferte_vizitate=$value;
  246. }
  247. //selectam ofertele care indeplinesc conditiile date
  248. function sel_toate_nr() {
  249. $sel_nr="SELECT
  250. circuite.id_circuit
  251. FROM
  252. continente
  253. inner Join circuite ON continente.id_continent = circuite.id_continent ";
  254. if($this->tari) $sel_nr=$sel_nr." Left Join circuite_tari ON circuite.id_circuit = circuite_tari.id_circuit ";
  255. $sel_nr=$sel_nr." WHERE
  256. circuite.valabila = 'Da' ";
  257. if($this->continent) $sel_nr=$sel_nr." AND circuite.id_continent = ".$this->continent." ";
  258. if($this->tari) $sel_nr=$sel_nr." AND circuite_tari.id_tara = ".$this->tari." ";
  259. if($this->keywords){
  260. $sel_nr=$sel_nr."\n AND ( continente.nume_continent LIKE '%".$this->keywords."%' ";
  261. $sel_nr=$sel_nr."\n OR circuite.denumire LIKE '%".$this->keywords."%' )";
  262. }
  263. $sel_nr=$sel_nr." GROUP BY circuite.id_circuit ";
  264. return $sel_nr;
  265. }
  266. function sel_toate_pagina() {
  267. $sel_toate="
  268. SELECT
  269. continente.nume_continent,
  270. circuite.id_circuit,
  271. circuite.denumire,
  272. circuite.nr_zile,
  273. circuite.poza1,
  274. circuite.pret_minim,
  275. circuite.moneda,
  276. info_circuite.obiective_turistice
  277. FROM
  278. circuite
  279. inner Join continente ON continente.id_continent = circuite.id_continent
  280. Left Join info_circuite ON circuite.id_circuit = info_circuite.id_circuit ";
  281. if($this->tari) $sel_toate=$sel_toate." Left Join circuite_tari ON circuite.id_circuit = circuite_tari.id_circuit ";
  282. $sel_toate=$sel_toate." WHERE
  283. circuite.valabila = 'Da' ";
  284. if($this->continent) $sel_toate=$sel_toate." AND circuite.id_continent = ".$this->continent." ";
  285. if($this->tari) $sel_toate=$sel_toate." AND circuite_tari.id_tara = ".$this->tari." ";
  286. if($this->keywords){
  287. $sel_toate=$sel_toate."\n AND ( continente.nume_continent LIKE '%".$this->keywords."%' ";
  288. $sel_toate=$sel_toate."\n OR circuite.denumire LIKE '%".$this->keywords."%' )";
  289. }
  290. if($this->oferte_vizitate) $sel_toate=$sel_toate." and circuite.id_circuit in (".$this->oferte_vizitate.") ";
  291. $sel_toate=$sel_toate." GROUP BY circuite.id_circuit ";
  292. return $sel_toate;
  293. }
  294. function initializare() {
  295. //aflam cate oferte avem selectate. se lucreaza cu 3 selecturi fiind 3 tipuri de oferte pe o pagina.
  296. $sel_toate=$this->sel_toate_nr();
  297. $que_toate=mysql_query($sel_toate) or die(mysql_error());
  298. $this->nr_tot=mysql_num_rows($que_toate);
  299. @mysql_free_result($que_toate);
  300. if($this->nr_tot>'0') {
  301. $this->pag=floor($this->nr_tot/$this->oferte_pagina);
  302. if(fmod($this->nr_tot,$this->oferte_pagina)!='0') $this->pag=$this->pag+1;
  303. } else $this->pag=1;
  304. return $this->nr_tot;
  305. }
  306. function paginare()
  307. {
  308. // se adauga div-le si se initializeaza afisarea
  309. $this->initializare();
  310. $cond="";
  311. if($this->denumire_tip_oferta) $cond=$cond."&conditie[setTipOferta]=".$this->denumire_tip_oferta;
  312. if($this->keywords) $cond=$cond."&conditie[setKeywords]=".$this->keywords;
  313. if($this->continent) $cond=$cond."&conditie[setContinent]=".$this->denContinent;
  314. if($this->denTara) $cond=$cond."&conditie[setTari]=".$this->denTara;
  315. if($this->oferta_speciala) $cond=$cond."&conditie[setOfertaSpeciala]=".$this->oferta_speciala;
  316. if($this->agentie) $cond=$cond."&conditie[setAgentie]=".$this->agentie;
  317. if($this->ord_pret) $cond=$cond."&conditie[setOrdonarePret]=".$this->ord_pret;
  318. if($this->localitati_plecare) $cond=$cond."&conditie[setLocalitatiPlecare]=".$this->denLocalitatiPlecare;
  319. $total=$this->nr_tot;
  320. if($total<>'1') $den_of="circuite"; else $den_of="circuit";
  321. if($this->pag<>'1') $den_pag="pagini"; else $den_pag="pagina";
  322. ?>
  323. <div class="paginationLine">
  324. <div class="paginationInfo"><?php echo $total.' '.$den_of.' | '.$this->pag.' '.$den_pag; ?></div>
  325. <div id="paginatie" class="pagination">&nbsp;</div>
  326. </div>
  327. <br class="clear" />
  328. <?php /*?><div id="loader" class="loading">&nbsp;</div><?php */?>
  329. <div id="afisare"><?php $this->afisare(1); ?></div>
  330. <br class="clear" />
  331. <div class="paginationLine">
  332. <div class="paginationInfo"><?php echo $total.' '.$den_of.' | '.$this->pag.' '.$den_pag; ?></div>
  333. <div id="paginatie1" class="pagination">&nbsp;</div>
  334. </div>
  335. <?php if($this->pag>'1') { ?>
  336. <script type="text/javascript" src="/js/paginare.js"></script>
  337. <script type="text/javascript">
  338. //<![CDATA[
  339. makepagini('<?php echo $this->pag; ?>','1');
  340. function clic(pag) {
  341. <?php /*?>$('#loader').show();<?php */?>
  342. $("#afisare").load("/config/includes/class/class_circuite/afisare.php?nr_pagina="+pag+"&nr_pe_pag=<?php echo $this->oferte_pagina.$cond; ?>");
  343. }
  344. //]]>
  345. </script>
  346. <?php
  347. }
  348. }
  349. function fara_paginare()
  350. { ?>
  351. <div id="afisare"><?php $this->afisare(1); ?></div>
  352. <?php }
  353. function afisare($pagina) { ?>
  354. <script type="text/javascript">
  355. //<![CDATA[
  356. <?php /*?>$('#loader').hide();<?php */?>
  357. //]]>
  358. </script>
  359. <?php
  360. $sel_toate=$this->sel_toate_pagina();
  361. $from=$this->reverse_calculeaza_pagina($pagina, $this->oferte_pagina);
  362. if($this->ord_pret) $cond_normala=$cond_normala." ORDER BY circuite.pret_minim_lei ".$this->ord_pret." ";
  363. else $cond_normala=$cond_normala." ORDER BY circuite.data_adaugarii DESC, circuite.denumire ";
  364. $cond_normala=$cond_normala." LIMIT $from, $this->oferte_pagina ";
  365. $sel_normal=$sel_toate.$cond_normala;
  366. $que_normal=mysql_query($sel_normal) or die(mysql_error());
  367. $nr_tot=mysql_num_rows($que_normal);
  368. if($nr_tot<'1') {
  369. $this->eroare();
  370. } else {
  371. while($row_toate=mysql_fetch_array($que_normal)){
  372. $circuit=new CIRCUIT($row_toate["id_circuit"]);
  373. $circuit->set_poza1($row_toate["poza1"]);
  374. $circuit->set_denumire($row_toate["denumire"]);
  375. $circuit->set_denumire_continent($row_toate["nume_continent"]);
  376. $circuit->set_nr_zile($row_toate["nr_zile"]);
  377. $circuit->set_obiective_turistice($row_toate["obiective_turistice"]);
  378. $circuit->set_pret($row_toate["pret_minim"]);
  379. $circuit->set_moneda($row_toate["moneda"]);
  380. $circuit->set_obiective_turistice_lenght(255);
  381. $circuit->load_localitati_traversate();
  382. if(!$this->set_denumire_lenght) $circuit->set_denumire_circuit_lenght(50); else $circuit->set_denumire_circuit_lenght($this->set_denumire_lenght);
  383. if($this->oferta_speciala){
  384. if(!$this->set_denumire_lenght) $circuit->set_denumire_circuit_lenght(30); else $circuit->set_denumire_circuit_lenght($this->set_denumire_lenght);
  385. $circuit->set_obiective_turistice_lenght(255);
  386. $circuit->afiseaza($this->oferta_speciala);
  387. }
  388. else $circuit->afiseaza($_SERVER['DOCUMENT_ROOT']."/templates/afisare_circuit_lunga.tpl");
  389. unset($circuit);
  390. } @mysql_free_result($que_normal);
  391. }
  392. }
  393. function id_oferte_pagina($rezultate,$nr_oferte_total,$pagini)
  394. { //preluam datele si le sortam astfel incat sa nu apara 2 oferte una langa alta de la aceasi agentie
  395. $doi=array();
  396. $j=0;
  397. $ofertele=array();
  398. while($j < $nr_oferte_total)
  399. {
  400. $doi[$rezultate[$j]['id_user']][]=$rezultate[$j]['id_oferta'];
  401. $ofertele[$rezultate[$j]['id_oferta']]=$rezultate[$j];
  402. $j++;
  403. }
  404. $agentii_nr=array_keys($doi);
  405. $i=0;
  406. foreach($agentii_nr as $key)
  407. {
  408. $oferte_agentii[$key]=count($doi[$key]);
  409. $pointer_agentii[$key]=0;
  410. $i++;
  411. }
  412. $j=0;
  413. while($j<=$nr_oferte_total && count($agentii_nr)!=0){
  414. foreach($agentii_nr as $key){
  415. $trei[$j]=$ofertele[$doi[$key][$pointer_agentii[$key]]];
  416. $oferte_agentii[$key]--;
  417. $pointer_agentii[$key]++;
  418. $j++;
  419. }
  420. $i=0;$jos=0;
  421. foreach($agentii_nr as $key){
  422. if($oferte_agentii[$key]==0){
  423. $down[$jos]=$i;
  424. $jos++;
  425. }
  426. $i++;
  427. }
  428. if(count($down)>0)
  429. foreach($down as $key){
  430. unset($agentii_nr[$key]);
  431. }
  432. unset($down);
  433. $agentii_nr=array_values($agentii_nr);
  434. }
  435. return($trei);
  436. }
  437. function reverse_calculeaza_pagina($numar_pagina,$nr_oferte_pagina)
  438. { //returneaza numarul de la care se porneste afisarea in funtie de pagina
  439. $numar_pagina=$numar_pagina-1;
  440. $from=$numar_pagina*$nr_oferte_pagina;
  441. return $from;
  442. }
  443. function eroare($template="negasit_filtrare.tpl")
  444. {
  445. $template=$_SERVER['DOCUMENT_ROOT']."/templates/".$template;
  446. $tpl=new TPL($template);
  447. $tpl->output_tpl();
  448. }
  449. } ?>