X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fincludes%2Ffa_patch.class.inc;h=99aa0824265aac70f7ca087dd4990513deb633b9;hb=92516cf782e07af078fab627e35c75c822702ab2;hp=631df8205430b5879044ef644efde46d7d073c2b;hpb=1ea749c4abfe081bd7f1b4b11c65a61b311a189e;p=fa-stable.git diff --git a/admin/includes/fa_patch.class.inc b/admin/includes/fa_patch.class.inc index 631df820..99aa0824 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_once($path_to_root."/includes/packages.inc"); // // Utility class contains basic database upgrade routines. // @@ -24,7 +24,7 @@ class fa_patch { var $backup; // pre-upgrade backup filename var $errors = array(); - var $ma_upgrade_time = 300; + var $max_upgrade_time = 300; function fa_patch() { @@ -48,6 +48,30 @@ class fa_patch { return false; } + /* + Check and disable incompatible extensions. + */ + function update_extensions() + { + global $version; + + $mods = get_company_extensions(); + $exts = get_company_extensions($this->cur_company); + + $fixed = false; + foreach($mods as $key => $ins) { + foreach($exts as $ext) + if ($ext['name'] == $ins['name'] && (!check_src_ext_version($ins['version']))) { + $mods[$key]['active'] = false; + $this->log_error(sprintf(_("Uncompatible extension '%s' disabled for company %d."), $ins['name'], $this->cur_company), 'Notice'); + $fixed = true; + continue 2; + } + } + if ($fixed) + write_extensions($mods, $this->cur_company); + } + /* Pre-install maintenance: login to company, open upgrade log, make a backup */ @@ -70,6 +94,8 @@ class fa_patch { return $this->log_error(sprintf(_("Cannot upgrade company %s: database version is incompatible ('%s' instead of '%s')."), $this->cur_company, $cur_ver, $this->previous)); + $this->update_extensions(); // disable uncompatible extensions + if (!$this->prepare()) // fetch params, perform additional checks (if any) return false; @@ -137,7 +163,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 { @@ -207,6 +233,8 @@ class fa_patch { */ function get_site_status($connections) { + global $SysPrefs; + $info = array(); foreach($connections as $i => $conn) @@ -221,7 +249,7 @@ function get_site_status($connections) } } set_global_connection(); - refresh_sys_prefs(); + $SysPrefs->refresh(); return $info; }