660 行
		
	
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			660 行
		
	
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | ||
|  | /** | ||
|  |  * CodeIgniter | ||
|  |  * | ||
|  |  * An open source application development framework for PHP 5.1.6 or newer | ||
|  |  * | ||
|  |  * @package		CodeIgniter | ||
|  |  * @author		ExpressionEngine Dev Team | ||
|  |  * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc. | ||
|  |  * @license		http://codeigniter.com/user_guide/license.html | ||
|  |  * @link		http://codeigniter.com | ||
|  |  * @since		Version 1.0 | ||
|  |  * @filesource | ||
|  |  */ | ||
|  | 
 | ||
|  | // ------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * FTP Class | ||
|  |  * | ||
|  |  * @package		CodeIgniter | ||
|  |  * @subpackage	Libraries | ||
|  |  * @category	Libraries | ||
|  |  * @author		ExpressionEngine Dev Team | ||
|  |  * @link		http://codeigniter.com/user_guide/libraries/ftp.html | ||
|  |  */ | ||
|  | class CI_FTP { | ||
|  | 
 | ||
|  | 	var $hostname	= ''; | ||
|  | 	var $username	= ''; | ||
|  | 	var $password	= ''; | ||
|  | 	var $port		= 21; | ||
|  | 	var $passive	= TRUE; | ||
|  | 	var $debug		= FALSE; | ||
|  | 	var $conn_id	= FALSE; | ||
|  | 
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Constructor - Sets Preferences | ||
|  | 	 * | ||
|  | 	 * The constructor can be passed an array of config values | ||
|  | 	 */ | ||
|  | 	public function __construct($config = array()) | ||
|  | 	{ | ||
|  | 		if (count($config) > 0) | ||
|  | 		{ | ||
|  | 			$this->initialize($config); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		log_message('debug', "FTP Class Initialized"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Initialize preferences | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	array | ||
|  | 	 * @return	void | ||
|  | 	 */ | ||
|  | 	function initialize($config = array()) | ||
|  | 	{ | ||
|  | 		foreach ($config as $key => $val) | ||
|  | 		{ | ||
|  | 			if (isset($this->$key)) | ||
|  | 			{ | ||
|  | 				$this->$key = $val; | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Prep the hostname
 | ||
|  | 		$this->hostname = preg_replace('|.+?://|', '', $this->hostname); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * FTP Connect | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	array	 the connection values | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function connect($config = array()) | ||
|  | 	{ | ||
|  | 		if (count($config) > 0) | ||
|  | 		{ | ||
|  | 			$this->initialize($config); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		if (FALSE === ($this->conn_id = @ftp_connect($this->hostname, $this->port))) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_connect'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		if ( ! $this->_login()) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_login'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Set passive mode if needed
 | ||
|  | 		if ($this->passive == TRUE) | ||
|  | 		{ | ||
|  | 			ftp_pasv($this->conn_id, TRUE); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * FTP Login | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function _login() | ||
|  | 	{ | ||
|  | 		return @ftp_login($this->conn_id, $this->username, $this->password); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Validates the connection ID | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function _is_conn() | ||
|  | 	{ | ||
|  | 		if ( ! is_resource($this->conn_id)) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_no_connection'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Change directory | ||
|  | 	 * | ||
|  | 	 * The second parameter lets us momentarily turn off debugging so that | ||
|  | 	 * this function can be used to test for the existence of a folder | ||
|  | 	 * without throwing an error.  There's no FTP equivalent to is_dir() | ||
|  | 	 * so we do it by trying to change to a particular directory. | ||
|  | 	 * Internally, this parameter is only used by the "mirror" function below. | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @param	bool | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function changedir($path = '', $supress_debug = FALSE) | ||
|  | 	{ | ||
|  | 		if ($path == '' OR ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_chdir($this->conn_id, $path); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE AND $supress_debug == FALSE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_changedir'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Create a directory | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function mkdir($path = '', $permissions = NULL) | ||
|  | 	{ | ||
|  | 		if ($path == '' OR ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_mkdir($this->conn_id, $path); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_makdir'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Set file permissions if needed
 | ||
|  | 		if ( ! is_null($permissions)) | ||
|  | 		{ | ||
|  | 			$this->chmod($path, (int)$permissions); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Upload a file to the server | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function upload($locpath, $rempath, $mode = 'auto', $permissions = NULL) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		if ( ! file_exists($locpath)) | ||
|  | 		{ | ||
|  | 			$this->_error('ftp_no_source_file'); | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Set the mode if not specified
 | ||
|  | 		if ($mode == 'auto') | ||
|  | 		{ | ||
|  | 			// Get the file extension so we can set the upload type
 | ||
|  | 			$ext = $this->_getext($locpath); | ||
|  | 			$mode = $this->_settype($ext); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$mode = ($mode == 'ascii') ? FTP_ASCII : FTP_BINARY; | ||
|  | 
 | ||
|  | 		$result = @ftp_put($this->conn_id, $rempath, $locpath, $mode); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_upload'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Set file permissions if needed
 | ||
|  | 		if ( ! is_null($permissions)) | ||
|  | 		{ | ||
|  | 			$this->chmod($rempath, (int)$permissions); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Download a file from a remote server to the local server | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function download($rempath, $locpath, $mode = 'auto') | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Set the mode if not specified
 | ||
|  | 		if ($mode == 'auto') | ||
|  | 		{ | ||
|  | 			// Get the file extension so we can set the upload type
 | ||
|  | 			$ext = $this->_getext($rempath); | ||
|  | 			$mode = $this->_settype($ext); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$mode = ($mode == 'ascii') ? FTP_ASCII : FTP_BINARY; | ||
|  | 
 | ||
|  | 		$result = @ftp_get($this->conn_id, $locpath, $rempath, $mode); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_download'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Rename (or move) a file | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @param	bool | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function rename($old_file, $new_file, $move = FALSE) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_rename($this->conn_id, $old_file, $new_file); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$msg = ($move == FALSE) ? 'ftp_unable_to_rename' : 'ftp_unable_to_move'; | ||
|  | 
 | ||
|  | 				$this->_error($msg); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Move a file | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function move($old_file, $new_file) | ||
|  | 	{ | ||
|  | 		return $this->rename($old_file, $new_file, TRUE); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Rename (or move) a file | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function delete_file($filepath) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_delete($this->conn_id, $filepath); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_delete'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Delete a folder and recursively delete everything (including sub-folders) | ||
|  | 	 * containted within it. | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function delete_dir($filepath) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Add a trailing slash to the file path if needed
 | ||
|  | 		$filepath = preg_replace("/(.+?)\/*$/", "\\1/",  $filepath); | ||
|  | 
 | ||
|  | 		$list = $this->list_files($filepath); | ||
|  | 
 | ||
|  | 		if ($list !== FALSE AND count($list) > 0) | ||
|  | 		{ | ||
|  | 			foreach ($list as $item) | ||
|  | 			{ | ||
|  | 				// If we can't delete the item it's probaly a folder so
 | ||
|  | 				// we'll recursively call delete_dir()
 | ||
|  | 				if ( ! @ftp_delete($this->conn_id, $item)) | ||
|  | 				{ | ||
|  | 					$this->delete_dir($item); | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_rmdir($this->conn_id, $filepath); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_delete'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Set file permissions | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	the file path | ||
|  | 	 * @param	string	the permissions | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function chmod($path, $perm) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Permissions can only be set when running PHP 5
 | ||
|  | 		if ( ! function_exists('ftp_chmod')) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_chmod'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$result = @ftp_chmod($this->conn_id, $perm, $path); | ||
|  | 
 | ||
|  | 		if ($result === FALSE) | ||
|  | 		{ | ||
|  | 			if ($this->debug == TRUE) | ||
|  | 			{ | ||
|  | 				$this->_error('ftp_unable_to_chmod'); | ||
|  | 			} | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return TRUE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * FTP List files in the specified directory | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @return	array | ||
|  | 	 */ | ||
|  | 	function list_files($path = '.') | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return ftp_nlist($this->conn_id, $path); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// ------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Read a directory and recreate it remotely | ||
|  | 	 * | ||
|  | 	 * This function recursively reads a folder and everything it contains (including | ||
|  | 	 * sub-folders) and creates a mirror via FTP based on it.  Whatever the directory structure | ||
|  | 	 * of the original file path will be recreated on the server. | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	path to source with trailing slash | ||
|  | 	 * @param	string	path to destination - include the base folder with trailing slash | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function mirror($locpath, $rempath) | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// Open the local file path
 | ||
|  | 		if ($fp = @opendir($locpath)) | ||
|  | 		{ | ||
|  | 			// Attempt to open the remote file path.
 | ||
|  | 			if ( ! $this->changedir($rempath, TRUE)) | ||
|  | 			{ | ||
|  | 				// If it doesn't exist we'll attempt to create the direcotory
 | ||
|  | 				if ( ! $this->mkdir($rempath) OR ! $this->changedir($rempath)) | ||
|  | 				{ | ||
|  | 					return FALSE; | ||
|  | 				} | ||
|  | 			} | ||
|  | 
 | ||
|  | 			// Recursively read the local directory
 | ||
|  | 			while (FALSE !== ($file = readdir($fp))) | ||
|  | 			{ | ||
|  | 				if (@is_dir($locpath.$file) && substr($file, 0, 1) != '.') | ||
|  | 				{ | ||
|  | 					$this->mirror($locpath.$file."/", $rempath.$file."/"); | ||
|  | 				} | ||
|  | 				elseif (substr($file, 0, 1) != ".") | ||
|  | 				{ | ||
|  | 					// Get the file extension so we can se the upload type
 | ||
|  | 					$ext = $this->_getext($file); | ||
|  | 					$mode = $this->_settype($ext); | ||
|  | 
 | ||
|  | 					$this->upload($locpath.$file, $rempath.$file, $mode); | ||
|  | 				} | ||
|  | 			} | ||
|  | 			return TRUE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return FALSE; | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Extract the file extension | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @param	string | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function _getext($filename) | ||
|  | 	{ | ||
|  | 		if (FALSE === strpos($filename, '.')) | ||
|  | 		{ | ||
|  | 			return 'txt'; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$x = explode('.', $filename); | ||
|  | 		return end($x); | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	// --------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Set the upload type | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @param	string | ||
|  | 	 * @return	string | ||
|  | 	 */ | ||
|  | 	function _settype($ext) | ||
|  | 	{ | ||
|  | 		$text_types = array( | ||
|  | 							'txt', | ||
|  | 							'text', | ||
|  | 							'php', | ||
|  | 							'phps', | ||
|  | 							'php4', | ||
|  | 							'js', | ||
|  | 							'css', | ||
|  | 							'htm', | ||
|  | 							'html', | ||
|  | 							'phtml', | ||
|  | 							'shtml', | ||
|  | 							'log', | ||
|  | 							'xml' | ||
|  | 							); | ||
|  | 
 | ||
|  | 
 | ||
|  | 		return (in_array($ext, $text_types)) ? 'ascii' : 'binary'; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// ------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Close the connection | ||
|  | 	 * | ||
|  | 	 * @access	public | ||
|  | 	 * @param	string	path to source | ||
|  | 	 * @param	string	path to destination | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function close() | ||
|  | 	{ | ||
|  | 		if ( ! $this->_is_conn()) | ||
|  | 		{ | ||
|  | 			return FALSE; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		@ftp_close($this->conn_id); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// ------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Display error message | ||
|  | 	 * | ||
|  | 	 * @access	private | ||
|  | 	 * @param	string | ||
|  | 	 * @return	bool | ||
|  | 	 */ | ||
|  | 	function _error($line) | ||
|  | 	{ | ||
|  | 		$CI =& get_instance(); | ||
|  | 		$CI->lang->load('ftp'); | ||
|  | 		show_error($CI->lang->line($line)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | } | ||
|  | // END FTP Class
 | ||
|  | 
 | ||
|  | /* End of file Ftp.php */ | ||
|  | /* Location: ./system/libraries/Ftp.php */ |