public function getUrlImageFromAdresse($idAdresse = 0, $format = 'mini', $params = array()) { $url = ""; $dateUpload = ""; $idHistoriqueImage = ""; $string = new stringObject(); switch ($format) { case 'mini': $chemin = $this->getUrlImage("mini"); break; case 'moyen': $chemin = $this->getUrlImage("moyen"); break; case 'grand': $chemin = $this->getUrlImage("grand"); break; } // requete desactivée (limit 0) : on n'affiche pas les images reliee a l'adresse par la table _adresseimage $queryAdresse = "\n\t\t\t\tSELECT hi.idHistoriqueImage as idHistoriqueImage , hi.idImage as idImage, hi.nom as nom , hi.dateUpload as dateUpload , hi.dateCliche as dateCliche\n\t\t\t\tFROM historiqueImage hi2, historiqueImage hi\n\t\t\t\tRIGHT JOIN _adresseImage ai ON ai.idImage = hi.idImage\n\t\t\t\tWHERE ai.idAdresse = '" . $idAdresse . "'\n\t\t\t\t\t\tAND hi2.idImage = hi.idImage\n\t\t\t\t\t\tGROUP BY hi.idImage, hi.idHistoriqueImage\n\t\t\t\t\t\tHAVING hi.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\t\t\t\t\t\tLIMIT 0\n\t\t\t\t\t\t"; $resAdresse = $this->connexionBdd->requete($queryAdresse); if (mysql_num_rows($resAdresse) == 1) { // toujours 0 $fetchAdresse = mysql_fetch_assoc($resAdresse); $url = $chemin . $fetchAdresse['dateUpload'] . '/' . $fetchAdresse['idHistoriqueImage'] . ".jpg"; $dateUpload = $fetchAdresse['dateUpload']; $idHistoriqueImage = $fetchAdresse['idHistoriqueImage']; } else { // on recherche une image appartenant a un evenement de l'adresse // recherche des evenements de l'adresse: $arrayListeEvenementsGroupeAdresse = array(); $arrayImagePrincipale = array(); $affichageListeAdresseFromSourceTrouvee = false; // l'affichage contextuel sur l'ecran des sources est desactive... /*if(isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage']=='listeAdressesFromSource' && isset($this->variablesGet['source']) && $this->variablesGet['source']!='') { $reqImagesSource = " SELECT hi1.idHistoriqueImage as idHistoriqueImage, hi1.idImage as idImage, hi1.dateUpload as dateUpload FROM historiqueImage hi2, historiqueImage hi1 LEFT JOIN _evenementImage ei ON ei.idImage = hi1.idImage LEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = ei.idEvenement WHERE hi2.idImage = hi1.idImage AND hi1.idSource='".$this->variablesGet['source']."' AND ee.idEvenement='".$params['idEvenementGroupeAdresse']."' GROUP BY hi1.idImage , hi1.idHistoriqueImage HAVING hi1.idHistoriqueImage = max(hi2.idHistoriqueImage) LIMIT 1 "; $resImagesSource = $this->connexionBdd->requete($reqImagesSource); if(mysql_num_rows($resImagesSource)==1) { $fetchImagesSource = mysql_fetch_assoc($resImagesSource); $dateUpload = $fetchImagesSource['dateUpload']; $idHistoriqueImage = $fetchImagesSource['idHistoriqueImage']; $url = $chemin.$dateUpload."/".$idHistoriqueImage.".jpg"; $affichageListeAdresseFromSourceTrouvee = true; } } */ $affichageListeAdressesPersonneImageTrouvee = false; if (isset($this->variablesGet['archiAffichage']) && $this->variablesGet['archiAffichage'] == 'evenementListe' && isset($this->variablesGet['selection']) && $this->variablesGet['selection'] == 'personne' && isset($this->variablesGet['id']) && $this->variablesGet['id'] != '' && isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse'] != '' && !$affichageListeAdresseFromSourceTrouvee) { // si on est sur l'affichage de la liste des adresses d'un architecte par exemple , on va chercher les photos sur les evenements concernant l'architecte // verifions s'il y a au moins une photo sur l'evenement concerné // ajout 29/07/2010 // si l'image principale se situe sur l'evenement concerné , on affiche l'image principale , sinon une image de l'evenement $image = new archiImage(); $arrayImagePrincipale = $image->getArrayInfosImagePrincipaleFromIdGroupeAdresse(array('idEvenementGroupeAdresse' => $params['idEvenementGroupeAdresse'], 'format' => $format)); if ($arrayImagePrincipale['trouve']) { $affichageListeAdressesPersonneImageTrouvee = true; $dateUpload = $arrayImagePrincipale['dateUpload']; $idHistoriqueImage = $arrayImagePrincipale['idHistoriqueImage']; $url = $chemin . $dateUpload . "/" . $idHistoriqueImage . ".jpg"; } else { $reqPersonneEvenement = "\n\t\t\t\t\t\t\tSELECT hi1.idHistoriqueImage as idHistoriqueImage, hi1.idImage as idImage, hi1.dateUpload as dateUpload\n\t\t\t\t\t\t\tFROM historiqueImage hi2,historiqueImage hi1\n\t\t\t\t\t\t\tLEFT JOIN _evenementPersonne ep ON ep.idPersonne = " . mysql_real_escape_string($this->variablesGet['id']) . "\n\t\t\t\t\t\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie=ep.idEvenement\n\t\t\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei ON ei.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\t\t\tWHERE ee.idEvenement=" . mysql_real_escape_string($params['idEvenementGroupeAdresse']) . "\n\t\t\t\t\t\t\t\t\t\t\tAND hi1.idImage = ei.idImage\n\t\t\t\t\t\t\t\t\t\t\tAND hi2.idImage = hi1.idImage\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY hi1.idImage, hi1.idHistoriqueImage\n\t\t\t\t\t\t\t\t\t\t\tHAVING hi1.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\t\t\t\t\t\t\t\t\t\t\tORDER BY ei.position DESC,hi1.idHistoriqueImage ASC\n\t\t\t\t\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t\t\t\t\t"; $resPersonneEvenement = $this->connexionBdd->requete($reqPersonneEvenement); if (mysql_num_rows($resPersonneEvenement) == 1) { $fetchPersonneEvenement = mysql_fetch_assoc($resPersonneEvenement); $affichageListeAdressesPersonneImageTrouvee = true; $dateUpload = $fetchPersonneEvenement['dateUpload']; $idHistoriqueImage = $fetchPersonneEvenement['idHistoriqueImage']; $url = $chemin . $dateUpload . "/" . $idHistoriqueImage . ".jpg"; } } } if (isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse'] != '' && $params['idEvenementGroupeAdresse'] != '0' && !$affichageListeAdressesPersonneImageTrouvee && !$affichageListeAdresseFromSourceTrouvee) { $image = new archiImage(); $arrayListeEvenementsGroupeAdresse[] = $params['idEvenementGroupeAdresse']; // si un groupe d'adresse est precisé on va d'abord regarder s'il une image principale est selectionnee $arrayImagePrincipale = $image->getArrayInfosImagePrincipaleFromIdGroupeAdresse(array('idEvenementGroupeAdresse' => $params['idEvenementGroupeAdresse'], 'format' => $format)); } elseif (!$affichageListeAdressesPersonneImageTrouvee && !$affichageListeAdresseFromSourceTrouvee) { $queryEvenements = "SELECT idEvenement FROM _adresseEvenement WHERE idAdresse = '" . $idAdresse . "'"; $resEvenements = $this->connexionBdd->requete($queryEvenements); while ($fetchEvenement = mysql_fetch_assoc($resEvenements)) { $arrayListeEvenementsGroupeAdresse[] = $fetchEvenement['idEvenement']; } } if (isset($arrayImagePrincipale['trouve']) && $arrayImagePrincipale['trouve'] == true && !$affichageListeAdressesPersonneImageTrouvee && !$affichageListeAdresseFromSourceTrouvee) { // on a trouve une photo principale sur l'evenement groupe adresse $url = $arrayImagePrincipale['url']; $dateUpload = $arrayImagePrincipale['dateUpload']; $idHistoriqueImage = $arrayImagePrincipale['idHistoriqueImage']; } elseif (count($arrayListeEvenementsGroupeAdresse) > 0 && !$affichageListeAdressesPersonneImageTrouvee && !$affichageListeAdresseFromSourceTrouvee) { // si on est sur l'affichage des adresses concernant une personne (architecte etc ...) // on affiche une photo de l'evenement concerné par cette personne si il y a des photos , sinon on ne met pas ce critere dans la requete de recherche de photo $arrayCritereListeIdEvenementPersonne = array(); if (isset($this->variablesGet['selection']) && $this->variablesGet['selection'] == 'personne') { // voyons d'abord s'il y a des photos sur l'evenement concerné par l'architect , sinon ce n'est pas la peine d'ajouter ce critere a la recherche de la photo $reqIsPhotoSurEvenement = "\n\t\t\t\t\t\t\tSELECT idEvenementAssocie as idEvenementPhotoPersonne\n\t\t\t\t\t\t\tFROM _evenementEvenement ee\n\t\t\t\t\t\t\tLEFT JOIN _evenementImage ei ON ei.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\tLEFT JOIN _evenementPersonne ep ON ep.idEvenement = ee.idEvenementAssocie\n\t\t\t\t\t\t\tWHERE ee.idEvenement IN (" . implode(",", $arrayListeEvenementsGroupeAdresse) . ")\n\t\t\t\t\t\t\t\t\tAND ep.idPersonne = '" . $this->variablesGet['id'] . "'\n\t\t\t\t\t\t\t\t\t\t\tGROUP BY ei.idEvenement\n\t\t\t\t\t\t\t\t\t\t\tHAVING count(ei.idImage)>0\n\t\t\t\t\t\t\t\t\t\t\t"; $resIsPhotoSurEvenement = $this->connexionBdd->requete($reqIsPhotoSurEvenement); if (mysql_num_rows($resIsPhotoSurEvenement) > 0) { while ($fetchIsPhotoSurEvenement = mysql_fetch_assoc($resIsPhotoSurEvenement)) { $arrayCritereListeIdEvenementPersonne[] = $fetchIsPhotoSurEvenement['idEvenementPhotoPersonne']; } $listeEvenementsAssocies = implode("','", $arrayCritereListeIdEvenementPersonne); } } // si la recherche ne concerne pas un personne on fait une recherche plus generale if (count($arrayCritereListeIdEvenementPersonne) == 0) { // on recherche les evenements du groupe d'adresses $listeEvenementsGroupeAdresse = implode("','", $arrayListeEvenementsGroupeAdresse); $queryEvenementAssocies = "\n\t\t\t\t\t\t\tSELECT idEvenementAssocie FROM _evenementEvenement WHERE idEvenement in ('" . $listeEvenementsGroupeAdresse . "')\n\t\t\t\t\t\t\t\t\t"; $resEvenementsAssocies = $this->connexionBdd->requete($queryEvenementAssocies); $arrayListeEvenementsAssocies = array(); while ($fetchEvenementsAssocies = mysql_fetch_assoc($resEvenementsAssocies)) { $arrayListeEvenementsAssocies[] = $fetchEvenementsAssocies['idEvenementAssocie']; } $listeEvenementsAssocies = implode("','", $arrayListeEvenementsAssocies); } $queryImage = " SELECT hi.idImage as idImage , hi.idHistoriqueImage as idHistoriqueImage, hi.dateUpload as dateUpload,ha1.numero as numero,\n\n\t\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\t\tha1.idRue,\n\t\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\t\tIF (ha1.idSousQuartier != 0, ha1.idSousQuartier, r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\t\tIF (ha1.idQuartier != 0, ha1.idQuartier, sq.idQuartier) AS idQuartier,\n\t\t\t\t\t\tIF (ha1.idVille != 0, ha1.idVille, q.idVille) AS idVille,\n\t\t\t\t\t\tIF (ha1.idPays != 0, ha1.idPays, v.idPays) AS idPays\n\n\t\t\t\t\t\tFROM historiqueImage hi2, historiqueImage hi\n\n\t\t\t\t\t\tRIGHT JOIN _evenementImage ei ON ei.idImage = hi.idImage\n\t\t\t\t\t\tRIGHT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = ei.idEvenement\n\t\t\t\t\t\tRIGHT JOIN _adresseEvenement ae ON ae.idEvenement = ee.idEvenement\n\t\t\t\t\t\tRIGHT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ae.idAdresse\n\t\t\t\t\t\tRIGHT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\n\t\t\t\t\t\tLEFT JOIN rue r ON r.idRue = ha1.idRue\n\t\t\t\t\t\tLEFT JOIN sousQuartier sq ON sq.idSousQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier!='0' ,ha1.idSousQuartier ,r.idSousQuartier )\n\t\t\t\t\t\tLEFT JOIN quartier q ON q.idQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' ,ha1.idQuartier ,sq.idQuartier )\n\t\t\t\t\t\tLEFT JOIN ville v ON v.idVille = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' ,ha1.idVille ,q.idVille )\n\t\t\t\t\t\tLEFT JOIN pays p ON p.idPays = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' ,ha1.idPays ,v.idPays )\n\n\t\t\t\t\t\tLEFT JOIN _adresseImage ai ON hi.idImage = ai.idImage\n\n\t\t\t\t\t\tWHERE ei.idEvenement in ('" . $listeEvenementsAssocies . "')\n\t\t\t\t\t\t\t\tAND hi2.idImage = hi.idImage\n\t\t\t\t\t\t\t\tAND ai.idImage IS NULL\n\t\t\t\t\t\t\t\tGROUP BY hi.idImage , hi.idHistoriqueImage,ha1.idAdresse,ha1.idHistoriqueAdresse\n\t\t\t\t\t\t\t\tHAVING hi.idHistoriqueImage = max(hi2.idHistoriqueImage) AND ha1.idHistoriqueAdresse = max(ha2.idHistoriqueAdresse)\n\t\t\t\t\t\t\t\tORDER BY ei.position ASC,hi.idHistoriqueImage\n\t\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t\t"; // on limit a 1 sinon cela peut prendre du temps $resImage = $this->connexionBdd->requete($queryImage); if (mysql_num_rows($resImage) > 0) { $fetchImage = mysql_fetch_assoc($resImage); //$url = $chemin.$fetchImage['dateUpload'].'/'.$fetchImage['idHistoriqueImage'].".jpg"; $url = 'photos-' . $string->convertStringToUrlRewrite($this->getIntituleAdresse($fetchImage)) . '-' . $fetchImage['dateUpload'] . '-' . $fetchImage['idHistoriqueImage'] . '-' . $format . '.jpg'; $dateUpload = $fetchImage['dateUpload']; $idHistoriqueImage = $fetchImage['idHistoriqueImage']; } } } // pas d'url trouvé , on va chercher dans les images vues sur l'adresse courante if (!$affichageListeAdressesPersonneImageTrouvee && !$affichageListeAdresseFromSourceTrouvee && $url == '' && isset($params['idEvenementGroupeAdresse']) && $params['idEvenementGroupeAdresse'] != '') { $reqVueSur = "\n\t\t\t\t\tSELECT hi1.idImage as idImage , hi1.idHistoriqueImage as idHistoriqueImage, hi1.dateUpload as dateUpload,ha1.numero as numero,\n\n\t\t\t\t\tr.nom as nomRue,\n\t\t\t\t\tsq.nom as nomSousQuartier,\n\t\t\t\t\tq.nom as nomQuartier,\n\t\t\t\t\tv.nom as nomVille,\n\t\t\t\t\tp.nom as nomPays,\n\t\t\t\t\tha1.numero as numeroAdresse,\n\t\t\t\t\tha1.idRue,\n\t\t\t\t\tr.prefixe as prefixeRue,\n\t\t\t\t\tIF (ha1.idSousQuartier != 0, ha1.idSousQuartier, r.idSousQuartier) AS idSousQuartier,\n\t\t\t\t\tIF (ha1.idQuartier != 0, ha1.idQuartier, sq.idQuartier) AS idQuartier,\n\t\t\t\t\tIF (ha1.idVille != 0, ha1.idVille, q.idVille) AS idVille,\n\t\t\t\t\tIF (ha1.idPays != 0, ha1.idPays, v.idPays) AS idPays\n\n\t\t\t\t\tFROM _adresseImage ai\n\t\t\t\t\tLEFT JOIN historiqueImage hi1 ON hi1.idImage = ai.idImage\n\t\t\t\t\tLEFT JOIN historiqueImage hi2 ON hi2.idImage = hi1.idImage\n\t\t\t\t\tLEFT JOIN historiqueAdresse ha1 ON ha1.idAdresse = ai.idAdresse\n\t\t\t\t\tLEFT JOIN historiqueAdresse ha2 ON ha2.idAdresse = ha1.idAdresse\n\n\t\t\t\t\tLEFT JOIN rue r ON r.idRue = ha1.idRue\n\t\t\t\t\tLEFT JOIN sousQuartier sq ON sq.idSousQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier!='0' ,ha1.idSousQuartier ,r.idSousQuartier )\n\t\t\t\t\tLEFT JOIN quartier q ON q.idQuartier = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier!='0' ,ha1.idQuartier ,sq.idQuartier )\n\t\t\t\t\tLEFT JOIN ville v ON v.idVille = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille!='0' ,ha1.idVille ,q.idVille )\n\t\t\t\t\tLEFT JOIN pays p ON p.idPays = IF(ha1.idRue='0' and ha1.idSousQuartier='0' and ha1.idQuartier='0' and ha1.idVille='0' and ha1.idPays!='0' ,ha1.idPays ,v.idPays )\n\n\t\t\t\t\tWHERE ai.idEvenementGroupeAdresse='" . $params['idEvenementGroupeAdresse'] . "'\n\t\t\t\t\tAND ai.vueSur='1'\n\t\t\t\t\tAND ai.idAdresse<>'' AND ai.idAdresse<>'0'\n\n\t\t\t\t\tGROUP BY hi1.idImage , hi1.idHistoriqueImage,ha1.idAdresse,ha1.idHistoriqueAdresse\n\n\n\t\t\t\t\t\t\t"; $resVueSur = $this->connexionBdd->requete($reqVueSur); if (mysql_num_rows($resVueSur) > 0) { $fetchVueSur = mysql_fetch_assoc($resVueSur); $url = 'photos-' . $string->convertStringToUrlRewrite($this->getIntituleAdresse($fetchVueSur)) . '-' . $fetchVueSur['dateUpload'] . '-' . $fetchVueSur['idHistoriqueImage'] . '-' . $format . '.jpg'; $dateUpload = $fetchVueSur['dateUpload']; $idHistoriqueImage = $fetchVueSur['idHistoriqueImage']; } } $trouveImage = true; if ($url == '') { if (isset($params['placeholder']) && $params['placeholder'] != "") { $url = $params['placeholder']; $trouveImage = false; } else { $url = $this->getUrlImage() . 'transparent.gif'; $trouveImage = false; } } return array('url' => $url, 'dateUpload' => $dateUpload, 'idHistoriqueImage' => $idHistoriqueImage, 'trouve' => $trouveImage); }