Changeset 10180 in spip-zone
- Timestamp:
- Mar 6, 2007, 12:06:08 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/_stable_/crayons/action/crayons_store.php
r9680 r10180 50 50 51 51 function action_crayons_store_dist() { 52 52 include_spip('inc/crayons'); 53 53 lang_select($GLOBALS['auteur_session']['lang']); 54 55 56 57 54 $wdgcfg = wdgcfg(); 55 header("Content-Type: text/html; charset=".$GLOBALS['meta']['charset']); 56 57 $return = array('$erreur'=>''); 58 58 59 59 $postees = post_crayons(); … … 61 61 $modifs = $updates = array(); 62 62 if (!is_array($postees)) { 63 63 $return['$erreur'] = _U('crayons:donnees_mal_formatees'); 64 64 } else { 65 66 67 68 69 70 71 72 73 74 $return['$erreur'] =75 76 77 65 include_spip('inc/autoriser'); 66 67 foreach ($postees as $postee) { 68 $name = $postee[0]; 69 $content = $postee[1]; 70 if ($content && preg_match(_PREG_CRAYON, 'crayon '.$name, $regs)) { 71 list(,$crayon,$type,$modele,$id) = $regs; 72 $wid = $postee[3]; 73 if (!autoriser('modifier', $type, $id, NULL, array('modele'=>$modele))) { 74 $return['$erreur'] = 75 "$type $id: " . _U('crayons:non_autorise'); 76 break; 77 } 78 78 79 79 // recuperer l'existant pour calculer son md5 et verifier 80 80 // qu'il n'a pas ete modifie entre-temps 81 81 82 // on fait une exception pour forms_donnee s, on verra plus tard82 // on fait une exception pour forms_donnee, on verra plus tard 83 83 // comment faire ca de maniere generique 84 if ($type != 'forms_donnees') { 85 86 $data = array(); 87 foreach ($content as $champtable => $val) { 88 $data[$champtable] = valeur_colonne_table($type, $champtable, $id); 89 } 90 $md5 = md5(serialize($data)); 91 92 // est-ce que le champ a ete modifie dans la base entre-temps ? 93 if ($md5 != $postee[2]) { 94 // si oui, la modif demandee correspond peut-etre 95 // a la nouvelle valeur ? dans ce cas on procede 96 // comme si "pas de modification", sinon erreur 97 if ($md5 != md5(serialize($content))) { 98 $return['$erreur'] = "$type $id $champtable: " . 99 _U('crayons:modifie_par_ailleurs'); 100 } 101 break; 102 } 84 if ($type != 'forms_donnee') { 85 $data = array(); 86 foreach ($content as $champtable => $val) { 87 $data[$champtable] = valeur_colonne_table($type, $champtable, $id); 88 } 89 $md5 = md5(serialize($data)); 90 91 // est-ce que le champ a ete modifie dans la base entre-temps ? 92 if ($md5 != $postee[2]) { 93 // si oui, la modif demandee correspond peut-etre 94 // a la nouvelle valeur ? dans ce cas on procede 95 // comme si "pas de modification", sinon erreur 96 if ($md5 != md5(serialize($content))) { 97 $return['$erreur'] = "$type $id $champtable: " . 98 _U('crayons:modifie_par_ailleurs'); 99 } 100 break; 101 } 103 102 } // fin exception 104 103 105 106 107 104 $modifs[] = array($type, $modele, $id, $content, $wid); 105 } 106 } 108 107 } 109 108 110 109 if (!$modifs AND !$return['$erreur']) { 111 112 113 110 $return['$erreur'] = $wdgcfg['msgNoChange'] ? 111 _U('crayons:pas_de_modification') : ' '; 112 $return['$annuler'] = true; 114 113 } 115 114 116 115 // une quelconque erreur ... ou rien ==> on ne fait rien ! 117 116 if ($return['$erreur']) { 118 119 117 echo var2js($return); 118 exit; 120 119 } 121 120 122 121 // sinon on bosse : toutes les modifs ont ete acceptees 123 // v érifier qu'on a tout ce qu'il faut pour mettre a jour la base124 // et regrouper les mises àjour par type/id122 // verifier qu'on a tout ce qu'il faut pour mettre a jour la base 123 // et regrouper les mises a jour par type/id 125 124 foreach ($modifs as $modif) { 126 125 list($type, $modele, $id, $content, $wid) = $modif;
Note: See TracChangeset
for help on using the changeset viewer.