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

📄 pclzip.lib.php

📁 mambo的cms源代码
💻 PHP
📖 第 1 页 / 共 5 页
字号:
    $v_arg_list = &func_get_args();    // ----- Parse the options    $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,                                        array (PCLZIP_OPT_BY_NAME => 'optional',                                               PCLZIP_OPT_BY_EREG => 'optional',                                               PCLZIP_OPT_BY_PREG => 'optional',                                               PCLZIP_OPT_BY_INDEX => 'optional' ));    if ($v_result != 1) {        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);        return 0;    }    // ----- Check that at least one rule is set    if (   (!isset($v_options[PCLZIP_OPT_BY_NAME]))        && (!isset($v_options[PCLZIP_OPT_BY_EREG]))        && (!isset($v_options[PCLZIP_OPT_BY_PREG]))        && (!isset($v_options[PCLZIP_OPT_BY_INDEX]))) {        // ----- Error log        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "At least one filtering rule must be set");        // ----- Return        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());        return 0;    }    // ----- Call the delete fct    $v_list = array();    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1)    {      unset($v_list);      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0, PclZip::errorInfo());      return(0);    }    // ----- Return    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_list);    return $v_list;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : deleteByIndex()  // Description :  //   ***** Deprecated *****  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.  // --------------------------------------------------------------------------------  function deleteByIndex($p_index)  {    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::deleteByIndex", "index='$p_index'");        $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);    // ----- Return    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $p_list);    return $p_list;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : properties()  // Description :  //   This method gives the properties of the archive.  //   The properties are :  //     nb : Number of files in the archive  //     comment : Comment associated with the archive file  //     status : not_exist, ok  // Parameters :  //   None  // Return Values :  //   0 on failure,  //   An array with the archive properties.  // --------------------------------------------------------------------------------  function properties()  {    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::properties", "");    // ----- Reset the error handler    $this->privErrorReset();    // ----- Check archive    if (!$this->privCheckFormat()) {      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);      return(0);    }    // ----- Default properties    $v_prop = array();    $v_prop['comment'] = '';    $v_prop['nb'] = 0;    $v_prop['status'] = 'not_exist';    // ----- Look if file exists    if (@is_file($this->zipname))    {      // ----- Open the zip file      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)      {        // ----- Error log        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');        // ----- Return        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), 0);        return 0;      }      // ----- Read the central directory informations      $v_central_dir = array();      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)      {        //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);        return 0;      }      // ----- Close the zip file      $this->privCloseFd();      // ----- Set the user attributes      $v_prop['comment'] = $v_central_dir['comment'];      $v_prop['nb'] = $v_central_dir['entries'];      $v_prop['status'] = 'ok';    }    // ----- Return    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_prop);    return $v_prop;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : duplicate()  // Description :  //   This method creates an archive by copying the content of an other one. If  //   the archive already exist, it is replaced by the new one without any warning.  // Parameters :  //   $p_archive : The filename of a valid archive, or  //                a valid PclZip object.  // Return Values :  //   1 on success.  //   0 or a negative value on error (error code).  // --------------------------------------------------------------------------------  function duplicate($p_archive)  {    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::duplicate", "");    $v_result = 1;    // ----- Reset the error handler    $this->privErrorReset();    // ----- Look if the $p_archive is a PclZip object    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))    {      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is valid PclZip object '".$p_archive->zipname."'");      // ----- Duplicate the archive      $v_result = $this->privDuplicate($p_archive->zipname);    }    // ----- Look if the $p_archive is a string (so a filename)    else if (is_string($p_archive))    {      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 2, "The parameter is a filename '$p_archive'");      // ----- Check that $p_archive is a valid zip file      // TBC : Should also check the archive format      if (!is_file($p_archive)) {        // ----- Error log        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");        $v_result = PCLZIP_ERR_MISSING_FILE;      }      else {        // ----- Duplicate the archive        $v_result = $this->privDuplicate($p_archive);      }    }    // ----- Invalid variable    else    {      // ----- Error log      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");      $v_result = PCLZIP_ERR_INVALID_PARAMETER;    }    // ----- Return    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);    return $v_result;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : merge()  // Description :  //   This method merge the $p_archive_to_add archive at the end of the current  //   one ($this).  //   If the archive ($this) does not exist, the merge becomes a duplicate.  //   If the $p_archive_to_add archive does not exist, the merge is a success.  // Parameters :  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,  //                       or a PclZip object archive.  // Return Values :  //   1 on success,  //   0 or negative values on error (see below).  // --------------------------------------------------------------------------------  function merge($p_archive_to_add)  {    //--(MAGIC-PclTrace)--//PclTraceFctStart(__FILE__, __LINE__, "PclZip::merge", "");    $v_result = 1;    // ----- Reset the error handler    $this->privErrorReset();    // ----- Check archive    if (!$this->privCheckFormat()) {      //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, 0);      return(0);    }    // ----- Look if the $p_archive_to_add is a PclZip object    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))    {      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is valid PclZip object");      // ----- Merge the archive      $v_result = $this->privMerge($p_archive_to_add);    }    // ----- Look if the $p_archive_to_add is a string (so a filename)    else if (is_string($p_archive_to_add))    {      //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "The parameter is a filename");      // ----- Create a temporary archive      $v_object_archive = new PclZip($p_archive_to_add);      // ----- Merge the archive      $v_result = $this->privMerge($v_object_archive);    }    // ----- Invalid variable    else    {      // ----- Error log      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");      $v_result = PCLZIP_ERR_INVALID_PARAMETER;    }    // ----- Return    //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);    return $v_result;  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : errorCode()  // Description :  // Parameters :  // --------------------------------------------------------------------------------  function errorCode()  {    if (PCLZIP_ERROR_EXTERNAL == 1) {      return(PclErrorCode());    }    else {      return($this->error_code);    }  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : errorName()  // Description :  // Parameters :  // --------------------------------------------------------------------------------  function errorName($p_with_code=false)  {    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE' );    if (isset($v_name[$this->error_code])) {      $v_value = $v_name[$this->error_code];    }    else {      $v_value = 'NoName';    }    if ($p_with_code) {      return($v_value.' ('.$this->error_code.')');    }    else {      return($v_value);    }  }  // --------------------------------------------------------------------------------  // --------------------------------------------------------------------------------  // Function : errorInfo()  // Description :  // Parameters :  // --------------------------------------------------------------------------------

⌨️ 快捷键说明

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