ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
LOB.php
Go to the documentation of this file.
1<?php
2// +----------------------------------------------------------------------+
3// | PHP version 5 |
4// +----------------------------------------------------------------------+
5// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox, |
6// | Stig. S. Bakken, Lukas Smith |
7// | All rights reserved. |
8// +----------------------------------------------------------------------+
9// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB |
10// | API as well as database abstraction for PHP applications. |
11// | This LICENSE is in the BSD license style. |
12// | |
13// | Redistribution and use in source and binary forms, with or without |
14// | modification, are permitted provided that the following conditions |
15// | are met: |
16// | |
17// | Redistributions of source code must retain the above copyright |
18// | notice, this list of conditions and the following disclaimer. |
19// | |
20// | Redistributions in binary form must reproduce the above copyright |
21// | notice, this list of conditions and the following disclaimer in the |
22// | documentation and/or other materials provided with the distribution. |
23// | |
24// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken, |
25// | Lukas Smith nor the names of his contributors may be used to endorse |
26// | or promote products derived from this software without specific prior|
27// | written permission. |
28// | |
29// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
30// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
31// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
32// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
33// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
34// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
35// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS|
36// | OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
37// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
38// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY|
39// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
40// | POSSIBILITY OF SUCH DAMAGE. |
41// +----------------------------------------------------------------------+
42// | Author: Lukas Smith <smith@pooteeweet.org> |
43// +----------------------------------------------------------------------+
44//
45// $Id: LOB.php,v 1.34 2006/10/25 11:52:21 lsmith Exp $
46
53require_once 'MDB2.php';
54
63{
72
81
82 // {{{ stream_open()
83
95 function stream_open($path, $mode, $options, &$opened_path)
96 {
97 if (!preg_match('/^rb?\+?$/', $mode)) {
98 return false;
99 }
100 $url = parse_url($path);
101 if (empty($url['host'])) {
102 return false;
103 }
104 $this->db_index = (int)$url['host'];
105 if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
106 return false;
107 }
108 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
109 $this->lob_index = (int)$url['user'];
110 if (!isset($db->datatype->lobs[$this->lob_index])) {
111 return false;
112 }
113 return true;
114 }
115 // }}}
116
117 // {{{ stream_read()
118
127 function stream_read($count)
128 {
129 if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
130 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
131 $db->datatype->_retrieveLOB($db->datatype->lobs[$this->lob_index]);
132
133 $data = $db->datatype->_readLOB($db->datatype->lobs[$this->lob_index], $count);
134 $length = strlen($data);
135 if ($length == 0) {
136 $db->datatype->lobs[$this->lob_index]['endOfLOB'] = true;
137 }
138 $db->datatype->lobs[$this->lob_index]['position'] += $length;
139 return $data;
140 }
141 }
142 // }}}
143
144 // {{{ stream_write()
145
155 {
156 return 0;
157 }
158 // }}}
159
160 // {{{ stream_tell()
161
168 function stream_tell()
169 {
170 if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
171 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
172 return $db->datatype->lobs[$this->lob_index]['position'];
173 }
174 }
175 // }}}
176
177 // {{{ stream_eof()
178
185 function stream_eof()
186 {
187 if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
188 return true;
189 }
190
191 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
192 $result = $db->datatype->_endOfLOB($db->datatype->lobs[$this->lob_index]);
193 if (version_compare(phpversion(), "5.0", ">=")
194 && version_compare(phpversion(), "5.1", "<")
195 ) {
196 return !$result;
197 }
198 return $result;
199 }
200 // }}}
201
202 // {{{ stream_seek()
203
213 function stream_seek($offset, $whence)
214 {
215 return false;
216 }
217 // }}}
218
219 // {{{ stream_stat()
220
226 function stream_stat()
227 {
228 if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
229 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
230 return array(
231 'db_index' => $this->db_index,
232 'lob_index' => $this->lob_index,
233 );
234 }
235 }
236 // }}}
237
238 // {{{ stream_close()
239
245 function stream_close()
246 {
247 if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
248 $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
249 if (isset($db->datatype->lobs[$this->lob_index])) {
250 $db->datatype->_destroyLOB($db->datatype->lobs[$this->lob_index]);
251 unset($db->datatype->lobs[$this->lob_index]);
252 }
253 }
254 }
255 // }}}
256}
257
258// register streams wrapper
259if (!stream_wrapper_register("MDB2LOB", "MDB2_LOB")) {
261 return false;
262}
263
264?>
$result
Definition: LOB.php:63
stream_stat()
return information about stream
Definition: LOB.php:226
$db_index
Definition: LOB.php:71
stream_read($count)
read stream
Definition: LOB.php:127
$lob_index
Definition: LOB.php:80
stream_seek($offset, $whence)
Seek stream, not implemented.
Definition: LOB.php:213
stream_eof()
Check if stream reaches EOF.
Definition: LOB.php:185
stream_write($data)
write stream, note implemented
Definition: LOB.php:154
stream_close()
close stream
Definition: LOB.php:245
stream_open($path, $mode, $options, &$opened_path)
open stream
Definition: LOB.php:95
stream_tell()
return the current position
Definition: LOB.php:168
& raiseError($code=null, $mode=null, $options=null, $userinfo=null)
This method is used to communicate an error and invoke error callbacks etc.
Definition: MDB2.php:572
$data
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
$url
Definition: shib_logout.php:72
$path
Definition: index.php:22
if(!is_array($argv)) $options