PHP Classes
Icontem

File: ftp.class.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Abdul-Aziz Al-Oraij  >  FTP Folder Copy or Delete  >  ftp.class.php  
File: ftp.class.php
Role: Class source
Content type: text/plain
Description: Main Class File
Class: FTP Folder Copy or Delete
Copy or delete directories in a FTP server
 

Contents

Class file image Download
<?php
// ----------------------------------------------------------------------
// Copyright (C) 2007 by Abdul-Aziz Al-Oraij.
// http://aziz.oraij.com/
// ----------------------------------------------------------------------
// LICENSE

// This program is open source product; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Class Name: FTP Folder Copy/Delete
// Filename:   ftp.class.php
// Original    Author(s): Abdul-Aziz Al-Oraij <aziz.oraij.com>
// Purpose:    Copy to/Delete from FTP folders recursively.
// ----------------------------------------------------------------------
// Bismillah..
class ftp {
    var 
$conn_id;
    var 
$natij=array();
    var 
$orgDir;

    function 
ftp($ftp_server="localhost"){
        
$this->conn_id ftp_connect($ftp_server);
    }
    function 
connect($user$pass$path "/"){
        if(@
ftp_login($this->conn_id$user$pass) ) 
            return 
ftp_nlist($this->conn_id$path);
        else
            return 
false;
    }
    function 
quit($conn_id null ){
        
$conn_id $conn_id ==null $this->conn_id $conn_id ;
        
ftp_quit($conn_id);
    }
    function 
rmAll($dst_dir$debug 0){
        if(!
$dst_dir) {
            return 
false;
            exit;
        }
        
$dst_dir preg_replace("/\\/\$/"""$dst_dir); // remove trailing slash
        
$ar_files ftp_nlist($this->conn_id$dst_dir);
        if (
is_array($ar_files)){ // makes sure there are files
            
if(count($ar_files)==1// if its only a file
                
return ftp_delete($this->conn_id$ar_files[0]);
            else
                foreach (
$ar_files as $st_file){ // for each file 
                    
if ($st_file == "." || $st_file == "..") continue 1;
                    
$fl_file "$dst_dir/$st_file";
                    
$ftp_size ftp_size($this->conn_id$fl_file );
                    if (
$ftp_size == -1){ // check if it is a directory
                        
$this->rmAll($fl_file); // if so, use recursion
                    
}else{
                        if (
$debug 
                            echo 
"File: $fl_file | $ftp_size\n";
                        else
                            
ftp_delete($this->conn_id$fl_file); // if not, delete the file
                    
}
                }
        }
        if (
$debug 
            echo 
"Dir: $dst_dir \n";
        elseif(
count($ar_files)!=1)
            echo @
ftp_rmdir($this->conn_id$dst_dir) ? "$dst_dir deleted!\n":"Can't remove $dst_dir: No such file or directory"// delete empty directories
    
}
    function 
log($result) {
        if (
$result == "print")
            foreach (
$this->natij as $key => $value){
                if (
$key == "site" || $key == "put" || $key == "mkdir")
                    echo 
"<font color=green>$value ".($key=="put"?"Files uploaded":($key=="mkdir"?"Folders created":"Permissions changed"))." successfully.</font>\n";
                else
                    echo 
"<font color=red>Failed to: $value </font>\n";
            }
        else
        
$result == "site" || $result == "put" || $result == "mkdir" $this->natij[$result]++ : $this->natij[] = $result;
    }
    function 
get_mod($dir) {
        
$stat =  stat $dir );
        
$mode substr(decoct ($stat[mode]), -3);
        if (
$mode=="777" $this->log("$dir mode is 777!!");
        return 
$mode;
    }
    function 
copy$local $remote ) {
        if(!
$this->orgDir){
            
$this->orgDir realpath($local);
            if (!
is_dir($local)) {
                
$this->file_copy $local $remote );
                return 
true;
            }else{
                
$local realpath($local)."/";
                if (!@
ftp_chdir($this->conn_id$remote)){
                    
$this->mkdir $local $remote );
                }
            }
        }
        if (
$open opendir($local)) {
                while (
false !== ($file readdir($open))) {
                    if (
$file != "." && $file != "..") {
                        
$remote_file $remote.substr(realpath($local.$file), strlen($this->orgDir));
                        
$local_file $local.$file;
                        if (!
is_dir($local_file)) {
                            
$this->file_copy $local_file $remote_file );
                        } else {
                            
$this->mkdir $local_file $remote_file );
                            
$this->copy($local $file "/" $remote);
                        }
                    }
                }
            
closedir($open);
        }
    }
    function 
mkdir $local $remote ){
        
$site "CHMOD ".$this->get_mod($local)." $remote";
        @
ftp_mkdir($this->conn_id$remote)?$this->log("mkdir"):$this->log("mkdir $remote");
        
ftp_site($this->conn_id$site) ? $this->log("site") : $this->log($site);
    }
    function 
file_copy $local $remote ) {
        
$site "CHMOD ".$this->get_mod($local)." $remote";
        
ftp_put($this->conn_id$remote$localFTP_BINARY)?$this->log("put"):$this->log("put $local in $remote");
        
ftp_site($this->conn_id$site)?$this->log("site"):$this->log($site);
    }


};
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products