X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fincludes%2Ffa_patch.class.inc;h=0af328f54d914c04c99cb232c7c85cbf859d91a5;hb=48589f9ce6c51bb25e2fa8ed83c57d9dfa485e44;hp=1275898d08b4f76a9b4bc1955969ff58ade3115a;hpb=8ffddf50ffbe93672c769e2cf0501d0f9125e2a0;p=fa-stable.git diff --git a/admin/includes/fa_patch.class.inc b/admin/includes/fa_patch.class.inc index 1275898d..0af328f5 100644 --- a/admin/includes/fa_patch.class.inc +++ b/admin/includes/fa_patch.class.inc @@ -26,7 +26,7 @@ class fa_patch { var $errors = array(); var $max_upgrade_time = 300; - function fa_patch() + function __construct() { global $path_to_root; @@ -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. */ @@ -83,7 +115,7 @@ class fa_patch { $this->errors = array(); $this->backup = null; - $this->save_log = ini_set('error_log', dirname(__FILE__).'/../../tmp/upgrade.'.$this->cur_company.'.log'); + $this->save_log = ini_set('error_log', VARLOG_PATH.'/upgrade.'.$this->cur_company.'.log'); $this->log_error(sprintf(_("Upgrade started for company %s."), $this->cur_company), 'Info'); if (!set_global_connection($this->cur_company)) @@ -163,7 +195,7 @@ class fa_patch { if ($result) $this->log_error(_("Upgrade failed. Original database content restored successfully."), 'Info'); else - $thi->log_error(sprintf(_("Database restore operation failed. Original database content is in %s file."), $this->backup)); + $this->log_error(sprintf(_("Database restore operation failed. Original database content is in %s file."), $this->backup)); $this->post_fail($this->cur_company); } } else {