X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fincludes%2Ffa_patch.class.inc;h=91e13f1ab51048bea228b4af886352a068c1dab8;hb=d5c036f01e41b7acbf36eb00a298aa2a3edfe044;hp=99aa0824265aac70f7ca087dd4990513deb633b9;hpb=92516cf782e07af078fab627e35c75c822702ab2;p=fa-stable.git diff --git a/admin/includes/fa_patch.class.inc b/admin/includes/fa_patch.class.inc index 99aa0824..91e13f1a 100644 --- a/admin/includes/fa_patch.class.inc +++ b/admin/includes/fa_patch.class.inc @@ -48,6 +48,38 @@ class fa_patch { return false; } + /* + Selectively extends access to selected security areas/sections. + */ + function update_security_roles($sec_updates) + { + global $security_areas, $security_sections; + + $roles = db_query("SELECT * FROM ".TB_PREF."security_roles"); + + while($role = db_fetch($roles)) + { + $role['areas'] = explode(';', $role['areas']); + $role['sections'] = explode(';', $role['sections']); + foreach($sec_updates as $has => $add) + { + if (in_array($security_areas[$has][0], $role['areas'])) + { + $sections = array(); + foreach($add as $area) + { + $role['areas'][] = $security_areas[$area][0]; + $role['sections'][] = $security_areas[$area][0]&~0xff; + } + sort($role['areas']); + update_security_role($role['id'], $role['role'], $role['description'], + array_values($role['sections']), array_values($role['areas'])); + } + } + } + return true; + } + /* Check and disable incompatible extensions. */