示例#1
1
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         if (!empty($this->_previous)) {
             $bucket->data = $this->_previous . $bucket->data;
             $this->_previous = '';
         }
         if (!feof($this->stream) && preg_match('/(%[12]\\$|%[12]|%)$/', $bucket->data)) {
             $this->_previous .= $bucket->data;
             return PSFS_FEED_ME;
         }
         $consumed += $bucket->datalen;
         if (preg_match('/%([12])\\$s/', $bucket->data, $matches)) {
             if ($matches[1] == '1') {
                 $bucket->data = preg_replace('/%1\\$s/', $this->_sender, $bucket->data);
             } else {
                 $bucket->data = preg_replace('/%2\\$s/', $this->_recipient, $bucket->data);
             }
         }
         $bucket->datalen = strlen($bucket->data);
         stream_bucket_append($out, $bucket);
     }
     if (!empty($this->_previous)) {
         if ($closing) {
             $bucket = stream_bucket_new($this->stream, $this->_previous);
             $bucket->data = $this->_previous;
             $consumed += strlen($this->_previous);
             $this->_previous = '';
             stream_bucket_append($out, $bucket);
         }
     }
     return PSFS_PASS_ON;
 }
示例#2
1
 public function filter($in, $out, &$consumed, $closing) : int
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         stream_bucket_append($out, stream_bucket_new($this->stream, str_rot13($bucket->data)));
     }
     return \PSFS_PASS_ON;
 }
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $this->data .= $bucket->data;
         $this->bucket = $bucket;
         $consumed = 0;
     }
     if ($closing) {
         $consumed += strlen($this->data);
         if (isset($this->bucket)) {
             $bucket = $this->bucket;
         } else {
             $bucket = stream_bucket_new($this->stream, '');
         }
         $f = self::$registry[get_class($this)];
         AbstractStreamProcessor__lazyUriResolver::bind($this->stream, $f->uri);
         $bucket->data = $f->process($this->data);
         $bucket->datalen = strlen($bucket->data);
         stream_bucket_append($out, $bucket);
         $this->bucket = null;
         $this->data = '';
         return PSFS_PASS_ON;
     }
     return PSFS_FEED_ME;
 }
 /**
  * The main filter method.
  * Implemented according to \php_user_filter class. Will loop over all stream buckets, buffer them and perform
  * the needed actions.
  *
  * @param resource $in       Incoming bucket brigade we need to filter
  * @param resource $out      Outgoing bucket brigade with already filtered content
  * @param integer  $consumed The count of altered characters as buckets pass the filter
  * @param boolean  $closing  Is the stream about to close?
  *
  * @throws \Exception
  * @throws \PHPParser_Error
  *
  * @return integer
  *
  * @link http://www.php.net/manual/en/php-user-filter.filter.php
  *
  * TODO The buffering does not work that well, maybe we should implement universal buffering within parent class!
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     // Get our buckets from the stream
     $buffer = '';
     while ($bucket = stream_bucket_make_writeable($in)) {
         $buffer .= $bucket->data;
         // Tell them how much we already processed, and stuff it back into the output
         $consumed += $bucket->datalen;
         // Save a bucket for later reuse
         $bigBucket = $bucket;
     }
     // Beautify all the buckets!
     $parser = new \PHPParser_Parser(new \PHPParser_Lexer());
     $prettyPrinter = new \PHPParser_PrettyPrinter_Default();
     try {
         // parse
         $stmts = $parser->parse($buffer);
         $data = '<?php ' . $prettyPrinter->prettyPrint($stmts);
     } catch (PHPParser_Error $e) {
         throw $e;
     }
     // Refill the bucket with the beautified data
     // Do not forget to set the length!
     $bigBucket->data = $data;
     $bigBucket->datalen = strlen($data);
     // Only append our big bucket
     stream_bucket_append($out, $bigBucket);
     return PSFS_PASS_ON;
 }
 /**
  * Filter some data.
  *
  * @param resource $in       Read from this input stream
  * @param resource $out      Write to this output stream
  * @param int      $consumed Count of bytes processed
  * @param bool     $closing  Is the input about to end?
  *
  * @return int PSFS_PASS_ON / PSFS_FEED_ME / PSFS_ERR_FATAL
  */
 public function filter($in, $out, &$consumed, $closing) : int
 {
     $return = PSFS_FEED_ME;
     // While input data is available, continue to read it.
     while ($bucket_in = stream_bucket_make_writeable($in)) {
         $this->data .= $bucket_in->data;
         $consumed += $bucket_in->datalen;
         // While we have complete GEDCOM records, process them.
         while (preg_match('/(.*?[\\r\\n]\\s*)(0.*)/s', $this->data, $match) === 1) {
             list(, $data, $this->data) = $match;
             // Send this record output.
             $data = $this->filterData($data);
             $bucket_out = stream_bucket_new($this->stream, $data);
             $return = PSFS_PASS_ON;
             stream_bucket_append($out, $bucket_out);
         }
     }
     // Process the final record.
     if ($closing && $this->data !== '') {
         $data = $this->filterData($this->data);
         $bucket_out = stream_bucket_new($this->stream, $data);
         $return = PSFS_PASS_ON;
         stream_bucket_append($out, $bucket_out);
     }
     return $return;
 }
示例#6
0
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#7
0
 function filter($in, $out, &$consumed, $closing)
 {
     if (!$closing) {
         $bucket = stream_bucket_new($this->stream, "42");
         stream_bucket_append($out, $bucket);
     }
     return PSFS_ERR_FATAL;
 }
示例#8
0
 function filter($in, $out, &$consumed, $closing)
 {
     while ($ib = stream_bucket_make_writeable($in)) {
         $ob = stream_bucket_new($this->stream, strtoupper($ib->data));
         stream_bucket_append($out, $ob);
     }
     return PSFS_PASS_ON;
 }
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = preg_replace(self::$pattern, '', $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#10
0
文件: Filter.php 项目: m6w6/atick
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         $bucket->data = call_user_func($this->params["func"], $this, $bucket->data, $closing);
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#11
0
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = preg_replace("/[\r\n]+\$/", "\r\n", $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 /**
  * Filter implementation converts encoding before returning PSFS_PASS_ON.
  * 
  * @param resource $in
  * @param resource $out
  * @param int $consumed
  * @param bool $closing
  * @return int
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = mb_convert_encoding($bucket->data, 'UTF-8', $this->charset);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#13
0
文件: Null.php 项目: evltuma/moodle
 /**
  * @see stream_filter_register()
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = str_replace($this->_search, $this->_replace, $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
function filter_impl($in, $out)
{
    while ($bucket = stream_bucket_make_writeable($in)) {
        $bucket->data = strtoupper($bucket->data) . $bucket->data;
        $consumed += $bucket->datalen;
        $bucket->datalen *= 2;
        stream_bucket_append($out, $bucket);
    }
}
示例#15
0
 /**
  * Collect intercepted data
  *
  * @param resource $in
  * @param resource $out
  * @param int $consumed
  * @param bool $closing
  * @return int
  *
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  * @SuppressWarnings(PHPMD.ShortVariable)
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         self::$_collectedData .= $bucket->data;
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#16
0
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($res = stream_bucket_make_writeable($in)) {
         $res->data = @mb_convert_encoding($res->data, $this->encoding_to, $this->encoding_from);
         $consumed += $res->datalen;
         stream_bucket_append($out, $res);
     }
     return PSFS_PASS_ON;
 }
示例#17
0
 /**
  * @param $in
  * @param $out
  * @param $consumed
  * @param $closing
  *
  * @return int|void
  *
  * @link http://stackoverflow.com/a/3466609/372654
  */
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = preg_replace('/[^\\x{0009}\\x{000a}\\x{000d}\\x{0020}-\\x{D7FF}\\x{E000}-\\x{FFFD}]+/u', '', $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#18
0
 /**
  * @see stream_filter_register()
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         $this->params->crc32 = $this->_crc32Combine($this->params->crc32, crc32($bucket->data), $bucket->datalen);
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#19
0
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = $this->handler->convert($bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#20
0
 public function filter($in, $out, &$consumed, $closing)
 {
     printf("filtering\n");
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = strtoupper($bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         // make sure the line endings aren't already CRLF
         $bucket->data = preg_replace("/(?<!\r)\n/", WOE_Formatter_Csv::$linebreak, $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 /**
  * (non-PHPdoc)
  * @see php_user_filter::filter()
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $searchFn = $this->_searchIsRegExp ? 'preg_replace' : 'str_replace';
         $bucket->data = call_user_func($searchFn, $this->_search, $this->_replace, $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 /**
  * This method is called whenever data is read from or written to the attached stream
  *
  * @see php_user_filter::filter()
  *
  * @param resource      $in
  * @param resource      $out
  * @param int           $consumed
  * @param boolean       $closing
  *
  * @access public
  * @return int
  *
  */
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         if ($this->padding != 0 && $bucket->datalen < 8192) {
             $bucket->data .= str_pad($bucket->data, $this->padding, 0x0);
         }
         $consumed += $this->padding != 0 && $bucket->datalen < 8192 ? $bucket->datalen + $this->padding : $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#24
0
 public function filter($in, $out, &$consumed, $params)
 {
     $consumed = 0;
     while ($bucket = stream_bucket_make_writeable($in)) {
         $bucket->data = strtoupper($bucket->data) . $bucket->data;
         $consumed += $bucket->datalen;
         $bucket->datalen *= 2;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#25
0
 /**
  * @see stream_filter_register()
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         $bucket->data = addcslashes($bucket->data, '"\\');
         stream_bucket_append($out, $bucket);
     }
     stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
     return PSFS_PASS_ON;
 }
示例#26
0
 public function filter($in, $out, &$consumed, $closing)
 {
     if (!class_exists("Test")) {
         eval("class Test extends ArrayObject {}");
     }
     while ($bucket = stream_bucket_make_writeable($in)) {
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 /**
  * (non-PHPdoc)
  * @see php_user_filter::filter()
  */
 function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $encoding = mb_detect_encoding($bucket->data, array('utf-8', 'iso-8859-1', 'windows-1252', 'iso-8859-15'));
         if ($encoding !== FALSE) {
             $bucket->data = @mb_convert_encoding($bucket->data, 'utf-8', $encoding);
         }
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#28
0
文件: Eol.php 项目: evltuma/moodle
 /**
  * @see stream_filter_register()
  */
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         if (!is_null($this->_split) && $bucket->data[$bucket->datalen - 1] == $this->_split) {
             $bucket->data = substr($bucket->data, 0, -1);
         }
         $bucket->data = str_replace($this->_search, $this->_replace, $bucket->data);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $s = $bucket->data;
         if (rand(5, 7) === 7) {
             $bucket->data = wordwrap($s, strlen($s) * 0.7, " [Jequiti] ");
         }
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
     }
     return PSFS_PASS_ON;
 }
示例#30
0
 public function filter($in, $out, &$consumed, $closing)
 {
     while ($bucket = stream_bucket_make_writeable($in)) {
         $lenbucket = stream_bucket_new($this->stream, dechex($bucket->datalen) . "\r\n");
         stream_bucket_append($out, $lenbucket);
         $consumed += $bucket->datalen;
         stream_bucket_append($out, $bucket);
         $lenbucket = stream_bucket_new($this->stream, "\r\n");
         stream_bucket_append($out, $lenbucket);
     }
     return PSFS_PASS_ON;
 }