Commit 95173477 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Creation d'un service pour l'exportation

parent a526e888
Loading
Loading
Loading
Loading
+3 −0
Changes for module/UnicaenDocument/config/merged/contenu.config.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ use UnicaenDocument\Form\Contenu\ContenuHydratorFactory;
use UnicaenDocument\Provider\Privilege\DocumentcontentPrivileges;
use UnicaenDocument\Service\Contenu\ContenuService;
use UnicaenDocument\Service\Contenu\ContenuServiceFactory;
use UnicaenDocument\Service\Exporter\ExporterService;
use UnicaenDocument\Service\Exporter\ExporterServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
@@ -176,6 +178,7 @@ return [
    'service_manager' => [
        'factories' => [
            ContenuService::class => ContenuServiceFactory::class,
            ExporterService::class => ExporterServiceFactory::class,
        ],
    ],
    'form_elements' => [
+10 −0
Changes for module/UnicaenDocument/src/UnicaenDocument/Service/Contenu/ContenuService.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -187,4 +187,14 @@ class ContenuService {
        return $this->replaceMacros($contenu->getContent(), $variables);
    }

    /**
     * @param Content $contenu
     * @param array $variables
     * @return string
     */
    public function generateTitre($contenu, $variables)
    {
        return $this->replaceMacros($contenu->getComplement(), $variables);
    }

}
 No newline at end of file
+60 −0
Changes for module/UnicaenDocument/src/UnicaenDocument/Service/Exporter/ExporterService.php: 60 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenDocument\Service\Exporter;

use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Exporter\Pdf as PdfExporter;
use UnicaenDocument\Service\Contenu\ContenuServiceAwareTrait;
use Zend\View\Renderer\PhpRenderer;
use Zend\View\Resolver\TemplatePathStack;

class ExporterService extends PdfExporter {
    use ContenuServiceAwareTrait;

    private $vars;

    public function setVars(array $vars)
    {
        $this->vars = $vars;
        $this->vars['exporter'] = $this;

        return $this;
    }

    public function __construct(PhpRenderer $renderer = null, $format = 'A4', $orientationPaysage = false, $defaultFontSize = 10)
    {
        parent::__construct($renderer, $format, $orientationPaysage, $defaultFontSize);
        $resolver = $renderer->resolver();
        $resolver->attach(new TemplatePathStack(['script_paths' => [__DIR__]]));
    }

    /**
     * @param null $filename
     * @param string $destination
     * @param null $memoryLimit
     * @return string
     * @throws \Mpdf\MpdfException
     */
    public function export($filename = null, $destination = self::DESTINATION_BROWSER, $memoryLimit = null)
    {
        if (!isset($this->vars['type'])) {
            throw new RuntimeException("Aucun type de document de spécifié dans les variables de l'exportation");
        }
        $contenu = $this->getContenuService()->getContenuByCode($this->vars['type']);
        if ($contenu === null) {
            throw new RuntimeException("Aucun contenu de récupéré pour le type [".$this->vars['type']."]");
        }


        $complement = $this->getContenuService()->generateComplement($contenu,$this->vars);
        $content    = $this->getContenuService()->generateContenu($contenu,$this->vars);
        $titre      = $this->getContenuService()->generateTitre($contenu,$this->vars);

        $this->vars['script'] = $content;
        $this->addBodyScript('generated.phtml', false, $this->vars);

        $this->getMpdf()->SetTopMargin(25);
        $this->getMpdf()->SetTitle($titre);
        return PdfExporter::export($complement, $destination, $memoryLimit);
    }
}
 No newline at end of file
+29 −0
Changes for module/UnicaenDocument/src/UnicaenDocument/Service/Exporter/ExporterServiceAwareTrait.php: 29 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenDocument\Service\Exporter;

trait ExporterServiceAwareTrait {

    /** @var ExporterService */
    private $exporterService;

    /**
     * @return ExporterService
     */
    public function getExporterService(): ExporterService
    {
        return $this->exporterService;
    }

    /**
     * @param ExporterService $exporterService
     * @return ExporterService
     */
    public function setExporterService(ExporterService $exporterService): ExporterService
    {
        $this->exporterService = $exporterService;
        return $this->exporterService;
    }


}
 No newline at end of file
+25 −0
Changes for module/UnicaenDocument/src/UnicaenDocument/Service/Exporter/ExporterServiceFactory.php: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenDocument\Service\Exporter;

use Interop\Container\ContainerInterface;
use UnicaenDocument\Service\Contenu\ContenuService;

class ExporterServiceFactory {

    public function __invoke(ContainerInterface $container)
    {
        /**
         * @var ContenuService $contenuService
         */
        $contenuService = $container->get(ContenuService::class);

        /**
         * @var ExporterService $service
         */
        $service = new ExporterService();
        $service->setContenuService($contenuService);

        return $service;
    }
}
 No newline at end of file
Loading