X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fincludes%2Ffa_patch.class.inc;h=c2e0d4a497032e8f631c9a12ceccd158d30b868c;hb=d63ba7b7819e07a73cd1999cec249fc6f0b009fb;hp=c62417b98efa85a4cedb07cb9764802011427602;hpb=01b608e906fb9c86b129d3086fcb0a2258ef08e2;p=fa-stable.git diff --git a/admin/includes/fa_patch.class.inc b/admin/includes/fa_patch.class.inc index c62417b9..c2e0d4a4 100644 --- a/admin/includes/fa_patch.class.inc +++ b/admin/includes/fa_patch.class.inc @@ -9,7 +9,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License here . ***********************************************************************/ -include($path_to_root."/includes/packages.inc"); +include_once($path_to_root."/includes/packages.inc"); // // Utility class contains basic database upgrade routines. // @@ -25,8 +25,9 @@ class fa_patch { var $errors = array(); var $max_upgrade_time = 300; + var $companies = null; - function fa_patch() + function __construct() { global $path_to_root; @@ -48,6 +49,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 +116,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 +196,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 {