Newer
Older
<?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;
use Docserver\controllers\DocserverController;
use Docserver\models\DocserverModel;
use Slim\Http\Request;
use Slim\Http\Response;
use Template\models\TemplateAssociationModel;
use Template\models\TemplateModel;
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']]);
$pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]);
$docinfo = DocserverController::getNextFileNameInDocServer(['pathOnDocserver' => $pathOnDocserver['pathToDocServer']]);
$docinfo['fileDestinationName'] .= '.' . explode('.', $template['template_file_name'])[1];
$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']]);
}
$template['template_path'] = str_replace(str_replace(DIRECTORY_SEPARATOR, '#', $docserver['path_template']), '', $copyResult['copyOnDocserver']['destinationDir']);
$template['template_file_name'] = $copyResult['copyOnDocserver']['fileDestinationName'];