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; |
} |
} |
?> |