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

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

On continue à modifier les type en em_type

Cela semble fonctionner correctement là

File size: 4.8 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        spip_log("EM : arg = $arg", "emballe_medias");
27
28        if (!$GLOBALS['visiteur_session']['id_auteur']) {
29                spip_log('EM : pas d id_auteur en session', 'emballe_medias');
30                die('no_article');
31        }
32
33        $type = _request('em_type') ? _request('em_type') : 'normal';
34
35        $result = array();
36
37        if ($files = ($_FILES ? $_FILES : $HTTP_POST_FILES)){
38
39                $error=$files['Filedata']['error'];
40                if(intval($error)){
41                        spip_log("EM : Erreur upload 3 -- cf. http://php.net/manual/fr/features.file-upload.errors.php","emballe_medias");
42                        return;
43                }
44
45                if (!$id_article = intval($arg)) {
46                        include_spip('action/editer_article');
47                        // si la config autorise de chercher dans un article deja existant
48                        // (propose ou en prepa) on le fait
49                        $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");
50                        //if (lire_config('emballe_medias/statuts/chercher_article')) {
51                        //      $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");
52                        //}
53                        if(!intval($id_article)){
54                                spip_log("EM : pas d'id_article");
55                                $rubriques = lire_config('emballe_medias/texte/rubrique',array(0=>1));
56                                $id_parent = lire_config('emballe_medias/texte/rubrique_defaut', $rubriques[0]);
57
58                                $id_article = insert_article($id_parent);
59
60                                $c = array('em_type' => $type);
61
62                                include_spip('inc/modifier');
63                                revision_article($id_article, $c);
64
65                                if(lire_config('emballe_medias/statuts/article_statut_defaut','prop') != 'prop'){
66                                        $c = array(
67                                                        'date'=> date(),
68                                                        'statut' => lire_config('emballe_medias/statuts/article_statut_defaut'),
69                                                        'id_parent' => $id_parent
70                                                );
71                                }
72
73                                instituer_article($id_article, $c);
74
75                                //$id_article = inserer_article_media($id_parent,$id_auteur,$type);
76                                spip_log("EM : insertion article $id_article pour l'auteur $id_auteur", "emballe_medias");
77                                if (!($id_parent AND $id_auteur)) {
78                                        include_spip('inc/headers');
79                                        redirige_url_ecrire();
80                                }
81                        }
82                }
83                spip_log('EM : id_article : '.$id_article, 'emballe_medias');
84                spip_log('EM : id_auteur : '.$id_auteur, 'emballe_medias');
85
86                //Corriger le mauvais mime-type
87                // Fonction dans le plugin swfupload
88                if($files['Filedata']['type'] == 'application/octet-stream') {
89                        include_spip('inc/swfupload');
90                        spip_log('EM : type => application/octet-stream','emballe_medias');
91                        $files = swfupload_verifier_mime($files);
92                }
93                spip_log("EM : content-type = ".$files['Filedata']['type'], 'emballe_medias');
94                spip_log("EM : $files", 'emballe_medias');
95
96                $mode = 'document';
97                $invalider = false;
98                $type_lien = 'article';
99                $id_lien = $id_article;
100
101                $result['result'] = 'success';
102
103                // Ajouter un document
104                $ajouter_doc = charger_fonction('ajouter_documents','inc');
105                $id_document = $ajouter_doc($files['Filedata']['tmp_name'], $files['Filedata']['name'], $type_lien, $id_lien, $mode, $id_document, &$documents_actifs, $titrer=false);
106
107                // mise à jour de l'article
108                // on lui change juste sa date de MAJ
109                spip_log("EM : mise a jour de MAJ de l'article $id_article");
110                sql_updateq('spip_articles',array('maj' => 'NOW()'),"id_article=$id_article");
111
112                // Traitements spécifiques aprÚs l'upload
113                // L'article est déjà créé
114                // Peut être utilisé pour :
115                // - Envoyer des notifications (aux auteurs, aux administrateurs)...
116                spip_log('EM Post upload medias');
117                pipeline('post_upload_medias',
118                                        array(
119                                                'args' => array(
120                                                'id_document' => $id_document,
121                                                'mime' => $mime,
122                                                'id_article' => $id_article,
123                                                'id_auteur' => $id_auteur
124                                        )
125                        )
126                );
127
128                $result['id_article'] = "$id_article";
129                $result['id_document'] = "$id_document";
130
131                $invalider = true;
132
133                if ($invalider) {
134                        include_spip('inc/invalideur');
135                        suivre_invalideur("0",true);
136                        spip_log('EM : invalider', 'emballe_medias');
137                }
138        }
139        echo $id_article;
140}
141
142?>
Note: See TracBrowser for help on using the repository browser.