//
// 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)
{
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;
}
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'])
.'<br>'
._('You should restore company database from latest backup file'));
+ }
}
// db_close($conn); ?
if (!$ret) break;
end_page();
-?>
\ No newline at end of file