startDocument() abstract public method

Start document.
abstract public startDocument ( mixed $data )
$data mixed
Ejemplo n.º 1
0
 /**
  * Visit struct returned by controllers.
  *
  * @param mixed $data
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function visit($data)
 {
     $this->generator->reset();
     $this->generator->startDocument($data);
     $this->visitValueObject($data);
     //@todo Needs refactoring!
     // A hackish solution to enable outer visitors to disable setting
     // of certain headers in inner visitors, for example Accept-Patch header
     // which is valid in GET/POST/PATCH for a resource, but must not appear
     // in the list of resources
     foreach ($this->response->headers->all() as $headerName => $headerValue) {
         if ($headerValue[0] === false) {
             $this->response->headers->remove($headerName);
         }
     }
     $response = clone $this->response;
     $response->setContent($this->generator->isEmpty() ? null : $this->generator->endDocument($data));
     // reset the inner response
     $this->response = new Response(null, 200);
     $this->statusCode = null;
     return $response;
 }
 public function render(Generator $generator, $data)
 {
     ini_set('max_execution_time', 0);
     if (file_exists($data->options['documentRoot'] . '/var/export/.lock')) {
         throw new ExportInProgressException('Export is running');
     }
     $chunkDir = $this->createChunkDir($data->options['documentRoot']);
     $chunkDirPath = $data->options['documentRoot'] . '/var/export' . $chunkDir;
     $chunks = array_chunk($data->contents, $data->options['chunkSize']);
     $urls = [];
     touch($data->options['documentRoot'] . '/var/export/.lock');
     foreach ($chunks as $id => $chunk) {
         $chunkPath = $chunkDirPath . $id;
         $generator->reset();
         $generator->startDocument($chunk);
         $this->contentListElementGenerator->generateElement($generator, $chunk);
         file_put_contents($chunkPath, $generator->endDocument($chunk));
         $urls[] = sprintf('%s/api/ezp/v2/ez_recommendation/v1/exportDownload%s%s', $data->options['host'], $chunkDir, $id);
     }
     unlink($data->options['documentRoot'] . '/var/export/.lock');
     echo $this->sendYCResponse($urls, $data->options, $chunkDirPath);
     $generator->reset();
     return $generator;
 }