* @license GPL v3 * @license CECILL v2 * @version $Id$ * @copyright © 2010, Jean-Pascal MILCENT */ class CelImageDoublon extends Cel { /** * Méthode appelée avec une requête de type GET. */ public function getElement($params) { $parametres = $this->traiterParametres(array('mode', 'utilisateur'), $params, false); extract($parametres); $contenu = ''; if ($this->authentifierUtilisateur()) { $retour = null; if (isset($mode)) { $methode = $this->traiterNomMethodeGet($mode); if (method_exists($this, $methode)) { $retour = $this->$methode($parametres); } else { $service = get_class($this); $this->messages[] = "Ce type de mode '$mode' pour le service '$service' n'est pas disponible."; } } else { $this->messages[] = "Vous devez indiquer un type de mode."; } if (is_null($retour)) { $contenu = 'Un problème est survenu : '.print_r($this->messages, true); } else { if ($retour['type'] == 'widget') { $squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html'; $contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']); } else if ($retour['type'] == 'json') { $contenu = $retour['donnees']; } } } // Envoie sur la sortie standard $encodage = 'UTF-8'; $mime = 'text/html'; $formatage_json = (isset($retour) && $retour['type'] == 'json') ? true : false; $this->envoyer($contenu, $mime, $encodage, $formatage_json); } /** * Carte par défaut */ private function getDoublonHtml($parametres) { $widget = null; $utilisateur = $this->getAuthIdentifiant(); // Création des infos du widget $widget['type'] = 'widget'; $widget['donnees']['utilisateur'] = $utilisateur; $widget['donnees']['doublons'] = $this->getImagesDoublon($utilisateur); $widget['squelette'] = 'doublon_defaut'; return $widget; } /** * Images en doublon d'un utilisateur */ private function getImagesDoublon($utilisateur) { $doublons = null; if (isset($utilisateur)) { // Un utilisateur en particulier $requete = 'SELECT ci_id_image, ci_ordre, ci_nom_original, ci_md5 '. 'FROM cel_images '. "WHERE ci_ce_utilisateur = '$utilisateur' "; $images = $this->executerRequete($requete); // Traitement $doublons = array(); $images_doublons_id = array(); $md5 = array(); foreach ($images as $img) { if (!isset($md5[$img['ci_md5']])) { $md5[$img['ci_md5']] = array( 'url' => $this->getUrlImage($img['ci_id_image'], 'CXS'), 'obs_ordre' => array(), 'img_ordre' => $img['ci_ordre'], 'img_id' => $img['ci_id_image']); } else { if (!isset($doublons[$img['ci_md5']])) { $id_img = $md5[$img['ci_md5']]['img_id']; $doublons[$img['ci_md5']][$id_img] = $md5[$img['ci_md5']]; $images_doublons_id[] = $this->bdd->quote($id_img); } $doublons[$img['ci_md5']][$img['ci_id_image']] = array( 'url' => $this->getUrlImage($img['ci_id_image'], 'CXS'), 'obs_ordre' => array(), 'img_ordre' => $img['ci_ordre'], 'img_id' => $img['ci_id_image']); $images_doublons_id[] = $this->bdd->quote($img['ci_id_image']); } } if (count($images_doublons_id) > 0) { $requete = 'SELECT ci_id_image, ci_nom_original, ci_md5, ordre '. 'FROM cel_images AS cim '. ' LEFT JOIN cel_obs_images AS coi '. ' ON (coi.coi_ce_image = cim.ci_id_image) '. ' LEFT JOIN cel_inventory AS ci '. ' ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '. "WHERE cim.ci_ce_utilisateur = '$utilisateur' ". ' AND cim.ci_id_image IN ('.implode(',', $images_doublons_id).')'; $infos = $this->executerRequete($requete); foreach ($infos as $info) { if (isset($doublons[$info['ci_md5']][$info['ci_id_image']]) && ! $this->etreNull($info['ordre'])) { $doublons[$info['ci_md5']][$info['ci_id_image']]['obs_ordre'][] = $info['ordre']; } } } } //echo '
'.print_r($doublons, true).'
'; return $doublons; } }