From 23e39ac352fbe095a80da11c7d97a37cf860b91e Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Mon, 29 Dec 2008 16:46:39 +0100 Subject: [PATCH] Should fix key collision in sync from AX. Signed-off-by: Florent Bruneau --- include/user.func.inc.php | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/include/user.func.inc.php b/include/user.func.inc.php index 7da7ada..ee2cb39 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -528,19 +528,16 @@ function remove_user_pro($uid, $entrid) { // }}} // {{{ function set_user_details() function set_user_details_addresses($uid, $adrs) { - $res = XDB::query("SELECT adrid FROM adresses WHERE uid = {?} AND adrid >= 1 ORDER BY adrid", $uid); - $adrids = $res->fetchColumn(); + $req = XDB::query('SELECT MAX(adrid) + 1 + FROM adresses + WHERE uid = {?}', $uid); + $adrid = $req->fetchOneCell(); + if (is_null($adrid)) { + $adrid = 0; + } foreach ($adrs as $adr) { - if (isset($adr['adrid']) && isset($adr['remove']) && $adr['remove']) { - remove_user_address($uid, $adr['adrid']); - if (isset($adrids[$adr['adrid']])) unset($adrids[$adr['adrid']]); - } else if (isset($adr['adrid'])) { - update_user_address($uid, $adr['adrid'], $adr); - } else { - for ($adrid = 1; isset($adrids[$adrid-1]) && ($adrids[$adrid-1] == $adrid); $adrid++); - add_user_address($uid, $adrid, $adr); - $adrids[$adrid-1] = $adrid; - } + add_user_address($uid, $adrid, $adr); + ++$adrid; } require_once 'geoloc.inc.php'; localize_addresses($uid); @@ -550,18 +547,16 @@ function set_user_details_addresses($uid, $adrs) { function set_user_details_pro($uid, $pros) { - $res = XDB::query("SELECT entrid FROM entreprises WHERE uid = {?} ORDER BY entrid", $uid); - $entrids = $res->fetchColumn(); + $req = XDB::query('SELECT MAX(entrid) + 1 + FROM entreprises + WHERE uid = {?}', $uid); + $entrid = $req->fetchOneCell(); + if (is_null($entrid)) { + $entrid = 0; + } foreach ($pros as $pro) { - if (isset($pro['entrid']) && isset($pro['remove']) && $pro['remove']) { - remove_user_pro($uid, $pro['entrid']); - if (isset($entrids[$pro['entrid']])) unset($entrids[$pro['entrid']]); - } else if (isset($pro['entrid'])) { - update_user_pro($uid, $pro['entrid'], $pro); - } else { - for ($entrid = 0; isset($entrids[$entrid]) && ($entrids[$entrid] == $entrid); $entrid++); - add_user_pro($uid, $entrid, $pro); - } + add_user_pro($uid, $entrid, $pro); + ++$entrid; } } -- 2.1.4