<?php namespace phpList\plugin\Common; /** * String Stream Wrapper. * * @category phplist * * @author Duncan Cameron * @copyright 2012-2018 Duncan Cameron * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, Version 3 */ /** * This class allows a PHP variable to be used as a read/write stream. * * Based on code originally developed by Sam Moffatt <sam.moffatt@toowoombarc.qld.gov.au> * See http://code.google.com/p/phpstringstream/ */ class StringStream { const MODE_READ = 1; const MODE_WRITE = 2; private $_currentstring; private $_mode; private $_pos; private static $references = array(); public static function stringId(&$variable) { $id = count(self::$references); self::$references[$id] = &$variable; return $id; } public static function fopen(&$variable, $mode = 'r') { $id = self::stringId($variable); $fh = fopen("string://$id", $mode); return $fh; } public function stream_open($path, $mode, $options, &$opened_path) { $id = parse_url($path, PHP_URL_HOST); if (!isset(self::$references[$id])) { return false; } $this->_currentstring = &self::$references[$id]; if (strpos($mode, 'r') !== false) { $this->_mode = self::MODE_READ; } elseif (strpos($mode, 'w') !== false) { $this->_currentstring = ''; $this->_mode = self::MODE_WRITE; } else { return false; } $this->_pos = 0; return true; } public function stream_stat() { return false; } public function stream_read($count) { if ($this->_mode != self::MODE_READ) { return false; } if ($this->stream_eof()) { return false; } $result = substr($this->_currentstring, $this->_pos, $count); $this->_pos += $count; return $result; } public function stream_write($data) { if ($this->_mode != self::MODE_WRITE) { return false; } $count = strlen($data); $this->_currentstring = substr_replace($this->_currentstring, $data, $this->_pos, 0); $this->_pos += $count; return $count; } public function stream_tell() { return $this->_pos; } public function stream_eof() { return $this->_pos >= strlen($this->_currentstring); } /* public function stream_seek($offset, $whence) { echo "\n$offset $whence $this->_pos $this->_len "; switch ($whence) { case SEEK_SET: if (!($offset >= 0 && $offset < $this->_len)) return false; $this->_pos = $offset; break; case SEEK_CUR: if (!($offset >= 0 && $this->_pos + $offset < $this->_len)) return false; $this->_pos += $offset; break; case SEEK_END: if (!($offset <= 0 && $offset + $this->_len >= 0)) return false; $this->_pos = $this->_len + $offset; break; } return true; } */ } stream_wrapper_register('string', 'phpList\plugin\Common\StringStream') or die('Failed to register string stream');
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
DAO | Folder | 0755 |
|
|
BaseController.php | File | 936 B | 0644 |
|
Config.php | File | 1003 B | 0644 |
|
Container.php | File | 509 B | 0644 |
|
Context.php | File | 1.18 KB | 0644 |
|
Controller.php | File | 2.43 KB | 0644 |
|
ControllerFactory.php | File | 479 B | 0644 |
|
ControllerFactoryBase.php | File | 1.4 KB | 0644 |
|
DAO.php | File | 692 B | 0644 |
|
DB.php | File | 2.47 KB | 0644 |
|
DBResultIterator.php | File | 931 B | 0644 |
|
Exception.php | File | 1.03 KB | 0644 |
|
ExportCSV.php | File | 962 B | 0644 |
|
ExportCSVAsync.php | File | 4.3 KB | 0644 |
|
ExportXML.php | File | 1.4 KB | 0644 |
|
FPDF.php | File | 1.03 KB | 0644 |
|
FileNotFoundException.php | File | 631 B | 0644 |
|
FileServer.php | File | 2.21 KB | 0644 |
|
FrontendTranslator.php | File | 1.46 KB | 0644 |
|
HelpManager.php | File | 2.61 KB | 0644 |
|
HtmlToPdf.php | File | 683 B | 0644 |
|
I18N.php | File | 5.05 KB | 0644 |
|
IChartable.php | File | 447 B | 0644 |
|
IExportable.php | File | 569 B | 0644 |
|
IMailClient.php | File | 1.33 KB | 0644 |
|
IPopulator.php | File | 517 B | 0644 |
|
ImageTag.php | File | 894 B | 0644 |
|
Listing.php | File | 1.23 KB | 0644 |
|
Logger.php | File | 2.88 KB | 0644 |
|
MailSender.php | File | 7.12 KB | 0644 |
|
Main.php | File | 1.21 KB | 0644 |
|
Model.php | File | 2.17 KB | 0644 |
|
PageLink.php | File | 1.33 KB | 0644 |
|
PageURL.php | File | 1.87 KB | 0644 |
|
Pager.php | File | 7.46 KB | 0644 |
|
Paginator.php | File | 1.53 KB | 0644 |
|
Populator.php | File | 1.34 KB | 0644 |
|
StringCallback.php | File | 559 B | 0644 |
|
StringStream.php | File | 3.41 KB | 0644 |
|
Tabs.php | File | 707 B | 0644 |
|
Toolbar.php | File | 2.62 KB | 0644 |
|
UniqueLogger.php | File | 1.14 KB | 0644 |
|
View.php | File | 669 B | 0644 |
|
WebblerListing.php | File | 3.85 KB | 0644 |
|
Widget.php | File | 1.12 KB | 0644 |
|
about.tpl.php | File | 553 B | 0644 |
|
depends.php | File | 1.45 KB | 0644 |
|
helpmanager.tpl.php | File | 676 B | 0644 |
|
pager.tpl.php | File | 2.14 KB | 0644 |
|
toolbar.tpl.php | File | 1.04 KB | 0644 |
|
widget_attributeform.tpl.php | File | 3.42 KB | 0644 |
|