source: plugins_spip/media_collections/collections_pipelines.php @ 7357

Last change on this file since 7357 was 7357, checked in by kent1, 8 years ago

Possibilité de lier un media à une collection depuis son formulaire de modification

On ajoute un selecteur de collection dans le formulaire d'édition du media.

Passage en version 1.3.2

File size: 6.1 KB
Line 
1<?php
2/**
3 * Plugin Collections (ou albums)
4 * (c) 2012 kent1
5 * Licence GNU/GPL
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10/**
11 * Ajout de contenu sur certaines pages,
12 * notamment des formulaires de liaisons entre objets
13 */
14function collections_affiche_milieu($flux) {
15        $texte = "";
16        $e = trouver_objet_exec($flux['args']['exec']);
17
18        // auteurs sur les collections
19        if (!$e['edition'] AND in_array($e['type'], array('collection'))) {
20                $texte .= recuperer_fond('prive/objets/editer/liens', array(
21                        'table_source' => 'auteurs',
22                        'objet' => $e['type'],
23                        'id_objet' => $flux['args'][$e['id_table_objet']]
24                ));
25        }
26
27
28        // collections sur les articles, auteurs, documents, gis, rubriques, syndic
29        if (!$e['edition'] AND in_array($e['type'], array('article', 'auteur', 'document', 'gis', 'rubrique', 'site'))) {
30                $texte .= recuperer_fond('prive/objets/editer/liens', array(
31                        'table_source' => 'collections',
32                        'objet' => $e['type'],
33                        'id_objet' => $flux['args'][$e['id_table_objet']]
34                ));
35        }
36
37        if ($texte) {
38                if ($p=strpos($flux['data'],"<!--affiche_milieu-->"))
39                        $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
40                else
41                        $flux['data'] .= $texte;
42        }
43
44        return $flux;
45}
46
47
48/**
49 * Ajout de liste sur la vue d'un auteur
50 */
51function collections_affiche_auteurs_interventions($flux) {
52        if ($id_auteur = intval($flux['args']['id_auteur'])) {
53
54                $flux['data'] .= recuperer_fond('prive/objets/liste/collections', array(
55                        'id_auteur' => $id_auteur,
56                        'titre' => _T('collection:info_collections_auteur')
57                ), array('ajax' => true));
58
59        }
60        return $flux;
61}
62
63/**
64 * Insertion dans le pipeline collections_liste_types
65 *
66 * @param array $flux
67 * @return array
68 */
69function collections_collections_liste_types($flux){
70        $flux['perso'] = _T('collection:type_perso');
71        $flux['coop'] = _T('collection:type_coop');
72        return $flux;
73}
74
75
76/**
77 * Insertion dans le pipeline collections_liste_genres
78 *
79 * @param array $flux
80 * @return array
81 */
82function collections_collections_liste_genres($flux){
83        $flux['mixed'] = _T('collection:genre_mixed');
84        $flux['image'] = _T('collection:genre_photo');
85        $flux['audio'] = _T('collection:genre_musique');
86        $flux['video'] = _T('collection:genre_video');
87        return $flux;
88}
89
90/**
91 * Optimiser la base de donnees en supprimant les liens orphelins
92 * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
93 *
94 * @param int $n
95 * @return int
96 */
97function collections_optimiser_base_disparus($flux){
98        include_spip('action/editer_liens');
99        $flux['data'] += objet_optimiser_liens(array('collection'=>'*'),'*');
100        return $flux;
101}
102
103/**
104 * Insertion dans le pipeline formulaire_traiter (SPIP)
105 *
106 * Insertion à la fin du traitement des formulaires
107 * Les sous plugins peuvent se brancher sur le pipeline spécifique à Diogene : diogene_traiter
108 *
109 * On ne s'insÚre que dans l'espace public
110 * - On insÚre une redirection correcte si le statut est validé
111 * - On affiche un message comme quoi l'objet a été mis à jour si c'est le cas
112 *
113 * @param array $flux Le contexte d'environnement du pipeline
114 * @return array $flux Le contexte d'environnement modifié
115 */
116function collections_formulaire_traiter($flux){
117        if(!test_espace_prive()){
118                if(
119                        $flux['args']['form'] == 'editer_collection'
120                        && $id_diogene=sql_getfetsel('id_diogene','spip_diogenes','objet="collection"') 
121                ){
122                        if(isset($flux['data']['redirect'])){
123                                if($flux['data']['redirect'] == generer_url_entite($res['id_collection'],'collection')){
124                                        if(_request('id_collection') == $res['id_collection']){
125                                                $res['redirect'] = self();
126                                        }else{
127                                                $flux['data']['redirect'] = parametre_url(self(),'id_collection',$res['id_collection']);
128                                        }
129                                }
130                        }
131                }
132        }
133        return $flux;
134}
135
136/**
137 * Insertion dans le pipeline insert_head_css (SPIP)
138 * Ajoute des styles par défaut pour les collections
139 *
140 * @param string $flux le contenu textuel du pipeline
141 * @return string $flux le contenu textuel modifié du pipeline
142 */
143function collections_insert_head_css($flux){
144        $flux .= '
145<link rel="stylesheet" href="'.direction_css(find_in_path('css/collections.css')).'" type="text/css" media="all" />
146';
147        return $flux;
148}
149
150/**
151 * Insertion dans le pipeline diogene_objets (plugin Diogene)
152 *
153 * On ajoute les champs qui peuvent être pris en compte pour les collections
154 *
155 * @param array $flux Un tableau des champs déjà ajouté
156 * @return array $flux Le tableau modifié
157 */
158function collections_diogene_objets($flux){
159        $flux['collection']['diogene_max'] = 1;
160        $flux['collection']['ss_rubrique'] = 1;
161        if(defined('_DIR_PLUGIN_DIOGENE_SPIPICIOUS')){
162                $flux['collection']['champs_sup']['spipicious'] = _T('diogene_spipicious:tags_spipicious');
163        }
164        if(defined('_DIR_PLUGIN_DIOGENE_MOTS')){
165                $flux['collection']['champs_sup']['mots'] = _T('diogene_mots:form_legend');
166        }
167        if(defined('_DIR_PLUGIN_DIOGENE_GERER_AUTEURS')){
168                $flux['collection']['champs_sup']['auteurs'] = _T('diogene_gerer_auteurs:label_cfg_ajout_auteurs');
169        }
170       
171        $flux['emballe_media']['champs_sup']['collection'] = _T('collection:diogene_champ_collection');
172        return $flux;
173}
174
175/**
176 * Insertion dans le pipeline diogene_ajouter_saisies (plugin Diogene)
177 * On ajoute simplement le selecteur de collections dans le formulaire
178 *
179 * @param array $flux Le contexte d'environnement
180 */
181function collections_diogene_ajouter_saisies($flux){
182        if(is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('collection',unserialize($flux['args']['champs_ajoutes']))){
183        $flux['data'] .= recuperer_fond('formulaires/diogene_ajouter_medias_collection',$flux['args']['contexte']);
184        }
185    return $flux;
186}
187
188/**
189 * Insertion dans le pipeline diogene_traiter (plugin Diogene)
190 * On ajoute la collection dans les champs à enregistrer
191 *
192 * @param array $flux Le contexte d'environnement
193 */
194function collections_diogene_traiter($flux){
195        if(($id_collection = _request('id_collection')) && is_numeric($flux['args']['id_objet']) && ($flux['args']['id_objet'] > 0)){
196                if(is_numeric($id_collection)){
197                        include_spip('action/editer_liens');
198                        if (autoriser('modifier', 'article', $flux['args']['id_objet'])) {
199                                objet_associer(array('collection' => $id_collection), array('article' => $flux['args']['id_objet']));
200                        }
201                }
202        }
203        return $flux;
204}
205?>
Note: See TracBrowser for help on using the repository browser.