WP File Manager
Current Path:
/
home
/
argothem
/
www
/
organecyberpresse
/
plugins
/
auto
/
albumsauto
/
v1.3.0
/
Name
Action
..
action
albumsauto.svg
Edit
albumsauto_pipelines.php
Edit
formulaires
inc
install.log
Edit
lang
paquet.xml
Edit
prive
readme.md
Edit
todo.md
Edit
Editing: albumsauto_pipelines.php
<?php /** * Utilisations de pipelines par Album automatique * * @plugin Album automatique * @copyright 2025 * @author RealET * @licence GNU/GPL * @package SPIP\Albumauto\Pipelines */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Branchement sur traiter * * - Insérer les images dans un album si plus grandes que _LARGEUR_ALBUM_AUTO_MIN * - Actualiser la zone des albums * * @param array $flux * @return array **/ function albumsauto_formulaire_traiter($flux) { $form = ($flux['args']['form'] ?? ''); // Est-ce que c'est l'ajout d'un documents ? $table_lien = ($flux['args']['table_lien'] ?? ''); $objet = ($flux['args']['args'][2] ?? ''); $action = ($flux['args']['args'][0] ?? ''); if ($form === 'joindre_document' && $objet !== 'album' && $action = 'new') { // Est-ce que c'est une image ET plus grande que _LARGEUR_ALBUM_AUTO_MIN foreach($flux['data']['ids'] as $id_document) { $document_largeur = sql_getfetsel('largeur', 'spip_documents', ['id_document=' . intval($id_document), "media='image'"]); if ((defined('_LARGEUR_ALBUM_AUTO_MIN')) && ($document_largeur >= _LARGEUR_ALBUM_AUTO_MIN)) { // 1) Y a t'il déjà un album de titre vide $id_objet = ($flux['args']['args'][1] ?? 0); $select_album = ['spip_albums.id_album']; $from_album = ['spip_albums INNER JOIN spip_albums_liens ON ( spip_albums.id_album = spip_albums_liens.id_album )']; $where_album = ["objet='" . $objet . "'", 'id_objet=' . $id_objet, "titre=''"]; if ($album_temp = sql_fetsel($select_album, $from_album, $where_album)) { // a) oui $id_album_temp = intval($album_temp['id_album']); } else { // b) non, le créer include_spip('inc/albumsauto_creer_album'); $id_album_temp = albumsauto_creer_album($objet, $id_objet); } // Est-ce qu'un autre album a été créé dans l'intervalle ? $album = sql_fetsel($select_album, $from_album, $where_album); $id_album = intval($album['id_album']); // Supprimer l'éventuel album créé en trop) if ($id_album !== $id_album_temp) { include_spip('inc/albums'); supprimer_albums($id_album_temp); } // 3) Rattacher l'image à l'album et le détacher de l'article (en une seule passe) sql_update( 'spip_documents_liens', ['id_objet' => $id_album, 'objet' => sql_quote('album')], ['id_document=' . intval($id_document), 'id_objet=' . $id_objet, 'objet=' . sql_quote($objet)] ); // Publier l'image autoriser_exception('modifier', 'document', $id_document); objet_instituer('document', $id_document, ['statut' => 'publie'], false); autoriser_exception('modifier', 'document', $id_document, false); // Rafraichir la zone des albums $flux['data']['message_ok'] .= "<script type='text/javascript'>if (window.jQuery) jQuery(function(){ajaxReload('albums_liste');});</script>"; // Invalider les caches include_spip('inc/invalideur'); suivre_invalideur("id='album/$id_album'"); } } } return $flux; } function albumsauto_document_desc_actions($flux) { if (($flux['args']['position'] === 'document_desc' || $flux['args']['position'] === 'document_case') && include_spip('inc/autoriser') && autoriser('modifier', 'document', $flux['args']['id_document']) ) { /* Est-ce une image ? */ if ($res = sql_select('id_document', 'spip_documents', ['id_document=' . $flux['args']['id_document'], 'media="image"'])) { if (sql_count($res) === 0) { /* Ne rien raire */ return $flux; } } /* Le document est soit rattaché à un album */ if ($flux['args']['objet'] === 'album') { /* Chercher à combien d'objets est rattaché l'album */ if ($res = sql_select('id_objet, objet', 'spip_albums_liens', ['id_album=' . $flux['args']['id_objet']])) { if (sql_count($res) === 1) { $ligne = sql_fetch($res); $id_objet = $ligne['id_objet']; $objet = $ligne['objet']; return recuperer_fond('inc/albums_changer_mode_document', [ 'id_document' => $flux['args']['id_document'], 'objet' => $objet, 'id_objet' => $id_objet, 'objet_precedent' => 'album', 'id_objet_precedent' => $flux['args']['id_objet'] ]); } } } else { /* Le document est rattaché à autre chose qu'un album */ /* Est-ce qu'il est 'vu' ? Si oui, ne rien faire */ if ($res = sql_select('id_document', 'spip_documents_liens', ['objet=' . sql_quote($flux['args']['objet']), 'id_objet=' . $flux['args']['id_objet'], 'id_document=' . $flux['args']['id_document'], 'vu="oui"'])) { if (sql_count($res) > 0) { return $flux; } } /* Chercher combien d'albums sont rattachés à l'objet */ if ($res = sql_select('id_album', 'spip_albums_liens', ['objet=' . sql_quote($flux['args']['objet']), 'id_objet=' . $flux['args']['id_objet']])) { $count_album = sql_count($res); if ($count_album === 0) { /* Pas encore d'album ? Le créer si clic sur le bouton */ $id_album = 0; } else { /* Prendre le premier album trouvé */ $ligne = sql_fetch($res); $id_album = $ligne['id_album']; } return recuperer_fond('inc/albums_changer_mode_document', [ 'count_album' => $count_album, 'id_document' => $flux['args']['id_document'], 'objet' => 'album', 'id_objet' => $id_album, 'objet_precedent' => $flux['args']['objet'], 'id_objet_precedent' => $flux['args']['id_objet'] ]); } } } return $flux; }