function handle_delete()
{
    global $def_coy, $db_connections, $comp_subdirs, $path_to_root;
    $id = (int) $_GET['id'];
    // First make sure all company directories from the one under removal are writable.
    // Without this after operation we end up with changed per-company owners!
    for ($i = $id; $i < count($db_connections); $i++) {
        $comp_path = company_path($i);
        if (!is_dir($comp_path) || !is_writable($comp_path)) {
            display_error(_('Broken company subdirectories system. You have to remove this company manually.'));
            return;
        }
    }
    // make sure config file is writable
    if (!is_writeable($path_to_root . "/config_db.php")) {
        display_error(_("The configuration file ") . $path_to_root . "/config_db.php" . _(" is not writable. Change its permissions so it is, then re-run the operation."));
        return;
    }
    // rename directory to temporary name to ensure all
    // other subdirectories will have right owners even after
    // unsuccessfull removal.
    $cdir = company_path($id);
    $tmpname = company_path('/old_' . $id);
    if (!@rename($cdir, $tmpname)) {
        display_error(_('Cannot rename subdirectory to temporary name.'));
        return;
    }
    // 'shift' company directories names
    for ($i = $id + 1; $i < count($db_connections); $i++) {
        if (!rename(company_path($i), company_path($i - 1))) {
            display_error(_("Cannot rename company subdirectory"));
            return;
        }
    }
    $err = remove_connection($id);
    if ($err == 0) {
        display_error(_("Error removing Database: ") . $dbase . _(", please remove it manually"));
    }
    if ($def_coy == $id) {
        $def_coy = 0;
    }
    $error = write_config_db();
    if ($error == -1) {
        display_error(_("Cannot open the configuration file - ") . $path_to_root . "/config_db.php");
    } else {
        if ($error == -2) {
            display_error(_("Cannot write to the configuration file - ") . $path_to_root . "/config_db.php");
        } else {
            if ($error == -3) {
                display_error(_("The configuration file ") . $path_to_root . "/config_db.php" . _(" is not writable. Change its permissions so it is, then re-run the operation."));
            }
        }
    }
    if ($error != 0) {
        @rename($tmpname, $cdir);
        return;
    }
    // finally remove renamed company directory
    @flush_dir($tmpname, true);
    if (!@rmdir($tmpname)) {
        display_error(_("Cannot remove temporary renamed company data directory ") . $tmpname);
        return;
    }
    display_notification(_("Selected company has been deleted"));
}
Exemple #2
0
function handle_delete()
{
    global $comp_path, $def_coy, $db_connections, $comp_subdirs;
    $id = $_GET['id'];
    $err = remove_connection($id);
    if ($err == 0) {
        display_error(tr("Error removing Database: ") . $dbase . tr(", please remove it manuallly"));
    }
    if ($def_coy == $id) {
        $def_coy = 0;
    }
    $error = write_config_db();
    if ($error == -1) {
        display_error(tr("Cannot open the configuration file - ") . $path_to_root . "/config_db.php");
    } else {
        if ($error == -2) {
            display_error(tr("Cannot write to the configuration file - ") . $path_to_root . "/config_db.php");
        } else {
            if ($error == -3) {
                display_error(tr("The configuration file ") . $path_to_root . "/config_db.php" . tr(" is not writable. Change its permissions so it is, then re-run the operation."));
            }
        }
    }
    if ($error != 0) {
        return;
    }
    $cdir = $comp_path . '/' . $id;
    flush_dir($cdir);
    if (!rmdir($cdir)) {
        display_error(tr("Cannot remove company data directory ") . $cdir);
        return;
    }
    meta_forward($_SERVER['PHP_SELF']);
}