142 $this->PrevPps = $prev;
143 $this->NextPps = $next;
144 $this->DirPps = $dir;
145 $this->Time1st = $time_1st ?? 0;
146 $this->Time2nd = $time_2nd ?? 0;
147 $this->_data =
$data;
163 if (!isset($this->_data)) {
167 return strlen($this->_data);
177 $ret = str_pad($this->Name, 64,
"\x00");
179 $ret .= pack(
'v', strlen($this->Name) + 2)
180 . pack(
'c', $this->Type)
182 . pack(
'V', $this->PrevPps)
183 . pack(
'V', $this->NextPps)
184 . pack(
'V', $this->DirPps)
192 . pack(
'V', $this->startBlock ?? 0)
193 . pack(
'V', $this->
Size)
212 if (!is_array($to_save) || (empty($to_save))) {
214 } elseif (count($to_save) == 1) {
215 $cnt = count($raList);
217 $raList[$cnt] = ($depth == 0) ? $to_save[0] : clone $to_save[0];
218 $raList[$cnt]->No = $cnt;
219 $raList[$cnt]->PrevPps = 0xFFFFFFFF;
220 $raList[$cnt]->NextPps = 0xFFFFFFFF;
221 $raList[$cnt]->DirPps = self::savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++);
223 $iPos = floor(count($to_save) / 2);
224 $aPrev = array_slice($to_save, 0, $iPos);
225 $aNext = array_slice($to_save, $iPos + 1);
226 $cnt = count($raList);
228 $raList[$cnt] = ($depth == 0) ? $to_save[$iPos] : clone $to_save[$iPos];
229 $raList[$cnt]->No = $cnt;
230 $raList[$cnt]->PrevPps = self::savePpsSetPnt($raList, $aPrev, $depth++);
231 $raList[$cnt]->NextPps = self::savePpsSetPnt($raList, $aNext, $depth++);
232 $raList[$cnt]->DirPps = self::savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++);
static savePpsSetPnt(&$raList, $to_save, $depth=0)
Updates index and pointers to previous, next and children PPS's for this PPS.
__construct($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children)
The constructor.
Class for creating PPS's for OLE containers.
static localDateToOLE($date)
Utility function Returns a string for the OLE container with the date given.
getDataLen()
Returns the amount of data saved for this PPS.
getPpsWk()
Returns a string with the PPS's WK (What is a WK?).