Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
Downloads
/
vfm-admin
/
assets
/
zipstream
/
grandt
/
phpzipmerge
/
src
/
ZipMerge
/
Zip
/
Core
/
ExtraField
:
UnicodeCommentExtraField.php
Voltar
Back Up
Advanced Editor
Save
<?php /** * * @author A. Grandt <php@grandt.com> * * Classes to assist in handling extra fields * */ namespace ZipMerge\Zip\Core\ExtraField; use com\grandt\BinStringStatic; /** * * -Info-ZIP Unicode Comment Extra Field: * ==================================== * * Stores the UTF-8 version of the entry comment as stored in the * central directory header. * (Last Revision 20070912) * * Value Size Description * ----- ---- ----------- * (UCom) 0x6375 Short tag for this extra block type ("uc") * TSize Short total data size for this block * Version 1 byte version of this extra field, currently 1 * ComCRC32 4 bytes Comment Field CRC32 Checksum * UnicodeCom Variable UTF-8 version of the entry comment * * Currently Version is set to the number 1. If there is a need * to change this field, the version will be incremented. Changes * may not be backward compatible so this extra field should not be * used if the version is not recognized. * * The ComCRC32 is the standard zip CRC32 checksum of the Comment * field in the central directory header. This is used to verify that * the comment field has not changed since the Unicode Comment extra * field was created. This can happen if a utility changes the Comment * field but does not update the UTF-8 Comment extra field. If the CRC * check fails, this Unicode Comment extra field should be ignored and * the Comment field in the header used. * * The UnicodeCom field is the UTF-8 version of the entry comment field * in the header. As UnicodeCom is defined to be UTF-8, no UTF-8 byte * order mark (BOM) is used. The length of this field is determined by * subtracting the size of the previous fields from TSize. If both the * File Name and Comment fields are UTF-8, the new General Purpose Bit * Flag, bit 11 (Language encoding flag (EFS)), can be used to indicate * both the header File Name and Comment fields are UTF-8 and, in this * case, the Unicode Path and Unicode Comment extra fields are not * needed and should not be created. Note that, for backward * compatibility, bit 11 should only be used if the native character set * of the paths and comments being zipped up are already in UTF-8. The * same method, either bit 11 or extra fields, should be used in both * the local and central directory headers. */ class UnicodeCommentExtraField extends AbstractUnicodeExtraField { public function __construct($handle = null) { parent::__construct($handle); if ($handle == null) { $this->header = parent::HEADER_UNICODE_COMMENT; } } /** * @return string The version of the field for the Local Header. */ public function getLocalField() { return ''; // Comments are not added to the Local header. } /** * @return string The version of the field for the Central Header. */ public function getCentralField() { return parent::HEADER_UNICODE_COMMENT . pack('vV', BinStringStatic::_strlen($this->utf8Data) + 5, $this->CRC32) . $this->version . $this->utf8Data; } }