/**
  * @param MWP_Stream_Interface $body
  */
 public function setBody($body)
 {
     if ($body !== null && !$body instanceof MWP_Stream_Interface) {
         $body = MWP_Stream_Stream::factory($body);
     }
     $this->body = $body;
 }
 public function createExportTableStream($length, $tableName)
 {
     $stream = new MWP_Stream_Append();
     $columns = $this->getConnection()->query("SHOW COLUMNS IN `{$tableName}`;")->fetchAll();
     if (is_array($columns)) {
         $columns = $this->repack($columns, 'Field');
     }
     $query = $this->selectAllDataQuery($tableName, $columns);
     $statement = $this->getConnection()->query($query, true);
     // Go through row by row
     if (!$this->options->isSkipLockTables()) {
         $stream->addStream(MWP_Stream_Stream::factory("LOCK TABLES `{$tableName}` WRITE;\n"));
     }
     $stream->addStream(MWP_Stream_Stream::factory("/*!40000 ALTER TABLE `{$tableName}` DISABLE KEYS */;\n"));
     $stream->addStream(new MWP_Stream_Callable(array($this, 'createExportRowStream'), array($statement, $tableName, $columns)));
     $stream->addStream(MWP_Stream_Stream::factory("\n"));
     $stream->addStream(MWP_Stream_Stream::factory("/*!40000 ALTER TABLE `{$tableName}` ENABLE KEYS */;\n"));
     if (!$this->options->isSkipLockTables()) {
         $stream->addStream(MWP_Stream_Stream::factory("UNLOCK TABLES;\n"));
     }
     return $stream;
 }
 private function createPartStream(MWP_Http_MultipartResponsePart $part)
 {
     $stream = new MWP_Stream_Append();
     foreach ($part->getHeaders() as $header => $value) {
         if (strcasecmp("content-location", $header) === 0) {
             // Content-Location can contain special characters (like \r\n for example)
             $value = urlencode($value);
         }
         $stream->addStream(MWP_Stream_Stream::factory(sprintf("%s: %s\r\n", strtolower($header), $value)));
     }
     $body = $part->getBody();
     // Manually output content-transfer-encoding header
     $stream->addStream(MWP_Stream_Stream::factory(sprintf("content-transfer-encoding: %s\r\n", $part->getEncoding())));
     switch ($part->getEncoding()) {
         case 'binary':
             // No action required
             break;
         case 'base64':
             $body = new MWP_Stream_Base64EncodedStream($body);
             break;
         default:
             throw new MWP_Worker_Exception(MWP_Worker_Exception::GENERAL_ERROR, 'Encoding %s not supported.');
     }
     $stream->addStream(MWP_Stream_Stream::factory("\r\n"));
     $stream->addStream($body);
     return $stream;
 }
Example #4
0
 private function initialize()
 {
     if ($this->initialized === false) {
         if (file_exists($this->realPath)) {
             $handle = @fopen($this->realPath, "rb");
             if ($handle !== false) {
                 $this->stream = MWP_Stream_Stream::factory($handle);
             }
         }
         $this->initialized = true;
     }
 }