Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1025 Rev 1168
Line 389... Line 389...
389
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS '.implode(', ',$champs).' '.
389
		$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS '.implode(', ',$champs).' '.
390
						   ($this->doitJoindreTableVotes() ?
390
						   ($this->doitJoindreTableVotes() ?
391
						   		', IF(dvote.ce_protocole = '.$this->parametres['protocole'].', SUM(dvote.valeur), 0) as total_votes ' :
391
						   		', IF(dvote.ce_protocole = '.$this->parametres['protocole'].', SUM(dvote.valeur), 0) as total_votes ' :
392
						   		''
392
						   		''
393
						   	).
393
						   	).
-
 
394
							($this->doitJoindreTableTags() ?
-
 
395
								// attention le DISTINCT est indispensable !
-
 
396
						   		', (COUNT(DISTINCT dtag.id_tag) + '.$this->assemblercomptageOccurencesMotsClesCel().') as total_tags ' :
-
 
397
						   		''
-
 
398
							).
394
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
399
						   'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
395
						   'INNER JOIN del_image di '.
400
						   'INNER JOIN del_image di '.
396
						   'ON doi.id_image = di.id_image '.
401
						   'ON doi.id_image = di.id_image '.
397
						   'INNER JOIN del_observation dob '.
402
						   'INNER JOIN del_observation dob '.
398
						   'ON doi.id_observation = dob.id_observation '.
403
						   'ON doi.id_observation = dob.id_observation '.
399
						   'INNER JOIN del_utilisateur du '.
404
						   'INNER JOIN del_utilisateur du '.
400
						   'ON du.id_utilisateur = di.ce_utilisateur '.
405
						   'ON du.id_utilisateur = di.ce_utilisateur '.
-
 
406
							($this->doitJoindreTableTags() ?
-
 
407
						   		'LEFT JOIN del_image_tag dtag '.
-
 
408
						   		'ON doi.id_image = dtag.ce_image AND dtag.actif = 1 ' :
-
 
409
						   		''
-
 
410
							).
401
							($this->doitJoindreTableVotes() ?
411
							($this->doitJoindreTableVotes() ?
402
						   		'LEFT JOIN del_image_vote dvote '.
412
						   		'LEFT JOIN del_image_vote dvote '.
403
						   		'ON doi.id_image = dvote.ce_image AND dvote.ce_protocole = '.$this->parametres['protocole'] :
413
						   		'ON doi.id_image = dvote.ce_image AND dvote.ce_protocole = '.$this->parametres['protocole'] :
404
						   		''
414
						   		''
405
						   	);
415
						   	);
406
		$requeteLiaisons .= $this->chargerClauseWhere();
416
		$requeteLiaisons .= $this->chargerClauseWhere();
407
		$requeteLiaisons .= $this->getTri();
417
		$requeteLiaisons .= $this->getTri();
408
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
418
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
409
 
-
 
-
 
419
		//echo $requeteLiaisons;exit;
410
		return $this->bdd->recupererTous($requeteLiaisons);
420
		return $this->bdd->recupererTous($requeteLiaisons);
411
	}
421
	}
Line -... Line 422...
-
 
422
	
-
 
423
	private function assemblercomptageOccurencesMotsClesCel() {
-
 
424
		$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
-
 
425
		$tabMotsClesAffiches = explode(',',$chaineMotsClesAffiches);
-
 
426
		$chaineSql = '';
-
 
427
		
-
 
428
		// Comptage du nombre de mots clés officiels présents dans la chaine mots clés texte
-
 
429
		foreach ($tabMotsClesAffiches as $motCle) {
-
 
430
			if($chaineSql != '') {
-
 
431
				$chaineSql .= ' + ';
-
 
432
			}
-
 
433
			$chaineSql .= 'IF(FIND_IN_SET('.$this->proteger($motCle).',di.mots_cles_texte) != 0, 1, 0)';
-
 
434
		}
-
 
435
		
-
 
436
		return '('.$chaineSql.')';
-
 
437
	}
412
	
438
	
413
	private function doitJoindreTableVotes() {
439
	private function doitJoindreTableVotes() {
414
		return ($this->tri == 'votes');
440
		return ($this->tri == 'votes');
Line -... Line 441...
-
 
441
	}
-
 
442
	
-
 
443
	private function doitJoindreTableTags() {
-
 
444
		return ($this->tri == 'tags');
415
	}
445
	}
416
	
446
	
417
	private function getTri() {		
447
	private function getTri() {		
418
		$order = '';
448
		$order = '';
-
 
449
		if($this->doitJoindreTableVotes()) {
-
 
450
			$order = ' GROUP BY dvote.ce_image, dob.id_observation ORDER BY total_votes '.$this->directionTri.', date_transmission desc ';
419
		if($this->doitJoindreTableVotes()) {
451
		} else if($this->doitJoindreTableTags()) {
420
			$order = ' GROUP BY dvote.ce_image, dob.id_observation ORDER BY total_votes '.$this->directionTri.', date_transmission desc ';
452
			$order = ' GROUP BY doi.id_image ORDER BY total_tags '.$this->directionTri.', date_transmission desc ';
421
		} else {
453
		} else {
422
			$order = ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';
454
			$order = ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';
423
		}
455
		}