source: spip-zone/_core_/plugins/medias/medias_pipelines.php @ 43900

Last change on this file since 43900 was 43900, checked in by cedric@…, 10 years ago

branchement sur le pipeline afficher_complement_objet
Du coup on se retrouve avec des documents sur la page des breves et des sites. Il faut prendre en compte une configuration pour les afficher a bon escient

File size: 4.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2011                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13
14if (!defined('_ECRIRE_INC_VERSION')) return;
15
16function medias_detecter_fond_par_defaut($fond){
17        // traiter le cas pathologique d'un upload de document ayant echoue
18        // car trop gros
19        if (empty($_GET) AND empty($_POST) AND empty($_FILES)
20        AND isset($_SERVER["CONTENT_LENGTH"])
21        AND strstr($_SERVER["CONTENT_TYPE"], "multipart/form-data;")) {
22                include_spip('inc/getdocument');
23                erreur_upload_trop_gros();
24        }
25  return $fond;
26}
27
28function medias_post_insertion($flux){
29
30        $objet = objet_type($flux['args']['table']);
31        if (in_array($objet,array('article','rubrique'))
32          AND $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur'])){
33
34                # cf. GROS HACK ecrire/inc/getdocument
35                # rattrapper les documents associes a cet objet nouveau
36                # ils ont un id = 0-id_auteur
37                $id_objet = $flux['args']['id_objet'];
38                sql_updateq("spip_documents_liens", array("id_objet" => $id_objet), array("id_objet = ".(0-$id_auteur),"objet=".sql_quote($objet)));
39        }
40
41  return $flux;
42}
43
44function medias_configurer_liste_metas($config){
45        $config['documents_article'] = 'non';
46        $config['documents_rubrique'] = 'non';
47        $config['documents_date'] = 'non';
48        return $config;
49}
50
51
52function medias_post_edition($flux){
53        // si on ajoute un document, mettre son statut a jour
54        if($flux['args']['operation']=='ajouter_document'){
55                include_spip('action/editer_document');
56                // mettre a jour le statut si necessaire
57                instituer_document($flux['args']['id_objet']);
58        }
59        // si on institue un objet, mettre ses documents lies a jour
60        elseif($flux['args']['operation']=='instituer' OR isset($flux['data']['statut'])){
61                if ($flux['args']['table']!=='spip_documents'){
62                        // verifier d'abord les doublons !
63                        $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
64                        $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$flux['args']['type'],id_table_objet($flux['args']['type'], $flux['args']['serveur']),$flux['args']['table_objet'],$flux['args']['spip_table_objet'], '', $flux['args']['serveur']);
65                        include_spip('base/abstract_sql');
66                        $type = objet_type($flux['args']['table']);
67                        $id = $flux['args']['id_objet'];
68                        $docs = array_map('reset',sql_allfetsel('id_document','spip_documents_liens','id_objet='.intval($id).' AND objet='.sql_quote($type)));
69                        include_spip('action/editer_document');
70                        foreach($docs as $id_document)
71                                // mettre a jour le statut si necessaire
72                                instituer_document($id_document);
73                }
74        }
75        else {
76                if ($flux['args']['table']!=='spip_documents'){
77                        // verifier les doublons !
78                        $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
79                        $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$flux['args']['type'],id_table_objet($flux['args']['type'], $flux['args']['serveur']),$flux['args']['table_objet'],$flux['args']['spip_table_objet'], '', $flux['args']['serveur']);
80                }
81        }
82        return $flux;
83}
84
85// liste des exec avec la colonne document
86$GLOBALS['medias_exec_colonne_document'][] = 'articles_edit';
87$GLOBALS['medias_exec_colonne_document'][] = 'breves_edit';
88$GLOBALS['medias_exec_colonne_document'][] = 'rubriques_edit';
89
90/**
91 * Pipeline afficher_complement_objet
92 * afficher le portfolio et ajout de document sur les fiches objet (article, rubrique..)
93 *
94 * @param  $flux
95 * @return
96 */
97function medias_afficher_complement_objet($flux){
98        if ($type=$flux['args']['type']
99                AND $id=intval($flux['args']['id'])) {
100                $documenter_objet = charger_fonction('documenter_objet','inc');
101                $flux['data'] .= $documenter_objet($id,$type);
102        }
103        return $flux['data'];
104}
105
106function medias_affiche_gauche($flux){
107        if (in_array($flux['args']['exec'],$GLOBALS['medias_exec_colonne_document'])
108                AND $table = preg_replace(",_edit$,","",$flux['args']['exec'])
109                AND $type = objet_type($table)
110                AND $id_table_objet = id_table_objet($type)
111                AND ($id = intval($flux['args'][$id_table_objet]) OR $id = 0-$GLOBALS['visiteur_session']['id_auteur'])
112          AND (autoriser('joindredocument',$type,$id))){
113                $flux['data'] .= recuperer_fond('prive/editer/colonne_document',array('objet'=>$type,'id_objet'=>$id));
114        }
115
116        return $flux;
117}
118
119function medias_objets_extensibles($objets){
120        return array_merge($objets, array('document' => _T('medias:objet_documents')));
121}
122
123function medias_document_desc_actions($flux){
124        return $flux;
125}
126
127function medias_editer_document_actions($flux){
128        return $flux;
129}
Note: See TracBrowser for help on using the repository browser.