From: Florent Bruneau Date: Mon, 29 Dec 2008 15:46:39 +0000 (+0100) Subject: Should fix key collision in sync from AX. X-Git-Tag: xorg/0.10.1~49^2~34 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=23e39ac352fbe095a80da11c7d97a37cf860b91e;p=platal.git Should fix key collision in sync from AX. Signed-off-by: Florent Bruneau --- 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; } }