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

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

pas mal de modifs suite à l'arrivée de diogène

File size: 4.1 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('emballe_medias/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('emballe_medias/texte/rubrique',array(0=>1));
54                                $id_parent = lire_config('emballe_medias/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('emballe_medias/statuts/article_statut_defaut','prop') != 'prop'){
64                                        $c = array(
65                                                        'date'=> date(),
66                                                        'statut' => lire_config('emballe_medias/statuts/article_statut_defaut'),
67                                                        'id_parent' => $id_parent
68                                                );
69                                }
70
71                                instituer_article($id_article, $c);
72
73                                //$id_article = inserer_article_media($id_parent,$id_auteur,$type);
74                                if (!($id_parent AND $id_auteur)) {
75                                        include_spip('inc/headers');
76                                        redirige_url_ecrire();
77                                }
78                        }
79                }
80
81                //Corriger le mauvais mime-type
82                // Fonction dans le plugin swfupload
83                if($files['Filedata']['type'] == 'application/octet-stream') {
84                        include_spip('inc/swfupload');
85                        $files = swfupload_verifier_mime($files);
86                }
87
88                $mode = 'document';
89                $invalider = false;
90                $type_lien = 'article';
91                $id_lien = $id_article;
92
93                $result['result'] = 'success';
94
95                // Ajouter un document
96                $ajouter_doc = charger_fonction('ajouter_documents','inc');
97                $id_document = $ajouter_doc($files['Filedata']['tmp_name'], $files['Filedata']['name'], $type_lien, $id_lien, $mode, $id_document, &$documents_actifs, $titrer=false);
98
99                /*
100                 * Mise à jour de l'article
101                 * on lui change juste sa date de MAJ
102                 */
103                sql_updateq('spip_articles',array('maj' => 'NOW()'),"id_article=$id_article");
104
105                /**
106                 * Traitements spécifiques aprÚs l'upload
107                 * L'article est déjà créé
108                 * Peut être utilisé pour :
109                 * Envoyer des notifications (aux auteurs, aux administrateurs)...
110                 */
111                pipeline('post_upload_medias',
112                                        array(
113                                                'args' => array(
114                                                'id_document' => $id_document,
115                                                'mime' => $mime,
116                                                'id_article' => $id_article,
117                                                'id_auteur' => $id_auteur
118                                        )
119                        )
120                );
121
122                $invalider = true;
123
124                if ($invalider) {
125                        include_spip('inc/invalideur');
126                        suivre_invalideur("0",true);
127                        spip_log('EM : invalider', 'emballe_medias');
128                }
129        }
130        echo $id_article;
131}
132
133?>
Note: See TracBrowser for help on using the repository browser.