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.

References $GLOBALS.

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

◆ 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.

References data.

Referenced by stream_read().

163  {
164  return $this->pos >= strlen($this->data);
165  }
Add some data
+ 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.

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

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  }
Add some data
$path
Definition: aliased.php:25
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
if(!is_array($argv)) $options

◆ 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.

References data, and stream_eof().

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  }
Add some data
stream_eof()
Implements support for feof().
+ 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.

References data.

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  }
Add some data

◆ 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.

References array, and data.

205  {
206  return array(
207  'size' => strlen($this->data),
208  );
209  }
Add some data
Create styles array
The data for the language used.

◆ 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.

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: