- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/zip.php
- Класс: CZip
- Вызов: CZip::_writeCentralFileHeader
private function _writeCentralFileHeader($arHeader)
{
$res = 1;
//to be checked: for(reset($arHeader); $key = key($arHeader); next($arHeader)) {}
//convert unix mtime to dos mdate/mtime
$date = getdate($arHeader['mtime']);
$mtime = ($date['hours'] << 11) + ($date['minutes'] << 5) + $date['seconds'] / 2;
$mdate = (($date['year'] - 1980) << 9) + ($date['mon'] << 5) + $date['mday'];
//pack data
$binary_data = pack("VvvvvvvVVVvvvvvVV",
0x02014b50,
$arHeader['version'],
$arHeader['version_extracted'],
$arHeader['flag'],
$arHeader['compression'],
$mtime,
$mdate,
$arHeader['crc'],
$arHeader['compressed_size'],
$arHeader['size'],
strlen($arHeader['stored_filename']),
$arHeader['extra_len'],
$arHeader['comment_len'],
$arHeader['disk'],
$arHeader['internal'],
$arHeader['external'],
$arHeader['offset']);
//write 42 bytes of the header in the zip file
fputs($this->zipfile, $binary_data, 46);
//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']);
}
if ($arHeader['comment_len'] != 0)
{
fputs($this->zipfile, $arHeader['comment'], $arHeader['comment_len']);
}
return $res;
}