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")); }
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']); }