From: Janusz Dobrowolski Date: Tue, 1 Sep 2009 11:20:39 +0000 (+0000) Subject: Fixed old security settings import. X-Git-Tag: v2.4.2~19^2~1280 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=aa6b8a25b58b6cbff069e451558ce0b661c5ec1b;p=fa-stable.git Fixed old security settings import. --- diff --git a/sql/alter2.2.php b/sql/alter2.2.php index 1d6cb8fc..85a00be5 100644 --- a/sql/alter2.2.php +++ b/sql/alter2.2.php @@ -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; } diff --git a/sql/alter2.2.sql b/sql/alter2.2.sql index 61edd4a8..470ffd95 100644 --- a/sql/alter2.2.sql +++ b/sql/alter2.2.sql @@ -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';