diff --git a/apps/maarch_entreprise/actions/sendFileWS.php b/apps/maarch_entreprise/actions/sendFileWS.php index a75fe2dd663ecb8308df466eff07a2af89338658..f4c8120c07e38f5162e81d2892e17219f6ae4385 100644 --- a/apps/maarch_entreprise/actions/sendFileWS.php +++ b/apps/maarch_entreprise/actions/sendFileWS.php @@ -9,8 +9,9 @@ function manage_send($aId) $result = ''; foreach ($aId as $resId) { - $document = \Resource\models\ResModel::getById(['resId' => $resId, 'select' => ['res_id', 'format', 'path', 'filename']]); - $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'DOC', 'select' => ['path_template']]); + $document = \Resource\models\ResModel::getById(['resId' => $resId, 'select' => ['res_id', 'format', 'path', 'filename', 'docserver_id']]); + $docserver = \Docserver\models\DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template']]); + $file = file_get_contents($docserver['path_template'] . str_replace('#', '/', $document['path']) . $document['filename']); $encodedFile = base64_encode($file); diff --git a/core/Test/DocserverControllerTest.php b/core/Test/DocserverControllerTest.php index 65ee04406f37e97b3dd728dc6843e04916d20998..4169eb555326b3c5cb17262161705c6d01f2f0fa 100644 --- a/core/Test/DocserverControllerTest.php +++ b/core/Test/DocserverControllerTest.php @@ -125,8 +125,7 @@ class DocserverControllerTest extends TestCase 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/tmp/', - 'priority_number' => 30 + 'path_template' => '/tmp/' ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); $response = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]); @@ -151,8 +150,7 @@ class DocserverControllerTest extends TestCase 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/wrong/path/', - 'priority_number' => 30 + 'path_template' => '/wrong/path/' ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); $response = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]); @@ -168,8 +166,7 @@ class DocserverControllerTest extends TestCase 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/tmp/', - 'priority_number' => 30 + 'path_template' => '/tmp/' ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); $response = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => 12345]); diff --git a/core/class/docservers_controler.php b/core/class/docservers_controler.php index b10aa95bfa528238e4586f1d8a19a102d963e11c..358ce304095b2e1633167ae69372baa7aa58250e 100755 --- a/core/class/docservers_controler.php +++ b/core/class/docservers_controler.php @@ -304,40 +304,6 @@ class docservers_controler } } - - /** - * Check if two docservers have the same priorities - * - * @param $docserver docservers object - * @return bool true if the control is ok - */ - private function priorityNumberControl($docserver) - { - $func = new functions(); - if (!isset($docserver) - || empty($docserver) - || empty($docserver->priority_number) - ) { - return false; - } - $db = new Database(); - $query = "select priority_number from " . _DOCSERVERS_TABLE_NAME - . " where priority_number = ? AND docserver_type_id = ?" - . " AND docserver_id <> ?"; - $stmt = $db->query( - $query, - array( - $docserver->priority_number, - $docserver->docserver_type_id, - $docserver->docserver_id - ) - ); - if ($stmt->rowCount() > 0) { - return false; - } - return true; - } - /** * Check if the docserver actual size is less than the size limit * @@ -368,19 +334,11 @@ class docservers_controler } } - /** - * Get docservers to insert a new doc. - * Can return null if no corresponding object. - * @param $coll_id string Collection identifier - * @return docservers - */ - public function getDocserverToInsert($collId) + public function getDocserverToInsert($collId, $typeId = 'DOC') { $db = new Database(); - $query = "select priority_number, docserver_id from " - . _DOCSERVERS_TABLE_NAME . " where is_readonly = 'N' and " - . "coll_id = ? order by priority_number"; - $stmt = $db->query($query, array($collId)); + $query = "select docserver_id from docservers where is_readonly = 'N' and coll_id = ? and docserver_type_id = ?"; + $stmt = $db->query($query, [$collId, $typeId]); $queryResult = $stmt->fetchObject(); if ($queryResult->docserver_id <> '') { $docserver = $this->get($queryResult->docserver_id); diff --git a/core/class/ws.php b/core/class/ws.php index 22a6854a173c16614df5ae64d0e035f007144525..8a08640800ca53cb4ebf48061d31d6323eeedff9 100755 --- a/core/class/ws.php +++ b/core/class/ws.php @@ -18,7 +18,6 @@ $SOAP_typedef['docservers'] = array( 'docserver_id'=>'string', 'size_limit_number'=>'string', 'path_template'=>'string', 'coll_id'=>'string', - 'priority_number'=>'string', ); $SOAP_typedef['returnViewResource'] = array('status'=>'string', 'mime_type'=>'string', diff --git a/modules/life_cycle/batch/process_stack.php b/modules/life_cycle/batch/process_stack.php index dc88a8ec0076f2d094fa791b1e0031921820c413..acb77a29de9082d16e2b4662f5ea54949fd55b45 100755 --- a/modules/life_cycle/batch/process_stack.php +++ b/modules/life_cycle/batch/process_stack.php @@ -208,8 +208,7 @@ while ($GLOBALS['state'] <> "END") { ); } // no need for a purge - $query = "select * from " . _DOCSERVERS_TABLE_NAME - . " where docserver_type_id = ? and coll_id = ? order by priority_number"; + $query = "select * from docservers where docserver_type_id = ? and coll_id = ?"; $stmt2 = Bt_doQuery( $GLOBALS['db2'], $query, diff --git a/modules/thumbnails/class/class_modules_tools.php b/modules/thumbnails/class/class_modules_tools.php index 7c4f69c231a4a6d0a5995225e295ff61c94f02d9..2a57fcfbb39bcd011febe3f507570bf569eb0d00 100755 --- a/modules/thumbnails/class/class_modules_tools.php +++ b/modules/thumbnails/class/class_modules_tools.php @@ -49,8 +49,8 @@ class thumbnails } public function generateTnl($res_id, $coll_id, $table_name = false){ $db = new Database(); - $query = "select priority_number, docserver_id from docservers where is_readonly = 'N' and " - . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number"; + $query = "select docserver_id from docservers where is_readonly = 'N' and " + . " coll_id = ? and docserver_type_id = 'TNL'"; $stmt1 = $db->query($query, array($coll_id)); if($res = $stmt1->fetchObject()){ @@ -156,9 +156,7 @@ class thumbnails if ($table_name) $table = $table_name; $db = new Database(); - $query = "select priority_number, docserver_id from " - . _DOCSERVERS_TABLE_NAME . " where is_readonly = 'N' and " - . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number"; + $query = "select docserver_id from docservers where is_readonly = 'N' and coll_id = ? and docserver_type_id = 'TNL'"; $stmt = $db->query($query, array($coll_id)); $docserverId = $stmt->fetchObject()->docserver_id; diff --git a/modules/thumbnails/create_tnl.php b/modules/thumbnails/create_tnl.php index afaf0d97610687087b231b9b0d1ec64aa81c6aab..e6f3ab8cecf720286493215202c4f8423a6cd403 100755 --- a/modules/thumbnails/create_tnl.php +++ b/modules/thumbnails/create_tnl.php @@ -156,8 +156,8 @@ $GLOBALS['db'] = new Database($conf); Bt_getWorkBatch(); -$query = "select priority_number, docserver_id from docservers where is_readonly = 'N' and " - . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number"; +$query = "select docserver_id from docservers where is_readonly = 'N' and " + . " coll_id = ? and docserver_type_id = 'TNL'"; $stmt1 = $GLOBALS['db']->query($query, array($GLOBALS['collection'])); if ($res = $stmt1->fetchObject()) { diff --git a/modules/visa/class/class_user_signatures_Abstract.php b/modules/visa/class/class_user_signatures_Abstract.php index ef02771b1b1e1384b7dfb3d49a39c636445ee475..2a2ed69b7bd6e8ad894e4f7c8a2cfe8f0cb3c15a 100755 --- a/modules/visa/class/class_user_signatures_Abstract.php +++ b/modules/visa/class/class_user_signatures_Abstract.php @@ -28,8 +28,8 @@ abstract class UserSignaturesAbstract extends Database . DIRECTORY_SEPARATOR . 'docservers_controler.php'); $ds_ctrl = new docservers_controler(); $db = new Database(); - $query_ds = "select priority_number, docserver_id, path_template from docservers where is_readonly = 'N' and " - . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TEMPLATES' order by priority_number"; + $query_ds = "select docserver_id, path_template from docservers where is_readonly = 'N' and " + . "coll_id = ? and docserver_type_id = 'TEMPLATES'"; $stmt = $db->query($query_ds,[$coll_id]); if($res = $stmt->fetchObject()){ diff --git a/modules/visa/sign_file.php b/modules/visa/sign_file.php index 87fa9be01f5f3b8c4944c8382e355cc92de83053..5f4b18d04cb5bca21cd3bbb16640963d7bd2a14b 100755 --- a/modules/visa/sign_file.php +++ b/modules/visa/sign_file.php @@ -48,7 +48,7 @@ if (!empty($_REQUEST['id']) && !empty($_REQUEST['collId'])) { exit; } - $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = \Docserver\models\DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]); $pathToWantedSignature = $docserver['path_template'] . str_replace('#', '/', $signature->signature_path) . $signature->signature_file_name; } else { $pathToWantedSignature = $_SESSION['user']['pathToSignature'][0]; diff --git a/sql/data_fr.sql b/sql/data_fr.sql index 0a282dfbb43a5804acf542879044710a33f53633..a72b305d47d1bae2e36defec199cb29a688e2ab2 100755 --- a/sql/data_fr.sql +++ b/sql/data_fr.sql @@ -1010,36 +1010,36 @@ INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, f VALUES ('ARCHIVETRANSFER', 'Archives numériques', 'Y', 'SHA256'); TRUNCATE TABLE docservers; -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FASTHD_AI', 'DOC', 'Dépôt documentaire issue d''imports de masse', 'N', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_coll', 11); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FASTHD_MAN', 'DOC', 'Dépôt documentaire de numérisation manuelle', 'N', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_coll', 10); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FASTHD_ATTACH', 'FASTHD', 'Dépôt des pièces jointes', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_coll', 2); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Dépôt des pièces jointes versionnées', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_coll', 100); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('CONVERT_MLB', 'CONVERT', 'Dépôt des formats des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 13); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('CONVERT_ATTACH', 'CONVERT', 'Dépôt des formats des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 14); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Dépôt des formats des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 101); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('TNL_MLB', 'TNL', 'Dépôt des maniatures des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 12); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('TNL_ATTACH', 'TNL', 'Dépôt des maniatures des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 15); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('TNL_ATTACH_VERSION', 'TNL', 'Dépôt des maniatures des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 102); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FULLTEXT_MLB', 'FULLTEXT', 'Dépôt de l''extraction plein texte des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 16); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FULLTEXT_ATTACH', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 17); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 103); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('TEMPLATES', 'TEMPLATES', 'Dépôt des modèles de documents', 'N', 50000000000, 71511, '/opt/maarch/docservers/templates/', '2012-04-01 14:49:05.095119', 'templates', 1); -INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number) -VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Dépôt des archives numériques', 'N', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', '2017-01-13 14:47:49.197164', 'archive_transfer_coll', 10); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FASTHD_AI', 'DOC', 'Dépôt documentaire issue d''imports de masse', 'Y', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FASTHD_MAN', 'DOC', 'Dépôt documentaire de numérisation manuelle', 'N', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FASTHD_ATTACH', 'FASTHD', 'Dépôt des pièces jointes', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Dépôt des pièces jointes versionnées', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('CONVERT_MLB', 'CONVERT', 'Dépôt des formats des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('CONVERT_ATTACH', 'CONVERT', 'Dépôt des formats des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Dépôt des formats des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('TNL_MLB', 'TNL', 'Dépôt des maniatures des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('TNL_ATTACH', 'TNL', 'Dépôt des maniatures des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('TNL_ATTACH_VERSION', 'TNL', 'Dépôt des maniatures des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FULLTEXT_MLB', 'FULLTEXT', 'Dépôt de l''extraction plein texte des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FULLTEXT_ATTACH', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('TEMPLATES', 'TEMPLATES', 'Dépôt des modèles de documents', 'N', 50000000000, 71511, '/opt/maarch/docservers/templates/', '2012-04-01 14:49:05.095119', 'templates'); +INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id) +VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Dépôt des archives numériques', 'N', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', '2017-01-13 14:47:49.197164', 'archive_transfer_coll'); ------------ --SUPERADMIN USER ------------ diff --git a/sql/develop.sql b/sql/develop.sql index b7aa4ba9e5cecdea326536d3aaf42aa57e2d80a5..369fd00ad9a853188994a14ec1a81e3209bfcfd4 100644 --- a/sql/develop.sql +++ b/sql/develop.sql @@ -36,6 +36,7 @@ ALTER TABLE docservers DROP COLUMN IF EXISTS chain_after; ALTER TABLE docservers DROP COLUMN IF EXISTS closing_date; ALTER TABLE docservers DROP COLUMN IF EXISTS enabled; ALTER TABLE docservers DROP COLUMN IF EXISTS adr_priority_number; +ALTER TABLE docservers DROP COLUMN IF EXISTS priority_number; ALTER TABLE docservers DROP COLUMN IF EXISTS id; ALTER TABLE docservers ADD COLUMN id serial; ALTER TABLE docservers ADD UNIQUE (id); @@ -49,6 +50,7 @@ ALTER TABLE docserver_types DROP COLUMN IF EXISTS is_logged; ALTER TABLE docserver_types DROP COLUMN IF EXISTS log_template; ALTER TABLE docserver_types DROP COLUMN IF EXISTS is_signed; DROP TABLE IF EXISTS docserver_locations; +UPDATE docservers set is_readonly = 'Y' WHERE docserver_id = 'FASTHD_AI'; /* Refactoring */ DROP TABLE IF EXISTS allowed_ip; diff --git a/sql/structure.sql b/sql/structure.sql index 83c287f0234f36cd17784cfbadef7a2509b95780..d7248fec5e27e4129c81406089ac3dc93edbf47a 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -62,7 +62,6 @@ CREATE TABLE docservers path_template character varying(255) NOT NULL, creation_date timestamp without time zone NOT NULL, coll_id character varying(32) NOT NULL DEFAULT 'coll_1'::character varying, - priority_number integer NOT NULL DEFAULT 10, CONSTRAINT docservers_pkey PRIMARY KEY (docserver_id), CONSTRAINT docservers_id_key UNIQUE (id) ) diff --git a/src/app/docserver/controllers/DocserverController.php b/src/app/docserver/controllers/DocserverController.php index 8f638d24fb10ee5e13a3d150bc27cdf437f84ae4..f8e49c42cf80ec4276b7573027ca7a0035f2ad2a 100644 --- a/src/app/docserver/controllers/DocserverController.php +++ b/src/app/docserver/controllers/DocserverController.php @@ -33,7 +33,7 @@ class DocserverController } $sortedDocservers = []; - $docservers = DocserverModel::get(['orderBy' => ['priority_number']]); + $docservers = DocserverModel::get(); foreach ($docservers as $docserver) { $sortedDocservers[$docserver['docserver_type_id']][] = DocserverController::getFormattedDocserver(['docserver' => $docserver]); } @@ -87,19 +87,13 @@ class DocserverController return $response->withStatus(400)->withJson(['errors' => _PATH_OF_DOCSERVER_UNAPPROACHABLE]); } - $data['is_readonly'] = empty($data['is_readonly']) ? 'N' : 'Y'; - $docservers = DocserverModel::get([ - 'select' => ['priority_number'], - 'where' => ['docserver_type_id = ?'], - 'data' => [$data['docserver_type_id']], - 'orderBy' => ['priority_number DESC'], - 'limit' => 1 + $existingCurrentDocserver = DocserverModel::getCurrentDocserver([ + 'select' => ['1'], + 'typeId' => $data['docserver_type_id'], + 'collId' => $data['coll_id'] ]); - if (empty($docservers[0]['priority_number'])) { - $data['priority_number'] = 1; - } else { - $data['priority_number'] = $docservers[0]['priority_number'] + 1; - } + $data['is_readonly'] = empty($existingCurrentDocserver) ? 'N' : 'Y'; + $id = DocserverModel::create($data); HistoryController::add([ @@ -125,25 +119,27 @@ class DocserverController $check = Validator::stringType()->notEmpty()->validate($data['device_label']); $check = $check && Validator::intVal()->notEmpty()->validate($data['size_limit_number']); $check = $check && Validator::stringType()->notEmpty()->validate($data['path_template']); - $check = $check && Validator::intVal()->notEmpty()->validate($data['priority_number']); + $check = $check && Validator::boolType()->validate($data['is_readonly']); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } - $docserver = DocserverModel::getById(['id' => $aArgs['id'], 'select' => ['docserver_type_id']]); + $docserver = DocserverModel::getById(['id' => $aArgs['id'], 'select' => ['docserver_type_id', 'coll_id']]); if (empty($docserver)) { return $response->withStatus(400)->withJson(['errors' => 'Docserver not found']); } if (!DocserverController::isPathAvailable(['path' => $data['path_template']])) { return $response->withStatus(400)->withJson(['errors' => _PATH_OF_DOCSERVER_UNAPPROACHABLE]); } - $existingDocserverPriority = DocserverModel::get([ - 'select' => ['1'], - 'where' => ['priority_number = ?', 'docserver_type_id = ?', 'id != ?'], - 'data' => [$data['priority_number'], $docserver['docserver_type_id'], $aArgs['id']] - ]); - if (!empty($existingDocserverPriority)) { - return $response->withStatus(400)->withJson(['errors' => _DOCSERVER_PRIORITY_EXISTS]); + if (!$data['is_readonly']) { + $existingCurrentDocserver = DocserverModel::getCurrentDocserver([ + 'select' => ['id'], + 'typeId' => $docserver['docserver_type_id'], + 'collId' => $docserver['coll_id'] + ]); + if (!empty($existingCurrentDocserver) && $existingCurrentDocserver['id'] != $aArgs['id']) { + return $response->withStatus(400)->withJson(['errors' => _DOCSERVER_ACTIVATED_EXISTS]); + } } $updateData = [ @@ -151,7 +147,6 @@ class DocserverController 'device_label' => $data['device_label'], 'size_limit_number' => $data['size_limit_number'], 'path_template' => $data['path_template'], - 'priority_number' => $data['priority_number'], 'is_readonly' => empty($data['is_readonly']) ? 'N' : 'Y' ]; @@ -196,9 +191,9 @@ class DocserverController public static function storeResourceOnDocServer(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['collId', 'fileInfos']); - ValidatorModel::arrayType($aArgs, ['fileInfos']); + ValidatorModel::notEmpty($aArgs, ['collId', 'docserverTypeId', 'fileInfos']); ValidatorModel::stringType($aArgs, ['collId', 'docserverTypeId']); + ValidatorModel::arrayType($aArgs, ['fileInfos']); ValidatorModel::notEmpty($aArgs['fileInfos'], ['tmpDir', 'size', 'format', 'tmpFileName']); ValidatorModel::stringType($aArgs['fileInfos'], ['tmpDir', 'format', 'tmpFileName']); ValidatorModel::intVal($aArgs['fileInfos'], ['size']); @@ -211,8 +206,7 @@ class DocserverController . $aArgs['fileInfos']['tmpDir'] . $aArgs['fileInfos']['tmpFileName']]; } - $aArgs['docserverTypeId'] = empty($aArgs['docserverTypeId']) ? 'DOC' : $aArgs['docserverTypeId']; - $docserver = DocserverModel::getDocserverToInsert(['collId' => $aArgs['collId'], 'typeId' => $aArgs['docserverTypeId']]); + $docserver = DocserverModel::getCurrentDocserver(['collId' => $aArgs['collId'], 'typeId' => $aArgs['docserverTypeId']]); if (empty($docserver)) { return ['errors' => '[storeRessourceOnDocserver] No available Docserver']; } diff --git a/src/app/docserver/models/DocserverModelAbstract.php b/src/app/docserver/models/DocserverModelAbstract.php index 5b8accdffe6f117a66a10cabbba37fda5e30b7ae..9671e840be193bb37edd0b76898bf82a1e6a0b11 100644 --- a/src/app/docserver/models/DocserverModelAbstract.php +++ b/src/app/docserver/models/DocserverModelAbstract.php @@ -77,33 +77,11 @@ class DocserverModelAbstract return $aDocserver[0]; } - public static function getFirstByTypeId(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['typeId']); - ValidatorModel::stringType($aArgs, ['typeId']); - ValidatorModel::arrayType($aArgs, ['select']); - - $aDocserver = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['docservers'], - 'where' => ['docserver_type_id = ?'], - 'data' => [$aArgs['typeId']], - 'order_by' => ['priority_number'], - 'limit' => 1 - ]); - - if (empty($aDocserver[0])) { - return []; - } - - return $aDocserver[0]; - } - public static function create(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'priority_number', 'is_readonly']); + ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'is_readonly']); ValidatorModel::stringType($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'is_readonly']); - ValidatorModel::intVal($aArgs, ['size_limit_number', 'priority_number']); + ValidatorModel::intVal($aArgs, ['size_limit_number']); $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'docservers_id_seq']); @@ -117,7 +95,6 @@ class DocserverModelAbstract 'path_template' => $aArgs['path_template'], 'coll_id' => $aArgs['coll_id'], 'size_limit_number' => $aArgs['size_limit_number'], - 'priority_number' => $aArgs['priority_number'], 'is_readonly' => $aArgs['is_readonly'], 'creation_date' => 'CURRENT_TIMESTAMP' ] @@ -158,21 +135,16 @@ class DocserverModelAbstract return true; } - public static function getDocserverToInsert(array $aArgs) + public static function getCurrentDocserver(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['collId']); + ValidatorModel::notEmpty($aArgs, ['collId', 'typeId']); ValidatorModel::stringType($aArgs, ['collId', 'typeId']); - if (empty($aArgs['typeId'])) { - $aArgs['typeId'] = 'DOC'; - } - $aDocserver = DatabaseModel::select([ 'select' => ['*'], 'table' => ['docservers'], 'where' => ['is_readonly = ?', 'coll_id = ?', 'docserver_type_id = ?'], 'data' => ['N', $aArgs['collId'], $aArgs['typeId']], - 'order_by' => ['priority_number'], 'limit' => 1, ]); diff --git a/src/app/resource/controllers/StoreController.php b/src/app/resource/controllers/StoreController.php index c38feb1f6b4ff1224a6a890a27724ce28ce5a58e..99648d1162c277c77172b24f058e3c2a4b3333e6 100644 --- a/src/app/resource/controllers/StoreController.php +++ b/src/app/resource/controllers/StoreController.php @@ -47,12 +47,13 @@ class StoreController fclose($file); $storeResult = DocserverController::storeResourceOnDocServer([ - 'collId' => $aArgs['collId'], - 'fileInfos' => [ - 'tmpDir' => CoreConfigModel::getTmpPath(), - 'size' => filesize($tmpFilepath), - 'format' => $aArgs['fileFormat'], - 'tmpFileName' => $fileName, + 'collId' => $aArgs['collId'], + 'docserverTypeId' => 'DOC', + 'fileInfos' => [ + 'tmpDir' => CoreConfigModel::getTmpPath(), + 'size' => filesize($tmpFilepath), + 'format' => $aArgs['fileFormat'], + 'tmpFileName' => $fileName, ] ]); if (!empty($storeResult['errors'])) { diff --git a/src/app/signatureBook/controllers/SignatureBookController.php b/src/app/signatureBook/controllers/SignatureBookController.php index 699080212a31bc9382b1560810ebe472ab2d4f44..3fafd3b2f201bb78458db90e3386cbf949004ad7 100644 --- a/src/app/signatureBook/controllers/SignatureBookController.php +++ b/src/app/signatureBook/controllers/SignatureBookController.php @@ -43,7 +43,7 @@ class SignatureBookController if (!ResController::hasRightByResId(['resId' => $resId, 'userId' => $GLOBALS['userId']])) { return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); } - $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]); if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return $response->withStatus(500)->withJson(['errors' => _UNREACHABLE_DOCSERVER]); } diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php index 5c7cd921f4fd574da1d5a5daafa1c94c348d2ff7..aecfc5488c533615abcd4a0051c76e05c27a1795 100644 --- a/src/app/template/controllers/TemplateController.php +++ b/src/app/template/controllers/TemplateController.php @@ -32,7 +32,7 @@ class TemplateController } if ($template['template_type'] == 'OFFICE') { - $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]); $pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]); $docinfo = DocserverController::getNextFileNameInDocServer(['pathOnDocserver' => $pathOnDocserver['pathToDocServer']]); diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 135f52907a425e2a60f63a5264d8ef8ad4503275..0de726e61d7a9d1a2df07f56bdd11ec86605393b 100644 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -470,7 +470,7 @@ class UserController return $response->withStatus(400)->withJson(['errors' => 'Signature does not exist']); } - $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]); if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return []; } diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index 7d246d86ac717941b8376bd76ab11d506403f635..c649c18c597ed013d8dfe0234865eeef7b536d06 100644 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -41,7 +41,7 @@ define('_DEST_USER', 'Recipient'); define('_DOCSERVER_ADDED', 'Docserver added'); define('_DOCSERVER_UPDATED', 'Docserver updated'); define('_DOCSERVER_DELETED', 'Docserver deleted'); -define('_DOCSERVER_PRIORITY_EXISTS', 'A docserver with this priority already exists'); +define('_DOCSERVER_ACTIVATED_EXISTS', 'A docserver with this type and this collection is already activated'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Doctype first level added'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Doctype first level deleted'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Doctype first level edited'); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index 59ee2b3eee71898585ecea807f780be1bc9acf7d..c0fc1896be5e26db95f1954aa18de95a9b80c659 100644 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -41,7 +41,7 @@ define('_DEST_USER', 'Destinataire'); define('_DOCSERVER_ADDED', 'Zone de stockage ajoutée'); define('_DOCSERVER_UPDATED', 'Zone de stockage modifiée'); define('_DOCSERVER_DELETED', 'Zone de stockage supprimée'); -define('_DOCSERVER_PRIORITY_EXISTS', 'Une zone de stockage avec cette priorité existe déjà '); +define('_DOCSERVER_ACTIVATED_EXISTS', 'Une zone de stockage avec le même type et la même collection est déjà activée'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Chemise ajoutée'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Chemise supprimée'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Chemise modifiée');