source: spip-zone/_plugins_/photospip/trunk/action/images_versions.php @ 60903

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

La plupart des choses remarchent en 2.1 à priori

File size: 4.0 KB
Line 
1<?php
2
3/*
4 * Photospip
5 * Un Photoshop-light dans spip?
6 *
7 * Auteurs :
8 * Quentin Drouet (kent1@arscenic.info)
9 *
10 * © 2008 - Distribue sous licence GNU/GPL
11 * Pour plus de details voir le fichier COPYING.txt
12 *
13 */
14 
15if (!defined("_ECRIRE_INC_VERSION")) return;
16
17function action_images_versions_dist() {
18        include_spip('inc/distant'); # pour copie_locale
19        $securiser_action = charger_fonction('securiser_action', 'inc');
20        $arg = $securiser_action();
21        if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
22                spip_log("action_images_versions_dist $arg pas compris","photospip");
23        } else {
24                action_images_versions_post($r);
25        }
26}
27
28function action_images_versions_post($r){
29        global $visiteur_session;
30        $id_auteur = $visiteur_session['id_auteur'];
31        $action = _request('action_faire');
32        spip_log("action_faire: $action","photospip");
33        spip_log($r,'photospip');
34        //on récup l'id_document
35        $arg = $r[1];
36        spip_log("on travail sur l'id_document $arg","photospip");
37
38        $version = _request('version');
39
40        include_spip('inc/charsets');   # pour le nom de fichier
41        include_spip('inc/documents'); 
42                       
43        if (_SPIP_AJAX === 1 ){
44                $redirect = _request('redirect_ajax');
45        }
46        else{
47                $redirect = _request('redirect');
48        }
49        if($action == "revenir"){
50                spip_log("script image_version... on repart vers l'arrière","photospip");
51                spip_log("revenir à la version $version","photospip");
52               
53                $row = sql_fetsel("fichier,largeur,hauteur", "spip_documents_inters", "id_document=".intval($arg)." AND version=".intval($version));
54               
55                $src = _DIR_RACINE . copie_locale(get_spip_doc($row['fichier']));
56                spip_log("la source est $src","photospip");
57               
58                // On cherche le fichier actuel
59                $doc_actuel = sql_getfetsel("fichier","spip_documents","id_document=".intval($arg));
60                // On supprimer le document actuel puisque l'on revient en arrière
61                spip_unlink(get_spip_doc($doc_actuel));
62               
63                sql_updateq('spip_documents', array('fichier' => $row['fichier'], 'largeur' =>$row['largeur'], 'hauteur' =>$row['hauteur']), "id_document=$arg");
64                spip_log("on update la table spip_documents et on met le fichier ".$row['fichier'],"photospip");
65                $nextversion = $version - 1;
66                $res2 = sql_select("version,fichier","spip_documents_inters","id_document=$arg AND version > $nextversion");
67                $total_delete = sql_count($res2);
68                spip_log("on recherche les versions supérieures à $nextversion: $total_delete","photospip");
69                while($version_delete = sql_fetch($res2)){
70                        sql_delete("spip_documents_inters","id_document =$arg AND version = ".$version_delete['version']);
71                        spip_log("Pour le doc $arg on delete la version ".$version_delete['version'],"photospip");
72                        if($version_delete['version'] > $version){
73                                spip_unlink(get_spip_doc($version_delete['fichier']));
74                                spip_log("On vire le fichier ".$version_delete['fichier'],"photospip");
75                        }
76                        else{
77                                spip_log("On ne vire pas le fichier ".$version_delete['fichier']." qui reste la source","photospip");
78                        }
79                }
80        }
81        else if($action == "supprimer"){
82                spip_log("script image_version... on supprimer une version","photospip");
83                $fichier = sql_getfetsel("fichier", "spip_documents_inters", "id_document=$arg AND version=$version");
84                spip_log("On vire le fichier $fichier","photospip");
85                spip_unlink(get_spip_doc($fichier));
86                sql_delete("spip_documents_inters","id_document=$arg AND version=$version");
87                spip_log("supprimer la version $version","photospip");
88               
89                $res2 = sql_select("version","spip_documents_inters","id_document=$arg AND version > $version");
90                $total_delete = sql_count($res2);
91                spip_log("on recherche les versions supérieures à $version: $total_delete","photospip");
92                while($version_delete = sql_fetch($res2)){
93                        $newversion = ($version_delete['version']-1);
94                        sql_updateq("spip_documents_inters",array('version'=> $newversion),"id_document =$arg AND version = ".$version_delete['version']);
95                        spip_log("on descend de version pour l'ancienne version ".$version_delete['version']." qui devient $newversion","photospip");
96                }
97        }
98        else{
99                spip_log("script image_version... pas d'action demandée","photospip");
100        }
101       
102        redirige_par_entete(str_replace("&amp;","&",$redirect));
103}
104?>
Note: See TracBrowser for help on using the repository browser.