cleanup2 according to Apmuthu's list.
[fa-stable.git] / admin / inst_upgrade.php
index 9691b22e0eedeb4aa15bf0f1bf2958d09031b11f..16eee5a7a06ceaaf5c49bcc9dbecf25945650407 100644 (file)
@@ -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'])
                                        .'<br>'
                                        ._('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