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

📄 pclzip.lib.php

📁 Joomla15 - 最新开源CMS
💻 PHP
📖 第 1 页 / 共 5 页
字号:
  //	add($p_filelist, $p_option, $p_option_value, ...)
  // Description :
  //	This method supports two synopsis. The first one is historical.
  //	This methods add the list of files in an existing archive.
  //	If a file with the same name already exists, it is added at the end of the
  //	archive, the first one is still present.
  //	If the archive does not exist, it is created.
  // Parameters :
  //	$p_filelist : An array containing file or directory names, or
  // a string containing one filename or one directory name, or
  // 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 arguments
if ($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 arguments
if (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 argument
if ($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 string
else 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 variable
else
{
  // ----- 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 archive
if (!$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 archive
if (!$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 arguments
if ($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 arguments
if (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 argument
if ($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;

⌨️ 快捷键说明

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