Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 585 Rev 593
Line 20... Line 20...
20
	private $squelette_dossier = null;
20
	private $squelette_dossier = null;
21
	private $flux = array();
21
	private $flux = array();
Line 22... Line 22...
22
	
22
	
Line -... Line 23...
-
 
23
	private $format_image = 'L';
-
 
24
	
-
 
25
	private $criteres = array(
-
 
26
		'auteur' => 'c.ci_ce_utilisateur', 
-
 
27
		'commune' => 'b.location', 
-
 
28
		'departement' => 'b.id_location',
23
	private $format_image = 'L';
29
		'taxon' => 'b.nom_ret');
24
	
30
	
25
	/**
31
	/**
26
	 * Méthode appelée avec une requête de type GET.
32
	 * Méthode appelée avec une requête de type GET.
27
	 */
33
	 */
Line 347... Line 353...
347
			$this->messages[] = "Aucune image disponible.";
353
			$this->messages[] = "Aucune image disponible.";
348
		}
354
		}
Line 349... Line 355...
349
 
355
 
350
		return $contenu;
356
		return $contenu;
-
 
357
	}
-
 
358
	
-
 
359
	private function getServiceMultiCriteres() {
-
 
360
		
-
 
361
		if(!$this->estUneRechercheGenerale()) {
-
 
362
 
-
 
363
			$criteres = $this->traiterCriteresMultiples($_GET);
-
 
364
			
-
 
365
			if(empty($criteres)) {
-
 
366
				return $contenu = $this->executerService(array());
-
 
367
			}				
-
 
368
		}
-
 
369
		
-
 
370
		if(isset($_GET['debut'])) {
-
 
371
			$this->start = $_GET['debut'];
-
 
372
		}
-
 
373
		
-
 
374
		if(isset($_GET['limite'])) {
-
 
375
			$this->limite = $_GET['limite'];
-
 
376
		}
-
 
377
		
-
 
378
		// Construction de la requête
-
 
379
		$requete = 'SELECT * ';
-
 
380
				
-
 
381
		$jointure = 'FROM cel_obs_images a '.
-
 
382
			'INNER JOIN cel_inventory b '.
-
 
383
				'ON a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant '.
-
 
384
			'INNER JOIN cel_images c '.
-
 
385
				'ON a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur '.  
-
 
386
			'WHERE b.transmission = 1 AND b.identifiant = c.ci_ce_utilisateur AND ';
-
 
387
		
-
 
388
		$requete .= $jointure;
-
 
389
		
-
 
390
		if($this->estUneRechercheGenerale()) {
-
 
391
			$chaine_requete = $_GET['recherche'];
-
 
392
			$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete) ;
-
 
393
		} else {
-
 
394
			$criteres = $this->traiterCriteresMultiples($_GET) ;
-
 
395
			$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
-
 
396
		}
-
 
397
	
-
 
398
		$requete .= $sous_requete;
-
 
399
			
-
 
400
		$requete= rtrim($requete,'AND ');
-
 
401
 
-
 
402
		$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'c.ci_meta_date_ajout DESC').' ';
-
 
403
		$requete .= "LIMIT $this->start,$this->limit ";
-
 
404
		
-
 
405
		$elements = $this->executerRequete($requete);
-
 
406
 
-
 
407
		// Création du contenu
-
 
408
		if ($elements != false && count($elements) > 0) {
-
 
409
			$contenu = $this->executerService($elements);
-
 
410
		} else {
-
 
411
			$this->messages[] = "Aucune image disponible.";
-
 
412
		}
-
 
413
        
-
 
414
        return $contenu;
-
 
415
	}
-
 
416
	
-
 
417
	private function creerSousRequeteRechercheParCriteres($criteres) {
-
 
418
				
-
 
419
		$requete = '';
-
 
420
		
-
 
421
		foreach($criteres as $pair)
-
 
422
			{
-
 
423
			$nom_valeur = explode("=",$pair) ;
-
 
424
 
-
 
425
			if(sizeof($nom_valeur) != 0)
-
 
426
			{
-
 
427
					if($nom_valeur[0] == "ci_limite")
-
 
428
					{
-
 
429
						$this->limite = $this->bdd->quote($nom_valeur[1]) ;
-
 
430
					}
-
 
431
					elseif($nom_valeur[0] == "c.ci_numero_page")
-
 
432
					{
-
 
433
						$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]) ;
-
 
434
					}
-
 
435
					elseif($nom_valeur[0] == "c.ci_meta_mots_cles")
-
 
436
					{
-
 
437
						$mots_cles = rtrim($nom_valeur[1], ',') ;
-
 
438
						$mots_cles_liste = explode("," , $mots_cles) ;
-
 
439
 
-
 
440
						foreach($mots_cles_liste as $mot_cle)
-
 
441
						{
-
 
442
							$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_cle).'%"' ;
-
 
443
							$requete .= ' AND ' ;
-
 
444
						}
-
 
445
					}
-
 
446
					elseif($nom_valeur[0] == "c.ci_meta_comment")
-
 
447
					{
-
 
448
						$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
-
 
449
 
-
 
450
						foreach($mots_comment_liste as $mot_comment)
-
 
451
						{
-
 
452
							$mot_comment = trim($mot_comment) ;
-
 
453
							$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"' ;
-
 
454
							$requete .= ' AND ' ;
-
 
455
						}
-
 
456
					}
-
 
457
					elseif($nom_valeur[0] == "c.ci_meta_date")
-
 
458
					{
-
 
459
						$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"' ;
-
 
460
						$requete .= ' AND ' ;
-
 
461
					}
-
 
462
					elseif($nom_valeur[0] == "c.ci_id_tampon")
-
 
463
					{
-
 
464
						$ids_tampon = rtrim($nom_valeur[1], ',') ;
-
 
465
						$requete .= 'c.ci_id_image IN ( '.$this->bdd->quote($ids_tampon).')' ;
-
 
466
					}
-
 
467
					elseif($nom_valeur[0] == "b.nom_ret")
-
 
468
					{
-
 
469
						if($nom_valeur[1] == "indetermine") {
-
 
470
							$nom_valeur[1] = 'null';
-
 
471
						}
-
 
472
						
-
 
473
						$requete .= ' (';
-
 
474
						$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"' ;
-
 
475
						$requete .= ' OR ' ;
-
 
476
						$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"' ;
-
 
477
						$requete .= ') AND ' ;
-
 
478
						
-
 
479
					} else
-
 
480
					{
-
 
481
						$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"' ;
-
 
482
						$requete .= '" AND ' ;
-
 
483
					}
-
 
484
			}
-
 
485
		}
-
 
486
		
-
 
487
		$requete = rtrim($requete,' AND ') ;
-
 
488
		
-
 
489
		return $requete;
-
 
490
	}
-
 
491
	
-
 
492
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
-
 
493
		
-
 
494
		if(trim($chaine_requete) == '') {
-
 
495
			return '';
-
 
496
		}
-
 
497
		
-
 
498
		$chaine_requete = strtolower($chaine_requete);
-
 
499
		
-
 
500
		$chaine_requete = str_replace(' ','_',$chaine_requete);
-
 
501
		
-
 
502
		$requete = ' (';
-
 
503
	
-
 
504
		$requete .= 'b.nom_ret LIKE "'.$chaine_requete.'%"' ;
-
 
505
		$requete .= ' OR ' ;
-
 
506
		
-
 
507
		$requete .= 'b.nom_sel LIKE "'.$chaine_requete.'%"' ;
-
 
508
		$requete .= ' OR ' ;
-
 
509
 
-
 
510
		$requete .= 'b.location LIKE "'.$chaine_requete.'%" ' ;
-
 
511
		$requete .= ' OR ' ;
-
 
512
		
-
 
513
		$requete .= 'b.id_location LIKE "'.$chaine_requete.'%" ' ;
-
 
514
		$requete .= ' OR ' ;
-
 
515
		
-
 
516
		$requete .= 'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" ' ;
-
 
517
		
-
 
518
		$requete .= ') ';
-
 
519
		
-
 
520
		return $requete;
-
 
521
	}
-
 
522
	
-
 
523
	private function estUneRechercheGenerale() {
-
 
524
		return isset($_GET['recherche']);
-
 
525
	}
-
 
526
	
-
 
527
	private function traiterCriteresMultiples($tableau_criteres) {
-
 
528
		
-
 
529
		$tableau_criteres_pour_bdd = array();
-
 
530
				
-
 
531
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
-
 
532
		
-
 
533
			if(isset($this->criteres[$nom_critere])) {
-
 
534
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
-
 
535
			}
-
 
536
		}
-
 
537
		
-
 
538
		return $tableau_criteres_pour_bdd;
Line 351... Line 539...
351
	}
539
	}
352
 
540
 
Line 353... Line 541...
353
	private function creerDescriptionComplet($donnees, $item) {
541
	private function creerDescriptionComplet($donnees, $item) {