- Модуль: 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;
}