source: spip-zone/_plugins_/photospip/trunk/formulaires/editer_image.php @ 61602

Last change on this file since 61602 was 61602, checked in by kent1@…, 9 years ago

Remettre la taille correctement lorsque l'on revient à une ancienne version

Si les paramètres de filtres sont nuls... on ne les passe pas du tout pour garder ceux par défaut

Correction de petites erreurs

File size: 8.7 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5include_spip('inc/actions');
6include_spip('inc/autoriser');
7include_spip('inc/documents');
8include_spip('inc/filtres_images');
9include_spip('photospip_fonctions');
10
11function formulaires_editer_image_charger_dist($id_document='new', $retour=''){
12        $valeurs = array();
13        $id_document = sql_getfetsel('id_document','spip_documents','id_document='.intval($id_document));
14        $valeurs['id_document'] = $id_document;
15
16        if(!$id_document){
17                $valeurs['editable'] = false;
18                $valeurs['message_erreur'] = _T('phpotospip:erreur_doc_numero');
19                return $valeurs;
20        }
21       
22        $limite = lire_config('photospip/limite_version',1000000);
23        $nb_versions = sql_countsel('spip_documents_inters','id_document='.intval($id_document));
24        if($nb_versions >= $limite){
25                $valeurs['modifiable'] = false;
26                $valeurs['message_erreur'] = _T('phpotospip:erreur_nb_versions_atteint',array('nb'=>$limite));
27                return $valeurs;
28        }
29               
30        /**
31         * Restaurer les inputs en cas de test
32         */
33        foreach(array('filtre',
34                'ratio',
35                'recadre_width',
36                'recadre_height',
37                'recadre_x1',
38                'recadre_x2',
39                'recadre_y1',
40                'recadre_y2',
41                'reduire_width',
42                'reduire_height',
43                'passe_partout_width',
44                'passe_partout_height',
45                'params_tourner',
46                'params_image_sepia',
47                'params_image_gamma',
48                'params_image_flou',
49                'params_image_saturer',
50                'params_image_rotation',
51                'params_image_niveaux_gris_auto',
52                'type_modification') as $input){
53                if(_request($input))
54                        $valeurs[$input] = _request($input);   
55        }
56       
57        $valeurs['largeur_previsu'] = test_espace_prive()? 548 : lire_config('photospip/largeur_previsu','450');
58       
59        $resultats = lire_config('photospip/resultats',array('remplacer_image','creer_nouvelle_image','creer_version_image'));
60        if(count($resultats) == 1){
61                $valeurs['_hidden'] .= '<input type="hidden" name="type_modification" value="'.$resultats[0].'" />';
62        }
63       
64        if(!autoriser('modifier','document',$id_document)){
65                $valeurs['message_erreur'] = _T('photospip:erreur_auth_modifier');
66                $valeurs['editable'] = false;
67        }
68        else if($GLOBALS['meta']['image_process'] != 'gd2'){
69                $valeurs['message_erreur'] = _T('photospip:erreur_image_process');
70                $valeurs['editable'] = false;
71        }
72        return $valeurs;
73}
74
75function formulaires_editer_image_verifier_dist($id_document='new', $retour=''){
76        if(!$var_filtre = _request('filtre'))
77                $erreurs['message_erreur'] = _T('photospip:erreur_form_filtre');
78       
79        elseif(!$type_resultat = _request('type_modification'))
80                $erreurs['message_erreur'] = _T('photospip:erreur_form_type_resultat');
81        /**
82         * On test uniquement
83         */
84        elseif(_request('tester')){
85                if(in_array($var_filtre,array('tourner','image_recadre'))){
86                        $erreurs['message_erreur'] = _T('photospip:erreur_form_filtre_sstest');
87                }
88                else{
89                        list($param1, $param2, $param3,$params) = photospip_recuperer_params_form($var_filtre);
90                        $erreurs['message'] = 'previsu';
91                        $erreurs['filtre'] = $var_filtre;
92                        $erreurs['param'] = $params;
93                        $erreurs['param1'] = $param1;
94                        if($param2){
95                                $erreurs['param2'] = $param2;
96                        }
97                        if($param3){
98                                $erreurs['param3'] = $param3;
99                        }
100                }
101        }
102        return $erreurs;
103}
104
105function formulaires_editer_image_traiter_dist($id_document='new', $retour=''){
106        $res = array();
107       
108        $var_filtre = _request('filtre');
109        $type_modif = _request('type_modification');
110        $params = photospip_recuperer_params_form($var_filtre);
111       
112        $row = sql_fetsel('*','spip_documents','id_document='.intval($id_document)); 
113        $src = get_spip_doc($row['fichier']);
114       
115        $version = sql_countsel('spip_documents_inters','id_document='.intval($row['id_document']))+1;
116       
117        // on transforme l'image en png non destructif
118        //spip_log("On transforme l'image source en PNG non destructif","photospip");
119        //$src = extraire_attribut(image_alpha($src,0),'src');
120       
121        /**
122         * L'image créée aura pour nom image_orig-xxxx.ext où xxxx est le md5 de la date
123         * L'image temporaire est crée dans tmp/
124         */
125        $src_tmp = preg_replace(",\-photospip\w+([^\-]),","$1", $src);
126        $tmp_img = _DIR_TMP.preg_replace(",\.[^.]+$,","-photospip".md5(date('Y-m-d H:i:s'))."$0", basename($src_tmp));
127        $dest = preg_replace(",\.[^.]+$,","-photospip".md5(date('Y-m-d H:i:s'))."$0", $src_tmp);
128       
129        spip_log("application du filtre $var_filtre $src : $tmp_img","photospip");
130       
131        if($var_filtre == "tourner"){
132                include_spip('inc/filtres');
133                include_spip('public/parametrer'); // charger les fichiers fonctions #bugfix spip 2.1.0
134                $tmp_img = filtrer('image_rotation',$src,$params[3]);
135                $tmp_img = filtrer('image_format',$tmp_img,$row['extension']);
136                $tmp_img = extraire_attribut($tmp_img,'src');
137        }
138       
139        else{
140                $sortie = photospipfiltre($src, $tmp_img, $var_filtre,$params);
141                if(!$sortie){
142                        $res['message_erreur'] = 'photospip n a pas pu appliquer le filtre '.$var_filtre;
143                        return $res;
144                }
145        }
146
147        if($type_modif == 'creer_version_image'){
148                $size_image = getimagesize($tmp_img);
149                spip_log("taille de l'image $size_image[0] x $size_image[1]","photospip");
150                $largeur = $size_image[0];
151                $hauteur = $size_image[1];
152                $ext = substr(basename($tmp_img), strpos(basename($tmp_img), ".")+1, strlen(basename($tmp_img)));
153                $poids = filesize($tmp_img);
154                /**
155                 * Crée une version de l'image
156                 */
157                if(is_array($params))
158                        $params = serialize($params);
159                include_spip('inc/getdocument');
160                sql_insertq("spip_documents_inters",array("id_document" => $row['id_document'],"id_auteur" => $id_auteur,"extension" => $row['extension'], "fichier" => $row['fichier'], "taille" => $row['taille'],"hauteur" => $row['hauteur'], "largeur" => $row['largeur'],"mode" => $row['mode'], "version" => ($version? $version:1), "filtre" => $var_filtre, "param" => $params));
161                deplacer_fichier_upload($tmp_img,$dest,true);
162                spip_log("move $tmp_img => $dest",'photospip');
163                sql_updateq('spip_documents', array('fichier' => set_spip_doc($dest), 'taille' => $poids, 'largeur'=>$largeur, 'hauteur'=>$hauteur, 'extension' => $ext), "id_document=".intval($row['id_document']));
164                spip_log("Update de l'image dans la base poid= $poids, extension = $ext, hauteur= $hauteur, largeur = $largeur, fichier = $dest","photospip");
165        }else {
166                $files[0]['tmp_name'] = $tmp_img;
167                $files[0]['name'] = basename($dest);
168                if($type_modif == 'remplacer_image'){
169                        /**
170                         * Remplace l'image actuelle par une nouvelle
171                         */
172                         spip_log('on remplace','photospip');
173                         $ajouter_document = charger_fonction('ajouter_documents','action');
174                         $id_document = $ajouter_document($row['id_document'], $files, $objet, $id_objet, $row['mode']);
175                         include_spip('inc/flock');
176                         spip_unlink($tmp_img);
177                }
178                if($type_modif == 'creer_nouvelle_image'){
179                        /**
180                         * Crée un nouveau document
181                         */
182                         spip_log('on crée un nouveau doc','photospip');
183                         $ajouter_document = charger_fonction('ajouter_documents','action');
184                         $objet_lie = sql_fetsel('*','spip_documents_liens','id_document='.intval($row['id_document']));
185                         $id_document = $ajouter_document('new', $files, $objet_lie['objet'], $objet_lie['id_objet'], $row['mode']);
186                         spip_log($id_document,'photospip');
187                         $res['redirect'] = parametre_url(parametre_url(self(),'redirect',''),'id_document',$id_document[0]);
188                         include_spip('inc/flock');
189                         spip_unlink($tmp_img);
190                }
191        }
192       
193        include_spip('inc/invalideur');
194        suivre_invalideur("id='id_document/$id_document'");
195               
196        if (!isset($res['redirect']))
197                $res['redirect'] = parametre_url(self(),'redirect','');
198        if (!isset($res['message_erreur']))
199                $res['message_ok'] = _L('Votre modification a &eacute;t&eacute; enregistr&eacute;e');
200        return $res;
201}
202
203function photospip_recuperer_params_form($var_filtre){
204        $param1 = $param2 = $param3 = $params = null;
205        if ($var_filtre == "tourner"){
206                $params = _request('params_tourner');
207        }
208        else if($var_filtre == "image_reduire"){
209                $param1 = _request('reduire_width');
210                $param2 = _request('reduire_height');
211                $params = array($param1,$param2);
212        }
213        else if($var_filtre == "image_passe_partout"){
214                $param1 = _request('passe_partout_width');
215                $param2 = _request('passe_partout_height');
216                $params = array($param1,$param2);
217        }
218        else if ($var_filtre == "image_recadre"){
219                $param1 = _request('recadre_width');
220                $param2 = _request('recadre_height');
221                $param_left = _request('recadre_x1');
222                $param_top = _request('recadre_y1');
223                $param3 = 'left='.$param_left.' top='.$param_top;
224                $params = array($param1,$param2,$param3);
225        }
226        else if ($var_filtre == 'image_sepia'){
227                $params = _request('params_image_sepia');
228                $param1 = str_replace('#','',$params);
229        }
230        else if($var_filtre == 'image_gamma'){
231                $param1 = _request('params_image_gamma');
232        }
233        else if($var_filtre == 'image_flou'){
234                $param1 = _request('params_image_flou');
235        }
236        else if($var_filtre == 'image_saturer'){
237                $param1 = _request('params_image_saturer');
238        }
239        else if($var_filtre == 'image_rotation'){
240                $param1 = _request('params_image_rotation');
241        }
242        else if($var_filtre == 'image_niveaux_gris_auto'){
243                $param1 = sinon(_request('params_image_niveaux_gris_auto'),null);
244        }
245        return array($param1,$param2,$param3,$params);
246}
247?>
Note: See TracBrowser for help on using the repository browser.