src/Gzip.php
public function extract($archive, $destination)
	{
		$this->data = null;

		if (!isset($this->options['use_streams']) || $this->options['use_streams'] == false)
		{
			$this->data = file_get_contents($archive);

			if (!$this->data)
			{
				throw new \RuntimeException('Unable to read archive');
			}

			$position = $this->getFilePosition();
			$buffer   = gzinflate(substr($this->data, $position, \strlen($this->data) - $position));

			if (empty($buffer))
			{
				throw new \RuntimeException('Unable to decompress data');
			}

			if (!File::write($destination, $buffer))
			{
				throw new \RuntimeException('Unable to write archive to file ' . $destination);
			}
		}
		else
		{
			// New style! streams!
			$input = Stream::getStream();

			// Use gz
			$input->set('processingmethod', 'gz');

			if (!$input->open($archive))
			{
				throw new \RuntimeException('Unable to read archive');
			}

			$output = Stream::getStream();

			if (!$output->open($destination, 'w'))
			{
				$input->close();

				throw new \RuntimeException('Unable to open file "' . $destination . '" for writing');
			}

			do
			{
				$this->data = $input->read($input->get('chunksize', 8196));

				if ($this->data)
				{
					if (!$output->write($this->data))
					{
						$input->close();

						throw new \RuntimeException('Unable to write archive to file ' . $destination);
					}
				}
			}
			while ($this->data);

			$output->close();
			$input->close();
		}

		return true;
	}
public function extract($archive, $destination)
	{
		$this->data = null;

		if (!isset($this->options['use_streams']) || $this->options['use_streams'] == false)
		{
			$this->data = file_get_contents($archive);

			if (!$this->data)
			{
				throw new \RuntimeException('Unable to read archive');
			}

			$position = $this->getFilePosition();
			$buffer   = gzinflate(substr($this->data, $position, \strlen($this->data) - $position));

			if (empty($buffer))
			{
				throw new \RuntimeException('Unable to decompress data');
			}

			if (!File::write($destination, $buffer))
			{
				throw new \RuntimeException('Unable to write archive to file ' . $destination);
			}
		}
		else
		{
			// New style! streams!
			$input = Stream::getStream();

			// Use gz
			$input->set('processingmethod', 'gz');

			if (!$input->open($archive))
			{
				throw new \RuntimeException('Unable to read archive');
			}

			$output = Stream::getStream();

			if (!$output->open($destination, 'w'))
			{
				$input->close();

				throw new \RuntimeException('Unable to open file "' . $destination . '" for writing');
			}

			do
			{
				$this->data = $input->read($input->get('chunksize', 8196));

				if ($this->data)
				{
					if (!$output->write($this->data))
					{
						$input->close();

						throw new \RuntimeException('Unable to write archive to file ' . $destination);
					}
				}
			}
			while ($this->data);

			$output->close();
			$input->close();
		}

		return true;
	}
public function extract ( $ archive , $ destination ) { $ this -> data = null ; if ( ! isset ( $ this -> options [ 'use_streams' ] ) || $ this -> options [ 'use_streams' ] == false ) { $ this -> data = file_get_contents ( $ archive ) ; if ( ! $ this -> data ) { throw new \ RuntimeException ( 'Unable to read archive' ) ; } $ position = $ this -> getFilePosition ( ) ; $ buffer = gzinflate ( substr ( $ this -> data , $ position , \ strlen ( $ this -> data ) - $ position ) ) ; if ( empty ( $ buffer ) ) { throw new \ RuntimeException ( 'Unable to decompress data' ) ; } if ( ! File :: write ( $ destination , $ buffer ) ) { throw new \ RuntimeException ( 'Unable to write archive to file ' . $ destination ) ; } } else { // New style! streams! $ input = Stream :: getStream ( ) ; // Use gz $ input -> set ( 'processingmethod' , 'gz' ) ; if ( ! $ input -> open ( $ archive ) ) { throw new \ RuntimeException ( 'Unable to read archive' ) ; } $ output = Stream :: getStream ( ) ; if ( ! $ output -> open ( $ destination , 'w' ) ) { $ input -> close ( ) ; throw new \ RuntimeException ( 'Unable to open file "' . $ destination . '" for writing' ) ; } do { $ this -> data = $ input -> read ( $ input -> get ( 'chunksize' , 8196 ) ) ; if ( $ this -> data ) { if ( ! $ output -> write ( $ this -> data ) ) { $ input -> close ( ) ; throw new \ RuntimeException ( 'Unable to write archive to file ' . $ destination ) ; } } } while ( $ this -> data ) ; $ output -> close ( ) ; $ input -> close ( ) ; } return true ; }
Extract a Gzip compressed file to a given path

@param   string  $archive      Path to ZIP archive to extract
@param   string  $destination  Path to extract archive to

@return  boolean  True if successful

@since   1.0
@throws  \RuntimeException
Extract a Gzip compressed file to a given path