/** * @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; }
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; } }