69 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
71 if ($timearray[
'year'] < 1980) {
72 $timearray[
'year'] = 1980;
73 $timearray[
'mon'] = 1;
74 $timearray[
'mday'] = 1;
75 $timearray[
'hours'] = 0;
76 $timearray[
'minutes'] = 0;
77 $timearray[
'seconds'] = 0;
80 return (($timearray[
'year'] - 1980) << 25) | ($timearray[
'mon'] << 21) | ($timearray[
'mday'] << 16) |
81 ($timearray[
'hours'] << 11) | ($timearray[
'minutes'] << 5) | ($timearray[
'seconds'] >> 1);
96 $name = str_replace(
'\\',
'/', $name);
99 $hexdtime =
'\x' . $dtime[6] . $dtime[7]
100 .
'\x' . $dtime[4] . $dtime[5]
101 .
'\x' . $dtime[2] . $dtime[3]
102 .
'\x' . $dtime[0] . $dtime[1];
103 eval(
'$hexdtime = "' . $hexdtime .
'";');
105 $fr =
"\x50\x4b\x03\x04";
112 $unc_len = strlen($data);
114 $zdata = gzcompress($data);
115 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
116 $c_len = strlen($zdata);
117 $fr .= pack(
'V', $crc);
118 $fr .= pack(
'V', $c_len);
119 $fr .= pack(
'V', $unc_len);
120 $fr .= pack(
'v', strlen($name));
136 $this -> datasec[] = $fr;
139 $cdrec =
"\x50\x4b\x01\x02";
140 $cdrec .=
"\x00\x00";
141 $cdrec .=
"\x14\x00";
142 $cdrec .=
"\x00\x00";
143 $cdrec .=
"\x08\x00";
145 $cdrec .= pack(
'V', $crc);
146 $cdrec .= pack(
'V', $c_len);
147 $cdrec .= pack(
'V', $unc_len);
148 $cdrec .= pack(
'v', strlen($name));
149 $cdrec .= pack(
'v', 0);
150 $cdrec .= pack(
'v', 0);
151 $cdrec .= pack(
'v', 0);
152 $cdrec .= pack(
'v', 0);
153 $cdrec .= pack(
'V', 32);
155 $cdrec .= pack(
'V', $this -> old_offset);
156 $this -> old_offset += strlen($fr);
162 $this -> ctrl_dir[] = $cdrec;
175 $data = implode(
'', $this -> datasec);
176 $ctrldir = implode(
'', $this -> ctrl_dir);
181 $this -> eof_ctrl_dir .
182 pack(
'v',
sizeof($this -> ctrl_dir)) .
183 pack(
'v',
sizeof($this -> ctrl_dir)) .
184 pack(
'V', strlen($ctrldir)) .
185 pack(
'V', strlen($data)) .