⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 archive.php

📁 没什么功能
💻 PHP
字号:
<?php/** * @version		$Id: archive.php 10381 2008-06-01 03:35:53Z pasamio $ * @package		Joomla.Framework * @subpackage	FileSystem * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license		GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. *//** * An Archive handling class * * @static * @package 	Joomla.Framework * @subpackage	FileSystem * @since		1.5 */class JArchive{	/**	 * @param	string	The name of the archive file	 * @param	string	Directory to unpack into	 * @return	boolean	True for success	 */	function extract( $archivename, $extractdir)	{		jimport('joomla.filesystem.file');		jimport('joomla.filesystem.folder');		$untar = false;		$result = false;		$ext = JFile::getExt(strtolower($archivename));		// check if a tar is embedded...gzip/bzip2 can just be plain files!		if (JFile::getExt(JFile::stripExt(strtolower($archivename))) == 'tar') {			$untar = true;		}		switch ($ext)		{			case 'zip':				$adapter =& JArchive::getAdapter('zip');				if ($adapter) {					$result = $adapter->extract($archivename, $extractdir);				}				break;			case 'tar':				$adapter =& JArchive::getAdapter('tar');				if ($adapter) {					$result = $adapter->extract($archivename, $extractdir);				}				break;			case 'tgz'  :				$untar = true;	// This format is a tarball gzip'd			case 'gz'   :	// This may just be an individual file (e.g. sql script)			case 'gzip' :				$adapter =& JArchive::getAdapter('gzip');				if ($adapter)				{					$config =& JFactory::getConfig();					$tmpfname = $config->getValue('config.tmp_path').DS.uniqid('gzip');					$gzresult = $adapter->extract($archivename, $tmpfname);					if (JError::isError($gzresult))					{						@unlink($tmpfname);						return false;					}					if($untar)					{						// Try to untar the file						$tadapter =& JArchive::getAdapter('tar');						if ($tadapter) {							$result = $tadapter->extract($tmpfname, $extractdir);						}					}					else					{						$path = JPath::clean($extractdir);						JFolder::create($path);						$result = JFile::copy($tmpfname,$path.DS.JFile::stripExt(JFile::getName(strtolower($archivename))));					}					@unlink($tmpfname);				}				break;			case 'tbz2' :				$untar = true; // This format is a tarball bzip2'd			case 'bz2'  :	// This may just be an individual file (e.g. sql script)			case 'bzip2':				$adapter =& JArchive::getAdapter('bzip2');				if ($adapter)				{					$config =& JFactory::getConfig();					$tmpfname = $config->getValue('config.tmp_path').DS.uniqid('bzip2');					$bzresult = $adapter->extract($archivename, $tmpfname);					if (JError::isError($bzresult))					{						@unlink($tmpfname);						return false;					}					if ($untar)					{						// Try to untar the file						$tadapter =& JArchive::getAdapter('tar');						if ($tadapter) {							$result = $tadapter->extract($tmpfname, $extractdir);						}					}					else					{						$path = JPath::clean($extractdir);						JFolder::create($path);						$result = JFile::copy($tmpfname,$path.DS.JFile::stripExt(JFile::getName(strtolower($archivename))));					}					@unlink($tmpfname);				}				break;			default:				JError::raiseWarning(10, JText::_('UNKNOWNARCHIVETYPE'));				return false;				break;		}		if (! $result || JError::isError($result)) {			return false;		}		return true;	}	function &getAdapter($type)	{		static $adapters;		if (!isset($adapters)) {			$adapters = array();		}		if (!isset($adapters[$type]))		{			// Try to load the adapter object			$class = 'JArchive'.ucfirst($type);			if (!class_exists($class))			{				$path = dirname(__FILE__).DS.'archive'.DS.strtolower($type).'.php';				if (file_exists($path)) {					require_once($path);				} else {					JError::raiseError(500,JText::_('Unable to load archive'));				}			}			$adapters[$type] = new $class();		}		return $adapters[$type];	}	/**	 * @param	string	The name of the archive	 * @param	mixed	The name of a single file or an array of files	 * @param	string	The compression for the archive	 * @param	string	Path to add within the archive	 * @param	string	Path to remove within the archive	 * @param	boolean	Automatically append the extension for the archive	 * @param	boolean	Remove for source files	 */	function create($archive, $files, $compress = 'tar', $addPath = '', $removePath = '', $autoExt = false, $cleanUp = false)	{		jimport( 'pear.archive_tar.Archive_Tar' );		if (is_string($files)) {			$files = array ($files);		}		if ($autoExt) {			$archive .= '.'.$compress;		}		$tar = new Archive_Tar( $archive, $compress );		$tar->setErrorHandling(PEAR_ERROR_PRINT);		$tar->createModify( $files, $addPath, $removePath );		if ($cleanUp) {			JFile::delete( $files );		}		return $tar;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -