• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/zip.php
  • Класс: CZip
  • Вызов: CZip::_writeFileHeader
private function _writeFileHeader(&$arHeader)
{
	$res = 1;

	//to be checked: for(reset($arHeader); $key = key($arHeader); next($arHeader))

	//save offset position of the file
	$arHeader['offset'] = ftell($this->zipfile);

	//transform unix modification time to the dos mdate/mtime format
	$date = getdate($arHeader['mtime']);
	$mtime = ($date['hours'] << 11) + ($date['minutes'] << 5) + $date['seconds'] / 2;
	$mdate = (($date['year'] - 1980) << 9) + ($date['mon'] << 5) + $date['mday'];

	// $arHeader["stored_filename"] = "12345678.gif";

	//pack data
	$binary_data = pack("VvvvvvVVVvv",
		0x04034b50,
		$arHeader['version'],
		$arHeader['flag'],
		$arHeader['compression'],
		$mtime,
		$mdate,
		$arHeader['crc'],
		$arHeader['compressed_size'],
		$arHeader['size'],
		strlen($arHeader['stored_filename']),
		$arHeader['extra_len']
	);

	//write first 148 bytes of the header in the archive
	fputs($this->zipfile, $binary_data, 30);

	//write the variable fields
	if ($arHeader['stored_filename'] <> '')
	{
		fputs($this->zipfile, $arHeader['stored_filename'], strlen($arHeader['stored_filename']));
	}
	if ($arHeader['extra_len'] != 0)
	{
		fputs($this->zipfile, $arHeader['extra'], $arHeader['extra_len']);
	}

	return $res;
}