source: plugins_spip/import_video/emballe_medias/action/emballe_medias_upload.php @ 3040

Last change on this file since 3040 was 3040, checked in by kent1, 11 years ago

Cette configuration est définie dans diogène (pour l'instant)

File size: 4.0 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5/**
6 * Action appelée à chaque upload de fichier par SWFUpload
7 * Elle retourne un echo de l'array ($id_article,$id_document)
8 * @return
9 */
10function action_emballe_medias_upload_dist(){
11        spip_log("EM : ajouter media", "emballe_medias");
12
13        /**
14         * Le flash ne passe pas les cookies et donc on pert notre session ...
15         * On la rétabli avec ce hack horrible ...
16         */
17        if($cookie_session = _request($GLOBALS['cookie_prefix'].'_session')){
18                preg_match('/^([0-9]+)_/',$cookie_session,$resultats);
19                $id_auteur = $resultats[1];
20        }else{
21                $id_auteur = _request('id_auteur');
22        }
23        $GLOBALS['visiteur_session'] = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur));
24
25        $arg = _request('arg');
26
27        if (!$GLOBALS['visiteur_session']['id_auteur']) {
28                die('no_article');
29        }
30
31        $type = _request('em_type') ? _request('em_type') : 'normal';
32
33        $result = array();
34
35        if ($files = ($_FILES ? $_FILES : $HTTP_POST_FILES)){
36
37                $error=$files['Filedata']['error'];
38
39                if(intval($error)){
40                        spip_log("EM : Erreur upload 3 -- cf. http://php.net/manual/fr/features.file-upload.errors.php","emballe_medias");
41                        return;
42                }
43
44                if (!$id_article = intval($arg)) {
45                        include_spip('action/editer_article');
46                        // si la config autorise de chercher dans un article deja existant
47                        // (propose ou en prepa) on le fait
48                        $id_article = sql_getfetsel("art.id_article","spip_articles AS art LEFT JOIN spip_auteurs_articles AS aut ON (art.id_article=aut.id_article)","art.statut IN ('prop','prepa') AND art.em_type = ".sql_quote('$type')." AND aut.id_auteur = ".intval($id_auteur),"","art.maj");
49                        //if (lire_config('diogene/statuts/chercher_article')) {
50                        //      $id_article = sql_getfetsel("art.id_article","spip_articles AS art LEFT JOIN spip_auteurs_articles AS aut ON (art.id_article=aut.id_article)","art.statut IN ('prop','prepa') AND art.em_type = '$type' AND aut.id_auteur = $id_auteur","","art.maj");
51                        //}
52                        if(!intval($id_article)){
53                                $rubriques = lire_config('diogene/texte/rubrique',array(0=>1));
54                                $id_parent = lire_config('diogene/texte/rubrique_defaut', $rubriques[0]);
55
56                                $id_article = insert_article($id_parent);
57
58                                $c = array('em_type' => $type);
59
60                                include_spip('inc/modifier');
61                                revision_article($id_article, $c);
62
63                                if(lire_config('diogene/statuts/article_statut_defaut','prop') != 'prop'){
64                                        $c = array(
65                                                        'date'=> date(),
66                                                        'statut' => lire_config('diogene/statuts/article_statut_defaut'),
67                                                        'id_parent' => $id_parent
68                                                );
69                                }
70
71                                instituer_article($id_article, $c);
72
73                                if (!($id_parent AND $id_auteur)) {
74                                        include_spip('inc/headers');
75                                        redirige_url_ecrire();
76                                }
77                        }
78                }
79
80                //Corriger le mauvais mime-type
81                // Fonction dans le plugin swfupload
82                if($files['Filedata']['type'] == 'application/octet-stream') {
83                        include_spip('inc/swfupload');
84                        $files = swfupload_verifier_mime($files);
85                }
86
87                $mode = 'document';
88                $invalider = false;
89                $type_lien = 'article';
90                $id_lien = $id_article;
91
92                $result['result'] = 'success';
93
94                $mime = $files['Filedata']['type'];
95
96                // Ajouter un document
97                $ajouter_doc = charger_fonction('ajouter_documents','inc');
98                $id_document = $ajouter_doc($files['Filedata']['tmp_name'], $files['Filedata']['name'], $type_lien, $id_lien, $mode, $id_document, &$documents_actifs, $titrer=false);
99
100                /*
101                 * Mise à jour de l'article
102                 * on lui change juste sa date de MAJ
103                 */
104                sql_updateq('spip_articles',array('maj' => 'NOW()'),"id_article=$id_article");
105
106                /**
107                 * Traitements spécifiques aprÚs l'upload
108                 * L'article est déjà créé
109                 * Peut être utilisé pour :
110                 * Envoyer des notifications (aux auteurs, aux administrateurs)...
111                 */
112                pipeline('post_upload_medias',
113                                        array(
114                                                'args' => array(
115                                                'id_document' => $id_document,
116                                                'mime' => $mime,
117                                                'id_article' => $id_article,
118                                                'id_auteur' => $id_auteur
119                                        )
120                        )
121                );
122
123                $invalider = true;
124
125                if ($invalider) {
126                        include_spip('inc/invalideur');
127                        suivre_invalideur("0",true);
128                        spip_log('EM : invalider', 'emballe_medias');
129                }
130        }
131        echo $id_article;
132}
133
134?>
Note: See TracBrowser for help on using the repository browser.