From d8e29b7202f9df3d975e8501992754194e2d1c5e Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 8 Apr 2010 10:07:13 +0000 Subject: [PATCH] In some cases two list got the some list ID -This caused some very strange problems. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@17545 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/include/class_sortableListing.inc | 22 +++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/gosa-core/include/class_sortableListing.inc b/gosa-core/include/class_sortableListing.inc index 75de2bee5..fd9bed8c9 100644 --- a/gosa-core/include/class_sortableListing.inc +++ b/gosa-core/include/class_sortableListing.inc @@ -60,9 +60,27 @@ class sortableListing { // Save data to display $this->setListData($data, $displayData); + // Get list of used IDs + if(!session::is_set('sortableListing_USED_IDS')){ + session::set('sortableListing_USED_IDS',array()); + } + $usedIds = session::get('sortableListing_USED_IDS'); + // Generate instance wide unique ID - $tmp= gettimeofday(); - $this->id= 'l'.md5(microtime().$tmp['sec']); + $id = ""; + while($id == "" || in_array($id, $usedIds)){ + + // Wait 1 msec to ensure that we definately get a new id + if($id != "") usleep(1); + $tmp= gettimeofday(); + $id = 'l'.md5(microtime().$tmp['sec']); + } + + // Only keep the last 10 list IDsi + $usedIds = array_slice($usedIds, count($usedIds) -10, 10); + $usedIds[] = $id; + session::set('sortableListing_USED_IDS',$usedIds); + $this->id = $id; // Set reorderable flag $this->reorderable= $reorderable; -- 2.30.2