function ArchiveTar::_openRead

4 calls to ArchiveTar::_openRead()
ArchiveTar::extractInString in drupal/core/lib/Drupal/Component/Archiver/ArchiveTar.php
This method extract from the archive one file identified by $p_filename. The return value is a string with the file content, or NULL on error.
ArchiveTar::extractList in drupal/core/lib/Drupal/Component/Archiver/ArchiveTar.php
This method extract from the archive only the files indicated in the $p_filelist. These files are extracted in the current directory or in the directory indicated by the optional $p_path parameter. If indicated the $p_remove_path can be used in the…
ArchiveTar::extractModify in drupal/core/lib/Drupal/Component/Archiver/ArchiveTar.php
This method extract all the content of the archive in the directory indicated by $p_path. When relevant the memorized path of the files/dir can be modified by removing the $p_remove_path path at the beginning of the file/dir path. While extracting a…
ArchiveTar::listContent in drupal/core/lib/Drupal/Component/Archiver/ArchiveTar.php

File

drupal/core/lib/Drupal/Component/Archiver/ArchiveTar.php, line 687

Class

ArchiveTar
Creates a (compressed) Tar archive

Namespace

Drupal\Component\Archiver

Code

function _openRead() {
  if (strtolower(substr($this->_tarname, 0, 7)) == 'http://') {

    // ----- Look if a local copy need to be done
    if ($this->_temp_tarname == '') {
      $this->_temp_tarname = uniqid('tar') . '.tmp';
      if (!($v_file_from = @fopen($this->_tarname, 'rb'))) {
        $this
          ->_error('Unable to open in read mode \'' . $this->_tarname . '\'');
        $this->_temp_tarname = '';
        return false;
      }
      if (!($v_file_to = @fopen($this->_temp_tarname, 'wb'))) {
        $this
          ->_error('Unable to open in write mode \'' . $this->_temp_tarname . '\'');
        $this->_temp_tarname = '';
        return false;
      }
      while ($v_data = @fread($v_file_from, 1024)) {
        @fwrite($v_file_to, $v_data);
      }
      @fclose($v_file_from);
      @fclose($v_file_to);
    }

    // ----- File to open if the local copy
    $v_filename = $this->_temp_tarname;
  }
  else {

    // ----- File to open if the normal Tar file
    $v_filename = $this->_tarname;
  }
  if ($this->_compress_type == 'gz') {
    $this->_file = @gzopen($v_filename, "rb");
  }
  else {
    if ($this->_compress_type == 'bz2') {
      $this->_file = @bzopen($v_filename, "r");
    }
    else {
      if ($this->_compress_type == 'none') {
        $this->_file = @fopen($v_filename, "rb");
      }
      else {
        $this
          ->_error('Unknown or missing compression type (' . $this->_compress_type . ')');
      }
    }
  }
  if ($this->_file == 0) {
    $this
      ->_error('Unable to open in read mode \'' . $v_filename . '\'');
    return false;
  }
  return true;
}