Subversion Repositories eFlore/Applications.cel

Rev

Rev 749 | Rev 790 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 749 Rev 750
Line 27... Line 27...
27
		'commune' => 'b.location', 
27
		'commune' => 'b.location', 
28
		'dept' => 'b.id_location',
28
		'dept' => 'b.id_location',
29
		'taxon' => 'b.nom_ret',
29
		'taxon' => 'b.nom_ret',
30
		'commentaire' => 'c.ci_meta_comment',
30
		'commentaire' => 'c.ci_meta_comment',
31
		'date' => 'c.ci_meta_date',
31
		'date' => 'c.ci_meta_date',
32
		'tag' => 'mots-cles');
32
		'tag' => 'tag',
-
 
33
		'projet' => 'projet');
Line 33... Line 34...
33
	
34
	
34
	/**
35
	/**
35
	 * Méthode appelée avec une requête de type GET.
36
	 * Méthode appelée avec une requête de type GET.
36
	 */
37
	 */
Line 399... Line 400...
399
			$criteres = $this->traiterCriteresMultiples($_GET) ;
400
			$criteres = $this->traiterCriteresMultiples($_GET) ;
400
			if (!empty($criteres)) {
401
			if (!empty($criteres)) {
401
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
402
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
402
			}	
403
			}	
403
		}
404
		}
404
		$requete = rtrim($requete,' AND ) ');
405
		$requete = str_replace(' AND ) ',' ', $requete);
405
		$requete = rtrim($requete, 'AND ');
406
		$requete = rtrim($requete, 'AND ');
406
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
407
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
407
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
408
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
Line 408... Line 409...
408
		
409
		
Line 409... Line 410...
409
		$elements = $this->executerRequete($requete);
410
		$elements = $this->executerRequete($requete);
410
 
411
 
411
		// Création du contenu
412
		// Création du contenu
412
		if ($elements != false && count($elements) > 0) {
413
		if ($elements != false && count($elements) > 0) {
413
			$contenu = $this->executerService($elements);
414
			$contenu = $this->executerService($elements);
414
		} else {
415
		} else {
Line 415... Line 416...
415
			$this->messages[] = "Aucune image disponible.".$requete;
416
			$this->messages[] = "Aucune image disponible.";
416
		}
417
		}
Line 440... Line 441...
440
						$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
441
						$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
441
					case "b.nom_ret" : 
442
					case "b.nom_ret" : 
442
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
443
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
443
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
444
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
444
							$nom_valeur[1].'%") AND '; break;
445
							$nom_valeur[1].'%") AND '; break;
445
					case "mots-cles" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 		
446
					case "tag" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 
-
 
447
					case "projet" : $requete .= $this->creerSousRequeteProjet($nom_valeur[1]); break; 		
446
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
448
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
447
				}
449
				}
448
			}
450
			}
449
		}
451
		}
450
		$requete = rtrim($requete,' AND ');
452
		$requete = rtrim($requete,' AND ');
451
		return $requete;
453
		return $requete;
452
	}
454
	}
Line 453... Line 455...
453
	
455
	
454
	private function creerSousRequeteMotsCles($mot_cle) {
-
 
455
		$requete = '';
456
	private function creerSousRequeteMotsCles($mot_cle) {
456
		if (preg_match('/.*OU.*/', $mot_cle)) {
457
		if (preg_match('/.*OU.*/', $mot_cle)) {
457
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
458
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
458
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
459
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
459
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
460
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
Line 466... Line 467...
466
				$requete = ' ( ';
467
				$requete = ' ( ';
467
				foreach ($elements as $occurence) {
468
				foreach ($elements as $occurence) {
468
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
469
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
469
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
470
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
470
				}
471
				}
471
			}echo $requete;
472
			} else {
-
 
473
				$requete = ' (ci_meta_mots_cles like "inexistant" OR';
-
 
474
			}
472
		}
475
		}
473
		$requete = rtrim($requete,' OR ').' ) AND ';
476
		$requete = rtrim($requete,' OR ').' ) AND ';
474
		return $requete;
477
		return $requete;
475
	}
478
	}
Line 476... Line 479...
476
	
479
	
477
	private function creerSousRequeteMotsClesOu($mot_cle) {
-
 
478
		$requete = '';		
480
	private function creerSousRequeteMotsClesOu($mot_cle) {
479
		$tab_mots_cles = explode('OU', $mot_cle);
481
		$tab_mots_cles = explode('OU', $mot_cle);
480
		$where = '';
482
		$where = '';
481
		foreach ($tab_mots_cles as $mot) {
483
		foreach ($tab_mots_cles as $mot) {
482
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
484
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
Line 490... Line 492...
490
			$requete = ' ( ';
492
			$requete = ' ( ';
491
			foreach ($elements as $occurence) {
493
			foreach ($elements as $occurence) {
492
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
494
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
493
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
495
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
494
			}
496
			}
-
 
497
		} else {
-
 
498
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
495
		}
499
		}
496
		return $requete;
500
		return $requete;
497
	}
501
	}
Line 498... Line 502...
498
	
502
	
499
	private function creerSousRequeteMotsClesEt($mot_cle) {
-
 
500
		$requete = '';
503
	private function creerSousRequeteMotsClesEt($mot_cle) {
501
		$where = '';
504
		$where = '';
502
		$champs = 'a.cmc_id_proprietaire , ';
505
		$champs = 'a.cmc_id_proprietaire , ';
503
		$table = '';
506
		$table = '';
Line 526... Line 529...
526
				for ($j = 'a'; $j < $i; $j++) {
529
				for ($j = 'a'; $j < $i; $j++) {
527
					$requete .= 'ci_meta_mots_cles like "%'.$occurence[$j].'%" AND ';
530
					$requete .= 'ci_meta_mots_cles like "%'.$occurence[$j].'%" AND ';
528
				}
531
				}
529
				$requete .= ' ci_ce_utilisateur = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
532
				$requete .= ' ci_ce_utilisateur = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
530
			}
533
			}
-
 
534
		} else {
-
 
535
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
531
		}
536
		}
532
		return $requete;
537
		return $requete;
533
	}		
538
	}		
-
 
539
	
-
 
540
	private function creerSousRequeteProjet($mot_cle) {
-
 
541
		$requete = 'mots_cles like "inexistant" OR';
-
 
542
		if (preg_match('/.*OU.*/', $mot_cle)) {
-
 
543
			$requete = $this->creerSousRequeteProjetOu($mot_cle);
-
 
544
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
-
 
545
			$requete = $this->creerSousRequeteProjetEt($mot_cle);
-
 
546
		} else {
-
 
547
			// Construction de la requête
-
 
548
			$prerequete = 	'SELECT * '.
-
 
549
				'FROM cel_mots_cles_obs '.
-
 
550
				'WHERE cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle)); 
-
 
551
			$elements = $this->executerRequete($prerequete);
-
 
552
			if ($elements != false && count($elements) > 0) {
-
 
553
				$requete = '';
-
 
554
				foreach ($elements as $occurence) {
-
 
555
					$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
-
 
556
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
-
 
557
				}
-
 
558
			}
-
 
559
		}
-
 
560
		$requete = rtrim($requete,' OR ').' AND ';
-
 
561
		return $requete;
-
 
562
	}
-
 
563
	
-
 
564
	private function creerSousRequeteProjetOu($mot_cle) {	
-
 
565
		$requete = 'mots_cles like "inexistant" OR';	
-
 
566
		$tab_mots_cles = explode('OU', $mot_cle);
-
 
567
		$where = '';
-
 
568
		foreach ($tab_mots_cles as $mot) {
-
 
569
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
-
 
570
		}
-
 
571
		$where = rtrim($where,' OR ');
-
 
572
		
-
 
573
		// Construction de la requête
-
 
574
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_obs WHERE $where "; 
-
 
575
		$elements = $this->executerRequete($prerequete);
-
 
576
		if ($elements != false && count($elements) > 0) {
-
 
577
			$requete = '';
-
 
578
			foreach ($elements as $occurence) {
-
 
579
				$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
-
 
580
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
-
 
581
			}
-
 
582
		}
-
 
583
		return $requete;
-
 
584
	}
-
 
585
	
-
 
586
	private function creerSousRequeteProjetEt($mot_cle) {
-
 
587
		$requete = 'mots_cles like "inexistant" OR';
-
 
588
		$where = '';
-
 
589
		$champs = 'a.cmc_id_proprietaire , ';
-
 
590
		$table = '';
-
 
591
		$i = "a"; $j = "a";
-
 
592
		
-
 
593
		$tab_mots_cles = explode("ET", $mot_cle); 
-
 
594
		foreach ($tab_mots_cles as $mot) {
-
 
595
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
-
 
596
			$table .= "cel_mots_cles_obs $i , ";
-
 
597
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle(trim($mot))).' AND ';
-
 
598
			if ($i !== "a") {
-
 
599
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
-
 
600
				$j++;
-
 
601
			}
-
 
602
			$i++;
-
 
603
		}
-
 
604
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
-
 
605
		
-
 
606
		// Construction de la requête
-
 
607
		$prerequete = 	"SELECT $champs FROM $table WHERE $where "; 
-
 
608
		$elements = $this->executerRequete($prerequete);//print_r($elements);
-
 
609
		if ($elements != false && count($elements) > 0) {
-
 
610
			$requete = '';
-
 
611
			foreach ($elements as $occurence) {
-
 
612
				$requete = ' (';
-
 
613
				for ($j = 'a'; $j < $i; $j++) {
-
 
614
					$requete .= 'mots_cles like "%'.$occurence[$j].'%" AND ';
-
 
615
				}
-
 
616
				$requete .= ' identifiant = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
-
 
617
			}
-
 
618
		}
-
 
619
		return $requete;
-
 
620
	}
-
 
621
	
534
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
622
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
535
		$requete = '';
623
		$requete = '';
536
		if (trim($chaine_requete) != '') {	
624
		if (trim($chaine_requete) != '') {	
537
			$chaine_requete = strtolower($chaine_requete);
625
			$chaine_requete = strtolower($chaine_requete);
538
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
626
			$chaine_requete = str_replace(' ', '_', $chaine_requete);