Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发

源代码在线查看: archive.php

软件大小: 5657 K
上传用户: fansino
关键词: Joomla Management Content System
下载地址: 免注册下载 普通下载 VIP

相关代码

								/**				 * @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;					}				}			

相关资源