Subversion Repositories eFlore/Applications.del

Rev

Rev 1327 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1327 Rev 1328
Line 519... Line 519...
519
				$idsImages[] = $observation['id_image'];
519
				$idsImages[] = $observation['id_image'];
520
			}
520
			}
Line 521... Line 521...
521
			
521
			
522
			$chaineIdImages = implode(',', $idsImages);
522
			$chaineIdImages = implode(',', $idsImages);
-
 
523
			$requeteImages .= ' WHERE doi.id_image IN ('.$chaineIdImages.') '.
523
			$requeteImages .= ' WHERE doi.id_image IN ('.$chaineIdImages.') '.
524
							  ' GROUP BY doi.id_image, doi.id_observation '.
524
							  ' ORDER BY FIELD(doi.id_image,  '.$chaineIdImages.')'.
525
							  ' ORDER BY FIELD(doi.id_image,  '.$chaineIdImages.')'.
Line 525... Line 526...
525
							  ' LIMIT '.$this->navigation->getLimite(); // On limite sur le nombre car les obs peuvent avoir plusieurs images
526
							  ' LIMIT '.$this->navigation->getLimite(); // On limite sur le nombre car les obs peuvent avoir plusieurs images
-
 
527
			
526
			
528
		} else {
527
		} else {
529
			$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation ';
528
			$requeteImages .= ' ORDER BY id_observation DESC';
530
			$requeteImages .= ' ORDER BY id_observation DESC';
Line 529... Line -...
529
			$requeteImages .= $this->gestionBdd->getLimitSql();
-
 
530
		}
-
 
531
	
-
 
532
 
-
 
533
		/**
-
 
534
		 * 88307
-
 
535
		 * SELECT *, di.mots_cles_texte as mots_cles_texte_image  FROM del_obs_image doi  
-
 
536
		 * INNER JOIN del_image di ON doi.id_image = di.id_image  
-
 
537
		 * WHERE id_observation IN (783590,922353,922351,922349,921316,921315,921313,921312,783388,921310,921309,921308)  
531
			$requeteImages .= $this->gestionBdd->getLimitSql();
Line 538... Line 532...
538
		 * ORDER BY FIELD(id_observation,  783590,922353,922351,922349,921316,921315,921313,921312,783388,921310,921309,921308)
532
		}
539
		 * */
533
	
Line 580... Line 574...
580
			}
574
			}
Line 581... Line 575...
581
			
575
			
582
			
576
			
583
			// On compte à part les images issues de la jointure de del_obs_image et del_image car la fonction
577
			// On compte à part les images issues de la jointure de del_obs_image et del_image car la fonction
-
 
578
			// SQL_CALC_FOUND_ROWS dans la fonction requete image fait passer le temps d'éxécution de 0.0011 à 15s !
-
 
579
			$requeteNbImages = 'SELECT SUM(t.nb) as nb FROM (SELECT count(DISTINCT doi.id_image) as nb '.
-
 
580
							   'FROM del_obs_image doi '.
-
 
581
							   'INNER JOIN del_image di '.
584
			// SQL_CALC_FOUND_ROWS dans la fonction requete image fait passer le temps d'éxécution de 0.0011 à 15s !
582
							   'ON di.id_image = doi.id_image '.
-
 
583
							   'GROUP BY doi.id_image, doi.id_observation) t ';
585
			$requeteNbImages = 'SELECT count(doi.id_image) as nb FROM del_obs_image doi INNER JOIN del_image di ON di.id_image = doi.id_image';
584
			$resultatNbImages = $this->bdd->recupererTous($requeteNbImages);
586
			$resultatNbImages = $this->bdd->recupererTous($requeteNbImages);
585
 
587
			$total = (int) $resultatNbImages[0]['nb'];
586
			$total = (int) $resultatNbImages[0]['nb'];
588
			$this->navigation->setTotal($total);
587
			$this->navigation->setTotal($total);
589
		}
588
		}
590
		
589
 
Line 591... Line 590...
591
		return $liaisons;
590
		return $liaisons;
Line 646... Line 645...
646
						 ' FROM del_obs_image doi '.
645
						 ' FROM del_obs_image doi '.
647
						 ' INNER JOIN del_image di ON doi.id_image = di.id_image '.
646
						 ' INNER JOIN del_image di ON doi.id_image = di.id_image '.
648
						 ' INNER JOIN del_observation dob ON dob.id_observation = doi.id_observation '.
647
						 ' INNER JOIN del_observation dob ON dob.id_observation = doi.id_observation '.
649
						 ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image '.
648
						 ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image '.
650
						 ' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
649
						 ' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
651
		
650
 
652
		$conditionsImg = $this->getConditionsImages();
651
		$conditionsImg = $this->getConditionsImages();
Line 653... Line 652...
653
	
652
	
654
		if (!empty($conditionsImg)) {
653
		if (!empty($conditionsImg)) {
655
			$where = ' WHERE ('.implode(' OR ', $conditionsImg).') ';
654
			$where = ' WHERE ('.implode(' OR ', $conditionsImg).') ';
Line 676... Line 675...
676
					$tag = $this->parametres['masque.tag'];
675
					$tag = $this->parametres['masque.tag'];
677
					$requeteVotes .= ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
676
					$requeteVotes .= ' LEFT JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
678
					$requeteVotes .= " WHERE (dit.tag_normalise LIKE '$tag%' OR  di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
677
					$requeteVotes .= " WHERE (dit.tag_normalise LIKE '$tag%' OR  di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
679
				}
678
				}
Line 680... Line -...
680
	
-
 
681
	
679
	
682
				$requeteVotes .= ' GROUP BY doi.id_image, doi.id_observation '.
680
				$requeteVotes .= ' GROUP BY doi.id_image, doi.id_observation '.
683
								 ' ORDER by total_votes '.$this->directionTri .', id_observation '.$this->directionTri.' '.
681
								 ' ORDER by total_votes '.$this->directionTri .', id_observation '.$this->directionTri.' '.
Line 684... Line -...
684
						$this->gestionBdd->getLimitSql();
-
 
685
	
682
						$this->gestionBdd->getLimitSql();
686
				
683
	
687
				$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
684
				$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
688
				$tabVotes = array();
685
				$tabVotes = array();
689
				foreach ($resultatsVotes as $vote) {
686
				foreach ($resultatsVotes as $vote) {
Line 701... Line 698...
701
				
698
				
702
				
699
				
703
				$chaineTri .= '  doi.id_image IN ('.$strVotes.') ';
700
				$chaineTri .= '  doi.id_image IN ('.$strVotes.') ';
704
				$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strVotes.')  ';
-
 
705
			}
701
				$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strVotes.')  ';
706
				
702
			}
Line 707... Line 703...
707
				
703
			
708
			if ($this->parametres['tri'] == 'tags') {
704
			if ($this->parametres['tri'] == 'tags') {
709
					
705
					
710
				$requetetags = ' SELECT SQL_CALC_FOUND_ROWS distinct doi.id_image, COUNT(id_tag) as total_tags '.
706
				$requetetags = ' SELECT SQL_CALC_FOUND_ROWS doi.id_image, COUNT(id_tag) as total_tags '.
711
						' FROM del_obs_image doi LEFT JOIN del_image_tag dit ON dit.ce_image = doi.id_image ';
707
						' FROM del_obs_image doi LEFT JOIN del_image_tag dit ON dit.ce_image = doi.id_image AND dit.actif = 1 ';
712
	
708
					
713
				if (isset($this->parametres['masque.tag'])) {
709
				if (isset($this->parametres['masque.tag'])) {
714
					// Et si on a cherché par tag ?
710
					// Et si on a cherché par tag ?
715
					$requetetags .= ' LEFT JOIN del_image di ON dit.ce_image = di.id_image ';
-
 
716
					$tag = $this->parametres['masque.tag'];
-
 
717
					$requetetags .= " WHERE (dit.tag_normalise LIKE '$tag%' OR  di.mots_cles_texte LIKE '%$tag%') AND dit.actif = 1 ";
711
					$requetetags .= ' LEFT JOIN del_image di ON dit.ce_image = di.id_image ';
Line 718... Line 712...
718
				} else {
712
					$tag = $this->parametres['masque.tag'];
719
					$requetetags .= ' WHERE dit.actif = 1 ';	
713
					$requetetags .= " WHERE (dit.tag_normalise LIKE '$tag%' OR  di.mots_cles_texte LIKE '%$tag%') ";
720
				}
714
				}
721
				
715
				
722
				$requetetags .= ' GROUP BY id_image, id_observation '.
716
				$requetetags .= ' GROUP BY id_image, id_observation '.
723
						' ORDER by total_tags '.$this->directionTri.', id_observation '.$this->directionTri.
717
						' ORDER by total_tags '.$this->directionTri.', id_observation '.$this->directionTri.
724
						$this->gestionBdd->getLimitSql();
718
						$this->gestionBdd->getLimitSql();
725
	
719
 
726
				$resultatstags = $this->bdd->recupererTous($requetetags);
720
				$resultatstags = $this->bdd->recupererTous($requetetags);
Line 740... Line 734...
740
				}
734
				}
Line 741... Line 735...
741
	
735
	
742
				$chaineTri .= ' doi.id_image IN ('.$strtags.') ';
736
				$chaineTri .= ' doi.id_image IN ('.$strtags.') ';
743
				$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strtags.') ';
737
				$chaineOrdre = ' ORDER BY FIELD(doi.id_image, '.$strtags.') ';
744
			}
-
 
745
			
738
			}
746
			
739
						
747
			$requeteImages .= $chaineTri.' GROUP BY doi.id_image, doi.id_observation '.$chaineOrdre;
740
			$requeteImages .= $chaineTri.' GROUP BY doi.id_image, doi.id_observation '.$chaineOrdre;
748
		} else {
741
		} else {
749
			$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation'; // des fois, on a plusieurs observations pour la même image ...
742
			$requeteImages .= ' GROUP BY doi.id_image, doi.id_observation'; // des fois, on a plusieurs observations pour la même image ...
750
			$requeteImages .= $this->gestionBdd->getLimitSql();
743
			$requeteImages .= $this->gestionBdd->getLimitSql();
751
		}
744
		}
752
		
745
 
753
		$retour  = $this->bdd->recupererTous($requeteImages);
746
		$retour  = $this->bdd->recupererTous($requeteImages);
754
		$total = $this->getFoundRows();
747
		$total = $this->getFoundRows();
Line 755... Line 748...
755
		$this->navigation->setTotal($total);
748
		$this->navigation->setTotal($total);