Files
ship2net-www/config/fonctions_ftp.php
T

91 lines
3.0 KiB
PHP

<?php
//*******************************************************************************************
function Copie_dir_ftp ($id_ftp, $dir_source, $dir_destination)
{ // NB : il faut que le répertoire DIR_DESTINATION existe avant l'appel...
// NB 2 : les adresses sont absolues...
// Changement vers le répertoire cible sur le servuer distant :
if (!ftp_chdir ($id_ftp, $dir_destination)) return(false);
// On vérifie si $dir_source est un dossier :
if (is_dir($dir_source))
{
// Si oui, on l'ouvre :
if ($dh = opendir($dir_source))
{
// On liste les dossiers et fichiers de $dir_source
while (($file = readdir($dh)) !== false)
{
// S'il s'agit d'un dossier, on créé le sous-dossier destination et on relance la fonction récursive :
if(is_dir($dir_source.'/'.$file) && $file != '..' && $file != '.')
{
// Création du sous-répertoire sur le serveur distant :
if (!ftp_mkdir ($id_ftp, $file)) return(false);
// Lancement de la fonction récursive :
Copie_dir_ftp ($id_ftp, $dir_source.'/'.$file, $dir_destination.'/'.$file);
// Changement vers le répertoire cible sur le servuer distant :
if (!ftp_chdir ($id_ftp, $dir_destination)) return(false);
}
else // S'il sagit d'un fichier, on le copie simplement :
{
if(($file != '..') AND ($file != '.'))
{
if (!ftp_put($id_ftp, $dir_destination.'/'.$file, $dir_source.'/'.$file, FTP_BINARY)) return(false);
}
}
}
// On ferme $dir_source :
closedir($dh);
}
else return(false); // Erreur d'ouverture du répertoire source...
}
else return(false); // Le répertoire source n'est pas un répertoire...
return(true);
}
//*******************************************************************************************
function Suppression_dir_ftp($id_ftp, $dossier)
{ // Supprime les sous-répertoire et les fichiers qu'ils contiennent puis supprime le répertoire passé en paramètre.
// Changement vers le répertoire cible :
if (!@ftp_chdir ($id_ftp, $dossier)) return(false); // Le '@' devant l'appel de la focntion permet d'éviter l'affichage de message d'erreur (notamment si le répertoire qu'on demande de supprimer n'existe pas...)
// Recherche de la liste des fichiers et répertoires du répertoire en cours :
$liste = ftp_nlist($id_ftp, ".");
// Boucle sur toute la liste pour supprimer les fichier ou vider les sous-répertoires (appel récursif) puis les supprimer :
foreach($liste as $val)
{
if(ftp_size($id_ftp, $val) != -1) // Cas d'un fichier :
{
if (!ftp_delete ($id_ftp, $val)) return(false);
}
else // Cas d'un répertoire :
{
if (($val != '.') && ($val != '..'))
{
if (!Suppression_dir_ftp($id_ftp, $val)) return(false); // Appel récursif pour supprimer le sous-dossier...
}
}
}
// Changement vers répertoire parent :
if (!ftp_chdir ($id_ftp, "..")) return(false);
// Suppression du répertoire qui doit être vide :
if (!ftp_rmdir ($id_ftp, $dossier)) return(false);
return(true);
}