X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Finst_upgrade.php;h=16eee5a7a06ceaaf5c49bcc9dbecf25945650407;hb=211598c5964fd138631395c7f329ec8b87c43c0b;hp=9691b22e0eedeb4aa15bf0f1bf2958d09031b11f;hpb=46c5f7a65a7659a44ae8254c63152074363d3987;p=fa-stable.git diff --git a/admin/inst_upgrade.php b/admin/inst_upgrade.php index 9691b22e..16eee5a7 100644 --- a/admin/inst_upgrade.php +++ b/admin/inst_upgrade.php @@ -52,17 +52,13 @@ function get_installers() // // Apply one differential data set. // -function upgrade_step($index, $conn) +function upgrade_step($inst, $company, $conn, $force) { - global $path_to_root, $installers; + global $path_to_root; - $inst = $installers[$index]; $pref = $conn['tbpref']; $ret = true; - $force = get_post('force_'.$index); - if ($force || get_post('install_'.$index)) - { $state = $inst->installed($pref); if (!$state || $force) { @@ -71,20 +67,21 @@ function upgrade_step($index, $conn) error_log(sprintf(_("Database upgrade for company '%s' (%s:%s*) started..."), $conn['name'], $conn['dbname'], $conn['tbpref'])); - + if ($sql != '') - $ret &= db_import($path_to_root.'/sql/'.$sql, $conn, $force); + $ret &= db_import($path_to_root.'/sql/'.$sql, $conn, $force, true); - $ret &= $inst->install($pref, $force); + $ret &= $inst->install($company, $force); - error_log(_("Database upgrade finished.")); + if (!$ret && is_callable(array($inst, 'post_fail'))) + $inst->post_fail($pref); + error_log(_("Database upgrade finished.")); } else if ($state!==true) { display_error(_("Upgrade cannot be done because database has been already partially upgraded. Please downgrade database to clean previous version or try forced upgrade.")); $ret = false; } - } return $ret; } @@ -104,17 +101,23 @@ if (get_post('Upgrade')) continue; } // create security backup - db_backup($conn, 'no', 'Security backup before upgrade', $conn['tbpref']); + db_backup($conn, 'no', 'Security backup before upgrade'); // apply all upgrade data foreach ($installers as $i => $inst) { - $ret = upgrade_step($i, $conn); + + $force = get_post('force_'.$i); + if ($force || get_post('install_'.$i)) + $ret = upgrade_step($installers[$i], $comp, $conn, $force); + if (!$ret) + { display_error( sprintf(_("Database upgrade to version %s failed for company '%s'."), $inst->version, $conn['name']) .'
' ._('You should restore company database from latest backup file')); + } } // db_close($conn); ? if (!$ret) break; @@ -176,4 +179,3 @@ end_form(); end_page(); -?> \ No newline at end of file