WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

PclZip::privAddFileUsingTempFile() public WP 1.0

Function : privAddFileUsingTempFile() Description : Parameters : Return Values :

Это метод класса: PclZip{}

Хуков нет.

Возвращает

Null. Ничего.

Использование

$PclZip = new PclZip();
$PclZip->privAddFileUsingTempFile( $p_filedescr, $p_header, $p_options );

Код PclZip::privAddFileUsingTempFile() WP 5.5.1

wp-admin/includes/class-pclzip.php
<?php
function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
{
  $v_result=PCLZIP_ERR_NO_ERROR;

  // ----- Working variable
  $p_filename = $p_filedescr['filename'];


  // ----- Open the source file
  if (($v_file = @fopen($p_filename, "rb")) == 0) {
    PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
    return PclZip::errorCode();
  }

  // ----- Creates a compressed temporary file
  $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
  if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {
    fclose($v_file);
    PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
    return PclZip::errorCode();
  }

  // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
  $v_size = filesize($p_filename);
  while ($v_size != 0) {
    $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
    $v_buffer = @fread($v_file, $v_read_size);
    //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
    @gzputs($v_file_compressed, $v_buffer, $v_read_size);
    $v_size -= $v_read_size;
  }

  // ----- Close the file
  @fclose($v_file);
  @gzclose($v_file_compressed);

  // ----- Check the minimum file size
  if (filesize($v_gzip_temp_name) < 18) {
    PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
    return PclZip::errorCode();
  }

  // ----- Extract the compressed attributes
  if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
    PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
    return PclZip::errorCode();
  }

  // ----- Read the gzip file header
  $v_binary_data = @fread($v_file_compressed, 10);
  $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);

  // ----- Check some parameters
  $v_data_header['os'] = bin2hex($v_data_header['os']);

  // ----- Read the gzip file footer
  @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
  $v_binary_data = @fread($v_file_compressed, 8);
  $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);

  // ----- Set the attributes
  $p_header['compression'] = ord($v_data_header['cm']);
  //$p_header['mtime'] = $v_data_header['mtime'];
  $p_header['crc'] = $v_data_footer['crc'];
  $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;

  // ----- Close the file
  @fclose($v_file_compressed);

  // ----- Call the header generation
  if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
    return $v_result;
  }

  // ----- Add the compressed data
  if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)
  {
    PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
    return PclZip::errorCode();
  }

  // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
  fseek($v_file_compressed, 10);
  $v_size = $p_header['compressed_size'];
  while ($v_size != 0)
  {
    $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
    $v_buffer = @fread($v_file_compressed, $v_read_size);
    //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
    @fwrite($this->zip_fd, $v_buffer, $v_read_size);
    $v_size -= $v_read_size;
  }

  // ----- Close the file
  @fclose($v_file_compressed);

  // ----- Unlink the temporary file
  @unlink($v_gzip_temp_name);

  // ----- Return
  return $v_result;
}