You are here

function PclZip::extractByIndex in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php \PclZip::extractByIndex()

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/PCLZip/pclzip.lib.php, line 857

Class

PclZip

Code

function extractByIndex($p_index) {
  $v_result = 1;

  // ----- Reset the error handler
  $this
    ->privErrorReset();

  // ----- Check archive
  if (!$this
    ->privCheckFormat()) {
    return 0;
  }

  // ----- Set default values
  $v_options = array();

  //    $v_path = "./";
  $v_path = '';
  $v_remove_path = "";
  $v_remove_all_path = false;

  // ----- Look for variable options arguments
  $v_size = func_num_args();

  // ----- Default values for option
  $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

  // ----- 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) {

      // ----- 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_EXTRACT_AS_STRING => 'optional',
        PCLZIP_OPT_ADD_PATH => 'optional',
        PCLZIP_CB_PRE_EXTRACT => 'optional',
        PCLZIP_CB_POST_EXTRACT => 'optional',
        PCLZIP_OPT_SET_CHMOD => 'optional',
        PCLZIP_OPT_REPLACE_NEWER => 'optional',
        PCLZIP_OPT_STOP_ON_ERROR => 'optional',
        PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
        PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
        PCLZIP_OPT_TEMP_FILE_ON => 'optional',
        PCLZIP_OPT_TEMP_FILE_OFF => 'optional',
      ));
      if ($v_result != 1) {
        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];
      }
      if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
        $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
      }
      else {
      }
    }
    else {

      // ----- 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
          return 0;
        }
      }
    }
  }

  // ----- Trace
  // ----- Trick
  // Here I want to reuse extractByRule(), so I need to parse the $p_index
  // with privParseOptions()
  $v_arg_trick = array(
    PCLZIP_OPT_BY_INDEX,
    $p_index,
  );
  $v_options_trick = array();
  $v_result = $this
    ->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array(
    PCLZIP_OPT_BY_INDEX => 'optional',
  ));
  if ($v_result != 1) {
    return 0;
  }
  $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];

  // ----- Look for default option values
  $this
    ->privOptionDefaultThreshold($v_options);

  // ----- Call the extracting fct
  if (($v_result = $this
    ->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
    return 0;
  }

  // ----- Return
  return $p_list;
}