Skip to content
Snippets Groups Projects
TemplateController.php 3.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    
    /**
     * Copyright Maarch since 2008 under licence GPLv3.
     * See LICENCE.txt file at the root folder for more details.
     * This file is part of Maarch software.
     *
     */
    
    /**
     * @brief Template Controller
     * @author dev@maarch.org
     */
    
    
    namespace Template\controllers;
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    use Docserver\controllers\DocserverController;
    use Docserver\models\DocserverModel;
    
    use Group\models\ServiceModel;
    
    use Slim\Http\Request;
    use Slim\Http\Response;
    
    use Template\models\TemplateAssociationModel;
    
    use Template\models\TemplateModel;
    
    
    class TemplateController
    {
    
        public function get(Request $request, Response $response)
        {
            if (!ServiceModel::hasService(['id' => 'admin_templates', 'userId' => $GLOBALS['userId'], 'location' => 'templates', 'type' => 'admin'])) {
                return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
            }
    
            $templates = TemplateModel::get();
            foreach ($templates as $key => $template) {
                $linkedEntities = TemplateAssociationModel::get(['select' => ['value_field'], 'where' => ['template_id = ?'], 'data' => [$template['template_id']]]);
                foreach ($linkedEntities as $linkedEntity) {
                    $templates[$key]['entities'][] = $linkedEntity['value_field'];
                }
            }
    
            return $response->withJson(['templates' => $templates]);
        }
    
    
        public function duplicate(Request $request, Response $response, array $aArgs)
    
        {
            $template = TemplateModel::getById(['id' => $aArgs['id']]);
    
            if (empty($template)) {
                return $response->withStatus(400)->withJson(['errors' => 'Template not found']);
            }
    
            if ($template['template_type'] == 'OFFICE') {
    
                $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
    
    Damien's avatar
    Damien committed
                $pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]);
    
                $docinfo = DocserverController::getNextFileNameInDocServer(['pathOnDocserver' => $pathOnDocserver['pathToDocServer']]);
    
                $docinfo['fileDestinationName'] .=  '.' . explode('.', $template['template_file_name'])[1];
    
    
    Damien's avatar
    Damien committed
                $pathToDocumentToCopy = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $template['template_path']) . $template['template_file_name'];
    
                $copyResult = DocserverController::copyOnDocServer([
                    'sourceFilePath'             => $pathToDocumentToCopy,
                    'destinationDir'             => $docinfo['destinationDir'],
                    'fileDestinationName'        => $docinfo['fileDestinationName']
                ]);
                if (!empty($copyResult['errors'])) {
                    return $response->withStatus(500)->withJson(['errors' => 'Template duplication failed : ' . $copyResult['errors']]);
                }
    
    Damien's avatar
    Damien committed
                $template['template_path'] = str_replace(str_replace(DIRECTORY_SEPARATOR, '#', $docserver['path_template']), '', $copyResult['copyOnDocserver']['destinationDir']);
                $template['template_file_name'] = $copyResult['copyOnDocserver']['fileDestinationName'];
    
            }
    
            $template['template_label'] = 'Copie de ' . $template['template_label'];
    
            $templateId = TemplateModel::create($template);
    
            return $response->withJson(['id' => $templateId]);
        }
    }