Ho trovato sul manuale on line di PHP (http://it2.php.net/manual/it/function.ftp-rmdir.php ) la cancellazione ricorsiva di una directory piena da un server FTP.
Fin qui tutto bene
ma...
...includendo la finzione in una classe non riesco a capire come fare la chimata ricorsiva della funzione stessa.
Questo il codice ( e quando usatelo pensatemi ...
) :
codice:
// CANCELLAZIONE DI UN FILE O DI UNA DIRCTORY (SE PIENA CANCELLA IN MODO RICORSIVO TUTTO IL CONTENUTO)
function CancellaFileDir($PathNomeFileDir) {
$this->Errore = 0;
echo "
Delete di " . $PathNomeFileDir;
// Se NON si riesce ad effettuare la cancellazione del FileDir richiesto... (Directory piena)
if (!(@ftp_rmdir($this->ConnessioneFTP, $PathNomeFileDir) || @ftp_delete($this->ConnessioneFTP, $PathNomeFileDir))) {
// ... determina l'elenco dei files contenuti nella directory richiesta...
$ElencoFiles = @ftp_nlist($this->ConnessioneFTP, $PathNomeFileDir);
// ... se l'elenco dei files contenuti non è vuoto...
if (!empty($ElencoFiles)) {
// ... per ogni file in elenco...
foreach($ElencoFiles as $FileInElenco) {
// ... effettua la cancellazione in maniera ricorsiva - QUI DA ERRORE !!!!
CancellaFileDir($FileInElenco);
}
}
// Effettua la cancellazione del path principale richiesto
if (!@ftp_rmdir($this->ConnessioneFTP, $PathNomeFileDir)) {
$this->Errore = 601;
$this->DescErrore = "Cancellazione via FTP di " . $PathNomeFileDir . " non effettuata per errore.";
} else {
$this->DescErrore = "Cancellazione via FTP di " . $PathNomeFileDir . " effettuata correttamente.";
}
}
if ($this->Errore != 0) {
$Esito = FALSE;
} else {
$Esito = TRUE;
}
return $Esito;
}