From afd82b9e005f63468fd1d53be5c6b46e7c0820ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 11 Jan 2021 16:20:48 +0100
Subject: [PATCH] :sparkles: feat(archive) Take archives into account when
 applying template mask

This will avoid a unique template mask like %n|% returning a value
already used by an archived object.

issue #6119
---
 include/class_templateHandling.inc | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 1ccf38406..6da06c372 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -246,6 +246,13 @@ class templateHandling
       $ldap->cd($config->current['BASE']);
       /* Return the first found unique value */
       foreach ($generator as $value) {
+        if (class_available('archivedObject')) {
+          $filter = archivedObject::buildUniqueSearchFilter($unique, $value);
+          $ldap->search($filter, ['dn']);
+          if ($ldap->count() > 0) {
+            continue;
+          }
+        }
         $filter = '('.ldap_escape_f($unique).'='.ldap_escape_f($value).')';
         $ldap->search($filter, ['dn']);
         if ($ldap->count() == 0) {
-- 
GitLab