From d9df66c655ae388736881d52bab17443a77f9cea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 12 Nov 2006 16:57:50 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Le=20drag=20and=20drop=20des=20boites=20?= =?UTF-8?q?effacait=20la=20personnalisation=20des=20param=E8tres=20de=20co?= =?UTF-8?q?nfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/lib/functions.inc.php | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 33efcb2e92a..de453727f39 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -374,30 +374,43 @@ function dolibarr_del_const($db, $name) \brief Sauvegarde parametrage personnel \param db Handler d'accès base \param user Objet utilisateur - \param url Si defini, on sauve parametre du tableau tab dont clé = sortfield, sortorder, begin et page + \param url Si defini, on sauve parametre du tableau tab dont clé = (url avec sortfield, sortorder, begin et page) Si non defini on sauve tous parametres du tableau tab \param tab Tableau (clé=>valeur) des paramètres à sauvegarder \return int <0 si ko, >0 si ok */ function dolibarr_set_user_page_param($db, &$user, $url='', $tab) { + // Verification parametres + if (sizeof($tab) < 1) return -1; + $db->begin(); - // On efface paramètres anciens + // On efface anciens paramètres pour toutes les clé dans $tab $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $sql.= " WHERE fk_user = ".$user->id; if ($url) $sql.=" AND page='".$url."'"; - else $sql.=" AND page=''"; + else $sql.=" AND page=''"; // Page ne peut etre null + $sql.= " AND param in ("; + $i=0; + foreach ($tab as $key => $value) + { + if ($i > 0) $sql.=','; + $sql.="'".$key."'"; + $i++; + } + $sql.= ")"; dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql"); $resql=$db->query($sql); if (! $resql) { dolibarr_print_error($db); + $db->rollback(); exit; } - foreach ($tab as $key=>$value) + foreach ($tab as $key => $value) { // On positionne nouveaux paramètres if ($value && (! $url || in_array($key,array('sortfield','sortorder','begin','page')))) @@ -409,7 +422,13 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab) $sql.= " '".$key."','".addslashes($value)."');"; dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql"); - $db->query($sql); + $result=$db->query($sql); + if (! $result) + { + dolibarr_print_error($db); + $db->rollback(); + exit; + } $user->page_param[$key] = $value; }