New file |
0,0 → 1,115 |
<?php |
/** |
* Service fournissant une liste d'images doublon. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* Cas d'utilisation : |
* /CelImageDoublon/Sortie/Utilisateur : images doublon d'un utilisateur. |
* |
* Sortie = Type de sortie : html ou json. Par défaut : html |
* Utilisateur = identifiant (= courriel) de l'utilisateur. |
* |
* @author Jean-Pascal MILCENT <jpm@clapas.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @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) { |
$retour = null; |
$parametres = $this->traiterParametres(array('sortie', 'utilisateur'), $params, false); |
extract($parametres); |
|
if (isset($sortie)) { |
$methode = $this->traiterNomMethodeGet($sortie); |
if (method_exists($this, $methode)) { |
$retour = $this->$methode($parametres); |
} else { |
$this->messages[] = "Ce type de carte '$methode' n'est pas disponible."; |
} |
} else { |
$this->messages[] = "Vous devez indiquer un type de sortie."; |
} |
|
if (is_null($retour)) { |
$info = 'Un problème est survenu : '.print_r($this->messages, true); |
$this->envoyer($info); |
} else { |
if ($retour['type'] == 'widget') { |
$squelette = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.$retour['squelette'].'.tpl.html'; |
$html = $this->traiterSquelettePhp($squelette, $retour['donnees']); |
$this->envoyer($html); |
} else if ($retour['type'] == 'json') { |
$this->envoyer($retour['donnees']); |
} |
} |
} |
|
/** |
* Carte par défaut |
*/ |
public function getDoublonHtml($parametres) { |
$widget = null; |
extract($parametres); |
|
// 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(); |
$md5 = array(); |
foreach ($images as $img) { |
if (!isset($md5[$img['ci_md5']])) { |
$md5[$img['ci_md5']][] = array('url' => $this->creerUrlImage($img['ci_id_image']), 'num' => $img['ci_ordre']); |
} else { |
if (!isset($doublons[$img['ci_md5']])) { |
$doublons[$img['ci_md5']] = $md5[$img['ci_md5']]; |
} |
$doublons[$img['ci_md5']][] = array('url' => $this->creerUrlImage($img['ci_id_image']), 'num' => $img['ci_ordre']); |
} |
} |
} |
|
//echo '<pre>'.print_r($doublons, true).'</pre>'; |
return $doublons; |
} |
|
private function creerUrlImage($id_image, $taille = 'S') { |
$chemin_sur_serveur = $this->config['cel_db']['url_images']; |
$id_image = sprintf('%09s', $id_image); |
$id_image = wordwrap($id_image, 3 , '_', true); |
|
$niveauDossier = split('_', $id_image); |
$dossierNiveau1 = $niveauDossier[0]; |
$dossierNiveau2 = $niveauDossier[1]; |
|
$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2; |
$chemin_img = "$chemin_sur_serveur_final/$taille/{$id_image}_$taille.jpg"; |
return $chemin_img; |
} |
} |