Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3960 → Rev 3961

/trunk/widget/modules/photo/Photo.php
203,8 → 203,7
 
return $widget;
}
 
 
private function executerPhoto() {
$widget = null;
 
212,122 → 211,44
$this->parametres['limit'] = $this->parametres['limit'] ?? self::LIMIT_DEFAUT;
 
extract($this->parametres);
 
$hasTriedValueInConfig = false;
while (!isset($vignette) || !preg_match('/^[0-9]+,[0-9]+$/', $vignette)) {
$vignette = (!$hasTriedValueInConfig) ? $this->config['photo']['vignette'] : self::VIGNETTE_DEFAULT;
$hasTriedValueInConfig = true;
}
$id = '-'.(isset($id) ? $id : '1');
$titre = isset($titre) ? htmlentities(rawurldecode($titre)) : '';
 
$icone_rss = (isset($_GET['rss']) && $_GET['rss'] != 1) ? false : true;
$utilise_fancybox = (isset($_GET['mode_zoom']) && $_GET['mode_zoom'] != 'fancybox') ? false : true;
 
list($colonne, $ligne) = explode(',', $vignette);
$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true));
 
$champ_recherche = $champ_recherche ? $this->obtenirBooleen($champ_recherche) : ($this->config['photo']['champRecherche'] ? $this->obtenirBooleen($this->config['photo']['champRecherche']) : false) ;
$max_photo = $colonne * $ligne;
if ( $extra && 2 == $colonne ) {
$max_photo = $max_photo - 1;
} elseif ( $extra && 2 < $colonne ) {
$max_photo = $max_photo - 3;
}
$limit = $limit < $max_photo ? $limit : $max_photo;
$this->parametres['limit'] = $limit;
$parametresTraites = $this->traiterParametres();
$this->flux_rss_url .= $parametresTraites;
$url = $this->service_images_url.(!empty($parametresTraites) ? $parametresTraites.'&' : '?');
$json = $this->getDao()->consulter($url);
 
if (empty($json) || !strpos($json,'images') ) {
$this->messages[] = "L'URI suivante est invalide : $this->service_images_url.\n".
"Veuillez vérifier les paramêtres indiqués et la présence d'images associées.";
 
} else {
$tableau = json_decode($json, true);
 
if (empty($tableau['total']) || empty($tableau['images'])) {
$this->messages[] = 'Aucune photo ne correspond à vos critères';
} else {
 
$parametres_photo_suivante = $parametres_photo_precedente = $this->parametres;
$parametres_photo_suivante['start'] = $start + $limit;
$parametres_photo_precedente['start'] = 0 < $start - $limit ? $start - $limit : 0;
 
$widget['donnees']['total'] = $tableau['total'];
$widget['donnees']['id'] = $id;
$widget['donnees']['titre'] = $titre;
$widget['donnees']['flux_rss_url'] = $this->flux_rss_url;
$widget['donnees']['url_widget'] = $this->url_widget;
$widget['donnees']['url_widget_photos_suivantes'] = $this->url_widget.'?'.http_build_query($parametres_photo_suivante);
$widget['donnees']['url_widget_photos_precedente'] = $this->url_widget.'?'.http_build_query($parametres_photo_precedente);
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
$widget['donnees']['colonne'] = $colonne;
$widget['donnees']['ligne'] = $ligne;
$widget['donnees']['extra_actif'] = $extra;
$widget['donnees']['icone_rss'] = $icone_rss;
// Si la config champ_recherche est désactivé -> affichage mode e-flore
if (!$champ_recherche) {
$vignette ='5,2';
$tags = [
'fleur',
'feuille',
'fruit',
'ecorce',
'port',
'rameau',
];
foreach ($tags as $tag) {
$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,
true, $tag, $widget,$champ_recherche);
$widget['donnees']['champ_recherche'] = $champ_recherche;
$widget['donnees']['start'] = $start;
$widget['donnees']['limit'] = $limit;
$widget['donnees']['utilise_fancybox'] = $utilise_fancybox;
$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod');
$widget['donnees']['filtres'] = $this->parametres;
 
$num = 0;
$galerie_id = md5(http_build_query($_GET));
$widget['donnees']['galerie_id'] = $galerie_id;
 
session_start();
$_SESSION[$galerie_id]['max_photo'] = $max_photo;
$_SESSION[$galerie_id]['start'] = $start;
 
foreach ($tableau['images'] as $key => $image) {
if ($key == $max_photo) {
break;
}
$auteurTruncatedEmail = $this->tronquerCourriel($image['utilisateur']['mail_utilisateur']);
$auteur = trim($image['utilisateur']['nom_utilisateur']) ? $image['utilisateur']['nom_utilisateur'] : $auteurTruncatedEmail;
$item = $image;
// Formatage date
$item['date_photo'] = $image['date_photo'] ?? $image['obs']['date_obs'];
$item['date_redige'] = strftime('%A %d %B %Y', strtotime($item['date_photo']));
$item['date'] = date_format(date_create($item['date_photo']),"d/m/Y");
$item['lien'] = sprintf($this->eflore_url_tpl, $image['obs']['nom_referentiel'], $image['obs']['nom_sel_nn']);
$image['url_photo'] = preg_replace('/,/', "", $image['url_photo']);
$item['url_tpl'] = preg_replace('/(O|XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)$/', '%s.jpg',$image['url_photo']);
// Formatage titre
 
$item['titre'] = $image['obs']['nom_sel'].' [nn'.$image['obs']['nom_sel_nn'].'] par '.$auteur.' le '
.date_format(date_create($image['obs']['date_obs']),"d/m/Y").' - '.$image['obs']['localisation'];
 
$item['id_photo_formate'] = sprintf('%09d', $image['id_photo']);
$item['urlProfil'] = sprintf($this->config['photo']['tbProfilUrlTpl'], $image['utilisateur']['id_utilisateur'] );
// Ajout aux items et si première photo à extra
if ($key == 0) {
$widget['donnees']['extra'] = $item;
 
}
 
$widget['donnees']['items'][$num++] = $item;
$url_galerie_popup = sprintf($item['url_tpl'],'O');
$image_size = getimagesize($url_galerie_popup);
$item['width'] = $image_size[0];
$item['height'] = $image_size[1];
// Récupération des votes pictoflora
$item['votes'] = $this->getVotes($item);
 
$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = $item;
}
 
$widget['squelette'] = 'photo';
}
$widget['donnees']['tagToDisplay'] = 'fleur';
} else {
$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,false, 'non_eflore', $widget,$champ_recherche);
$widget['donnees']['champ_recherche'] = $champ_recherche;
}
 
return $widget;
}
 
474,5 → 395,131
}
return $contenu;
}
public function formaterDate($item, $image){
$item['date_photo'] = $image['date_photo'] ?? $image['obs']['date_obs'];
$item['date_redige'] = strftime('%A %d %B %Y', strtotime($item['date_photo']));
$item['date'] = date_format(date_create($item['date_photo']),"d/m/Y");
$item['lien'] = sprintf($this->eflore_url_tpl, $image['obs']['nom_referentiel'], $image['obs']['nom_sel_nn']);
$image['url_photo'] = preg_replace('/,/', "", $image['url_photo']);
$item['url_tpl'] = preg_replace('/(O|XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)$/', '%s.jpg',$image['url_photo']);
return $item;
}
public function formaterTitre($item, $image, $auteur){
$item['titre'] = $image['obs']['nom_sel'].' [nn'.$image['obs']['nom_sel_nn'].'] par '.$auteur.' le '
.date_format(date_create($image['obs']['date_obs']),"d/m/Y").' - '.$image['obs']['localisation'];
$item['id_photo_formate'] = sprintf('%09d', $image['id_photo']);
$item['urlProfil'] = sprintf($this->config['photo']['tbProfilUrlTpl'], $image['utilisateur']['id_utilisateur'] );
return $item;
}
private function getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox, $fromEflore,
$tag, $widget, $champ_recherche){
if ($fromEflore){
$this->parametres['tag'] = $tag;
}
list($colonne, $ligne) = explode(',', $vignette);
$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true));
$max_photo = $colonne * $ligne;
if ( $extra && 2 == $colonne ) {
$max_photo = $max_photo - 1;
} elseif ( $extra && 2 < $colonne ) {
$max_photo = $max_photo - 3;
}
$limit = $limit < $max_photo ? $limit : $max_photo;
$this->parametres['limit'] = $limit;
$parametresTraites = $this->traiterParametres();
$this->flux_rss_url .= $parametresTraites;
$url = $this->service_images_url.(!empty($parametresTraites) ? $parametresTraites.'&' : '?');
$json = $this->getDao()->consulter($url);
if ($fromEflore) {
unset($this->parametres['tag']);
}
if (empty($json) || !strpos($json,'images') ) {
$this->messages[] = "L'URI suivante est invalide : $this->service_images_url.\n".
"Veuillez vérifier les paramêtres indiqués et la présence d'images associées.";
} else {
$tableau = json_decode($json, true);
if (empty($tableau['total']) || empty($tableau['images'])) {
$this->messages[] = 'Aucune photo ne correspond à vos critères';
} else {
$parametres_photo_suivante = $parametres_photo_precedente = $this->parametres;
$parametres_photo_suivante['start'] = $start + $limit;
$parametres_photo_precedente['start'] = 0 < $start - $limit ? $start - $limit : 0;
$widget['donnees']['total'] = $tableau['total'];
$widget['donnees']['id'] = $id;
$widget['donnees']['titre'] = $titre;
$widget['donnees']['flux_rss_url'] = $this->flux_rss_url;
$widget['donnees']['url_widget'] = $this->url_widget;
$widget['donnees']['url_widget_photos_suivantes'] = $this->url_widget.'?'.http_build_query($parametres_photo_suivante);
$widget['donnees']['url_widget_photos_precedente'] = $this->url_widget.'?'.http_build_query($parametres_photo_precedente);
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
$widget['donnees']['colonne'] = $colonne;
$widget['donnees']['ligne'] = $ligne;
$widget['donnees']['extra_actif'] = $extra;
$widget['donnees']['icone_rss'] = $icone_rss;
$widget['donnees']['champ_recherche'] = $champ_recherche;
$widget['donnees']['start'] = $start;
$widget['donnees']['limit'] = $limit;
$widget['donnees']['utilise_fancybox'] = $utilise_fancybox;
$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod');
$widget['donnees']['filtres'] = $this->parametres;
$num = 0;
$galerie_id = md5(http_build_query($_GET));
$widget['donnees']['galerie_id'] = $galerie_id;
session_start();
$_SESSION[$galerie_id]['max_photo'] = $max_photo;
$_SESSION[$galerie_id]['start'] = $start;
foreach ($tableau['images'] as $key => $image) {
if ($key == $max_photo) {
break;
}
$auteurTruncatedEmail = $this->tronquerCourriel($image['utilisateur']['mail_utilisateur']);
$auteur = trim($image['utilisateur']['nom_utilisateur']) ? $image['utilisateur']['nom_utilisateur'] : $auteurTruncatedEmail;
$item = $image;
 
$item = $this->formaterDate($item, $image);
$item = $this->formaterTitre($item, $image, $auteur);
$item['tag_eflore'] = $tag;
// Ajout aux items et si première photo à extra
if ($key == 0) {
$widget['donnees']['extra'] = $item;
}
$widget['donnees']['items'][$tag][$num++] = $item;
$url_galerie_popup = sprintf($item['url_tpl'],'O');
$image_size = getimagesize($url_galerie_popup);
$item['width'] = $image_size[0];
$item['height'] = $image_size[1];
// Récupération des votes pictoflora
$item['votes'] = $this->getVotes($item);
$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = $item;
}
$widget['squelette'] = 'photo';
}
}
return $widget;
}
}
?>