Subversion Repositories eFlore/Applications.del

Rev

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

Rev 857 Rev 951
Line 81... Line 81...
81
		$tris_possibles_tableau = explode(',', $tris_possibles);
81
		$tris_possibles_tableau = explode(',', $tris_possibles);
82
		if(isset($this->parametres['tri']) && !in_array($this->parametres['tri'], $tris_possibles_tableau)) {
82
		if(isset($this->parametres['tri']) && !in_array($this->parametres['tri'], $tris_possibles_tableau)) {
83
			$erreurs[] = '- le type de tri demandé est incorrect, les valeurs possibles sont '.$tris_possibles.' ;';
83
			$erreurs[] = '- le type de tri demandé est incorrect, les valeurs possibles sont '.$tris_possibles.' ;';
84
		}
84
		}
Line -... Line 85...
-
 
85
		
-
 
86
		if(isset($this->parametres['tri']) && $this->parametres['tri'] == "votes") {
-
 
87
			if(!isset($this->parametres['protocole']) || !is_numeric($this->parametres['protocole'])) {
-
 
88
				$erreurs[] = '- Le paramètre protocole est obligatoire en cas de tri par vote et doit être un entier ;';
-
 
89
			}
-
 
90
		}
85
		
91
		
86
		$directions_tri = array('asc', 'desc');
92
		$directions_tri = array('asc', 'desc');
87
		if(isset($this->parametres['ordre']) && !in_array($this->parametres['ordre'], $directions_tri)) {
93
		if(isset($this->parametres['ordre']) && !in_array($this->parametres['ordre'], $directions_tri)) {
88
			$erreurs[] = '- la direction du tri demandé est incorrecte, les valeurs supportées sont asc ou desc ;';
94
			$erreurs[] = '- la direction du tri demandé est incorrecte, les valeurs supportées sont asc ou desc ;';
Line 372... Line 378...
372
	/**
378
	/**
373
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
379
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
374
	* */
380
	* */
375
	private function chargerLiaisons() {
381
	private function chargerLiaisons() {
Line -... Line 382...
-
 
382
	
-
 
383
		// Attention le LEFT JOIN est indispensable pour ramener les images n'ayant pas de votes
376
	
384
		// en cas de tri par votes
-
 
385
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS di.*, doi.*, du.*, dob.* '.
-
 
386
						   ($this->doitJoindreTableVotes() ?
-
 
387
						   		', IF(dvote.ce_protocole = '.$this->parametres['protocole'].', SUM(dvote.valeur), 0) as total_votes ' :
-
 
388
						   		''
377
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * '.
389
						   	).
378
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
390
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
379
						   'INNER JOIN del_image di '.
391
						   'INNER JOIN del_image di '.
380
						   'ON doi.id_image = di.id_image '.
392
						   'ON doi.id_image = di.id_image '.
381
						   'INNER JOIN del_observation dob '.
393
						   'INNER JOIN del_observation dob '.
382
						   'ON doi.id_observation = dob.id_observation '.
394
						   'ON doi.id_observation = dob.id_observation '.
383
						   'INNER JOIN del_utilisateur du '.
395
						   'INNER JOIN del_utilisateur du '.
-
 
396
						   'ON du.id_utilisateur = di.ce_utilisateur '.
-
 
397
							($this->doitJoindreTableVotes() ?
-
 
398
						   		'LEFT JOIN del_image_vote dvote '.
-
 
399
						   		'ON doi.id_image = dvote.ce_image AND dvote.ce_protocole = '.$this->parametres['protocole'] :
-
 
400
						   		''
384
						   'ON du.id_utilisateur = di.ce_utilisateur';
401
						   	);
385
		$requeteLiaisons .= $this->chargerClauseWhere();
402
		$requeteLiaisons .= $this->chargerClauseWhere();
386
		$requeteLiaisons .= $this->getTri();
403
		$requeteLiaisons .= $this->getTri();
-
 
404
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
387
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
405
		
388
		return $this->bdd->recupererTous($requeteLiaisons);
406
		return $this->bdd->recupererTous($requeteLiaisons);
Line -... Line 407...
-
 
407
	}
-
 
408
	
-
 
409
	private function doitJoindreTableVotes() {
-
 
410
		return ($this->tri == 'votes');
389
	}
411
	}
390
	
412
	
391
	private function getTri() {		
413
	private function getTri() {		
-
 
414
		$order = '';
-
 
415
		if($this->doitJoindreTableVotes()) {
392
		$order = '';
416
			$order = ' GROUP BY dvote.ce_image, dob.id_observation ORDER BY total_votes '.$this->directionTri.', date_transmission desc ';
393
		if($this->tri != 'vote') {
417
		} else {
394
			$order = ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';
418
			$order = ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';
395
		}
419
		}