Subversion Repositories eFlore/Applications.del

Rev

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

Rev 2035 Rev 2048
Line 194... Line 194...
194
	}
194
	}
Line 195... Line 195...
195
 
195
 
196
	private function ajouterContrainteAuteurId() {
196
	private function ajouterContrainteAuteurId() {
197
		$id = $this->parametres['masque.auteur'];
197
		$id = $this->parametres['masque.auteur'];
198
		$prefixe = $this->getPrefixe();
198
		$prefixe = $this->getPrefixe();
199
		$sqlTpl = "(du.id_utilisateur = %1\$d OR $prefixe.ce_utilisateur = %1\$d)";
199
		$sqlTpl = "($prefixe.ce_utilisateur = %1\$d)";
200
		$whereAuteur = sprintf($sqlTpl, $id);
200
		$whereAuteur = sprintf($sqlTpl, $id);
201
		$this->addWhere('masque.auteur', $whereAuteur);
201
		$this->addWhere('masque.auteur', $whereAuteur);
Line 202... Line 202...
202
	}
202
	}
203
 
203
 
204
	private function ajouterContrainteAuteurEmail() {
204
	private function ajouterContrainteAuteurEmail() {
205
		$email = $this->parametres['masque.auteur'];
205
		$email = $this->parametres['masque.auteur'];
206
		$prefixe = $this->getPrefixe();
206
		$prefixe = $this->getPrefixe();
207
		$sqlTpl = "(du.courriel LIKE %1\$s OR $prefixe.courriel_utilisateur LIKE %1\$s )";
207
		$sqlTpl = "($prefixe.courriel_utilisateur LIKE %1\$s )";
208
		$emailP = $this->bdd->proteger("$email%");
208
		$emailP = $this->bdd->proteger("$email%");
209
		$whereAuteur = sprintf($sqlTpl, $emailP);
209
		$whereAuteur = sprintf($sqlTpl, $emailP);
Line 294... Line 294...
294
 
294
 
295
			$this->ajouterJoinObsSiNecessaire();
295
			$this->ajouterJoinObsSiNecessaire();
296
		}
296
		}
Line 297... Line 297...
297
	}
297
	}
298
	
298
	
299
	private function ajouterContraintePays() {
299
	private function ajouterContraintePays() {
300
		if (isset($this->parametres['masque.pays'])) {
300
		if (isset($this->parametres['masque.pays'])) {
301
			// Attention le standard contient parfois FX pour la france métropolitaine
301
			// Attention le standard contient parfois FX pour la france métropolitaine
302
			// Dans ce cas particulier on cherche donc FR et FX
302
			// Dans ce cas particulier on cherche donc FR et FX
303
			$this->parametres['masque.pays'] = strtoupper($this->parametres['masque.pays']);
303
			$this->parametres['masque.pays'] = strtoupper($this->parametres['masque.pays']);
304
			if(strpos($this->parametres['masque.pays'], 'FR') !== false) {
304
			if(strpos($this->parametres['masque.pays'], 'FR') !== false) {
305
				$this->parametres['masque.pays'] = str_replace('FR', 'FR,FX', $this->parametres['masque.pays']);
305
				$this->parametres['masque.pays'] = str_replace('FR', 'FR,FX', $this->parametres['masque.pays']);
306
			}
306
			}
307
			$pays = explode(',', $this->parametres['masque.pays']);
307
			$pays = explode(',', $this->parametres['masque.pays']);
308
			$pays = implode(',', $this->bdd->proteger($pays));
308
			$pays = implode(',', $this->bdd->proteger($pays));
309
			$this->addWhere('masque.pays', "do.pays IN ($pays)");
309
			$this->addWhere('masque.pays', "do.pays IN ($pays)");
310
	
310
	
311
			$this->ajouterJoinObsSiNecessaire();
311
			$this->ajouterJoinObsSiNecessaire();
Line 312... Line 312...
312
		}
312
		}
313
	}
313
	}
314
 
314
 
Line 442... Line 442...
442
				// A CONFIRMER : toutes les observations moins les validées et à confirmer
442
				// A CONFIRMER : toutes les observations moins les validées et à confirmer
443
				// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer
443
				// i.e. : des observations avec un nom valide, qui ne sont pas à déterminer
444
				// (ni certitude "aDeterminer" ou "douteuse", ni mot clé),
444
				// (ni certitude "aDeterminer" ou "douteuse", ni mot clé),
445
				// ne possédant pas de proposition officiellement retenue 
445
				// ne possédant pas de proposition officiellement retenue 
446
				// et ayant une proposition initiale totalisant un score de moins de 4 
446
				// et ayant une proposition initiale totalisant un score de moins de 4 
447
				$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();
447
				$sous_requete_score_prop_votees = $this->getSousRequeteSommeVotesPropositions();
448
				$this->addWhere('masque.type', 
448
				$this->addWhere('masque.type', 
449
						'('.
449
						'('.
450
							'do.id_observation IN ('.
450
							'do.id_observation IN ('.
451
								'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'.
451
								'SELECT dc.ce_observation FROM del_commentaire dc WHERE dc.proposition_retenue = 0'.
452
								' AND ( '.
452
								' AND ( '.
453
									'dc.proposition_initiale = 1 '.
453
									'dc.proposition_initiale = 1 '.
454
									'AND dc.nom_sel_nn != 0 '.
454
									'AND dc.nom_sel_nn != 0 '.
455
									'AND dc.nom_sel_nn IS NOT NULL '.
455
									'AND dc.nom_sel_nn IS NOT NULL '.
456
									'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '.
456
									'AND dc.id_commentaire IN ('.$sous_requete_score_prop_votees.' < 4) '.
457
								') '.
457
								') '.
458
							') AND do.id_observation NOT IN ('.
458
							') AND do.id_observation NOT IN ('.
459
								'SELECT dc.ce_observation FROM del_commentaire dc '.
459
								'SELECT dc.ce_observation FROM del_commentaire dc '.
460
								'WHERE '.
460
								'WHERE '.
461
								' dc.proposition_retenue = 1'.
461
								' dc.proposition_retenue = 1'.
462
							') '.
462
							') '.
463
							'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '.
463
							'AND do.certitude != "douteux" AND do.certitude != "aDeterminer" '.
464
							'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '.
464
							'AND do.mots_cles_texte NOT LIKE "%aDeterminer%" '.
465
							'AND do.nom_sel_nn != 0 '.
465
							'AND do.nom_sel_nn != 0 '.
466
							'AND do.nom_sel_nn IS NOT NULL'.
466
							'AND do.nom_sel_nn IS NOT NULL'.
467
						') '	
467
						') '	
468
					);
468
					);
469
			}	
469
			}	
Line 472... Line 472...
472
		}
472
		}
473
	}
473
	}
Line 474... Line 474...
474
	
474
	
475
	private function getSousRequeteSommeVotesPropositions() {
475
	private function getSousRequeteSommeVotesPropositions() {
476
		// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens)
476
		// ATTENTION : un vote identifié compte 3 votes anonymes (dans les deux sens)
477
		return  'SELECT ce_proposition '.
477
		return  'SELECT ce_proposition '.
478
				'FROM del_commentaire_vote dcv '.
478
				'FROM del_commentaire_vote dcv '.
479
				'GROUP BY ce_proposition HAVING '.
479
				'GROUP BY ce_proposition HAVING '.
480
				'SUM(CASE '.
480
				'SUM(CASE '.
481
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '.
481
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN 3 '.
482
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '.
482
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' != 0 THEN -3 '.
483
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '.
483
				'	WHEN valeur = 1 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN 1 '.
484
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '.
484
				'	WHEN valeur = 0 AND dcv.ce_utilisateur REGEXP \'^-?[0-9]+$\' = 0 THEN -1 '.
485
				'END '.
485
				'END '.
486
			') ';
486
			') ';
Line 487... Line 487...
487
	}
487
	}
488
 
488
 
Line 600... Line 600...
600
	
600
	
601
	private function getNombreDeTags() {
601
	private function getNombreDeTags() {
602
		$somme = 0;
602
		$somme = 0;
603
		if (isset($this->parametres['masque.tag_del']['AND'])) {
603
		if (isset($this->parametres['masque.tag_del']['AND'])) {
604
			$somme = count($this->parametres['masque.tag_del']['AND']);
604
			$somme = count($this->parametres['masque.tag_del']['AND']);
605
		} else {
605
		} else {
606
			$somme = count($this->parametres['masque.tag_del']['OR']);
606
			$somme = count($this->parametres['masque.tag_del']['OR']);
607
		}
607
		}
608
		return $somme;
608
		return $somme;
Line 609... Line 609...
609
	}
609
	}
Line 658... Line 658...
658
		$tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : '';
658
		$tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : '';
659
			switch ($tri) {
659
			switch ($tri) {
660
			case 'date_observation' :
660
			case 'date_observation' :
661
				$this->addOrderBy("date_observation $ordre, id_observation $ordre");
661
				$this->addOrderBy("date_observation $ordre, id_observation $ordre");
662
				break;			
662
				break;			
663
			case 'nb_commentaires' :
663
			case 'nb_commentaires' :
664
				$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)';
664
				$sql_nb_comms = '(SELECT COUNT(id_commentaire) FROM del_commentaire AS dc WHERE ce_observation = id_observation)';
665
				$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre");
665
				$this->addOrderBy("$sql_nb_comms $ordre, id_observation $ordre");
666
				break;
666
				break;
667
			case 'date_transmission' :
667
			case 'date_transmission' :
668
			default:
668
			default:
669
				$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
669
				$this->addOrderBy("do.date_transmission $ordre, id_observation $ordre");
670
		}
670
		}