<?php
$Ftp_Connect = new FileManagerTools ("FTP Address","FTP username","FTP password");
$Ftp_Connect->FtpUpload("Source path","Dest path","Dest file name if you specified a file in the source path");
echo $Ftp_Connect->FileState;
class FileManagerTools {
//Configurations parameters
protected $ftpurl;
protected $ftpuser;
protected $ftppass;
public $FileState;
protected $ftpconnection;
protected $ftplogin;
protected $ftp_ForD;
//Counters
protected $FilesCount;
protected $DirCount;
function __construct($ftpurl,$ftpuser,$ftppass){
$this->ftpurl = $ftpurl;
$this->ftpuser = $ftpuser;
$this->ftppass = $ftppass;
$this->FileState = "File operations state for <b>$ftpuser</b> on <b>$ftpurl</b> is: \n";
}
function Ftp_Connect() {
// connect to the destination FTP & enter appropriate directories both locally and remotely
$this->ftpconnection = @ftp_connect($this->ftpurl) or die("ftpserver_connect_error");
$this->ftplogin = @ftp_login($this->ftpconnection,$this->ftpuser,$this->ftppass) or die("ftpserver_auth_error");
}
// --------------------------------------------------------------------
// Upload FUNCTIONS
// --------------------------------------------------------------------
function FtpUpload($ftpsrcitems1,$ftpdstdir1,$ftpdstfilename) {
//Uploads counter
$this->FilesCount = 0;
$this->DirCount = 0;
//Connect to Ftp server
$this->Ftp_Connect();
$this->FileState .= "connection done, ";
$this->FtpUpload_loop($ftpsrcitems1,$ftpdstdir1,$ftpdstfilename);
$this->FileState .= "$ftpsrcitems1 is uploaded successfully to $ftpdstdir1 with ".$this->DirCount." directories and ".$this->FilesCount." files";
ftp_close($this->ftpconnection);
$this->FileState .= " , connection closed";
}
function FtpUpload_loop($ftpsrcitems,$ftpdstdir,$ftpdstfilename) {
//Check existance and the kind of uploads of either the file or dir
if (file_exists($ftpsrcitems)) {
if (is_dir($ftpsrcitems)) {
$ftp_ForD = "D";
if (@chdir($ftpsrcitems)) {
}else{ die("$ftpsrcitems ftpsource_dirpermission_error"); }
}else{ $ftp_ForD = "F"; }
}else{ die("$ftpsrcitems ftpsource_notexist_error"); }
if ($ftp_ForD === "D") {
// enter the local directory to be recursed through
chdir($ftpsrcitems);
// check if the directory exists & change to it on the destination
if (@ftp_chdir($this->ftpconnection,$ftpdstdir))
{
ftp_chdir($this->ftpconnection,$ftpdstdir);
} else {
// remote directory doesn't exist so create & enter it
ftp_mkdir($this->ftpconnection,$ftpdstdir);
ftp_chdir($this->ftpconnection,$ftpdstdir);
}
if ($ftp_handle = opendir($ftpsrcitems)) {
while (false !== ($ftp_fil = readdir($ftp_handle))) {
if ($ftp_fil != "." && $ftp_fil != "..") {
// check if it's a file or directory
if (!is_dir($ftp_fil)) {
// it's a file so upload it
$this->FilesCount++;
ftp_put($this->ftpconnection, $ftpdstdir.$ftp_fil, $ftp_fil, FTP_BINARY);
}
else {
// it's a directory so recurse through it
if ($ftp_fil == "templates_dir_something") {
// I want the script to ignore any directories named "templates"
// and therefore, not recurse through them and upload their contents
}
else {
$this->DirCount++;
$ftpsrcitems = $ftpsrcitems.$ftp_fil."/";
$ftpdstdir = $ftpdstdir.$ftp_fil."/";
$this->FtpUpload_loop($ftpsrcitems,$ftpdstdir,"dstfilename");
chdir ("../");
}
}
}
}
closedir($ftp_handle);
}
}
else {
$this->FilesCount++;
// it's a file so upload it
ftp_put($this->ftpconnection, $ftpdstdir.$ftpdstfilename, $ftpsrcitems, FTP_BINARY);
}
}
}
?>
|