X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fincludes%2Ffa_patch.class.inc;h=336d924d3cca8e377baea5468f016806bc4de9bb;hb=5866801d02b8007f74ea5bfd15a8ecac7c1c58c1;hp=1275898d08b4f76a9b4bc1955969ff58ade3115a;hpb=e39484e47bb3d664d75b2df63b7eda70980e0f1c;p=fa-stable.git diff --git a/admin/includes/fa_patch.class.inc b/admin/includes/fa_patch.class.inc index 1275898d..336d924d 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)) @@ -133,8 +165,7 @@ class fa_patch { { foreach($result as $err) $this->log_error($err[1] . ':'. $err[0]); - } else - { + } else { $this->log_error($result); unset($this->backup); // prevent restore (database was not touched due to other errors) } @@ -163,7 +194,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 { @@ -210,8 +241,9 @@ class fa_patch { } /* - Present upgrade parameters to administrator - This function presents upgrade choices, after selection company to be upgraded. + Present upgrade parameters to administrator. + This function is run after successfull switching to target database connection + and presents upgrade choices, later fetched in prepare() method. */ function show_params($comp) { @@ -219,7 +251,7 @@ class fa_patch { /* Fetch & check upgrade parameters, check additional upgrade pre-conditions. - This function is run after successfull switching to target database connection. + This function is run after successfull switching to target database connection, before sql upgrade script is run. */ function prepare() {