Fixed old security settings import.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 1 Sep 2009 11:20:39 +0000 (11:20 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Tue, 1 Sep 2009 11:20:39 +0000 (11:20 +0000)
sql/alter2.2.php
sql/alter2.2.sql

index 1d6cb8fc307d4681f137980c7cb0cc9d8075eea6..85a00be5ecc3eceda398d49ce72e6bdca6229393 100644 (file)
@@ -155,14 +155,14 @@ function convert_roles($pref)
                20 => array('SA_CREATECOMPANY', 'SA_CREATELANGUAGE', 'SA_CREATEMODULES',
                        'SA_SOFTWAREUPGRADE', 'SA_SECROLES')
                );
-               
+               $new_ids = array();
                foreach ($security_groups as $role_id => $areas) {
                        $area_set = array();
                        $sections = array();
                        foreach ($areas as $a) {
                         if (isset($trans_sec[$a]))
                                foreach ($trans_sec[$a] as $id) {
-                                if ($security_areas[$id][0]==0)
+                                if ($security_areas[$id][0] != 0)
 //                                     error_log('invalid area id: '.$a.':'.$id);
                                        $area_set[] = $security_areas[$id][0];
                                        $sections[$security_areas[$id][0]&~0xff] = 1;
@@ -171,11 +171,20 @@ function convert_roles($pref)
                        $sections  = array_keys($sections);
                        sort($sections); sort($area_set);
                        import_security_role($pref, $security_headings[$role_id], $sections, $area_set);
-                       $new = db_insert_id();
-                       $sql = "UPDATE {$pref}users set role_id=$new WHERE role_id=$role_id";
-                       $ret = db_query($sql, 'cannot update users roles');
-                       if(!$ret) return false;
+                       $new_ids[$role_id] = db_insert_id();
                }
+               $result = get_users(true);
+               $users = array();
+               while($row = db_fetch($result)) { // complete old user ids and roles
+                       $users[$row['role_id']][] = $row['id'];
+               }
+               foreach($users as $old_id => $uids)
+                       foreach( $uids as $id) {
+                               $sql = "UPDATE {$pref}users set role_id=".$new_ids[$old_id].
+                                       " WHERE id=$id";
+                               $ret = db_query($sql, 'cannot update users roles');
+                               if(!$ret) return false;
+                       }
                return true;
 }
 
index 61edd4a84d5b99956e319929fcecb91aefae9904..470ffd95b7aa28fe207d1f336194143f3326de54 100644 (file)
@@ -93,7 +93,7 @@ CREATE TABLE `0_security_roles` (
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `role` (`role`)
-) TYPE=MyISAM AUTO_INCREMENT=8 AUTO_INCREMENT=8 ;
+) TYPE=MyISAM AUTO_INCREMENT=1;
 
 ALTER TABLE `0_company` ADD COLUMN `login_tout` SMALLINT(6) NOT NULL DEFAULT '600';
 ALTER TABLE `0_users` CHANGE COLUMN `full_access` `role_id` int(11) NOT NULL default '1';