From 073c2fa4d4fba212cd026e0ab8c516b78424f3be Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Sat, 15 Sep 2018 00:00:31 +0200
Subject: [PATCH] FEAT #8346 add convert signed pj

---
 modules/visa/save_attach_res_from_cm.php | 537 ++++++++++++-----------
 1 file changed, 277 insertions(+), 260 deletions(-)

diff --git a/modules/visa/save_attach_res_from_cm.php b/modules/visa/save_attach_res_from_cm.php
index eb4e3cda7c8..16485b1fd22 100755
--- a/modules/visa/save_attach_res_from_cm.php
+++ b/modules/visa/save_attach_res_from_cm.php
@@ -1,260 +1,277 @@
-<?php
-
-//FOR ADD NEW ATTACHMENTS
-
-
-
-require_once 'modules/attachments/attachments_tables.php';
-
-//new attachment from a template
-if (isset($_SESSION['cm']['resMaster']) && $_SESSION['cm']['resMaster'] <> '') {
-   $objectId = $_SESSION['cm']['resMaster'];
-}
-
-$_SESSION['cm']['resMaster'] = '';
-
-$collId =  $_SESSION['current_basket']['coll_id'];
-
-$docserverControler = new docservers_controler();
-$docserver = $docserverControler->getDocserverToInsert(
-   $collId
-);
-
-if (empty($docserver)) {
-    $_SESSION['error'] = _DOCSERVER_ERROR . ' : '
-        . _IMG_SIGN_MISSING . '. ' . _MORE_INFOS;
-} else {
-    // some checking on docserver size limit
-    if(!is_file($_SESSION['config']['tmppath'] . $tmpFileName)){
-        echo "{\"status\":1, \"error\" : \"". _TMP_SIGNED_FILE_FAILED . ': ' ._FILE . ' ' . _ENCRYPTED .' ' . _OR .' ' . _MISSING . ' ' . _OR .' ' . strtolower(NO_PLACE_SIGNATURE) ."\"}";
-        exit;
-    }
-    
-    $newSize = $docserverControler->checkSize(
-        $docserver, filesize($_SESSION['config']['tmppath'] . $tmpFileName)
-    );
-    if ($newSize == 0) {
-        $_SESSION['error'] = _DOCSERVER_ERROR . ' : '
-            . _NOT_ENOUGH_DISK_SPACE . '. ' . _MORE_INFOS . '.';
-    } else {
-        $fileInfos = array(
-            'tmpDir'      => $_SESSION['config']['tmppath'],
-            'size'        => filesize($_SESSION['config']['tmppath'] . $tmpFileName),
-            'format'      => strtoupper($fileExtension),
-            'tmpFileName' => $tmpFileName,
-        );
-        $storeResult = array();
-        $storeResult = $docserverControler->storeResourceOnDocserver(
-            $collId, $fileInfos
-        );
-        if (isset($storeResult['error']) && $storeResult['error'] <> '') {
-            $_SESSION['error'] = $storeResult['error'];
-        } else {
-			require_once "core/class/class_request.php";
-			$db = new Database();
-			$signatoryUser = \User\models\UserModel::getByUserId(['userId' => $_SESSION['user']['UserId'], 'select' => ['id']]);
-			if ($_SESSION['visa']['repSignRel'] > 1) {
-                $target_table = 'res_version_attachments';
-                $db->query("UPDATE res_version_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?",[$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
-            } else {
-                $target_table = 'res_attachments';
-				$db->query("UPDATE res_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?",[$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
-            }
-			unset($_SESSION['visa']['repSignRel']);
-			if (isset($_SESSION['visa']['repSignId'])) unset($_SESSION['visa']['repSignId']);
-			
-            $resAttach = new resource();
-            $_SESSION['data'] = array();
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'typist',
-                    'value' => $_SESSION['user']['UserId'],
-                    'type' => 'string',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'format',
-                    'value' => $fileExtension,
-                    'type' => 'string',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'docserver_id',
-                    'value' => $storeResult['docserver_id'],
-                    'type' => 'string',
-                )
-            );
-			
-            if (!isset($statusSign) || empty($statusSign)) $statusSign = 'TRA';
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'status',
-                    'value' => $statusSign,
-                    'type' => 'string',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'offset_doc',
-                    'value' => ' ',
-                    'type' => 'string',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'title',
-                    'value' => $_SESSION['visa']['last_resId_signed']['title'],
-                    'type' => 'string',
-                )
-            );
-			array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'relation',
-                    'value' => 1,
-                    'type' => 'integer',
-                )
-            );
-            $_SESSION['cm']['templateStyle'] = '';
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'coll_id',
-                    'value' => $collId,
-                    'type' => 'string',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'res_id_master',
-                    'value' => $_SESSION['visa']['last_resId_signed']['res_id'],
-                    'type' => 'integer',
-                )
-            );
-			
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'type_id',
-                    'value' => $_SESSION['visa']['last_resId_signed']['type_id'],
-                    'type' => 'int',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'identifier',
-                    'value' => $_SESSION['visa']['last_resId_signed']['identifier'],
-                    'type' => 'string',
-                )
-            );
-			array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'attachment_type',
-                    'value' => 'signed_response',
-                    'type' => 'string',
-                )
-            );
-
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'dest_contact_id',
-                    'value' => $_SESSION['visa']['last_resId_signed']['dest_contact'],
-                    'type' => 'int',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'dest_address_id',
-                    'value' => $_SESSION['visa']['last_resId_signed']['dest_address'],
-                    'type' => 'int',
-                )
-            );
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'in_signature_book',
-                    'value' => 1,
-                    'type' => 'bool',
-                )
-            );
-            $_SESSION['data'][] = [
-                'column' => 'dest_user',
-                'value' => $_SESSION['visa']['last_resId_signed']['dest_user'],
-                'type' => 'string'
-            ];
-
-            if (empty($_REQUEST['id'])) {
-                $id_origin = $objectId;
-            } else {
-                $id_origin = $_REQUEST['id'];
-            }
-            if (empty($target_table)) {
-                $target_table = "res_attachments";
-            }
-            array_push(
-                $_SESSION['data'],
-                array(
-                    'column' => 'origin',
-                    'value' => $id_origin.','.$target_table,
-                    'type' => 'string',
-                )
-            );
-			
-			unset($_SESSION['visa']['last_resId_signed']);
-			
-            $id = $resAttach->load_into_db(
-                RES_ATTACHMENTS_TABLE,
-                $storeResult['destination_dir'],
-                $storeResult['file_destination_name'] ,
-                $storeResult['path_template'],
-                $storeResult['docserver_id'], 
-                $_SESSION['data'],
-                $_SESSION['config']['databasetype']
-            );
-			
-			$_SESSION['visa']['last_ans_signed'] = $id;
-            if ($id == false) {
-                $_SESSION['error'] = $resAttach->get_error();
-                //echo $resource->get_error();
-                //$resource->show();
-                //exit();
-            } else {
-                if ($_SESSION['history']['attachadd'] == "true") {
-                    $hist = new history();
-                    $sec = new security();
-                    $view = $sec->retrieve_view_from_coll_id(
-                        $collId
-                    );
-                    $hist->add(
-                        $view, $objectId, 'ADD', 'attachadd',
-                        ucfirst(_DOC_NUM) . $id . ' '
-                        . _NEW_ATTACH_ADDED . ' ' . _TO_MASTER_DOCUMENT
-                        . $objectId,
-                        $_SESSION['config']['databasetype'],
-                        'apps'
-                    );
-                    $hist->add(
-                        RES_ATTACHMENTS_TABLE, $id, 'ADD','attachadd',
-                        $_SESSION['error'] 
-                        . _NEW_ATTACHMENT,
-                        $_SESSION['config']['databasetype'],
-                        'attachments'
-                    );
-                }
-            }
-        }
-    }
-}
+<?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   save_attach_res_from_cm
+* @author  dev <dev@maarch.org>
+* @ingroup visa
+*/
+require_once 'modules/attachments/attachments_tables.php';
+
+//new attachment from a template
+if (isset($_SESSION['cm']['resMaster']) && $_SESSION['cm']['resMaster'] <> '') {
+    $objectId = $_SESSION['cm']['resMaster'];
+}
+
+$_SESSION['cm']['resMaster'] = '';
+
+$collId =  $_SESSION['current_basket']['coll_id'];
+
+$docserverControler = new docservers_controler();
+$docserver = $docserverControler->getDocserverToInsert($collId);
+
+if (empty($docserver)) {
+    $_SESSION['error'] = _DOCSERVER_ERROR . ' : '
+        . _IMG_SIGN_MISSING . '. ' . _MORE_INFOS;
+} else {
+    // some checking on docserver size limit
+    if (!is_file($_SESSION['config']['tmppath'] . $tmpFileName)) {
+        echo "{\"status\":1, \"error\" : \"". _TMP_SIGNED_FILE_FAILED . ': ' ._FILE . ' ' . _ENCRYPTED .' ' . _OR .' ' . _MISSING . ' ' . _OR .' ' . strtolower(NO_PLACE_SIGNATURE) ."\"}";
+        exit;
+    }
+    
+    $newSize = $docserverControler->checkSize(
+        $docserver,
+        filesize($_SESSION['config']['tmppath'] . $tmpFileName)
+    );
+    if ($newSize == 0) {
+        $_SESSION['error'] = _DOCSERVER_ERROR . ' : '
+            . _NOT_ENOUGH_DISK_SPACE . '. ' . _MORE_INFOS . '.';
+    } else {
+        $fileInfos = array(
+            'tmpDir'      => $_SESSION['config']['tmppath'],
+            'size'        => filesize($_SESSION['config']['tmppath'] . $tmpFileName),
+            'format'      => strtoupper($fileExtension),
+            'tmpFileName' => $tmpFileName,
+        );
+        $storeResult = array();
+        $storeResult = $docserverControler->storeResourceOnDocserver(
+            $collId,
+            $fileInfos
+        );
+        if (isset($storeResult['error']) && $storeResult['error'] <> '') {
+            $_SESSION['error'] = $storeResult['error'];
+        } else {
+            require_once "core/class/class_request.php";
+            $db = new Database();
+            $signatoryUser = \User\models\UserModel::getByUserId(['userId' => $_SESSION['user']['UserId'], 'select' => ['id']]);
+            if ($_SESSION['visa']['repSignRel'] > 1) {
+                $target_table = 'res_version_attachments';
+                $db->query("UPDATE res_version_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?", [$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
+            } else {
+                $target_table = 'res_attachments';
+                $db->query("UPDATE res_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?", [$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
+            }
+            unset($_SESSION['visa']['repSignRel']);
+            if (isset($_SESSION['visa']['repSignId'])) {
+                unset($_SESSION['visa']['repSignId']);
+            }
+            
+            $resAttach = new resource();
+            $_SESSION['data'] = array();
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'typist',
+                    'value' => $_SESSION['user']['UserId'],
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'format',
+                    'value' => $fileExtension,
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'docserver_id',
+                    'value' => $storeResult['docserver_id'],
+                    'type' => 'string',
+                )
+            );
+            
+            if (!isset($statusSign) || empty($statusSign)) {
+                $statusSign = 'TRA';
+            }
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'status',
+                    'value' => $statusSign,
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'offset_doc',
+                    'value' => ' ',
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'title',
+                    'value' => $_SESSION['visa']['last_resId_signed']['title'],
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'relation',
+                    'value' => 1,
+                    'type' => 'integer',
+                )
+            );
+            $_SESSION['cm']['templateStyle'] = '';
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'coll_id',
+                    'value' => $collId,
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'res_id_master',
+                    'value' => $_SESSION['visa']['last_resId_signed']['res_id'],
+                    'type' => 'integer',
+                )
+            );
+            
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'type_id',
+                    'value' => $_SESSION['visa']['last_resId_signed']['type_id'],
+                    'type' => 'int',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'identifier',
+                    'value' => $_SESSION['visa']['last_resId_signed']['identifier'],
+                    'type' => 'string',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'attachment_type',
+                    'value' => 'signed_response',
+                    'type' => 'string',
+                )
+            );
+
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'dest_contact_id',
+                    'value' => $_SESSION['visa']['last_resId_signed']['dest_contact'],
+                    'type' => 'int',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'dest_address_id',
+                    'value' => $_SESSION['visa']['last_resId_signed']['dest_address'],
+                    'type' => 'int',
+                )
+            );
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'in_signature_book',
+                    'value' => 1,
+                    'type' => 'bool',
+                )
+            );
+            $_SESSION['data'][] = [
+                'column' => 'dest_user',
+                'value' => $_SESSION['visa']['last_resId_signed']['dest_user'],
+                'type' => 'string'
+            ];
+
+            if (empty($_REQUEST['id'])) {
+                $id_origin = $objectId;
+            } else {
+                $id_origin = $_REQUEST['id'];
+            }
+            if (empty($target_table)) {
+                $target_table = "res_attachments";
+            }
+            array_push(
+                $_SESSION['data'],
+                array(
+                    'column' => 'origin',
+                    'value' => $id_origin.','.$target_table,
+                    'type' => 'string',
+                )
+            );
+            
+            unset($_SESSION['visa']['last_resId_signed']);
+            
+            $id = $resAttach->load_into_db(
+                RES_ATTACHMENTS_TABLE,
+                $storeResult['destination_dir'],
+                $storeResult['file_destination_name'],
+                $storeResult['path_template'],
+                $storeResult['docserver_id'],
+                $_SESSION['data'],
+                $_SESSION['config']['databasetype']
+            );
+            
+            $_SESSION['visa']['last_ans_signed'] = $id;
+            if ($id == false) {
+                $_SESSION['error'] = $resAttach->get_error();
+            } else {
+                //PDF convert display
+                \Convert\controllers\ConvertPdfController::convert([
+                    'resId'     => $id,
+                    'collId'    => 'attachments_coll',
+                    'isVersion' => false,
+                ]);
+                if ($_SESSION['history']['attachadd'] == "true") {
+                    $hist = new history();
+                    $sec = new security();
+                    $view = $sec->retrieve_view_from_coll_id(
+                        $collId
+                    );
+                    $hist->add(
+                        $view,
+                        $objectId,
+                        'ADD',
+                        'attachadd',
+                        ucfirst(_DOC_NUM) . $id . ' '
+                        . _NEW_ATTACH_ADDED . ' ' . _TO_MASTER_DOCUMENT
+                        . $objectId,
+                        $_SESSION['config']['databasetype'],
+                        'apps'
+                    );
+                    $hist->add(
+                        RES_ATTACHMENTS_TABLE,
+                        $id,
+                        'ADD',
+                        'attachadd',
+                        $_SESSION['error']
+                        . _NEW_ATTACHMENT,
+                        $_SESSION['config']['databasetype'],
+                        'attachments'
+                    );
+                }
+            }
+        }
+    }
+}
-- 
GitLab