ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
PHPExcel_Shared_OLE_ChainedBlockStream Class Reference
+ Collaboration diagram for PHPExcel_Shared_OLE_ChainedBlockStream:

Public Member Functions

 stream_open ($path, $mode, $options, &$openedPath)
 Implements support for fopen(). More...
 
 stream_close ()
 Implements support for fclose(). More...
 
 stream_read ($count)
 Implements support for fread(), fgets() etc. More...
 
 stream_eof ()
 Implements support for feof(). More...
 
 stream_tell ()
 Returns the position of the file pointer, i.e. More...
 
 stream_seek ($offset, $whence)
 Implements support for fseek(). More...
 
 stream_stat ()
 Implements support for fstat(). More...
 

Data Fields

 $ole
 
 $params
 
 $data
 
 $pos
 

Detailed Description

Definition at line 38 of file ChainedBlockStream.php.

Member Function Documentation

◆ stream_close()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_close ( )

Implements support for fclose().

Definition at line 135 of file ChainedBlockStream.php.

136 {
137 $this->ole = null;
138 unset($GLOBALS['_OLE_INSTANCES']);
139 }
$GLOBALS['loaded']
Global hash that tracks already loaded includes.

References $GLOBALS.

◆ stream_eof()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_eof ( )

Implements support for feof().

Returns
bool TRUE if the file pointer is at EOF; otherwise FALSE

Definition at line 162 of file ChainedBlockStream.php.

163 {
164 return $this->pos >= strlen($this->data);
165 }

Referenced by stream_read().

+ Here is the caller graph for this function:

◆ stream_open()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_open (   $path,
  $mode,
  $options,
$openedPath 
)

Implements support for fopen().

For creating streams using this wrapper, use OLE_PPS_File::getStream().

Parameters
string$pathresource name including scheme, e.g. ole-chainedblockstream://oleInstanceId=1
string$modeonly "r" is supported
int$optionsmask of STREAM_REPORT_ERRORS and STREAM_USE_PATH
string&$openedPathabsolute path of the opened stream (out parameter)
Returns
bool true on success

Definition at line 75 of file ChainedBlockStream.php.

76 {
77 if ($mode != 'r') {
78 if ($options & STREAM_REPORT_ERRORS) {
79 trigger_error('Only reading is supported', E_USER_WARNING);
80 }
81 return false;
82 }
83
84 // 25 is length of "ole-chainedblockstream://"
85 parse_str(substr($path, 25), $this->params);
86 if (!isset($this->params['oleInstanceId'],
87 $this->params['blockId'],
88 $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']])) {
89
90 if ($options & STREAM_REPORT_ERRORS) {
91 trigger_error('OLE stream not found', E_USER_WARNING);
92 }
93 return false;
94 }
95 $this->ole = $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']];
96
97 $blockId = $this->params['blockId'];
98 $this->data = '';
99 if (isset($this->params['size']) &&
100 $this->params['size'] < $this->ole->bigBlockThreshold &&
101 $blockId != $this->ole->root->_StartBlock) {
102
103 // Block id refers to small blocks
104 $rootPos = $this->ole->_getBlockOffset($this->ole->root->_StartBlock);
105 while ($blockId != -2) {
106 $pos = $rootPos + $blockId * $this->ole->bigBlockSize;
107 $blockId = $this->ole->sbat[$blockId];
108 fseek($this->ole->_file_handle, $pos);
109 $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
110 }
111 } else {
112 // Block id refers to big blocks
113 while ($blockId != -2) {
114 $pos = $this->ole->_getBlockOffset($blockId);
115 fseek($this->ole->_file_handle, $pos);
116 $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
117 $blockId = $this->ole->bbat[$blockId];
118 }
119 }
120 if (isset($this->params['size'])) {
121 $this->data = substr($this->data, 0, $this->params['size']);
122 }
123
124 if ($options & STREAM_USE_PATH) {
125 $openedPath = $path;
126 }
127
128 return true;
129 }
$path
Definition: aliased.php:25
if(!is_array($argv)) $options

References $GLOBALS, $options, $path, and $pos.

◆ stream_read()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_read (   $count)

Implements support for fread(), fgets() etc.

Parameters
int$countmaximum number of bytes to read
Returns
string

Definition at line 147 of file ChainedBlockStream.php.

148 {
149 if ($this->stream_eof()) {
150 return false;
151 }
152 $s = substr($this->data, $this->pos, $count);
153 $this->pos += $count;
154 return $s;
155 }
stream_eof()
Implements support for feof().

References stream_eof().

+ Here is the call graph for this function:

◆ stream_seek()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_seek (   $offset,
  $whence 
)

Implements support for fseek().

Parameters
int$offsetbyte offset
int$whenceSEEK_SET, SEEK_CUR or SEEK_END
Returns
bool

Definition at line 185 of file ChainedBlockStream.php.

186 {
187 if ($whence == SEEK_SET && $offset >= 0) {
188 $this->pos = $offset;
189 } elseif ($whence == SEEK_CUR && -$offset <= $this->pos) {
190 $this->pos += $offset;
191 } elseif ($whence == SEEK_END && -$offset <= sizeof($this->data)) {
192 $this->pos = strlen($this->data) + $offset;
193 } else {
194 return false;
195 }
196 return true;
197 }

◆ stream_stat()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_stat ( )

Implements support for fstat().

Currently the only supported field is "size".

Returns
array

Definition at line 204 of file ChainedBlockStream.php.

205 {
206 return array(
207 'size' => strlen($this->data),
208 );
209 }

◆ stream_tell()

PHPExcel_Shared_OLE_ChainedBlockStream::stream_tell ( )

Returns the position of the file pointer, i.e.

its offset into the file stream. Implements support for ftell().

Returns
int

Definition at line 173 of file ChainedBlockStream.php.

174 {
175 return $this->pos;
176 }

References $pos.

Field Documentation

◆ $data

PHPExcel_Shared_OLE_ChainedBlockStream::$data

Definition at line 56 of file ChainedBlockStream.php.

◆ $ole

PHPExcel_Shared_OLE_ChainedBlockStream::$ole

Definition at line 44 of file ChainedBlockStream.php.

◆ $params

PHPExcel_Shared_OLE_ChainedBlockStream::$params

Definition at line 50 of file ChainedBlockStream.php.

◆ $pos

PHPExcel_Shared_OLE_ChainedBlockStream::$pos

Definition at line 62 of file ChainedBlockStream.php.

Referenced by stream_open(), and stream_tell().


The documentation for this class was generated from the following file: