Commit dcef8a19 authored by Alexandre Morin's avatar Alexandre Morin

Merge branch 'feat/10629_modifyArchiveRetentionRuleFromCode' into 'master'

Feat/10629 modify archive retention rule from code

See merge request !275
parents 8fc63312 8e078a89
# CHANGELOG
## Version 2.4.2
## Version 2.4.3
### Métadonnées
- `Changed` Le format interne _Name_ utilisé pour les codes de règles de conservation
et de communicabilité accepte désormais les caractères numériques en première position, ainsi que les tirets
- `Changed` Les appels au service de modification de la règle de conservation des archives
peuvent désormais n'envoyer que le code de la règle, le système utilisant le référentiel pour récupérer les durées et le sort final. Idem pour la règle de communicabilité et la durée qui y est associée.
### Exploitation
- `Changed` Nouveau paramètre pour les notifications, `mailSMTPAutoTLS` pour activer/désactiver le mode TLS
automatique, notamment pour les connexions sans authentification
## Version 2.4.2
### Script d'import
......@@ -64,7 +78,6 @@
- `Fixed` Ajout d'un contact et/ou d'une adresse et/ou d'un moyen de communication aux organisations et services
## Version 2.2
### Exploitation
......@@ -103,12 +116,12 @@
### Exploitation
- `Added` Restriction des comptes de service disponibles pour la planification à ceux qui possèdent le privilège pour le service à exécuter
- `Changed` Liste des services disponibles pour la planification déplacée dans la configuration. Table `batchProcessing.task` supprimée
- `Fixed` Correction d'erreurs dans le calcul de la prochaine vacation après une en erreur
- `Fixed` Correction d'erreurs dans le calcul de la prochaine vacation après une en erreur
### Échéancier d'élimination
- `Added` Sort final non défini au versement ou à la modification désormais interprété comme *A définir ultérieurement*
- `Changed` Modification du statut final des unités d'archive en fonction de l'opération qui mène à leur ressortie : *Détruite*, *Restituée* et *Transférée*
- `Fixed` Interdiction de toute demande sur les unités d'archive gelées : élimination, restitution, modification, transfert
- `Fixed` Interdiction de toute demande sur les unités d'archive gelées : élimination, restitution, modification, transfert
### Élimination
- `Changed` La demande n'est valide que si l'unité d'archive et toutes ses unités contenues sont éliminables (à terme de la DUA ou sans règle de conservation, sort final *Détuire* ou sans sort final
......
......@@ -15,8 +15,8 @@ class Name
*/
public function __construct($name)
{
if (!preg_match('#^[A-Za-z_][A-Za-z0-9_]*$#', $name)) {
throw new \core\Exception("Invalid name '$name': Names must start with alphabetic characters or underscore and contain only alphanumeric or underscores");
if (!preg_match('#^[A-Za-z0-9_\-]*$#', $name)) {
throw new \core\Exception("The value can only contain alphanumeric characters, underscores and dashes");
}
$this->name = $name;
......
......@@ -106,7 +106,7 @@ trait laabsModelTrait
'integer' => '[0-9]+',
'string' => '[A-Za-z0-9_\-]*',
'name' => '[A-Za-z_][A-Za-z0-9_]*',
'name' => '[A-Za-z0-9_\-]*',
'qname' => '[A-Za-z_][A-Za-z0-9_]*/[A-Za-z_][A-Za-z0-9_]*',
'bool' => '(true|false|0|1)',
......
......@@ -36,8 +36,9 @@ class Notification implements \dependency\notification\NotificationInterface
protected $mailSMTPAuth;
protected $mailSMTPSecure;
protected $mailAdminReceiver;
protected $mailSMTPAutoTLS;
public function __construct($mailHost, $mailUsername, $mailPassword, $mailPort, $mailSender, $mailAdminReceiver, $mailSMTPAuth, $mailSMTPSecure)
public function __construct($mailHost, $mailUsername, $mailPassword, $mailPort, $mailSender, $mailAdminReceiver, $mailSMTPAuth, $mailSMTPSecure, $mailSMTPAutoTLS=true)
{
$this->mailHost = $mailHost;
$this->mailUsername = $mailUsername;
......@@ -47,6 +48,7 @@ class Notification implements \dependency\notification\NotificationInterface
$this->mailSMTPAuth = $mailSMTPAuth;
$this->mailSMTPSecure = $mailSMTPSecure;
$this->mailAdminReceiver = $mailAdminReceiver;
$this->mailSMTPAutoTLS = $mailSMTPAutoTLS;
}
/**
......@@ -66,6 +68,7 @@ class Notification implements \dependency\notification\NotificationInterface
$mail->setFrom($this->mailSender);
$mail->SMTPAuth = $this->mailSMTPAuth;
$mail->SMTPSecure = $this->mailSMTPSecure;
$mail->SMTPAutoTLS = $this->mailSMTPAutoTLS;
if (empty($receivers)) {
$mail->addAddress($this->mailAdminReceiver);
......
......@@ -73,6 +73,18 @@ trait archiveModificationTrait
*/
public function modifyRetentionRule($retentionRule, $archiveIds)
{
// #10629 Get finalDisposition and duration from ref when empty and code is received
if ((empty($retentionRule->finalDisposition) || empty($retentionRule->retentionDuration)) && !empty($retentionRule->retentionRuleCode)) {
$refRetentionRule = $this->retentionRuleController->read($retentionRule->retentionRuleCode);
if (empty($retentionRule->finalDisposition)) {
$retentionRule->finalDisposition = $refRetentionRule->finalDisposition;
}
if (empty($retentionRule->retentionDuration)) {
$retentionRule->retentionDuration = $refRetentionRule->duration;
}
}
$retentionRuleReceived = $retentionRule;
......@@ -169,6 +181,13 @@ trait archiveModificationTrait
$archives = array();
$operationResult = null;
// #10629 Get duration from ref when empty and code is received
if (empty($accessRule->accessRuleDuration) && !empty($accessRule->accessRuleCode)) {
$refAccessRule = $this->accessRuleController->edit($accessRule->accessRuleCode);
$accessRule->accessRuleDuration = $refAccessRule->duration;
}
$accessRuleReceived = $accessRule;
foreach ($archiveIds as $archiveId) {
......@@ -184,7 +203,7 @@ trait archiveModificationTrait
$accessRule->archiveId = $archiveId;
if (!$accessRule->changeStartDate) {
if ($accessRule->changeStartDate === false) {
$accessRule->accessRuleStartDate = $archive->accessRuleStartDate;
}
......
......@@ -30,7 +30,7 @@ class accessRule
/**
* The code of the access
*
* @var string
* @var name
*/
public $code;
......
......@@ -502,9 +502,12 @@ msgstr "Les champs avec une étoile sont obligatoires"
msgid "Numbers are required in the field duration."
msgstr "Le champ 'Durée de la règle de communicabilité' doit être un nombre"
msgid "You don't avec any role that enables you tu use search."
msgid "You don't have any role that enables you to use search."
msgstr "Vous n'avez aucun rôle permettant l'utilisation de la recherche d'archive ou de document."
msgid "The value can only contain alphanumeric characters, underscores and dashes"
msgstr "La valeur ne peut contenir que des caractères alphanumériques, des tirets bas et des tirets hauts"
#
# Exceptions
#
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment