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

📄 pclzip.lib.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 5 页
字号:
  // a string containing a list of filenames and/or directory  // names separated by spaces.  //	$p_add_dir : A path to add before the real path of the archived file,  //in order to have it memorized in the archive.  //	$p_remove_dir : A path to remove from the real path of the file to archive,  //	in order to have a shorter path memorized in the archive.  //	When $p_add_dir and $p_remove_dir are set, $p_remove_dir  //	is removed first, before $p_add_dir is added.  // Options :  //	PCLZIP_OPT_ADD_PATH :  //	PCLZIP_OPT_REMOVE_PATH :  //	PCLZIP_OPT_REMOVE_ALL_PATH :  //	PCLZIP_OPT_COMMENT :  //	PCLZIP_OPT_ADD_COMMENT :  //	PCLZIP_OPT_PREPEND_COMMENT :  //	PCLZIP_CB_PRE_ADD :  //	PCLZIP_CB_POST_ADD :  // Return Values :  //	0 on failure,  //	The list of the added files, with a status of the add action.  //	(see PclZip::listContent() for list entry format)  // --------------------------------------------------------------------------------//  function add($p_filelist, $p_add_dir="", $p_remove_dir="")  function add($p_filelist /* options */)  {//--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::add', "filelist='$p_filelist', ...");$v_result=1;// ----- Reset the error handler$this->privErrorReset();// ----- Set default values$v_options = array();$v_add_path = "";$v_remove_path = "";$v_remove_all_path = false;$v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;// ----- Look for variable options arguments$v_size = func_num_args();//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");// ----- Look for argumentsif ($v_size > 1) {  // ----- Get the arguments  $v_arg_list = &func_get_args();  // ----- Remove form the options list the first argument  array_shift($v_arg_list);  $v_size--;  // ----- Look for first arg  if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options detected");// ----- Parse the options$v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,array (PCLZIP_OPT_REMOVE_PATH => 'optional',	PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',	PCLZIP_OPT_ADD_PATH => 'optional',	PCLZIP_CB_PRE_ADD => 'optional',	PCLZIP_CB_POST_ADD => 'optional',	PCLZIP_OPT_NO_COMPRESSION => 'optional',	PCLZIP_OPT_COMMENT => 'optional',	PCLZIP_OPT_ADD_COMMENT => 'optional',	PCLZIP_OPT_PREPEND_COMMENT => 'optional' ));if ($v_result != 1) {  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);  return 0;}// ----- Set the argumentsif (isset($v_options[PCLZIP_OPT_ADD_PATH])) {  $v_add_path = $v_options[PCLZIP_OPT_ADD_PATH];}if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {  $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];}if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {  $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];}  }  // ----- Look for 2 args  // Here we need to support the first historic synopsis of the  // method.  else {//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");// ----- Get the first argument$v_add_path = $v_arg_list[0];// ----- Look for the optional second argumentif ($v_size == 2) {  $v_remove_path = $v_arg_list[1];}else if ($v_size > 2) {  // ----- Error log  PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");  // ----- Return  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());  return 0;}  }}// ----- Trace//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "add_path='$v_add_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_all_path?'true':'false')."'");// ----- Look if the $p_filelist is really an array$p_result_list = array();if (is_array($p_filelist)){  // ----- Call the create fct  $v_result = $this->privAdd($p_filelist, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options);}// ----- Look if the $p_filelist is a stringelse if (is_string($p_filelist)){  // ----- Create a list with the elements from the string  $v_list = explode(PCLZIP_SEPARATOR, $p_filelist);  // ----- Call the create fct  $v_result = $this->privAdd($v_list, $p_result_list, $v_add_path, $v_remove_path, $v_remove_all_path, $v_options);}// ----- Invalid variableelse{  // ----- Error log  PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");  $v_result = PCLZIP_ERR_INVALID_PARAMETER;}if ($v_result != 1){  // ----- Return  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);  return 0;}// ----- Return//--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_result_list);return $p_result_list;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : listContent()  // Description :  //	This public method, gives the list of the files and directories, with their  //	properties.  //	The properties of each entries in the list are (used also in other functions) :  // filename : Name of the file. For a create or add action it is the filename  //given by the user. For an extract function it is the filename  //of the extracted file.  // stored_filename : Name of the file / directory stored in the archive.  // size : Size of the stored file.  // compressed_size : Size of the file's data compressed in the archive  //	(without the headers overhead)  // mtime : Last known modification date of the file (UNIX timestamp)  // comment : Comment associated with the file  // folder : true | false  // index : index of the file in the archive  // status : status of the action (depending of the action) :  //  Values are :  //ok : OK !  //filtered : the file / dir is not extracted (filtered by user)  //already_a_directory : the file can not be extracted because a  //  directory with the same name already exists  //write_protected : the file can not be extracted because a file  //  with the same name already exists and is  //  write protected  //newer_exist : the file was not extracted because a newer file exists  //path_creation_fail : the file is not extracted because the folder  // does not exists and can not be created  //write_error : the file was not extracted because there was a  //  error while writing the file  //read_error : the file was not extracted because there was a error  // while reading the file  //invalid_header : the file was not extracted because of an archive  // format error (bad file header)  //	Note that each time a method can continue operating when there  //	is an action error on a file, the error is only logged in the file status.  // Return Values :  //	0 on an unrecoverable failure,  //	The list of the files in the archive.  // --------------------------------------------------------------------------------  function listContent()  {//--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, 'PclZip::listContent', "");$v_result=1;// ----- Reset the error handler$this->privErrorReset();// ----- Check archiveif (!$this->privCheckFormat()) {  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);  return(0);}// ----- Call the extracting fct$p_list = array();if (($v_result = $this->privList($p_list)) != 1){  unset($p_list);  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());  return(0);}// ----- Return//--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);return $p_list;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function :  //	extract($p_path="./", $p_remove_path="")  //	extract([$p_option, $p_option_value, ...])  // Description :  //	This method supports two synopsis. The first one is historical.  //	This method extract all the files / directories from the archive to the  //	folder indicated in $p_path.  //	If you want to ignore the 'root' part of path of the memorized files  //	you can indicate this in the optional $p_remove_path parameter.  //	By default, if a newer file with the same name already exists, the  //	file is not extracted.  //  //	If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions  //	are used, the path indicated in PCLZIP_OPT_ADD_PATH is append  //	at the end of the path value of PCLZIP_OPT_PATH.  // Parameters :  //	$p_path : Path where the files and directories are to be extracted  //	$p_remove_path : First part ('root' part) of the memorized path  //(if any similar) to remove while extracting.  // Options :  //	PCLZIP_OPT_PATH :  //	PCLZIP_OPT_ADD_PATH :  //	PCLZIP_OPT_REMOVE_PATH :  //	PCLZIP_OPT_REMOVE_ALL_PATH :  //	PCLZIP_CB_PRE_EXTRACT :  //	PCLZIP_CB_POST_EXTRACT :  // Return Values :  //	0 or a negative value on failure,  //	The list of the extracted files, with a status of the action.  //	(see PclZip::listContent() for list entry format)  // --------------------------------------------------------------------------------  //function extract($p_path="./", $p_remove_path="")  function extract(/* options */)  {//--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::extract", "");$v_result=1;// ----- Reset the error handler$this->privErrorReset();// ----- Check archiveif (!$this->privCheckFormat()) {  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);  return(0);}// ----- Set default values$v_options = array();$v_path = "./";$v_remove_path = "";$v_remove_all_path = false;// ----- Look for variable options arguments$v_size = func_num_args();//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "$v_size arguments passed to the method");// ----- Default values for option$v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;// ----- Look for argumentsif ($v_size > 0) {  // ----- Get the arguments  $v_arg_list = func_get_args();  // ----- Look for first arg  if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Variable list of options");// ----- Parse the options$v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,array (PCLZIP_OPT_PATH => 'optional',	PCLZIP_OPT_REMOVE_PATH => 'optional',	PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',	PCLZIP_OPT_ADD_PATH => 'optional',	PCLZIP_CB_PRE_EXTRACT => 'optional',	PCLZIP_CB_POST_EXTRACT => 'optional',	PCLZIP_OPT_SET_CHMOD => 'optional',	PCLZIP_OPT_BY_NAME => 'optional',	PCLZIP_OPT_BY_EREG => 'optional',	PCLZIP_OPT_BY_PREG => 'optional',	PCLZIP_OPT_BY_INDEX => 'optional',	PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',	PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional' ));if ($v_result != 1) {  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);  return 0;}// ----- Set the argumentsif (isset($v_options[PCLZIP_OPT_PATH])) {  $v_path = $v_options[PCLZIP_OPT_PATH];}if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {  $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];}if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {  $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];}if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {  // ----- Check for '/' in last path char  if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {$v_path .= '/';  }  $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];}  }  // ----- Look for 2 args  // Here we need to support the first historic synopsis of the  // method.  else {//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Static synopsis");// ----- Get the first argument$v_path = $v_arg_list[0];// ----- Look for the optional second argumentif ($v_size == 2) {  $v_remove_path = $v_arg_list[1];}else if ($v_size > 2) {  // ----- Error log  PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");  // ----- Return  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());  return 0;}  }}// ----- Trace//--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "path='$v_path', remove_path='$v_remove_path', remove_all_path='".($v_remove_path?'true':'false')."'");// ----- Call the extracting fct$p_list = array();$v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,	 $v_remove_all_path, $v_options);if ($v_result < 1) {  unset($p_list);  //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());  return(0);}// ----- Return//--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);return $p_list;

⌨️ 快捷键说明

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