3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2013 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
13 if (!defined("_ECRIRE_INC_VERSION")) return;
15 include_spip('base/abstract_sql');
17 function trouver_version_inf($objet,$id_objet,$cond=""){
21 ($cond?
"$cond AND ":"")."objet=".sql_quote($objet)." AND id_objet=".intval($id_objet),
27 function check_version_diff($objet, $id_objet, $id_version, $id_diff, $last_version=0){
29 $last_version = trouver_version_inf($objet,$id_objet);
31 // si pas de diff possible, on renvoi 0,0
38 $id_version = max($id_version,2);
39 $id_version = min($id_version,$last_version);
41 // verifier id_version
42 $id_version = trouver_version_inf($objet,$id_objet,"id_version<=".intval($id_version));
44 // si rien trouve on prend la derniere
46 $id_version = $last_version;
48 // minorer id_diff en fonction de id_version
49 $id_diff = min($id_diff,$id_version-1);
51 $id_diff = trouver_version_inf($objet,$id_objet,"id_version<=".intval($id_diff));
54 $id_diff = trouver_version_inf($objet,$id_objet,"id_version<".intval($id_version));
56 // echec, on renvoi ce qu'on peut
58 $id_diff = $id_version-1;
60 return array($id_version, $id_diff);
63 function formulaires_reviser_charger_dist($objet,$id_objet,$id_version,$id_diff){
64 if (!$objets = unserialize($GLOBALS['meta']['objets_versions']))
67 if (!in_array(table_objet_sql($objet),$objets))
70 $last_version = trouver_version_inf($objet,$id_objet);
71 list($id_version,$id_diff) = check_version_diff($objet,$id_objet,$id_version,$id_diff,$last_version);
76 '_last_version'=>$last_version,
78 '_id_objet'=>$id_objet,
79 'id_version'=>$id_version,
86 function formulaires_reviser_verifier_dist($objet,$id_objet,$id_version,$id_diff){
88 list($id_version,$id_diff) = check_version_diff($objet,$id_objet,_request('id_version'),_request('id_diff'));
89 set_request('id_version',$id_version);
90 set_request('id_diff',$id_diff);
94 function formulaires_reviser_traiter_dist($objet,$id_objet,$id_version,$id_diff){
95 $res = array('message_ok'=>'','editable'=>true);
97 $id_version = _request('id_version');
98 $id_diff = _request('id_diff');
101 $res['message_ok'].="<script type='text/javascript'>if (window.jQuery) jQuery('#wysiwyg.revision').ajaxReload({args:{id_version:$id_version,id_diff:$id_diff}});</script>";
103 $res['redirect'] = parametre_url(parametre_url(self(),'id_version',$id_version),'id_diff',$id_diff,'&');