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

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

On mets les vignettes des versions dans la navigation

File size: 7.1 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('photospip_fonctions');
9
10function formulaires_editer_image_charger_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='image_edit_config', $row=array(), $hidden=''){
11        $valeurs = array();
12        $valeurs['id_document'] = $id_document;
13        /**
14         * Restaurer les inputs en cas de test
15         */
16        foreach(array('filtre',
17                'ratio','recadre_width','recadre_height','recadre_x1','recadre_y1',
18                'params_image_sepia',
19                'params_image_gamma',
20                'params_image_flou',
21                'params_image_saturer',
22                'params_image_rotation',
23                'params_image_niveaux_gris_auto') as $input){
24                if(_request($input))
25                        $valeurs[$input] = _request($input);   
26        }
27       
28        $valeurs['largeur_previsu'] = test_espace_prive()? 548 : lire_config('photospip/largeur_previsu','450');
29        if(!is_numeric($id_document)){
30                $valeurs['message_erreur'] = _T('photospip:erreur_doc_numero');
31                $valeurs['editable'] = false;
32        }
33        else if(!$id_document = sql_getfetsel('id_document','spip_documents','id_document='.intval($id_document))){
34                $valeurs['message_erreur'] = _T('photospip:erreur_doc_numero');
35                $valeurs['editable'] = false;
36        }
37        else if(!autoriser('modifier','document',$id_document)){
38                $valeurs['message_erreur'] = _T('photospip:erreur_auth_modifier');
39                $valeurs['editable'] = false;
40        }
41        else if($GLOBALS['meta']['image_process'] != 'gd2'){
42                $valeurs['message_erreur'] = _T('photospip:erreur_image_process');
43                $valeurs['editable'] = false;
44        }
45        return $valeurs;
46}
47
48// Choix par defaut des options de presentation
49function image_edit_config($row)
50{
51        global $spip_ecran, $spip_lang, $spip_display;
52
53        $config = $GLOBALS['meta'];
54        $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
55        $config['langue'] = $spip_lang;
56
57        $config['restreint'] = ($row['statut'] == 'publie');
58        return $config;
59}
60
61function formulaires_editer_image_verifier_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
62        if(!$var_filtre = _request('filtre')){
63                $erreurs['message_erreur'] = _T('photospip:erreur_form_filtre');
64        }
65        /**
66         * On test uniquement
67         */
68        elseif(_request('tester')){
69                if(in_array($var_filtre,array('tourner','image_recadre'))){
70                        $erreurs['message_erreur'] = _T('photospip:erreur_form_filtre_sstest');
71                }
72                else{
73                        list($param1, $param2, $param3,$params) = photospip_recuperer_params_form($var_filtre);
74                        $erreurs['message'] = 'previsu';
75                        $erreurs['filtre'] = $var_filtre;
76                        $erreurs['param'] = $params;
77                        if($param2){
78                                $erreurs['param2'] = $param2;
79                        }
80                        if($param3){
81                                $erreurs['param3'] = $param3;
82                        }
83                }
84        }
85        return $erreurs;
86}
87
88function photospip_recuperer_params_form($var_filtre){
89        $param1 = $param2 = $param3 = $params = null;
90        if ($var_filtre == "tourner"){
91                $params = _request('params_tourner');
92        }
93        else if ($var_filtre == "image_recadre"){
94                $param1 = _request('recadre_width');
95                $param2 = _request('recadre_height');
96                $param_left = _request('recadre_x1');
97                $param_top = _request('recadre_y1');
98                $param3 = 'left='.$param_left.' top='.$param_top;
99                $params = array($param1,$param2,$param3);
100        }
101        else if ($var_filtre == 'image_sepia'){
102                $params = _request('params_image_sepia');
103                $params = str_replace('#','',$params);
104        }
105        else if($var_filtre == 'image_gamma'){
106                $params = _request('params_image_gamma');
107        }
108        else if($var_filtre == 'image_flou'){
109                $params = _request('params_image_flou');
110        }
111        else if($var_filtre == 'image_saturer'){
112                $params = _request('params_image_saturer');
113        }
114        else if($var_filtre == 'image_rotation'){
115                $params = _request('params_image_rotation');
116        }
117        else if($var_filtre == 'image_niveaux_gris_auto'){
118                $params = '';
119        }
120        return array($param1,$param2,$param3,$params);
121}
122// http://doc.spip.org/@inc_editer_article_dist
123function formulaires_editer_image_traiter_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
124        $res = array();
125        $var_filtre = _request('filtre');
126        $params = photospip_recuperer_params_form($var_filtre);
127        spip_log($params,'photospip');
128        $row = sql_fetsel('*','spip_documents','id_document='.intval($id_document));
129        include_spip('inc/documents'); 
130        $src = get_spip_doc($row['fichier']);
131        if (preg_match(',^(.*)-photospip(\d+).([^.]+)$,', $src, $match)) {
132                $version = $match[2];
133                $orig_src = $match[1].'.'.$match[3];
134                spip_log("nouvel src $src","photospip");
135                spip_log("version = $version","photospip");
136                $newversion = ++$version;
137                spip_log("La nouvelle version sera $newversion","photospip");
138        }
139        if($version){
140                // $dest = preg_replace(',\.[^.]+$,', '-r'.$var_rot.'$0', $src); //original
141                $dest = preg_replace(",\.[^.]+$,", "-photospip".($newversion)."$0", $orig_src);
142                spip_log("la destination sera $dest","photospip");
143                spip_log("application du filtre $var_filtre $src : $dest","photospip");
144        }
145        else{
146                $dest = preg_replace(',\.[^.]+$,', '-photospip1.png', $src);
147                // on transforme l'image en png non destructif
148                include_spip('inc/filtres_images');
149                spip_log("On transforme l'image source en PNG non destructif","photospip");
150                $src = extraire_attribut(image_alpha($src,0),'src');
151                spip_log("application du filtre $var_filtre $src : $dest","photospip");
152        }
153       
154        if($var_filtre == "tourner"){
155                include_spip('inc/filtres');
156                include_spip('public/parametrer'); // charger les fichiers fonctions #bugfix spip 2.1.0
157                $dst_img = filtrer('image_rotation',$src,$params[3]);
158                $dst_img = filtrer('image_format',$dst_img,$row['extension']);
159                $dst_img = extraire_attribut($dst_img,'src');
160                include_spip('inc/getdocument');
161                deplacer_fichier_upload($dst_img,$dest);
162        }
163        else{
164                $sortie = photospipfiltre($src, $dest, $var_filtre,$params);
165                if(!$sortie){
166                        $res['message_erreur'] = 'photospip n a pas pu appliquer le filtre '.$var_filtre;
167                        return $res;
168                }
169        }
170
171        $size_image = getimagesize($dest);
172        spip_log("taille de l'image $size_image[0] x $size_image[1]","photospip");
173        $largeur = $size_image[0];
174        $hauteur = $size_image[1];
175        $ext = substr(basename($dest), strpos(basename($dest), ".")+1, strlen(basename($dest)));
176        $poids = filesize($dest);
177       
178        // succes !
179        if ($largeur>0 AND $hauteur>0) {
180                if(is_array($params))
181                        $params = serialize($params);
182                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));
183                sql_updateq('spip_documents', array('fichier' => set_spip_doc($dest), 'taille' => $poids, 'largeur'=>$largeur, 'hauteur'=>$hauteur, 'extension' => $ext), "id_document=".intval($row['id_document']));
184                spip_log("Update de l'image dans la base poid= $poids, extension = $ext, hauteur= $hauteur, largeur = $largeur, fichier = $dest","photospip");
185        }
186
187        if (!isset($res['redirect']))
188                $res['editable'] = true;
189        if (!isset($res['message_erreur']))
190                $res['message_ok'] = _L('Votre modification a &eacute;t&eacute; enregistr&eacute;e');
191
192        return $res;
193}
194
195?>
Note: See TracBrowser for help on using the repository browser.