From 247b9f978866365615020c1456aa8ce654e76254 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 27 Jun 2019 13:23:50 +0000
Subject: [PATCH 001/117] Merge branch
 '6006-expiration-date-in-dashboard-is-02-01-1970' into '1.3-fixes'

Resolve "expiration date in dashboard is 02.01.1970"

See merge request fusiondirectory/fd!619

(cherry picked from commit b839a4363b23622b9fc2ef366139683697a9e771)

93a61d70 :ambulance: fix(dashboard) Fix users expiration date display in user dashboard
---
 plugins/addons/dashboard/class_dashBoardUsers.inc | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/plugins/addons/dashboard/class_dashBoardUsers.inc b/plugins/addons/dashboard/class_dashBoardUsers.inc
index 93a5f11c7..e3d72351f 100644
--- a/plugins/addons/dashboard/class_dashBoardUsers.inc
+++ b/plugins/addons/dashboard/class_dashBoardUsers.inc
@@ -170,11 +170,11 @@ class dashboardUsers extends simplePlugin
     try {
       $attributes = array(
         'dn'                    => 'raw',
-        'uid'                   => 'raw',
-        'cn'                    => 'raw',
-        'telephoneNumber'       => 'raw',
-        'manager'               => 'raw',
-        'shadowExpire'          => 1,
+        'uid'                   => '*',
+        'cn'                    => '*',
+        'telephoneNumber'       => '*',
+        'manager'               => '*',
+        'shadowExpire'          => '*',
       );
       if (class_available('mailAccount')) {
         $attributes['mail'] = 'raw';
@@ -200,9 +200,9 @@ class dashboardUsers extends simplePlugin
     $next_expired_accounts  = array();
     foreach ($users as $user) {
       // Test if account is expired now
-      if ($user['shadowExpire'] <= $today) {
+      if ($user['shadowExpire'][0] <= $today) {
         $expired_accounts[] = static::get_user_infos($user);
-      } elseif ($user['shadowExpire'] <= $next_expired_date) {
+      } elseif ($user['shadowExpire'][0] <= $next_expired_date) {
         $next_expired_accounts[] = static::get_user_infos($user);
       }
     }
-- 
GitLab


From 0bbb5b126a5155c0feb271b8d214b795de07852e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 18 Jul 2019 08:43:35 +0000
Subject: [PATCH 002/117] Merge branch
 '6017-intattribute-badly-handle-empty-value-when-minimum-is-set' into
 '1.4-dev'

Resolve "IntAttribute badly handle empty value when minimum is set"

See merge request fusiondirectory/fd!635

(cherry picked from commit 7192f0c25319d74bf43110e7ada845a62aec769b)

98194a9e :ambulance: fix(IntAttribute) Accept empty value when field is not mandatory
---
 include/simpleplugin/attributes/class_IntAttribute.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/simpleplugin/attributes/class_IntAttribute.inc b/include/simpleplugin/attributes/class_IntAttribute.inc
index 2cf40d37f..fe851ad2a 100644
--- a/include/simpleplugin/attributes/class_IntAttribute.inc
+++ b/include/simpleplugin/attributes/class_IntAttribute.inc
@@ -78,8 +78,8 @@ class IntAttribute extends Attribute
     $error = parent::check();
     if (!empty($error)) {
       return $error;
-    } else {
-      if (!is_numeric($this->value) && (!empty($this->value) || $this->isRequired())) {
+    } elseif ($this->value !== '') {
+      if (!is_numeric($this->value)) {
         return msgPool::invalid($this->getLabel(), $this->value, "/./", $this->example);
       }
       if ((($this->min !== FALSE) && ($this->value < $this->min))
-- 
GitLab


From 66b39586cc6bff9c5a8faca0f4b86c45cbd65533 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Mon, 22 Jul 2019 10:55:48 +0200
Subject: [PATCH 003/117] :ambulance: fix(management) Attempt at fixing
 template apply workflow

When applying a template triggers error we should be able to fix them
 and continue.
For this we need to switch priority between dialogObject and tabObject
 rendering so that tabObject can be edited while dialogObject is still
 opened in "background".

issue #5974
---
 .../simpleplugin/class_simpleManagement.inc    | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index a0bc81c69..d2766810a 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -570,7 +570,15 @@ class simpleManagement
       return $this->getHeader().$str;
     }
 
-    // Open single dialog objects
+    /* Display tab object */
+    if ($this->tabObject instanceOf simpleTabs) {
+      $this->tabObject->save_object();
+      $display = $this->tabObject->execute();
+      $display .= $this->_getTabFooter();
+      return $this->getHeader().$display;
+    }
+
+    /* Open single dialog objects */
     if (is_object($this->dialogObject)) {
       if (method_exists($this->dialogObject, 'save_object')) {
         $this->dialogObject->save_object();
@@ -582,14 +590,6 @@ class simpleManagement
       }
     }
 
-    // Display tab object.
-    if ($this->tabObject instanceOf simpleTabs) {
-      $this->tabObject->save_object();
-      $display = $this->tabObject->execute();
-      $display .= $this->_getTabFooter();
-      return $this->getHeader().$display;
-    }
-
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
       $bases = array();
-- 
GitLab


From dbe9198063ba0b8969cd2483bb6124fcc552b860 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Tue, 23 Jul 2019 16:02:52 +0200
Subject: [PATCH 004/117] :ambulance: fix(management) Fixing template apply
 workflow

tabObject is opened by the dialogObject save_object method, so the
 workflow is more complexed that I first thought.

issue #5974
---
 .../simpleplugin/class_simpleManagement.inc   | 25 ++++++++++---------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index d2766810a..678e57962 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -570,24 +570,25 @@ class simpleManagement
       return $this->getHeader().$str;
     }
 
-    /* Display tab object */
+    /* Save tab or dialog object */
     if ($this->tabObject instanceOf simpleTabs) {
       $this->tabObject->save_object();
+    } elseif (is_object($this->dialogObject) && method_exists($this->dialogObject, 'save_object')) {
+      $this->dialogObject->save_object();
+    }
+
+    /* Display tab object */
+    if ($this->tabObject instanceOf simpleTabs) {
       $display = $this->tabObject->execute();
-      $display .= $this->_getTabFooter();
+      $display .= $this->getTabFooter();
       return $this->getHeader().$display;
     }
 
-    /* Open single dialog objects */
-    if (is_object($this->dialogObject)) {
-      if (method_exists($this->dialogObject, 'save_object')) {
-        $this->dialogObject->save_object();
-      }
-      if (method_exists($this->dialogObject, 'execute')) {
-        $display = $this->dialogObject->execute();
-        $display .= $this->_getTabFooter();
-        return $this->getHeader().$display;
-      }
+    /* Display dialog object */
+    if (is_object($this->dialogObject) && method_exists($this->dialogObject, 'execute')) {
+      $display = $this->dialogObject->execute();
+      $display .= $this->getTabFooter();
+      return $this->getHeader().$display;
     }
 
     // Set current restore base for snapshot handling.
-- 
GitLab


From 520045525febbbb35180e8d61180ab18710bc332 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 25 Jul 2019 14:11:40 +0200
Subject: [PATCH 005/117] :ambulance: fix(gitlab-ci) Use our own docker image
 for perl code style checks

issue #6020
---
 .gitlab-ci.yml | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2cc496967..7bf406be3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,13 +15,10 @@ stages:
 
 # Perl lint
 create_perl_lint_rapport:
+  image: perlcodestyle:stretch
   stage: lint
   only:
     - branches
-  before_script:
-    - apt-get update -qq
-    - apt-get install -y -qq libarchive-extract-perl libcrypt-cbc-perl libdigest-sha-perl libfile-copy-recursive-perl
-    - apt-get install -y -qq libnet-ldap-perl libpath-class-perl libterm-readkey-perl libxml-twig-perl
   script:
     - perl -cW contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-insert-schema
 
@@ -45,12 +42,10 @@ create_php_lint_rapport_stretch:
 
 # generate man pages to test validity
 create_manpages_lint_report:
+  image: perlcodestyle:stretch
   stage: lint
   only:
     - branches
-  before_script:
-  - apt-get update -qq
-  - apt-get install -y -qq perl man-db
   script:
     - pod2man -c "FusionDirectory Documentation" -r "FusionDirectory 1.3" contrib/bin/fusiondirectory-insert-schema contrib/man/fusiondirectory-insert-schema.1
     - pod2man -c "FusionDirectory Documentation" -r "FusionDirectory 1.3" contrib/bin/fusiondirectory-setup contrib/man/fusiondirectory-setup.1
@@ -63,12 +58,10 @@ create_manpages_lint_report:
 
 # Generate perlcritic rapport
 create_perlcritic_rapport:
+  image: perlcodestyle:stretch
   stage: codestyle
   only:
     - branches
-  before_script:
-  - apt-get update -qq
-  - apt-get install -y -qq libperl-critic-perl
   script:
     - cp contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-setup.pl
     - cp contrib/bin/fusiondirectory-insert-schema contrib/bin/fusiondirectory-insert-schema.pl
@@ -172,7 +165,7 @@ build-release:
   script:
     - mkdir "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
     - cp -a ./* "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
-    - mv "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')" ./       
+    - mv "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')" ./
   artifacts:
     name: fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
     paths:
-- 
GitLab


From d74feff9749acb96047bdd9f9d4aaae4d275d1c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 25 Jul 2019 14:14:17 +0200
Subject: [PATCH 006/117] :ambulance: fix(gitlab-ci) Clone with depth 1 to
 speed up git clones

issue #6020
---
 .gitlab-ci.yml | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7bf406be3..9a093ccaf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -72,11 +72,8 @@ create_php_code_sniffer_rapport_13:
   stage: codestyle
   only:
     - branches
-  before_script:
-    - apt-get update -qq
-    - apt-get install -y -qq  git php-cli php-codesniffer
   script:
-    - git clone https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git -b 1.3 ../dev-tools
+    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git -b 1.3 ../dev-tools
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
 
@@ -125,7 +122,7 @@ fusiondirectory-update-locale:
     - apt-get update -qq
     - apt-get install -y -qq gettext git
   script:
-    - git clone https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
+    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
 
 # Update transifex
@@ -138,7 +135,7 @@ update-transifex:
     - apt-get update -qq
     - apt-get install -y -qq gettext git transifex-client
   script:
-    - git clone https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
+    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - echo $'[https://www.transifex.com]\nhostname = https://www.transifex.com\nusername = '"$TRANSIFEX_USER"$'\npassword = '"$TRANSIFEX_PASSWORD"$'\ntoken = '"$TRANSIFEX_API_TOKEN"$'\n' > ~/.transifexrc
     - tx pull -a -f
     - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
-- 
GitLab


From 01e8e128a520160249a3dc937a63e4b2a714c06a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 25 Jul 2019 14:15:01 +0200
Subject: [PATCH 007/117] :ambulance: fix(gitlab-ci) Use our own docker image
 for php codesniffer

issue #6020
---
 .gitlab-ci.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9a093ccaf..3426e93aa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -69,6 +69,7 @@ create_perlcritic_rapport:
 
 # PHP codesniffer
 create_php_code_sniffer_rapport_13:
+  image: phpcodesniffer-cli:stretch
   stage: codestyle
   only:
     - branches
-- 
GitLab


From fab66e92d804b3f9dbdfff6d7db26abfff957b8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 25 Jul 2019 15:32:46 +0200
Subject: [PATCH 009/117] :ambulance: fix(gitlab-ci) Use our own docker for
 transifex as well

issue #6020
---
 .gitlab-ci.yml | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3426e93aa..97ebe2ff6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,26 +115,20 @@ sonar_preview:
 
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
-  image: php:cli-stretch
+  image: transifex-cli:stretch
   stage: transifex
   only:
     - branches
-  before_script:
-    - apt-get update -qq
-    - apt-get install -y -qq gettext git
   script:
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
 
 # Update transifex
 update-transifex:
-  image: php:cli-stretch
+  image: transifex-cli:stretch
   stage: transifex
   only:
     - /^1.*$/
-  before_script:
-    - apt-get update -qq
-    - apt-get install -y -qq gettext git transifex-client
   script:
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - echo $'[https://www.transifex.com]\nhostname = https://www.transifex.com\nusername = '"$TRANSIFEX_USER"$'\npassword = '"$TRANSIFEX_PASSWORD"$'\ntoken = '"$TRANSIFEX_API_TOKEN"$'\n' > ~/.transifexrc
-- 
GitLab


From e1522353dd7c1199bedc3f981994911e1ed7449b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Mon, 29 Jul 2019 09:32:22 +0000
Subject: [PATCH 010/117] Merge branch 'stricter-ldap-error-check' into
 '1.4-dev'

:ambulance: fix(ldap) Use a stricter error check in ldap::success()

See merge request fusiondirectory/fd!648

(cherry picked from commit 29ca9876df28e45bb8f4f8960f3760c336936dfc)

23936352 :ambulance: fix(ldap) Use a stricter error check in ldap::success()
---
 include/class_ldap.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index eb0ebb989..c6cd7497d 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -881,7 +881,7 @@ class LDAP
    */
   function success()
   {
-    return preg_match('/Success/i', $this->error);
+    return (trim($this->error) === 'Success');
   }
 
   /*!
-- 
GitLab


From c0648c4897f4f591d5394daf9158397d668aa291 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 10:41:18 +0200
Subject: [PATCH 011/117] :tractor: fix(session) Remove channel system

It was history code from GOsa

issue #6024
---
 html/main.php                     |  17 -----
 ihtml/themes/breezy/framework.tpl |   3 -
 include/class_session.inc         | 101 +++++-------------------------
 3 files changed, 14 insertions(+), 107 deletions(-)

diff --git a/html/main.php b/html/main.php
index 9433a3dec..9c40400d9 100644
--- a/html/main.php
+++ b/html/main.php
@@ -331,23 +331,6 @@ $focus .= '</script>';
 $smarty->assign('focus',      $focus);
 $smarty->assign('CSRFtoken',  CSRFProtection::getToken());
 
-/* Set channel if needed */
-//TODO: * move all global session calls to global_
-//      * create a new channel where needed (mostly management dialogues)
-//      * remove regulary created channels when not needed anymore
-//      * take a look at external php calls (i.e. get fax, ldif, etc.)
-//      * handle aborted sessions (by pressing anachors i.e. Main, Menu, etc.)
-//      * check lock removals, is "dn" global or not in this case?
-//      * last page request -> global or not?
-//      * check that filters are still global
-//      * maxC global?
-if (isset($_POST['_channel_'])) {
-  echo "DEBUG - current channel: ".$_POST['_channel_'];
-  $smarty->assign("channel", $_POST['_channel_']);
-} else {
-  $smarty->assign("channel", "");
-}
-
 if (class_available('Game')) {
   $smarty->assign('game_screen', Game::run());
 } else {
diff --git a/ihtml/themes/breezy/framework.tpl b/ihtml/themes/breezy/framework.tpl
index 67a78dd23..0904b2072 100644
--- a/ihtml/themes/breezy/framework.tpl
+++ b/ihtml/themes/breezy/framework.tpl
@@ -44,9 +44,6 @@
             <div class="plugin-window">
               {$contents}
             </div>
-            {if $channel != ""}
-                <input type="hidden" name="_channel_" value="{$channel}"/>
-            {/if}
           </td>
         </tr>
       </tbody>
diff --git a/include/class_session.inc b/include/class_session.inc
index 7367f1e81..2e3f66238 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -2,7 +2,7 @@
 /*
   This code is part of FusionDirectory (http://www.fusiondirectory.org/)
   Copyright (C) 2003-2010  Cajus Pollmeier
-  Copyright (C) 2011-2018  FusionDirectory
+  Copyright (C) 2011-2019  FusionDirectory
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -35,34 +35,15 @@ class session {
    */
   public static function is_set($name)
   {
-    $channel = "";
-    if (isset($_POST['_channel_'])) {
-      $channel = $_POST['_channel_'];
-    }
-
-    /* Global fallback if not set */
-    if ($channel == "") {
-      return isset($_SESSION[$name]);
-    }
-
-    /* Sanity check */
-    if (!session::channel_exists($channel)) {
-      msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG);
-      exit;
-    }
-
-    $channel = "gch_".$channel;
-    return isset($_SESSION[$channel][$name]);
+    return isset($_SESSION[$name]);
   }
 
   /*!
-   * \brief Check if a session is defined
-   *
-   * \param string $name Name of the session
+   * \brief Deprecated
    */
   public static function global_is_set($name)
   {
-    return isset($_SESSION[$name]);
+    return static::is_set($name);
   }
 
   /*!
@@ -74,34 +55,15 @@ class session {
    */
   public static function set($name, $value)
   {
-    $channel = "";
-    if (isset($_POST['_channel_'])) {
-      $channel = $_POST['_channel_'];
-    }
-
-    /* Global fallback if not set */
-    if ($channel == "") {
-      $_SESSION[$name] = $value;
-    } else {
-      /* Sanity check */
-      if (!session::channel_exists($channel)) {
-        msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG);
-        exit;
-      }
-      $_SESSION[$channel][$name] = $value;
-    }
+    $_SESSION[$name] = $value;
   }
 
   /*!
-   * \brief Set a value in a session
-   *
-   * \param string $name Name of the session
-   *
-   * \param $value The new value
+   * \brief Deprecated
    */
   public static function global_set($name, $value)
   {
-    $_SESSION[$name] = $value;
+    static::set($name, $value);
   }
 
   /*!
@@ -111,26 +73,7 @@ class session {
    */
   public static function &get($name)
   {
-    $channel = "";
-    if (isset($_POST['_channel_'])) {
-      $channel = $_POST['_channel_'];
-    }
-
-    /* Global fallback if not set */
-    if ($channel == "") {
-      $ret = &$_SESSION[$name];
-      return $ret;
-    }
-
-    /* Sanity check */
-    if (!session::channel_exists($channel)) {
-      msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG);
-      exit;
-    }
-
-    $channel  = "gch_".$channel;
-    $ret      = &$_SESSION[$channel][$name];
-    return $ret;
+    return $_SESSION[$name];
   }
 
   /*!
@@ -165,33 +108,17 @@ class session {
    */
   public static function delete($name)
   {
-    $channel = "";
-    if (isset($_POST['_channel_'])) {
-      $channel = $_POST['_channel_'];
-    }
-
-    /* Global fallback if not set */
-    if ($channel == "") {
-      if (isset($_SESSION[$name])) {
-        unset($_SESSION[$name]);
-      }
-    } else {
-      if (isset($_SESSION[$channel][$name])) {
-        unset($_SESSION[$channel][$name]);
-      }
+    if (isset($_SESSION[$name])) {
+      unset($_SESSION[$name]);
     }
   }
 
   /*!
-   * \brief Delete a session
-   *
-   * \param string $name Name of the session to delete
+   * \brief Deprecated
    */
   public static function global_delete($name)
   {
-    if (isset($_SESSION[$name])) {
-      unset($_SESSION[$name]);
-    }
+    static::delete($name);
   }
 
   /*!
@@ -201,7 +128,7 @@ class session {
    */
   public static function un_set($name)
   {
-    return session::delete($name);
+    return static::delete($name);
   }
 
   /*!
@@ -211,7 +138,7 @@ class session {
    */
   public static function global_un_set($name)
   {
-    return session::global_delete($name);
+    return static::global_delete($name);
   }
 
   /*!
-- 
GitLab


From f65771f6eda1f2bc384b1afcc8ba459c3d047e76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 10:55:05 +0200
Subject: [PATCH 012/117] :tractor: fix(session) Change call to
 session::global_set to session::set

Also global_is_set to is_set.

issue #6024
---
 html/autocomplete.php                         |  4 +--
 html/class_passwordRecovery.inc               | 10 +++----
 html/getbin.php                               |  4 +--
 html/geticon.php                              |  4 +--
 html/index.php                                | 14 +++++-----
 html/main.php                                 | 28 +++++++++----------
 html/setup.php                                |  8 +++---
 include/class_Language.inc                    |  8 +++---
 include/class_baseSelector.inc                |  2 +-
 include/class_config.inc                      | 14 +++++-----
 include/class_ldap.inc                        |  6 ++--
 include/class_listing.inc                     |  4 +--
 include/class_userinfo.inc                    |  2 +-
 include/functions.inc                         | 10 +++----
 .../class_BaseSelectorAttribute.inc           |  2 +-
 .../simpleplugin/class_simpleManagement.inc   |  4 +--
 include/simpleplugin/class_simplePlugin.inc   |  2 +-
 include/simpleplugin/class_simpleTabs.inc     |  2 +-
 plugins/admin/acl/class_aclAssignment.inc     |  4 +--
 plugins/config/class_configInLdap.inc         |  2 +-
 setup/class_setupStepMigrate.inc              |  2 +-
 21 files changed, 67 insertions(+), 69 deletions(-)

diff --git a/html/autocomplete.php b/html/autocomplete.php
index e4259658f..f686a2ce8 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -26,10 +26,10 @@
 
 session_cache_limiter("private");
 session::start();
-session::global_set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', array());
 
 /* Logged in? Simple security check */
-if (!session::global_is_set('ui')) {
+if (!session::is_set('ui')) {
   logging::log('security', 'unknown', '', array(), 'Error: autocomplete.php called without session');
   header ('Location: index.php');
   exit;
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index ad1650d57..2f2c5d01f 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -86,7 +86,7 @@ class standAlonePage {
 
       /* Set config to selected one */
       $config->set_current($this->directory);
-      session::global_set('config', $config);
+      session::set('config', $config);
     }
 
     $this->activated = $this->readLdapConfig();
@@ -97,7 +97,7 @@ class standAlonePage {
     if ($this->interactive) {
       Language::init();
 
-      if (session::global_is_set('plist')) {
+      if (session::is_set('plist')) {
         session::global_un_set('plist');
       }
       $ui = new fake_userinfo();
@@ -123,7 +123,7 @@ class standAlonePage {
 
     /* Parse configuration file */
     $config = new config(CONFIG_DIR."/".CONFIG_FILE, $BASE_DIR);
-    session::global_set('DEBUGLEVEL', $config->get_cfg_value("debuglevel"));
+    session::set('DEBUGLEVEL', $config->get_cfg_value("debuglevel"));
     @DEBUG(DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config");
     return $config;
   }
@@ -300,8 +300,8 @@ class passwordRecovery extends standAlonePage {
 
     /* Got a formular answer, validate and try to log in */
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-      if (session::global_is_set('_LAST_PAGE_REQUEST')) {
-        session::global_set('_LAST_PAGE_REQUEST', time());
+      if (session::is_set('_LAST_PAGE_REQUEST')) {
+        session::set('_LAST_PAGE_REQUEST', time());
       }
 
       if (isset($_POST['change'])) {
diff --git a/html/getbin.php b/html/getbin.php
index 57632c5c9..0598ea917 100644
--- a/html/getbin.php
+++ b/html/getbin.php
@@ -27,10 +27,10 @@
 error_reporting (0);
 session_cache_limiter('private');
 session::start();
-session::global_set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', array());
 
 /* Logged in? Simple security check */
-if (!session::global_is_set('ui')) {
+if (!session::is_set('ui')) {
   logging::log('security', 'unknown', '', array(), 'Error: getbin.php called without session');
   header ('Location: index.php');
   exit;
diff --git a/html/geticon.php b/html/geticon.php
index 57d2dba90..7d41faf7c 100644
--- a/html/geticon.php
+++ b/html/geticon.php
@@ -25,10 +25,10 @@
 
 session_cache_limiter("private");
 session::start();
-session::global_set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', array());
 
 $theme = '';
-if (session::global_is_set('config')) {
+if (session::is_set('config')) {
   $config = session::global_get('config');
   $theme  = $config->get_cfg_value('theme');
 } else {
diff --git a/html/index.php b/html/index.php
index 38918fb6b..1439c8dd8 100644
--- a/html/index.php
+++ b/html/index.php
@@ -114,7 +114,7 @@ function displayLogin()
 session::start();
 
 if (isset($_REQUEST['signout']) && $_REQUEST['signout']) {
-  if (session::global_is_set('connected')) {
+  if (session::is_set('connected')) {
     $config = session::global_get('config');
     if ($config->get_cfg_value('casActivated') == 'TRUE') {
       require_once('CAS.php');
@@ -163,8 +163,8 @@ if (!is_readable(CONFIG_DIR.'/'.CONFIG_FILE)) {
 
 /* Parse configuration file */
 $config = new config(CONFIG_DIR.'/'.CONFIG_FILE, $BASE_DIR);
-session::global_set('config', $config);
-session::global_set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
+session::set('config', $config);
+session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
 @DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, 'config');
 
 /* Set template compile directory */
@@ -201,7 +201,7 @@ if (
   ($config->get_cfg_value('casActivated') == 'TRUE') ||
   ($config->get_cfg_value('httpAuthActivated') == 'TRUE') ||
   ($config->get_cfg_value('httpHeaderAuthActivated') == 'TRUE')) {
-  session::global_set('DEBUGLEVEL', 0);
+  session::set('DEBUGLEVEL', 0);
 }
 
 /* If SSL is forced, just forward to the SSL enabled site */
@@ -321,7 +321,7 @@ class Index {
     del_user_locks($ui->dn);
 
     /* Save userinfo and plugin structure */
-    session::global_set('ui', $ui);
+    session::set('ui', $ui);
 
     /* User might have its own language, re-run initLanguage */
     $plistReloaded = Language::init();
@@ -355,8 +355,8 @@ class Index {
     global $config;
     /* Not account expired or password forced change go to main page */
     logging::log('security', 'login', '', array(), 'User "'.static::$username.'" logged in successfully.');
-    session::global_set('connected', 1);
-    session::global_set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
+    session::set('connected', 1);
+    session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
     header ('Location: main.php?global_check=1');
     exit;
   }
diff --git a/html/main.php b/html/main.php
index 9c40400d9..655f3f7c2 100644
--- a/html/main.php
+++ b/html/main.php
@@ -41,7 +41,7 @@ textdomain($domain);
 /* Remember everything we did after the last click */
 session::start();
 session::set('errorsAlreadyPosted', array());
-session::global_set('runtime_cache', array());
+session::set('runtime_cache', array());
 session::set('limit_exceeded', FALSE);
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
@@ -50,7 +50,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 @DEBUG (DEBUG_SESSION, __LINE__, __FUNCTION__, __FILE__, session::get_all(), "_SESSION");
 
 /* Logged in? Simple security check */
-if (!session::global_is_set('connected')) {
+if (!session::is_set('connected')) {
   logging::log('security', 'login', '', array(), 'main.php called without session - logging out');
   header ('Location: index.php?message=nosession');
   exit;
@@ -89,7 +89,7 @@ if (session::global_get('_LAST_PAGE_REQUEST') != '') {
     }
   }
 }
-session::global_set('_LAST_PAGE_REQUEST', time());
+session::set('_LAST_PAGE_REQUEST', time());
 
 
 @DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config");
@@ -98,8 +98,8 @@ session::global_set('_LAST_PAGE_REQUEST', time());
 $smarty->compile_dir = $config->get_cfg_value("templateCompileDirectory", SPOOL_DIR);
 
 /* Preset current main base */
-if (!session::global_is_set('CurrentMainBase')) {
-  session::global_set('CurrentMainBase', get_base_from_people($ui->dn));
+if (!session::is_set('CurrentMainBase')) {
+  session::set('CurrentMainBase', get_base_from_people($ui->dn));
 }
 
 Language::init();
@@ -120,7 +120,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
 }
 
 /* Check Plugin variable */
-if (session::global_is_set('plugin_dir')) {
+if (session::is_set('plugin_dir')) {
   $old_plugin_dir = session::global_get('plugin_dir');
 } else {
   $old_plugin_dir = "";
@@ -164,7 +164,7 @@ if ($config->get_cfg_value("handleExpiredAccounts") == "TRUE") {
 if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   $plug       = validate($_GET['plug']);
   $plugin_dir = $plist->get_path($plug);
-  session::global_set('plugin_dir', $plugin_dir);
+  session::set('plugin_dir', $plugin_dir);
   if ($plugin_dir == '') {
     logging::log('security', 'fusiondirectory', '', array(), "main.php called with invalid plug parameter \"$plug\"");
     header ('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
@@ -172,7 +172,7 @@ if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   }
 } else {
   /* set to welcome page as default plugin */
-  session::global_set('plugin_dir', 'welcome');
+  session::set('plugin_dir', 'welcome');
   $plugin_dir = "$BASE_DIR/plugins/generic/welcome";
 }
 
@@ -260,17 +260,17 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (isset($_POST['delete_lock']) || isset($_POST['open_readonly'])) {
 
     /* Set old Post data */
-    if (session::global_is_set('LOCK_VARS_USED_GET')) {
+    if (session::is_set('LOCK_VARS_USED_GET')) {
       foreach (session::global_get('LOCK_VARS_USED_GET') as $name => $value) {
         $_GET[$name]  = $value;
       }
     }
-    if (session::global_is_set('LOCK_VARS_USED_POST')) {
+    if (session::is_set('LOCK_VARS_USED_POST')) {
       foreach (session::global_get('LOCK_VARS_USED_POST') as $name => $value) {
         $_POST[$name] = $value;
       }
     }
-    if (session::global_is_set('LOCK_VARS_USED_REQUEST')) {
+    if (session::is_set('LOCK_VARS_USED_REQUEST')) {
       foreach (session::global_get('LOCK_VARS_USED_REQUEST') as $name => $value) {
         $_REQUEST[$name] = $value;
       }
@@ -344,8 +344,6 @@ $display  = $smarty->fetch(get_template_path('headers.tpl')).
 echo $display;
 
 /* Save plist and config */
-session::global_set('plist', $plist);
-session::global_set('config', $config);
+session::set('plist', $plist);
+session::set('config', $config);
 session::set('errorsAlreadyPosted', array());
-
-?>
diff --git a/html/setup.php b/html/setup.php
index 9167b8bee..31b31f9c9 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -49,7 +49,7 @@ ini_set("session.gc_maxlifetime", 24 * 60 * 60);
 
 /* Start session */
 session::start();
-session::global_set('DEBUGLEVEL', 0);
+session::set('DEBUGLEVEL', 0);
 session::set('errorsAlreadyPosted', array());
 
 CSRFProtection::check();
@@ -75,7 +75,7 @@ if (isset($_POST['lang_selected']) && $_POST['lang_selected'] != '') {
   if (!preg_match('/utf(-)?8$/i', $lang)) {
     $lang .= '.UTF-8';
   }
-} elseif (session::global_is_set('lang')) {
+} elseif (session::is_set('lang')) {
   $lang = session::global_get('lang');
 
   /* Append .UTF-8 to language string if necessary */
@@ -92,9 +92,9 @@ $smarty->assign("rtl",  Language::isRTL($lang));
 $smarty->assign("must", '<span class="must">*</span>');
 
 /* Minimal config */
-if (!session::global_is_set('config')) {
+if (!session::is_set('config')) {
   $config = new config('');
-  session::global_set('config', $config);
+  session::set('config', $config);
 }
 $config = session::global_get('config');
 IconTheme::loadThemes('themes');
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 966181080..28c9191e2 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -66,19 +66,19 @@ class Language
     $ret = FALSE;
 
     /* Reset plist cache if language changed */
-    if ((!session::global_is_set('lang')) || (session::global_get('lang') != $lang)) {
+    if ((!session::is_set('lang')) || (session::global_get('lang') != $lang)) {
       $ret = TRUE;
-      if (session::global_is_set('plist')) {
+      if (session::is_set('plist')) {
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
           @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::global_get('lang'), 'Plist already loaded with language');
         }
         session::global_un_set('plist');
-        session::global_set('lang', $lang);
+        session::set('lang', $lang);
         load_plist();
       }
     }
 
-    session::global_set('lang', $lang);
+    session::set('lang', $lang);
     return $ret;
   }
 
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 1e9f5f1c0..4acac0237 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -130,7 +130,7 @@ class baseSelector
     }
 
     // Save bases to session for autocompletion
-    session::global_set('pathMapping', $this->pathMapping);
+    session::set('pathMapping', $this->pathMapping);
   }
 
   /*!
diff --git a/include/class_config.inc b/include/class_config.inc
index c07ae223b..9f086c3ad 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -96,12 +96,12 @@ class config
     /* Check if class_location.inc has changed, this is the case
         if we have installed or removed plugins. */
     $tmp = stat(CACHE_DIR.'/'.CLASS_CACHE);
-    if (session::global_is_set('class_location.inc:timestamp')) {
+    if (session::is_set('class_location.inc:timestamp')) {
       if ($tmp['mtime'] != session::global_get('class_location.inc:timestamp')) {
         session::global_un_set('plist');
       }
     }
-    session::global_set('class_location.inc:timestamp', $tmp['mtime']);
+    session::set('class_location.inc:timestamp', $tmp['mtime']);
 
     if (($this->filename != '') && ((filemtime($this->filename) != $this->last_modified) || $force)) {
 
@@ -270,14 +270,14 @@ class config
   function get_credentials($creds)
   {
     if (isset($_SERVER['HTTP_FDKEY'])) {
-      if (!session::global_is_set('HTTP_FDKEY_CACHE')) {
-        session::global_set('HTTP_FDKEY_CACHE', array());
+      if (!session::is_set('HTTP_FDKEY_CACHE')) {
+        session::set('HTTP_FDKEY_CACHE', array());
       }
       $cache = session::global_get('HTTP_FDKEY_CACHE');
       if (!isset($cache[$creds])) {
         try {
           $cache[$creds] = cred_decrypt($creds, $_SERVER['HTTP_FDKEY']);
-          session::global_set('HTTP_FDKEY_CACHE', $cache);
+          session::set('HTTP_FDKEY_CACHE', $cache);
         } catch (FusionDirectoryException $e) {
           $msg = sprintf(
             _('It seems you are trying to decode something which is not encoded : %s<br/>'."\n".
@@ -357,7 +357,7 @@ class config
     $this->current = $this->data['LOCATIONS'][$name];
 
     if (isset($this->current['INITIAL_BASE'])) {
-      session::global_set('CurrentMainBase', $this->current['INITIAL_BASE']);
+      session::set('CurrentMainBase', $this->current['INITIAL_BASE']);
     }
 
     /* Sort referrals, if present */
@@ -398,7 +398,7 @@ class config
     if (isset($this->data['MAIN']['DEBUGLEVEL'])) {
       $debugLevel |= $this->data['MAIN']['DEBUGLEVEL'];
     }
-    session::global_set('DEBUGLEVEL', $debugLevel);
+    session::set('DEBUGLEVEL', $debugLevel);
 
     IconTheme::loadThemes('themes');
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index c6cd7497d..de5e00ab2 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -1220,7 +1220,7 @@ class LDAP
     $objectclasses = array();
 
     /* Return the cached results. */
-    if (class_available('session') && session::global_is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
+    if (class_available('session') && session::is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
       $objectclasses = session::global_get('LDAP_CACHE::get_objectclasses');
       return $objectclasses;
     }
@@ -1293,7 +1293,7 @@ class LDAP
 
     }
     if (class_available('session')) {
-      session::global_set('LDAP_CACHE::get_objectclasses', $objectclasses);
+      session::set('LDAP_CACHE::get_objectclasses', $objectclasses);
     }
 
     return $objectclasses;
@@ -1328,7 +1328,7 @@ class LDAP
    */
   function log($string)
   {
-    if (session::global_is_set('config')) {
+    if (session::is_set('config')) {
       $cfg = session::global_get('config');
       if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])) {
         syslog (LOG_INFO, $string);
diff --git a/include/class_listing.inc b/include/class_listing.inc
index b948254cf..28c6c6b09 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -535,7 +535,7 @@ class listing
     $refresh = FALSE;
     if ($this->baseMode) {
       $this->base = $this->baseSelector->getBase();
-      session::global_set("CurrentMainBase", $this->base);
+      session::set("CurrentMainBase", $this->base);
       $refresh = TRUE;
     }
 
@@ -652,7 +652,7 @@ class listing
     $this->base = $base;
     if ($this->baseMode) {
       $this->baseSelector->setBase($this->base);
-      session::global_set('CurrentMainBase', $this->base);
+      session::set('CurrentMainBase', $this->base);
     }
   }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 38c1d7615..488300e4a 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -107,7 +107,7 @@ class userinfo
   public function reset_acl_cache()
   {
     /* Initialize ACL_CACHE */
-    session::global_set('ACL_CACHE', array());
+    session::set('ACL_CACHE', array());
   }
 
   /*!
diff --git a/include/functions.inc b/include/functions.inc
index 70ec569ee..9bbaa0f08 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -160,12 +160,12 @@ function plugin_available($plugin)
 function load_plist ($ldap_available = TRUE)
 {
   global $config, $plist;
-  if (!session::global_is_set('plist')) {
+  if (!session::is_set('plist')) {
     /* Initially load all classes */
     load_all_classes();
 
     $plist = new pluglist();
-    session::global_set('plist', $plist);
+    session::set('plist', $plist);
     $config->loadPlist($plist);
     if ($ldap_available) {
       $config->get_departments();
@@ -560,8 +560,8 @@ function add_lock($object, $user)
   /* Remember which entries were opened as read only, because we
       don't need to remove any locks for them later.
    */
-  if (!session::global_is_set('LOCK_CACHE')) {
-    session::global_set('LOCK_CACHE', array(''));
+  if (!session::is_set('LOCK_CACHE')) {
+    session::set('LOCK_CACHE', array(''));
   }
   if (is_array($object)) {
     foreach ($object as $obj) {
@@ -642,7 +642,7 @@ function del_lock ($object)
   /* If this object was opened in read only mode then
       skip removing the lock entry, there wasn't any lock created.
     */
-  if (session::global_is_set('LOCK_CACHE')) {
+  if (session::is_set('LOCK_CACHE')) {
     $cache = &session::global_get_ref('LOCK_CACHE');
     if (isset($cache['READ_ONLY'][$object])) {
       unset($cache['READ_ONLY'][$object]);
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index fa113df8d..805ddeca4 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -61,7 +61,7 @@ class BaseSelectorAttribute extends Attribute
       }
       if ($this->plugin->dn == "new") {
         $ui = get_userinfo();
-        $this->setValue(dn2base(session::global_is_set("CurrentMainBase") ? "cn=dummy,".session::global_get("CurrentMainBase") : $ui->dn));
+        $this->setValue(dn2base(session::is_set("CurrentMainBase") ? "cn=dummy,".session::global_get("CurrentMainBase") : $ui->dn));
       } else {
         $this->setValue(dn2base($this->plugin->dn, $this->ou));
       }
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index 678e57962..6f8538347 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -235,7 +235,7 @@ class simpleManagement
     }
 
     // Build filter
-    if (session::global_is_set(get_class($this).'_filter')) {
+    if (session::is_set(get_class($this).'_filter')) {
       $filter = session::global_get(get_class($this).'_filter');
     } else {
       $filter = new filter($this->filterXMLPath);
@@ -557,7 +557,7 @@ class simpleManagement
     // Update filter
     if ($this->filter) {
       $this->filter->update();
-      session::global_set(get_class($this).'_filter', $this->filter);
+      session::set(get_class($this).'_filter', $this->filter);
       session::set('autocomplete', $this->filter);
       if (!$this->filter->isValid()) {
         msg_dialog::display(_('Filter error'), _('The filter is incomplete!'), ERROR_DIALOG);
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 20a94870e..68ab7e3dc 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -204,7 +204,7 @@ class simplePlugin
     if ($this->dn != 'new') {
       /* Check if this entry was opened in read only mode */
       if (isset($_POST['open_readonly'])) {
-        if (session::global_is_set('LOCK_CACHE')) {
+        if (session::is_set('LOCK_CACHE')) {
           $cache = session::get('LOCK_CACHE');
           if (isset($cache['READ_ONLY'][$this->dn])) {
             $this->read_only = TRUE;
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index e1d3e4538..2b3367e8b 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -163,7 +163,7 @@ class simpleTabs
     $baseobject = $this->getBaseObject();
     if (isset($baseobject->base)) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixing base');
-      if (session::global_is_set('CurrentMainBase')) {
+      if (session::is_set('CurrentMainBase')) {
         $baseobject->base = dn2base('cn=dummy,'.session::global_get('CurrentMainBase'));
       } else {
         $baseobject->base = dn2base(get_userinfo()->dn);
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index a5e0eff82..a28f52420 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -342,7 +342,7 @@ class aclAssignment extends simplePlugin
     /* Refresh users ACLs */
     $ui = get_userinfo();
     $ui->loadACL();
-    session::global_set('ui', $ui);
+    session::set('ui', $ui);
   }
 
   function post_save()
@@ -352,7 +352,7 @@ class aclAssignment extends simplePlugin
     /* Refresh users ACLs */
     $ui = get_userinfo();
     $ui->loadACL();
-    session::global_set('ui', $ui);
+    session::set('ui', $ui);
   }
 
   function foreignKeyUpdate ($field, $oldvalue, $newvalue, $source)
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index 5f19db7c0..9b8f3ad76 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -79,7 +79,7 @@ class configInLdap extends simplePlugin
   {
     global $config;
     $plugins = array();
-    if (session::global_is_set('plist')) {
+    if (session::is_set('plist')) {
       $plugins = array_keys(session::global_get('plist')->info);
     }
     sort($plugins);
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index 0ee9614cc..d15e505a3 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -842,7 +842,7 @@ class setupStepMigrate extends setupStep
   function check_adminAccount_migrate_confirm(&$checkobj)
   {
     global $config;
-    session::global_set('CurrentMainBase', $config->current['BASE']);
+    session::set('CurrentMainBase', $config->current['BASE']);
 
     /* Creating role */
     $ldap = $config->get_ldap_link();
-- 
GitLab


From 7aeeb7aeecbc2819915b71f71c53ccf7915c73b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 10:59:23 +0200
Subject: [PATCH 013/117] :tractor: fix(session) Remove ref from session::get

And convert global_get calls to get

issue #6024
---
 contrib/smarty/plugins/function.filePath.php   |  2 +-
 contrib/smarty/plugins/function.iconPath.php   |  2 +-
 html/autocomplete.php                          |  8 +++-----
 html/class_passwordRecovery.inc                |  2 +-
 html/geticon.php                               |  2 +-
 html/index.php                                 |  4 ++--
 html/main.php                                  | 18 +++++++++---------
 html/setup.php                                 |  6 +++---
 include/class_Language.inc                     |  4 ++--
 include/class_config.inc                       |  4 ++--
 include/class_ldap.inc                         |  4 ++--
 include/class_listing.inc                      |  2 +-
 include/class_pluglist.inc                     |  3 +--
 include/class_session.inc                      |  2 +-
 include/functions.inc                          |  6 +++---
 .../attributes/class_BaseSelectorAttribute.inc |  2 +-
 .../simpleplugin/class_simpleManagement.inc    |  2 +-
 include/simpleplugin/class_simpleTabs.inc      |  2 +-
 .../admin/aclrole/class_aclEditionDialog.inc   |  2 +-
 plugins/config/class_configInLdap.inc          |  6 +++---
 20 files changed, 40 insertions(+), 43 deletions(-)

diff --git a/contrib/smarty/plugins/function.filePath.php b/contrib/smarty/plugins/function.filePath.php
index 3d979e0a9..8aa87e513 100644
--- a/contrib/smarty/plugins/function.filePath.php
+++ b/contrib/smarty/plugins/function.filePath.php
@@ -19,7 +19,7 @@
 */
 function smarty_function_filePath($params, &$smarty)
 {
-  $config = session::global_get('config');
+  $config = session::get('config');
   $default_theme = 'breezy';
 
   /* Set theme */
diff --git a/contrib/smarty/plugins/function.iconPath.php b/contrib/smarty/plugins/function.iconPath.php
index 92aa68d4b..c929e4f56 100644
--- a/contrib/smarty/plugins/function.iconPath.php
+++ b/contrib/smarty/plugins/function.iconPath.php
@@ -19,7 +19,7 @@
 */
 function smarty_function_iconPath($params, &$smarty)
 {
-  $config = session::global_get('config');
+  $config = session::get('config');
 
   /* Set theme */
   $theme = IconTheme::$default_theme;
diff --git a/html/autocomplete.php b/html/autocomplete.php
index f686a2ce8..c8f5437b2 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -44,7 +44,7 @@ if (isset($_GET['type']) && $_GET['type'] == "base") {
     $pathMapping  = session::get("pathMapping");
     $search       = preg_replace('/&quot;/', '"', current($_POST));
 
-    $config = session::global_get('config');
+    $config = session::get('config');
     foreach ($config->department_info as $dn => $info) {
       if (!isset($pathMapping[$dn])) {
         continue;
@@ -71,8 +71,8 @@ if (isset($_GET['type']) && $_GET['type'] == "base") {
 
 } else {
 
-  $ui = session::global_get('ui');
-  $config = session::global_get('config');
+  $ui = session::get('ui');
+  $config = session::get('config');
 
   /* Is there a filter object arround? */
   if (session::is_set('autocomplete')) {
@@ -80,5 +80,3 @@ if (isset($_GET['type']) && $_GET['type'] == "base") {
     $filter->processAutocomplete();
   }
 }
-
-?>
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 2f2c5d01f..1b8c818d6 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -351,7 +351,7 @@ class passwordRecovery extends standAlonePage {
     $smarty->assign('usePrototype', 'FALSE');
     $smarty->append('js_files',     'include/pwdStrength.js');
     $smarty->append('css_files',    get_template_path('login.css'));
-    $lang = session::global_get('lang');
+    $lang = session::get('lang');
     $smarty->assign('lang', preg_replace('/_.*$/', '', $lang));
     $smarty->assign('rtl', Language::isRTL($lang));
     $smarty->assign('title',        _('Password recovery'));
diff --git a/html/geticon.php b/html/geticon.php
index 7d41faf7c..2e338e288 100644
--- a/html/geticon.php
+++ b/html/geticon.php
@@ -29,7 +29,7 @@ session::set('errorsAlreadyPosted', array());
 
 $theme = '';
 if (session::is_set('config')) {
-  $config = session::global_get('config');
+  $config = session::get('config');
   $theme  = $config->get_cfg_value('theme');
 } else {
   header("cache-control: no-cache");
diff --git a/html/index.php b/html/index.php
index 1439c8dd8..16d9fdeb4 100644
--- a/html/index.php
+++ b/html/index.php
@@ -35,7 +35,7 @@ header('X-Frame-Options: deny');
 function displayLogin()
 {
   global $smarty,$message,$config,$ssl,$error_collector,$error_collector_mailto;
-  $lang = session::global_get('lang');
+  $lang = session::get('lang');
 
   error_reporting(E_ALL | E_STRICT);
   /* Fill template with required values */
@@ -115,7 +115,7 @@ session::start();
 
 if (isset($_REQUEST['signout']) && $_REQUEST['signout']) {
   if (session::is_set('connected')) {
-    $config = session::global_get('config');
+    $config = session::get('config');
     if ($config->get_cfg_value('casActivated') == 'TRUE') {
       require_once('CAS.php');
       /* Move FD autoload after CAS autoload */
diff --git a/html/main.php b/html/main.php
index 655f3f7c2..00a1e3100 100644
--- a/html/main.php
+++ b/html/main.php
@@ -58,8 +58,8 @@ if (!session::is_set('connected')) {
 
 CSRFProtection::check();
 
-$ui     = session::global_get('ui');
-$config = session::global_get('config');
+$ui     = session::get('ui');
+$config = session::get('config');
 
 /* If SSL is forced, just forward to the SSL enabled site */
 if (($config->get_cfg_value('forcessl') == 'TRUE') && ($ssl != '')) {
@@ -70,13 +70,13 @@ if (($config->get_cfg_value('forcessl') == 'TRUE') && ($ssl != '')) {
 timezone::setDefaultTimezoneFromConfig();
 
 /* Check for invalid sessions */
-if (session::global_get('_LAST_PAGE_REQUEST') != '') {
+if (session::get('_LAST_PAGE_REQUEST') != '') {
   /* check FusionDirectory.conf for defined session lifetime */
   $max_life = $config->get_cfg_value('sessionLifetime', 60 * 60 * 2);
 
   if ($max_life > 0) {
     /* get time difference between last page reload */
-    $request_time = (time() - session::global_get('_LAST_PAGE_REQUEST'));
+    $request_time = (time() - session::get('_LAST_PAGE_REQUEST'));
 
     /* If page wasn't reloaded for more than max_life seconds
      * kill session
@@ -121,7 +121,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
 
 /* Check Plugin variable */
 if (session::is_set('plugin_dir')) {
-  $old_plugin_dir = session::global_get('plugin_dir');
+  $old_plugin_dir = session::get('plugin_dir');
 } else {
   $old_plugin_dir = "";
 }
@@ -235,7 +235,7 @@ if (isset($_GET['reset'])) {
 
 /* show web frontend */
 $smarty->assign ("date", date("l, dS F Y H:i:s O"));
-$lang = session::global_get('lang');
+$lang = session::get('lang');
 $smarty->assign ('lang',  preg_replace('/_.*$/', '', $lang));
 $smarty->assign ('rtl',   Language::isRTL($lang));
 $smarty->assign ('must',  '<span class="must">*</span>');
@@ -261,17 +261,17 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
     /* Set old Post data */
     if (session::is_set('LOCK_VARS_USED_GET')) {
-      foreach (session::global_get('LOCK_VARS_USED_GET') as $name => $value) {
+      foreach (session::get('LOCK_VARS_USED_GET') as $name => $value) {
         $_GET[$name]  = $value;
       }
     }
     if (session::is_set('LOCK_VARS_USED_POST')) {
-      foreach (session::global_get('LOCK_VARS_USED_POST') as $name => $value) {
+      foreach (session::get('LOCK_VARS_USED_POST') as $name => $value) {
         $_POST[$name] = $value;
       }
     }
     if (session::is_set('LOCK_VARS_USED_REQUEST')) {
-      foreach (session::global_get('LOCK_VARS_USED_REQUEST') as $name => $value) {
+      foreach (session::get('LOCK_VARS_USED_REQUEST') as $name => $value) {
         $_REQUEST[$name] = $value;
       }
     }
diff --git a/html/setup.php b/html/setup.php
index 31b31f9c9..48f981613 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -76,7 +76,7 @@ if (isset($_POST['lang_selected']) && $_POST['lang_selected'] != '') {
     $lang .= '.UTF-8';
   }
 } elseif (session::is_set('lang')) {
-  $lang = session::global_get('lang');
+  $lang = session::get('lang');
 
   /* Append .UTF-8 to language string if necessary */
   if (!preg_match('/utf(-)?8$/i', $lang)) {
@@ -96,7 +96,7 @@ if (!session::is_set('config')) {
   $config = new config('');
   session::set('config', $config);
 }
-$config = session::global_get('config');
+$config = session::get('config');
 IconTheme::loadThemes('themes');
 /* Fake user bypassing acl system */
 $ui = new fake_userinfo();
@@ -109,7 +109,7 @@ $focus .= 'next_msg_dialog();';
 $focus .= '</script>';
 
 /* show web frontend */
-$setup = session::global_get('setup');
+$setup = session::get('setup');
 
 $smarty->assign('date',           date('l, dS F Y H:i:s O'));
 $smarty->assign('headline',       $setup->get_header_text());
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 28c9191e2..69c8e7155 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -66,11 +66,11 @@ class Language
     $ret = FALSE;
 
     /* Reset plist cache if language changed */
-    if ((!session::is_set('lang')) || (session::global_get('lang') != $lang)) {
+    if ((!session::is_set('lang')) || (session::get('lang') != $lang)) {
       $ret = TRUE;
       if (session::is_set('plist')) {
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::global_get('lang'), 'Plist already loaded with language');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get('lang'), 'Plist already loaded with language');
         }
         session::global_un_set('plist');
         session::set('lang', $lang);
diff --git a/include/class_config.inc b/include/class_config.inc
index 9f086c3ad..921532a76 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -97,7 +97,7 @@ class config
         if we have installed or removed plugins. */
     $tmp = stat(CACHE_DIR.'/'.CLASS_CACHE);
     if (session::is_set('class_location.inc:timestamp')) {
-      if ($tmp['mtime'] != session::global_get('class_location.inc:timestamp')) {
+      if ($tmp['mtime'] != session::get('class_location.inc:timestamp')) {
         session::global_un_set('plist');
       }
     }
@@ -273,7 +273,7 @@ class config
       if (!session::is_set('HTTP_FDKEY_CACHE')) {
         session::set('HTTP_FDKEY_CACHE', array());
       }
-      $cache = session::global_get('HTTP_FDKEY_CACHE');
+      $cache = session::get('HTTP_FDKEY_CACHE');
       if (!isset($cache[$creds])) {
         try {
           $cache[$creds] = cred_decrypt($creds, $_SERVER['HTTP_FDKEY']);
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index de5e00ab2..0b18f481d 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -1221,7 +1221,7 @@ class LDAP
 
     /* Return the cached results. */
     if (class_available('session') && session::is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
-      $objectclasses = session::global_get('LDAP_CACHE::get_objectclasses');
+      $objectclasses = session::get('LDAP_CACHE::get_objectclasses');
       return $objectclasses;
     }
 
@@ -1329,7 +1329,7 @@ class LDAP
   function log($string)
   {
     if (session::is_set('config')) {
-      $cfg = session::global_get('config');
+      $cfg = session::get('config');
       if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])) {
         syslog (LOG_INFO, $string);
       }
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 28c6c6b09..2bd3d5178 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -87,7 +87,7 @@ class listing
 
     // Set base for filter
     if ($this->baseMode) {
-      $this->base = session::global_get("CurrentMainBase");
+      $this->base = session::get("CurrentMainBase");
       if ($this->base == NULL) {
         $this->base = $config->current['BASE'];
       }
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index 281ee55da..efadea480 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -494,7 +494,7 @@ class pluglist {
 
   static function pluginInfos($cname)
   {
-    $plist = session::global_get('plist');
+    $plist = session::get('plist');
     if ($plist) {
       return $plist->info[$cname];
     } else {
@@ -502,4 +502,3 @@ class pluglist {
     }
   }
 }
-?>
diff --git a/include/class_session.inc b/include/class_session.inc
index 2e3f66238..ca01b13e2 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -71,7 +71,7 @@ class session {
    *
    * \param string $name Name of the session
    */
-  public static function &get($name)
+  public static function get ($name)
   {
     return $_SESSION[$name];
   }
diff --git a/include/functions.inc b/include/functions.inc
index 9bbaa0f08..063bbb4dc 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -172,7 +172,7 @@ function load_plist ($ldap_available = TRUE)
       $config->make_idepartments();
     }
   }
-  return session::global_get('plist');
+  return session::get('plist');
 }
 
 /*!
@@ -203,7 +203,7 @@ function DEBUG($level, $line, $function, $file, $data, $info = '')
   if (($_SERVER['REQUEST_METHOD'] == 'POST') && preg_match('/index.php$/', $_SERVER['REQUEST_URI'])) {
     return;
   }
-  if (session::global_get('DEBUGLEVEL') & $level) {
+  if (session::get('DEBUGLEVEL') & $level) {
     if ($first) {
       echo '<div id="debug-handling" class="notice">'.
             '<img src="geticon.php?context=status&amp;icon=dialog-information&amp;size=22" alt="Information" style="vertical-align:middle;margin-right:.2em;"/>'.
@@ -269,7 +269,7 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
   /* Return plugin dir or root directory? */
   if ($plugin) {
     if ($path == '') {
-      $path = session::global_get('plugin_dir');
+      $path = session::get('plugin_dir');
       $nf   = preg_replace('!^'.$BASE_DIR.'/!', '', preg_replace('/^\.\.\//', '', $path));
     } else {
       $nf = preg_replace('!^'.$BASE_DIR.'/!', '', $path);
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index 805ddeca4..668edb68c 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -61,7 +61,7 @@ class BaseSelectorAttribute extends Attribute
       }
       if ($this->plugin->dn == "new") {
         $ui = get_userinfo();
-        $this->setValue(dn2base(session::is_set("CurrentMainBase") ? "cn=dummy,".session::global_get("CurrentMainBase") : $ui->dn));
+        $this->setValue(dn2base(session::is_set("CurrentMainBase") ? "cn=dummy,".session::get("CurrentMainBase") : $ui->dn));
       } else {
         $this->setValue(dn2base($this->plugin->dn, $this->ou));
       }
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index 6f8538347..9ef5549d5 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -236,7 +236,7 @@ class simpleManagement
 
     // Build filter
     if (session::is_set(get_class($this).'_filter')) {
-      $filter = session::global_get(get_class($this).'_filter');
+      $filter = session::get(get_class($this).'_filter');
     } else {
       $filter = new filter($this->filterXMLPath);
       $filter->setObjectStorage($this->storagePoints);
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index 2b3367e8b..edc6049a3 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -164,7 +164,7 @@ class simpleTabs
     if (isset($baseobject->base)) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixing base');
       if (session::is_set('CurrentMainBase')) {
-        $baseobject->base = dn2base('cn=dummy,'.session::global_get('CurrentMainBase'));
+        $baseobject->base = dn2base('cn=dummy,'.session::get('CurrentMainBase'));
       } else {
         $baseobject->base = dn2base(get_userinfo()->dn);
       }
diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc
index 56ae1bcba..9f7801390 100644
--- a/plugins/admin/aclrole/class_aclEditionDialog.inc
+++ b/plugins/admin/aclrole/class_aclEditionDialog.inc
@@ -271,7 +271,7 @@ class ACLEditionDialog extends GenericDialog
   {
     $display  = '<input type="hidden" name="acl_dummy_0_0_0" value="1"/>';
     $cols     = 3;
-    $tmp      = session::global_get('plist');
+    $tmp      = session::get('plist');
     $plist    = $tmp->info;
     asort($plist);
 
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index 9b8f3ad76..c8e193537 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -80,7 +80,7 @@ class configInLdap extends simplePlugin
     global $config;
     $plugins = array();
     if (session::is_set('plist')) {
-      $plugins = array_keys(session::global_get('plist')->info);
+      $plugins = array_keys(session::get('plist')->info);
     }
     sort($plugins);
     return array(
@@ -486,7 +486,7 @@ class configInLdap extends simplePlugin
       array_values($groupsAndRoles)
     );
     $menuPlugins = array();
-    $plist = session::global_get('plist');
+    $plist = session::get('plist');
     foreach ($config->data['SECTIONS'] as $section => $section_infos) {
       foreach ($config->data['MENU'][$section] as $info) {
         if (isset($info['CLASS'])) {
@@ -589,7 +589,7 @@ class configInLdap extends simplePlugin
   static function get_themes()
   {
     $themesdir  = '../ihtml/themes/';
-    $themes     = array_keys(session::global_get(IconTheme::$session_var));
+    $themes     = array_keys(session::get(IconTheme::$session_var));
     if ($dir = opendir("$themesdir")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (is_dir("$themesdir/$file") && !preg_match("/^\./", $file)) {
-- 
GitLab


From 188bbf75a5adfa4d45a0130f1ede6bc4f509f370 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 11:03:12 +0200
Subject: [PATCH 014/117] :tractor: fix(session) Normalize session unsetting to
 un_set

No more global_un_set, global_delete or delete

issue #6024
---
 html/class_passwordRecovery.inc      |  2 +-
 html/index.php                       |  2 +-
 include/class_Language.inc           |  2 +-
 include/class_config.inc             |  2 +-
 include/class_session.inc            | 20 ++++++++------------
 plugins/config/tabs_configInLdap.inc |  2 +-
 setup/class_setup.inc                |  3 +--
 setup/class_setupStepConfig.inc      |  2 +-
 8 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 1b8c818d6..2cae64e15 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -98,7 +98,7 @@ class standAlonePage {
       Language::init();
 
       if (session::is_set('plist')) {
-        session::global_un_set('plist');
+        session::un_set('plist');
       }
       $ui = new fake_userinfo();
       load_plist();
diff --git a/html/index.php b/html/index.php
index 16d9fdeb4..5a53e3d53 100644
--- a/html/index.php
+++ b/html/index.php
@@ -328,7 +328,7 @@ class Index {
 
     /* We need a fully loaded plist and config to test account expiration */
     if (!$plistReloaded) {
-      session::global_un_set('plist');
+      session::un_set('plist');
     }
     $plist = load_plist();
 
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 69c8e7155..bd99cb243 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -72,7 +72,7 @@ class Language
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
           @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get('lang'), 'Plist already loaded with language');
         }
-        session::global_un_set('plist');
+        session::un_set('plist');
         session::set('lang', $lang);
         load_plist();
       }
diff --git a/include/class_config.inc b/include/class_config.inc
index 921532a76..1585daca9 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -98,7 +98,7 @@ class config
     $tmp = stat(CACHE_DIR.'/'.CLASS_CACHE);
     if (session::is_set('class_location.inc:timestamp')) {
       if ($tmp['mtime'] != session::get('class_location.inc:timestamp')) {
-        session::global_un_set('plist');
+        session::un_set('plist');
       }
     }
     session::set('class_location.inc:timestamp', $tmp['mtime']);
diff --git a/include/class_session.inc b/include/class_session.inc
index ca01b13e2..58896ffdf 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -102,15 +102,11 @@ class session {
   }
 
   /*!
-   * \brief Delete a session
-   *
-   * \param string $name Name of the session to delete
+   * \brief Deprecated
    */
   public static function delete($name)
   {
-    if (isset($_SESSION[$name])) {
-      unset($_SESSION[$name]);
-    }
+    return static::un_set($name);
   }
 
   /*!
@@ -118,7 +114,7 @@ class session {
    */
   public static function global_delete($name)
   {
-    static::delete($name);
+    return static::un_set($name);
   }
 
   /*!
@@ -128,17 +124,17 @@ class session {
    */
   public static function un_set($name)
   {
-    return static::delete($name);
+    if (isset($_SESSION[$name])) {
+      unset($_SESSION[$name]);
+    }
   }
 
   /*!
-   * \brief Unset a session
-   *
-   * \param string $name Name of the session to delete
+   * \brief Deprecated
    */
   public static function global_un_set($name)
   {
-    return static::global_delete($name);
+    return static::un_set($name);
   }
 
   /*!
diff --git a/plugins/config/tabs_configInLdap.inc b/plugins/config/tabs_configInLdap.inc
index 6c2f00963..0df3024dc 100644
--- a/plugins/config/tabs_configInLdap.inc
+++ b/plugins/config/tabs_configInLdap.inc
@@ -28,7 +28,7 @@ class tabs_configInLdap extends simpleTabs
     /* check_and_reload */
     $config->check_and_reload(TRUE);
     /* reload plist as well as some plInfo might use $config or get_ou */
-    session::global_un_set('plist');
+    session::un_set('plist');
     load_plist();
     session::un_set('passwordMethod::get_available_methods');
 
diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index fa5ce2246..6d90d8a69 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -293,7 +293,7 @@ class setup
     $xml = $smarty->fetch(CONFIG_TEMPLATE_DIR.CONFIG_FILE);
     $config->parse_data($xml);
     $config->set_current($config->data['MAIN']['DEFAULT']);
-    session::global_un_set('plist');
+    session::un_set('plist');
     load_plist();
     $this->reBuildConfigStep();
   }
@@ -311,4 +311,3 @@ class setup
     }
   }
 }
-?>
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index d5b4dda35..a62e80c6e 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -119,7 +119,7 @@ class setupStepConfig extends configInLdap
       }
       /* Reload config from LDAP */
       $config->set_current($config->current['NAME']);
-      session::global_un_set('plist');
+      session::un_set('plist');
       load_plist();
       $this->is_completed = TRUE;
       $this->parent->reBuildConfigStep(TRUE);
-- 
GitLab


From fe341a06354f1e2463572b3dd3c5652596623641 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 11:05:48 +0200
Subject: [PATCH 015/117] :tractor: fix(session) Renamed global_get_ref to
 get_ref

issue #6024
---
 include/class_session.inc  | 2 +-
 include/class_userinfo.inc | 4 ++--
 include/functions.inc      | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/class_session.inc b/include/class_session.inc
index 58896ffdf..0066ee1f0 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -95,7 +95,7 @@ class session {
    *
    * \param string $name Name of the session var
    */
-  public static function &global_get_ref($name)
+  public static function &get_ref ($name)
   {
     $ret = &$_SESSION[$name];
     return $ret;
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 488300e4a..4da2e4e27 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -451,7 +451,7 @@ class userinfo
     }
 
     /* Push cache answer? */
-    $ACL_CACHE = &session::global_get_ref('ACL_CACHE');
+    $ACL_CACHE = &session::get_ref('ACL_CACHE');
     if (isset($ACL_CACHE["$dn+$object+$attribute"])) {
       $ret = $ACL_CACHE["$dn+$object+$attribute"];
       if ($skip_write) {
@@ -658,7 +658,7 @@ class userinfo
     }
 
     /* Use cached results if possilbe */
-    $ACL_CACHE = &session::global_get_ref('ACL_CACHE');
+    $ACL_CACHE = &session::get_ref('ACL_CACHE');
 
     if (!is_array($module)) {
       $module = array($module);
diff --git a/include/functions.inc b/include/functions.inc
index 063bbb4dc..5f848ed87 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -570,7 +570,7 @@ function add_lock($object, $user)
     return;
   }
 
-  $cache = &session::global_get_ref('LOCK_CACHE');
+  $cache = &session::get_ref('LOCK_CACHE');
   if (isset($_POST['open_readonly'])) {
     $cache['READ_ONLY'][$object] = TRUE;
     return;
@@ -643,7 +643,7 @@ function del_lock ($object)
       skip removing the lock entry, there wasn't any lock created.
     */
   if (session::is_set('LOCK_CACHE')) {
-    $cache = &session::global_get_ref('LOCK_CACHE');
+    $cache = &session::get_ref('LOCK_CACHE');
     if (isset($cache['READ_ONLY'][$object])) {
       unset($cache['READ_ONLY'][$object]);
       return;
-- 
GitLab


From d01108dd132ce55f0fc68eb3b92ac942f456c1f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 11:18:17 +0200
Subject: [PATCH 016/117] :tractor: fix(session) Make sure session::get and
 session::global_get are the same thing

issue #6024
---
 include/class_session.inc | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/include/class_session.inc b/include/class_session.inc
index 0066ee1f0..cfae33679 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -66,22 +66,12 @@ class session {
     static::set($name, $value);
   }
 
-  /*!
-   * \brief Accessor of a session
-   *
-   * \param string $name Name of the session
-   */
-  public static function get ($name)
-  {
-    return $_SESSION[$name];
-  }
-
   /*!
    * \brief Accessor of a session var
    *
    * \param string $name Name of the session var
    */
-  public static function global_get($name)
+  public static function get ($name)
   {
     if (isset($_SESSION[$name])) {
       return $_SESSION[$name];
@@ -90,6 +80,14 @@ class session {
     }
   }
 
+  /*!
+   * \brief Deprecated
+   */
+  public static function global_get ($name)
+  {
+    return static::get($name);
+  }
+
   /*!
    * \brief Accessor of a session var by reference
    *
-- 
GitLab


From 897df8917fa0e6519dcb4a08676f53eeb0e8519a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 28 Aug 2019 15:07:52 +0000
Subject: [PATCH 017/117] Merge branch
 '6023-recovery-test-failing-because-of-csrf-protection' into '1.4-dev'

Resolve "Email icon missing from core"

See merge request fusiondirectory/fd!662

(cherry picked from commit 1c1e2cebafb3673e1b71b4188d2cc4240f56c5a3)

d85daf4a :tractor: fix(core) Move icons from mail plugin
---
 .../breezy/icons/16/apps/internet-mail.png    | Bin 0 -> 427 bytes
 .../breezy/icons/48/apps/internet-mail.png    | Bin 0 -> 2128 bytes
 .../breezy/svg/16/apps/internet-mail.svg      | 132 ++++++
 .../breezy/svg/48/apps/internet-mail.svg      | 257 ++++++++++
 .../legacy/icons/16/apps/internet-mail.png    | Bin 0 -> 550 bytes
 .../legacy/icons/48/apps/internet-mail.png    | Bin 0 -> 2397 bytes
 html/themes/legacy/svg/internet-mail.svg      | 440 ++++++++++++++++++
 7 files changed, 829 insertions(+)
 create mode 100644 html/themes/breezy/icons/16/apps/internet-mail.png
 create mode 100644 html/themes/breezy/icons/48/apps/internet-mail.png
 create mode 100644 html/themes/breezy/svg/16/apps/internet-mail.svg
 create mode 100644 html/themes/breezy/svg/48/apps/internet-mail.svg
 create mode 100644 html/themes/legacy/icons/16/apps/internet-mail.png
 create mode 100644 html/themes/legacy/icons/48/apps/internet-mail.png
 create mode 100644 html/themes/legacy/svg/internet-mail.svg

diff --git a/html/themes/breezy/icons/16/apps/internet-mail.png b/html/themes/breezy/icons/16/apps/internet-mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..c36d6c9b16d8698865f4c7a40666737a95dd7f66
GIT binary patch
literal 427
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$m7#J8eJY5_^
zEP9Vl+UUg`DB${jYIx4Zt+#%tYl?Z_ym^Sj+aqzqh7D)bGakn;nIe#)_&Mw5q5ciN
z(i^;#&90{jPfHP2RPg)$tdOt#p3Q^(-3$q7R%~VEZPzL_SN0fQYhPe<-gr_l!*Yg#
zOS@iAo-^y_Q@a~ys(5W8zMC<X*Rx+>|8PmwaI;)PI0JKe{cS;+NpG4N7yM<D?wo1M
zFyndUJoC3456YzPc``6WPE(z9jNzHe^0Q}(Js<0wo^+qZ=W>Zt(ZhGno=cZpy4$WI
zo;l0!!kT@-32FW+`eCcD$}$|4c%8P^Yf_5Kr#%{7$Nd^-_A>A|aa=Ert<QCzdp7O9
zVvDqAYM{vXSk8H#aiO7G@3dVH4ZW)FIeClc#e0WlF5x%6eVmzL$>O@d^4Ivk{w;44
T)e&U{1}uZ8tDnm{r-UW|wsEQp

literal 0
HcmV?d00001

diff --git a/html/themes/breezy/icons/48/apps/internet-mail.png b/html/themes/breezy/icons/48/apps/internet-mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..62da1fd79d3dcca731ec09a1ce245db537b18576
GIT binary patch
literal 2128
zcmV-W2(R~vP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12hB-DK~!jg?U`L{Tvrjte{=WSakjBt$4MxmcH(@w)QO$6N#9bT
zARZ9#01u={fP|3RQsAL+HY!4bP$zldflB?L6)K{ouLz`8NRgr<g@!byZfQR3_#+7^
zaT>4H#9n)M@4aVuxOYFj>)nl0cxc8tyZ6q_nKS=$&YYREhP!l^KHDUB!icH{uUxyf
zTaD~Rqz`lp&;i`ztK0;xgIqw(kcggGzi!<r5pkD0_Obw6nwsh~j(JjqZ=<YfaO5df
z{wM)?u5<0$OSkL8Z2_2^{CJHC*@L3;7!bVO!F{p?`GeZlp{}lu>y3797{K_IkG?M=
zzXrXhwsu4GiKzaxbNzj<HqxnX02eP_j7T*0vZ#EgVb>a?SJShf{II8|CtHtlT>viJ
zxUn*r&io1G(dGG8HyzJJ!{6vxy?U;eVod;N&z=oOo8x~`*mq}qtD8<}HvN_E?(WP|
zN>(i^;T7>$jIvJ^{>N>vgkvw(@^8r%7@fTGJ%r!YGV*DXs(yEK=NEooO<oni#Kc60
zBf$&6s!zqU`stP<X3Mtw@4r?_Sal0!#Try}mGXc8iwBTjRP(dq3XG4BuXiLk287CG
z`_46%a2usRcTN(G#md>Xi`%`etLt*PpkfwvH1L$7i<}3*RRDH1XXuJL%k$Q!iFA;6
z=OO?sq|*RIqS0cNkR{d=z=86<ivXx<;KIb^{nZ9jzx+Bo7vizib8K$1m*F~0EQEM-
zx;1YXfpjK=iV%rJ3W|pPs+uS-02jr;$oQ4rsIIAczB%yaRSU#bNsP8IG8ek-b8=!n
z$iPS|5jA`%z5ou0di&bWWXPn`1$}hg`LRp8%Kcpgz~Js(Dx`3g_MpSDP1D51cpy^2
zhC_3FKES|*RwB3@>z-y!*zvZfc&nfSwqujYX7YUmv$rMyRqbDL;#{xY8*(|aDM>Si
zgXh~AnGMxF`D3Xd1Ly7~g5lWaBx}NM-Yy85LxEsBF4?S&Dj1}{CIFO8OOEa;r~y@0
zhaHY>nP#OpB+j)mIvcF%{rFsf#D}d!aee0<UuN<LM9zHxQG;vSIJOO{n`^HCtWoc~
zV#5VY;k`ZLa&+4aE5#-8VH+cJp{jkyQb7{`Y9oqrblVIaQKw+n__jqr1Qqcm-n-+v
z*si<i46n3>npKsm%~6a?39miuaHJ<mGY*O2Rz_|G7xf#P4U!mcC4%9|14%j}c8T1$
zppNDy(O(q`?|^aLl{Ep>B)7<7IT=W0ghRt^jNU4wk@49Ohu&-DR@$oGU&*gPJ_7vJ
zkfK%-fU3?dwF0;b#+2}`F9dk{-4;?A;hCNpnsIsNpDm2t3^H~zNMfjk7>1wq%&?G!
zfitVPz7Qz2Yy23{{HCgebG8luT&sBsnZo<je2@dDTbR#U9Ns>|p7u0@eKW+wkT}yy
z;!G<sF%0(2u)96YuXfBZpS3t}x`nCvV8N~_BuTXNB+4}rSya$10wCyU^$^ajfHyxM
zr!5kvTbN5*9PXQ8V>}Be9Wk4uyOON13^5FY{Yg4vHlS=+nPqTil7);gaH@r=dCRkF
z0M~QdkK59QqN*dcSHS3*rB(n3Fff%0FmSSs)PgYhP?C-DY>8fb#O2wYNsc^}q$B2*
z$U2*C4)2;_AtNN-X=5rC@BlbeoO#saiv-Tp1mIfMi6wKW>p6e$WE-ipaCmo;u6VYh
z?&>Co)lE)CSyw#E;oV76Y2n~W4}`jleFsHz&uUK81h8Yv#($uCb*V&ld@{;hTKMIj
zX*R^O^`+kmZ9_cEvyV(OpMm3((fk(5H!VqQAB}F?G*s^IqH0t`%+T2jZ;0}Axy)N4
z@2h`pn&GJk!&8xpYK_p2whVu}n!5uO@~|T04pmiN`&NaYA}ihpTw^~Mkl>GjaJfwV
zbpQ6{C~semmW!7`{-Nnjy}#%2LqKg6^L(XVRqw<@ADsU!!Vk*%^Qjc`3kwKfS(cw{
z@Dh%Se`*vbAiR0>%Y$5k%JIt+mH5X{apDs6g}yItd%TjLRWq>@BBAJXdGN(nG|{x8
z39%$!_G-Rt(L66VleuX!en1xU3wp&fUwHS&oWTzLyqcd?0X)2QYf@ByQYjV0qA{Y;
z7`X)$&F$3Or~jnhlOjI00>7YF&_|2j{IS%?lYM>NHyQ>2(Eni1>qgBhl}d_eH0oXX
z6hA=}r~bl|m-Dp1*J5cwUyGReanP4`^=^G*DIaSVbC#WcT;Z)sc{vh|5{*U6Qzp6S
zGr8g`$Hy;|%k;G<^%mJb-W1@en*P;N*tv739l`k~s(-C?mWM;({N=lN>w6)gCA<<H
z@_DN0*|%%-tq9K7>-mMcu5!A!w>M=u>8~0wFIUQ{p>T*$C|DYtrJhv?ST9J+0v1JI
zvfT97dV70Q_4roz{|9pP&U+v17vwiUYq`wMW^r6E*GSnhTB)uttMQYf@}r0Q9$0eE
zms7(Rnms!nd_Cx9HmjN!Q7x(9LZJ}BK%i)nwc^&HWNT?glouo$+}x=1IlH$_r`~`6
zKI6(00{el_=lG7}V2oR9=Kn3|YXo?HcW>|2+x1~t0CJ?N*58MR`_aIog7%B*CfhZi
z!<ZF5fH}*O|0psN5NpU-?ukdXZyyp7b0@~XOLytBO#cOu@pUs-M`RBG0000<MNUMn
GLSTYQQY6&?

literal 0
HcmV?d00001

diff --git a/html/themes/breezy/svg/16/apps/internet-mail.svg b/html/themes/breezy/svg/16/apps/internet-mail.svg
new file mode 100644
index 000000000..24500b63f
--- /dev/null
+++ b/html/themes/breezy/svg/16/apps/internet-mail.svg
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   id="svg3049"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="internet-mail.svg"
+   inkscape:export-filename="internet-mail.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs3051">
+    <style
+       type="text/css"
+       id="current-color-scheme">
+      .ColorScheme-Text {
+        color:#4d4d4d;
+      }
+      .ColorScheme-Background {
+        color:#eff0f1;
+      }
+      .ColorScheme-Highlight {
+        color:#3daee9;
+      }
+      .ColorScheme-ViewText {
+        color:#31363b;
+      }
+      .ColorScheme-ViewBackground {
+        color:#fcfcfc;
+      }
+      .ColorScheme-ViewHover {
+        color:#93cee9;
+      }
+      .ColorScheme-ViewFocus{
+        color:#3daee9;
+      }
+      .ColorScheme-ButtonText {
+        color:#31363b;
+      }
+      .ColorScheme-ButtonBackground {
+        color:#eff0f1;
+      }
+      .ColorScheme-ButtonHover {
+        color:#93cee9;
+      }
+      .ColorScheme-ButtonFocus{
+        color:#3daee9;
+      }
+      </style>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="24.411306"
+     inkscape:cx="3.4083283"
+     inkscape:cy="7.7717888"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1878"
+     inkscape:window-height="1051"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false"
+     borderlayer="true"
+     inkscape:snap-bbox="true"
+     inkscape:snap-global="false"
+     inkscape:object-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4085" />
+    <sodipodi:guide
+       position="2.0000044,14.00003"
+       orientation="12,0"
+       id="guide4075" />
+    <sodipodi:guide
+       position="2.0000044,2.0000296"
+       orientation="0,12"
+       id="guide4077" />
+    <sodipodi:guide
+       position="14.000004,2.0000296"
+       orientation="-12,0"
+       id="guide4079" />
+    <sodipodi:guide
+       position="14.000004,14.00003"
+       orientation="0,-12"
+       id="guide4081" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3054">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Capa 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-421.71429,-531.79074)">
+    <path
+       style="fill:currentColor;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="M 1 2 L 1 14 L 15 14 L 15 2 L 1 2 z M 2.7070312 3 L 13.292969 3 L 8 8.2929688 L 2.7070312 3 z M 2 3.7070312 L 5.9335938 7.640625 L 2 12.230469 L 2 3.7070312 z M 14 3.7070312 L 14 12.232422 L 10.066406 7.640625 L 14 3.7070312 z M 6.6425781 8.3496094 L 8 9.7070312 L 9.3574219 8.3496094 L 13.341797 13 L 2.65625 13 L 6.6425781 8.3496094 z "
+       transform="translate(421.71429,531.79074)"
+       id="rect4157"
+       class="ColorScheme-Text" />
+  </g>
+</svg>
diff --git a/html/themes/breezy/svg/48/apps/internet-mail.svg b/html/themes/breezy/svg/48/apps/internet-mail.svg
new file mode 100644
index 000000000..803e36835
--- /dev/null
+++ b/html/themes/breezy/svg/48/apps/internet-mail.svg
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   id="svg5453"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="internet-mail.svg"
+   inkscape:export-filename="internet-mail.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs5455">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4143">
+      <stop
+         style="stop-color:#197cf1;stop-opacity:1"
+         offset="0"
+         id="stop4145" />
+      <stop
+         style="stop-color:#20bcfa;stop-opacity:1"
+         offset="1"
+         id="stop4147" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.4285708,0,0,1.4285708,-163.67325,-235.92121)"
+       y2="517.79797"
+       x2="400.57144"
+       y1="545.79797"
+       x1="400.57144"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3028"
+       xlink:href="#linearGradient4303"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4227"
+       inkscape:collect="always">
+      <stop
+         id="stop4229"
+         offset="0"
+         style="stop-color:#292c2f;stop-opacity:1" />
+      <stop
+         id="stop4231"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient4287"
+       x1="409.57144"
+       y1="532.79797"
+       x2="409.57144"
+       y2="512.79797"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4227"
+       id="linearGradient4297"
+       x1="396.57147"
+       y1="510.798"
+       x2="421.57144"
+       y2="535.79797"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-384.57143,-499.798)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4303">
+      <stop
+         style="stop-color:#c6cdd1;stop-opacity:1"
+         offset="0"
+         id="stop4305" />
+      <stop
+         style="stop-color:#e0e5e7;stop-opacity:1"
+         offset="1"
+         id="stop4307" />
+    </linearGradient>
+    <style
+       id="current-color-scheme"
+       type="text/css">
+      .ColorScheme-Text {
+        color:#4d4d4d;
+      }
+      .ColorScheme-Background {
+        color:#eff0f1;
+      }
+      .ColorScheme-Highlight {
+        color:#3daee9;
+      }
+      .ColorScheme-ViewText {
+        color:#31363b;
+      }
+      .ColorScheme-ViewBackground {
+        color:#fcfcfc;
+      }
+      .ColorScheme-ViewHover {
+        color:#93cee9;
+      }
+      .ColorScheme-ViewFocus{
+        color:#3daee9;
+      }
+      .ColorScheme-ButtonText {
+        color:#31363b;
+      }
+      .ColorScheme-ButtonBackground {
+        color:#eff0f1;
+      }
+      .ColorScheme-ButtonHover {
+        color:#93cee9;
+      }
+      .ColorScheme-ButtonFocus{
+        color:#3daee9;
+      }
+      </style>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.999999"
+     inkscape:cx="24.203816"
+     inkscape:cy="15.10496"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1880"
+     inkscape:window-height="1051"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false"
+     borderlayer="true"
+     showguides="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4063" />
+    <sodipodi:guide
+       position="1.1650391e-05,47.999996"
+       orientation="4,0"
+       id="guide4146" />
+    <sodipodi:guide
+       position="1.1650391e-05,43.999996"
+       orientation="0,48"
+       id="guide4148" />
+    <sodipodi:guide
+       position="48.000012,43.999996"
+       orientation="-4,0"
+       id="guide4150" />
+    <sodipodi:guide
+       position="48.000012,47.999996"
+       orientation="0,-48"
+       id="guide4152" />
+    <sodipodi:guide
+       position="1.1650391e-05,4.0000264"
+       orientation="4,0"
+       id="guide4154" />
+    <sodipodi:guide
+       position="1.1650391e-05,2.6367188e-05"
+       orientation="0,48"
+       id="guide4156" />
+    <sodipodi:guide
+       position="48.000012,2.6367188e-05"
+       orientation="-4,0"
+       id="guide4158" />
+    <sodipodi:guide
+       position="48.000012,4.0000264"
+       orientation="0,-48"
+       id="guide4160" />
+    <sodipodi:guide
+       position="48.000012,48.000026"
+       orientation="0,-4"
+       id="guide4162" />
+    <sodipodi:guide
+       position="44.000012,48.000026"
+       orientation="48,0"
+       id="guide4164" />
+    <sodipodi:guide
+       position="44.000012,2.6367188e-05"
+       orientation="0,4"
+       id="guide4166" />
+    <sodipodi:guide
+       position="48.000012,2.6367188e-05"
+       orientation="-48,0"
+       id="guide4168" />
+    <sodipodi:guide
+       position="4.0000422,48.000026"
+       orientation="0,-4"
+       id="guide4170" />
+    <sodipodi:guide
+       position="4.2167969e-05,48.000026"
+       orientation="48,0"
+       id="guide4172" />
+    <sodipodi:guide
+       position="4.2167969e-05,2.6367188e-05"
+       orientation="0,4"
+       id="guide4174" />
+    <sodipodi:guide
+       position="4.0000422,2.6367188e-05"
+       orientation="-48,0"
+       id="guide4176" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5458">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Capa 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-384.57143,-499.798)">
+    <rect
+       style="fill:url(#linearGradient3028);fill-opacity:1.0;stroke:none"
+       id="rect4130-0"
+       width="40"
+       height="40.000019"
+       x="388.57144"
+       y="503.78983"
+       ry="20" />
+    <path
+       style="opacity:0.2;fill:url(#linearGradient4297);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 36 15 L 35 32 L 12 33 L 22.966797 43.966797 C 22.967448 43.96683 22.968099 43.966764 22.96875 43.966797 C 23.310575 43.984012 23.65375 43.992188 24 43.992188 C 35.08 43.992188 44 35.072188 44 23.992188 C 44 23.651171 43.991312 23.311337 43.974609 22.974609 L 36 15 z "
+       transform="translate(384.57143,499.798)"
+       id="path4289" />
+    <path
+       inkscape:connector-curvature="0"
+       style="text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4287);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       d="m 396.57143,514.798 0,18 24,0 0,-18 -24,0 z m 2.12109,1.5 19.75782,0 -9.87891,9.87891 -9.87891,-9.87891 z m -0.62109,1.5 6,6 -6,6 0,-12 z m 21,0 0,12 -6,-6 6,-6 z m -13.93946,7.06055 3.43946,3.43945 3.43946,-3.43945 6.43945,6.43945 -19.75782,0 6.43946,-6.43945 z"
+       id="rect4144"
+       class="ColorScheme-Text" />
+  </g>
+</svg>
diff --git a/html/themes/legacy/icons/16/apps/internet-mail.png b/html/themes/legacy/icons/16/apps/internet-mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..859251fe0fcdbdf20de5040a802825ce977c1a24
GIT binary patch
literal 550
zcmV+>0@?kEP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv00000
z008+zyMF)x010qNS#tmY3labT3lag+-G2N4000McNliru)dmI(7dGcFWh(#x0kcU&
zK~y-)#gjou6k!;KpIJutcW@Wiv8{ur>R4zO-SE_shK7L#K^bOYL`2|4i#%^^+d&Zo
zk&sSy=pcw4>ZZxwY}*bA=G8P<t3P7?9dl<qsDp!}5D0$9_xs-Ge}6tcIPTJd#B?TA
z599(`7oH9bem<0#&ZO$onUot;=}gMqfd?npefdfMGnN+f{Fahp(dOs+FaG?Mbl<tp
zi<i%RNwkB^xqO~@{1jDHF*GfNQZ}ksB$-V5Ao`vFx!bq8`S5;*<>ha*v|J@tT}?%W
zfngW`WV2bOr`~d}r<aM>uX2F47l3KjU|BXjcOQ7B-6|9cn5Kyc>qH_^Pxk?Y5HvP6
z@NQ<BOUcUsSeAuS3Z)c_U%$|Ptpg!MFaY30JWk?bf;W?soIP_Ifby`;%E}KquXmz{
z{F~Q<RvC>%F=Lf9UupKV(UBp_bq(9L5mb75XrJ44nVXyC#?3BIa!Q*#eDs))^YbWW
z`NsDFJ}oTJ+SbPAhK=hul>Tj?q2ZJq>dv3z`|8@kUyxGLkZ9U&=waVr86b=ZH79G4
oQU(Hs$Hqtd{^O2@kK`J+0Q~)|WKOu)r~m)}07*qoM6N<$g3M6(EC2ui

literal 0
HcmV?d00001

diff --git a/html/themes/legacy/icons/48/apps/internet-mail.png b/html/themes/legacy/icons/48/apps/internet-mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f4df1620e816f91972f76237aa44fda7908a227
GIT binary patch
literal 2397
zcmV-j38MCiP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000ie000ie0hKEb8vp<Z|4BqaRA_<in%Qq$)g8w__s-^-u|1yg
zc)TT(jK>T13?6KO!9i`Lf)El*n-Bt}l~DUoRTPOLRq8|khV%(37z9d#(yB#5YDM1?
z;v|kp05w2>CM8Zty~LS#nSH(Yo<7Wy@%YYorD`R9($T#>>-Tfc`JH91;s4yEovv_V
z;uof+C08>5F^K8pnVz1Gy!-CE>Q1z`qX5T`z4f!an*Xhm%Q=N6PysZ75CTnrKwyxO
zG))W32IDVZe)-o^+ii140FE4a)!N!}&-<a#`}YqG1q}v+0RSPyn!Kv2qN*x?fB$cp
zTk~^ozw+vDezl#pw+(RQ$Prh&$2s-nQwIj^_C}J)B#NRSgeV71(^ma$wOVOxY~){8
zuc+syCf|GMrB@DbwSB{O#2-C+w7bz}`sed6yy%r>nM5Lis;aBR>Vf2PIg-gF-QBxn
zuXpcIdz<UP$y29a|E~fZf8z~bgUx*D`4?VvWilBunM_ULdJvkXkw_$HX=#yy_lDYA
zUCjqiZ2@9S0B^s2w9jI-T|9L7$F1pfnp`foA@O=sDw#~u+}tb$g2SFxSM!ffeK0xk
ztpc1lal&b}m@XZ7<~esNmD;p;J&;5qfy3dD0)b$Ai=*+$)01c4{8j)aCVt=9XtRI%
z<kQb|Y^CSxfyCo+9F7)gXeiL(X>*R9`e5>pI|?u{F<~+pOg9c4e!-K^=Sip2J0iXs
zqP4YE>gwwDcXqb-pFVx&y&VI1=HOHRKK$HIJ&K}`OeS@g$DM$PMx*rf_+_KPIMD0&
znNLriIlXOwcaFdLkEeh5Y`@WHBp#2~b;_Lxu~-bhzt@;fr$+nxduGm_J^%TZ0gnIS
z&A&eO*c0DxYHF5NR#w(sRdymMih`mj^z`^G;oA%Q`}%q&FI@O&ZqooK-g)bHV`C5h
zynEMf)15naHnlu%G^nadB9UNWVS!jIhN37~EEclaEEbD}-rj!O_3P7*heG$ge&NCe
zWy1i+j=d4s)$KhNyf<W9US6)d!)_KNo6WMcw8YHJ3}&+#zu(Wu$OwTzfOtGkHk(D3
zWm2gW4u=Duug5Wc?dsT>Gw0sfFu>tw4^I8y(Z@TJ$t2lqcFRs#niBDNoVmF<VzC$<
z9UTONK}JVM@%el-Hy2Ldnx^4)yZPdaFR<I~0L0^Qy1KeR;N9KTarOL%7rw02Y19+{
z+G|I8J?)*YQZH;pcqWq}5{a<9yo}fDrLV7#@$qqtMq^p5qA06I3&3Kr(B9sTq9~M3
zwc&7>`$k4hQ|HhA1o+Fk002VMFq_Tf)jTrtx}x*>Jc&eta5#+3X2b9I69@#b*=&XS
zieR~14pmjlag|SiY&OgA@GvJ&o}{g<4Iu<BmkSV}2~)MsngA5*^te6ToViJZxnYg-
zrPFCvR#r$P5_r8{1_lNgA0J1S<+3nEQOb9KYO#6%s;XkQ+i^ObsH%#?;lO6IkxC{J
z(%R#H?GY#vm`o<zZa24X-NGmr_JMFXjMM4F=kpN^25D$$D3`13<;tm{C$?5vI-MpI
z3UTq`MFs{23iTAyHv@3D5l54QXe>%(B|;z&VBfxdNRm`euk2+#(e=dY#bvWuW@l#^
z92{JgN7A`~)t*AEZeVxUZlbX$mIey|`FtK#RZ$dWT|t`#xN+kK4u=D?*<6)xGXUal
z<)uo7`iD4k{tSbCgSeco9T8idHZwDWBuThju2pFubT7biJ%H+!24HMtj88uMgh(`k
zrfF+}s;av28%dj=pC^$>uxHPnRe%*BTl0a+r_pF+Y-Eh7kEYmn|30h@R{ioql>MYK
zuKK<7TwGiv91ar-g=*vjX;V|EMneG2P0fUcLY%vJjt55`#B4IJa%xGEY64WJ2_c9^
zqs-3E5)1~*>3Yz5Ru`aZ_*T7lws+!-`uO;>j|trq!elb75vf;Sby_NwVt#%epU;QI
zVyWvldJ}%bBT)SgFxWT9N@Ru0S1&W*8z}dx9zbQ!S1y;~aG18XHr#G^&9?52)}~gW
zwLPH+^uT=&F!|vm*KS_J)9PXN_AGfNU$fdm!GbTfSX;2$?d;vVx9(_{J7zN*Sv}E}
z?*@Z`hejXb+{JTzGye_#y?*?A{6(FmwHP!}IN&8yNz&;wbGPS6WE1rC_SCI^b==xH
zv>_j;H;sf4%q`3z8)Y7S_)$7M9pxKUX@@So8*N4!ZH)*a@OFFo`o`B>`tlOPgTu78
zw5|)F32hBQO#qG6$6URNRaNEkmCKmSCJsGu2$RV~G#Vw7$<!=UX??yvS{yBW_4QZu
z`}*;;dUQLe9H+C9ZD=Rf6O+ki`25P}3=a<D-Q^{h%dxn)SUz>?iPi&hJKc;1N4awC
z3i*7VuJ*2)OQ+shsP<0G+MT!*BC!b9XRh<e_a0$)_ikdb7^Q1xWx0BFRHj)iR)+5x
zCY4EXbN*%>J<`SilF6h2^c$SNJ&$aV*+0G?qru4H;^KyHZS{a;S;p`6W3$+5LWqJ7
ztb))3uuV^Y)1;{dhbc9nX&Se}x9Iit;@|5hkw~z(xVYw9z-C12ncL;Y<0>r2)p<0b
z836}iF2z;*fEBQ>tSsAAA*516ilUI$@(c%t(KL;vr6uzD{JN`Ct+e&b+F+&A+{sd8
z38%w}EX#!rP}7V+BZW~AK)w>d2s8lJWHM!?2$0L?FquuXwX~5+rOLm|ttWJ|qN~jy
z8*n?_B-2R@a^Z5XX_|pTC#yiN8bGG-GmBACRHG>FdM2X@8JS2VqI*EAWgE@6o;BH<
z?oK--88DS}0#YS_C<YB6ol2>SqR`mbsJkDm_pBASRa;qE0)$l5SJEmf0Tdt)<nG*A
zUWi4b3xEF8aWqwx1fU6l&;&vhKM@I0I4%hdO=yL*(#oY4f4L}um-Cm(7adzGmPLR{
zF@I?TrJP?Y){)KTJ_WKArcVymZVV+Su~C?74aGQ#ZGI5khN%>KJqKif6p$<i-OsEt
z1po_$<?4R{K&3E4vJ@aPrNnxkCQ$$|6vK}HTfzoSp}1rg-@mi(Y$xqMC5=cH3el8)
P00000NkvXXu0mjf{+FC7

literal 0
HcmV?d00001

diff --git a/html/themes/legacy/svg/internet-mail.svg b/html/themes/legacy/svg/internet-mail.svg
new file mode 100644
index 000000000..8d5ea8cd3
--- /dev/null
+++ b/html/themes/legacy/svg/internet-mail.svg
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="internet-mail.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
+   inkscape:version="0.46"
+   sodipodi:version="0.32"
+   id="svg5816"
+   height="48px"
+   width="48px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective73" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient28260">
+      <stop
+         style="stop-color:#9aa29a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop28262" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop28264" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient28254">
+      <stop
+         id="stop28256"
+         offset="0.0000000"
+         style="stop-color:#9aa29a;stop-opacity:1.0000000;" />
+      <stop
+         id="stop28258"
+         offset="1.0000000"
+         style="stop-color:none" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2274">
+      <stop
+         style="stop-color:#000000;stop-opacity:0.12871288;"
+         offset="0.0000000"
+         id="stop2276" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0.0000000;"
+         offset="1.0000000"
+         id="stop2278" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient9749">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop9751" />
+      <stop
+         style="stop-color:#ededed;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop9753" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2152">
+      <stop
+         style="stop-color:#9aa29a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2154" />
+      <stop
+         style="stop-color:#b5beb5;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2156" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2166">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2168" />
+      <stop
+         style="stop-color:#dcdcdc;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2170" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient18913">
+      <stop
+         style="stop-color:#ededed;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop18915" />
+      <stop
+         style="stop-color:#c8c8c8;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop18917" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2136">
+      <stop
+         style="stop-color:#989690;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2138" />
+      <stop
+         style="stop-color:#656460;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2140" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15107">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop15109" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop15111" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10691"
+       inkscape:collect="always">
+      <stop
+         id="stop10693"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop10695"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       r="7.2284161"
+       fy="73.615714"
+       fx="6.7027131"
+       cy="73.615714"
+       cx="6.7027131"
+       gradientTransform="scale(1.902215,0.525703)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient11382"
+       xlink:href="#linearGradient10691"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="32.203162"
+       x2="9.7619219"
+       y1="37.784682"
+       x1="8.7803760"
+       gradientTransform="matrix(2.394900,0.000000,0.000000,0.781058,2.879512,0.343005)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27463"
+       xlink:href="#linearGradient2274"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="24.132717"
+       x2="21.111549"
+       y1="13.686079"
+       x1="11.233107"
+       gradientTransform="matrix(1.370928,0.000000,0.000000,1.443758,2.431133,-0.140786)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27468"
+       xlink:href="#linearGradient9749"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="52.090678"
+       x2="9.8855033"
+       y1="37.197018"
+       x1="8.9156475"
+       gradientTransform="matrix(2.454781,0.000000,0.000000,0.762004,2.879512,0.343005)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27471"
+       xlink:href="#linearGradient2152"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="52.090678"
+       x2="9.8855033"
+       y1="37.197018"
+       x1="8.9156475"
+       gradientTransform="matrix(2.454781,0.000000,0.000000,0.762004,2.879512,0.343005)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27474"
+       xlink:href="#linearGradient2152"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="29.568739"
+       x2="15.310744"
+       y1="15.148383"
+       x1="10.184240"
+       gradientTransform="matrix(1.819266,0.000000,0.000000,1.028193,2.879512,0.343005)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27477"
+       xlink:href="#linearGradient2166"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="17.876846"
+       x2="13.467486"
+       y1="7.2310905"
+       x1="5.8266134"
+       gradientTransform="matrix(1.570607,0.000000,0.000000,1.190976,2.879512,0.343005)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27483"
+       xlink:href="#linearGradient18913"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="26.022910"
+       x2="18.475286"
+       y1="4.7461626"
+       x1="11.572842"
+       gradientTransform="matrix(1.343475,0.000000,0.000000,1.417854,2.879511,0.314599)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27486"
+       xlink:href="#linearGradient15107"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="15.257116"
+       x2="30.599684"
+       y1="15.257116"
+       x1="2.0618774"
+       gradientTransform="matrix(1.343475,0.000000,0.000000,1.417854,2.879511,0.314599)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient27488"
+       xlink:href="#linearGradient2136"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="105"
+     inkscape:window-x="331"
+     inkscape:window-height="743"
+     inkscape:window-width="872"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="18.816166"
+     inkscape:cx="28.384904"
+     inkscape:zoom="1"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Mail</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mail</rdf:li>
+            <rdf:li>e-mail</rdf:li>
+            <rdf:li>MUA</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1">
+    <g
+       transform="matrix(2.269972e-2,0,0,2.297929e-2,44.98918,37.78447)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <path
+       style="fill:url(#linearGradient27486);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient27488);stroke-width:0.85660440;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 6.3334395,16.972251 L 6.3334395,41.481799 L 43.305555,41.481799 L 43.244499,17.089859 C 43.241050,15.712272 31.395999,2.4121110 29.210877,2.4121110 L 20.659391,2.4121110 C 18.362072,2.4121110 6.3334395,15.673953 6.3334395,16.972251 z "
+       id="path12723"
+       sodipodi:nodetypes="ccczzzz" />
+    <path
+       style="fill:url(#linearGradient27483);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+       d="M 6.9230610,16.787103 C 6.5250222,16.356975 18.809966,3.0935378 20.667210,3.0935378 L 29.042965,3.0935378 C 30.790449,3.0935378 43.079567,16.221603 42.470079,16.978956 L 31.608858,30.475150 L 19.295373,30.156846 L 6.9230610,16.787103 z "
+       id="path18153"
+       sodipodi:nodetypes="czzzccz" />
+    <path
+       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 19.077530,30.017590 L 11.744526,21.271586 L 36.562951,14.335513 L 39.592221,20.551966 L 32.175956,29.992298"
+       id="path2164"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 18.291767,29.836259 L 10.809167,21.026146 L 35.456637,14.132812 L 38.630714,20.403811 L 31.390193,29.810968"
+       id="path2162"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#000000;fill-opacity:0.14619882;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 18.775313,29.957146 L 11.100386,21.296624 L 36.068405,14.232329 L 39.354114,20.824726 L 31.873739,29.931855"
+       id="path2160"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:url(#linearGradient27477);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 18.593984,30.440693 L 11.260975,21.694689 L 35.972554,14.801355 L 39.083369,21.188770 L 31.963198,30.174701"
+       id="path15105"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:url(#linearGradient27474);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 20.488434,29.064331 L 7.0924698,40.036319 L 21.001312,30.432013 L 30.019470,30.432013 L 42.438517,39.914206 L 30.575092,29.064331 L 20.488434,29.064331 z "
+       id="path14245"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="color:#000000;fill:url(#linearGradient27471);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       d="M 6.9634751,16.885144 L 18.479648,31.201334 L 19.548151,30.346532 L 6.9634751,16.885144 z "
+       id="path14339"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient27468);stroke-width:0.85660428;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 7.3077115,17.131415 L 7.3388644,40.342421 L 42.283659,40.342421 L 42.221353,17.257512 C 42.219329,16.508413 31.005032,3.4591863 28.837233,3.4591863 L 20.941579,3.4591863 C 18.689313,3.4591863 7.3066655,16.351067 7.3077115,17.131415 z "
+       id="path15103"
+       sodipodi:nodetypes="ccczzzz" />
+    <path
+       style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       d="M 20.957271,30.452732 L 9.0157722,38.723588 L 11.235205,38.729695 L 21.233330,31.860755 L 30.055238,30.437917 L 20.957271,30.452732 z "
+       id="path17393"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+       d="M 11.427536,21.670296 L 12.752479,23.080719 L 35.543311,16.196529 L 38.458445,21.878896 L 39.072496,21.166981 L 36.003081,14.789145 L 11.427536,21.670296 z "
+       id="path2174"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:url(#linearGradient27463);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+       d="M 13.308098,23.636340 L 19.334450,30.090093 L 20.531174,29.064331 L 30.617831,29.107071 L 31.429893,29.833651 L 35.404721,25.089502 C 34.250740,23.679081 13.308098,23.636340 13.308098,23.636340 z "
+       id="path2272"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path27492"
+       d="M 41.812936,17.847945 L 31.861315,30.479232 L 30.792812,29.624431 L 41.812936,17.847945 z "
+       style="color:#000000;fill:#b1b1b1;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
-- 
GitLab


From 4886c5f757b779be26ae1d83927228cfc2976898 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 29 Aug 2019 11:54:58 +0200
Subject: [PATCH 018/117] :ambulance: fix(core) Fix
 simpleManagement::getTabFooter name

issue #5974
---
 include/simpleplugin/class_simpleManagement.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index 9ef5549d5..b372dbfe3 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -632,7 +632,7 @@ class simpleManagement
   /*!
    * \brief  Generates the footer which is used whenever a tab object is displayed.
    */
-  protected function _getTabFooter()
+  protected function getTabFooter()
   {
     // Do not display tab footer for non tab objects
     if (!($this->tabObject instanceOf simpleTabs)) {
-- 
GitLab


From 7bad7fbb92ed40b7c02d6c75d63ccdc9881d6af9 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@opensides.be>
Date: Tue, 1 Oct 2019 17:53:43 +0200
Subject: [PATCH 019/117] :ambulance: fix(documentation) correct the get help
 section in the readme.md

Signed-off-by: Benoit Mortier <benoit.mortier@opensides.be>
---
 README.md | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index e3950c91c..0c6804e07 100644
--- a/README.md
+++ b/README.md
@@ -62,8 +62,14 @@ Be aware that if your naming policy of user cn's differs from the way FusionDire
 
 ## Get help
 
+### Community support
+
 There are a couple ways you can try [to get help][get help].You can also join the `#fusiondirectory` IRC channel at freenode.net.
 
+### Professional support
+
+If you need professional support you can [get support][get support] and chose one of the options available. 
+
 You can [register on our system][register] and enter issues [FusionDirectory][issues-core] for the core program, and 
 [FusionDirectory Plugins][issues-plugins] for plugins.
 
@@ -89,7 +95,9 @@ If you like [FusionDirectory][FusionDirectory] and would like to [donate][donate
 
 [fusiondirectory-install]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/install/index.html
 
-[get help]: https://www.fusiondirectory.org/contact-us/
+[get help]: https://www.fusiondirectory.org/en/communaute/
+
+[get support]: https://www.fusiondirectory.org/en/support/
 
 [register]: https://register.fusiondirectory.org
 
-- 
GitLab


From 0895c4216d2e7632688d9f247e1110f87e212d36 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@opensides.be>
Date: Mon, 7 Oct 2019 22:15:00 +0200
Subject: [PATCH 020/117] :handshake: fix(locales) updating the locales for
 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@opensides.be>
---
 locale/af_ZA/fusiondirectory.po       | 35 +++++++++------------
 locale/ar/fusiondirectory.po          | 35 +++++++++------------
 locale/ca/fusiondirectory.po          | 35 +++++++++------------
 locale/cs_CZ/fusiondirectory.po       | 36 +++++++++------------
 locale/de/fusiondirectory.po          | 37 +++++++++-------------
 locale/el_GR/fusiondirectory.po       | 35 +++++++++------------
 locale/es/fusiondirectory.po          | 36 +++++++++------------
 locale/es_CO/fusiondirectory.po       | 35 +++++++++------------
 locale/es_VE/fusiondirectory.po       | 36 +++++++++------------
 locale/fa_IR/fusiondirectory.po       | 35 +++++++++------------
 locale/fi_FI/fusiondirectory.po       | 35 +++++++++------------
 locale/fr/fusiondirectory.po          | 41 ++++++++++--------------
 locale/hu_HU/fusiondirectory.po       | 35 +++++++++------------
 locale/id/fusiondirectory.po          | 35 +++++++++------------
 locale/it_IT/fusiondirectory.po       | 45 +++++++++++----------------
 locale/ja/fusiondirectory.po          | 35 +++++++++------------
 locale/ko/fusiondirectory.po          | 35 +++++++++------------
 locale/lv/fusiondirectory.po          | 35 +++++++++------------
 locale/nb/fusiondirectory.po          | 35 +++++++++------------
 locale/nl/fusiondirectory.po          | 38 +++++++++-------------
 locale/pl/fusiondirectory.po          | 35 +++++++++------------
 locale/pt/fusiondirectory.po          | 35 +++++++++------------
 locale/pt_BR/fusiondirectory.po       | 35 +++++++++------------
 locale/ru/fusiondirectory.po          | 37 +++++++++-------------
 locale/ru@petr1708/fusiondirectory.po | 35 +++++++++------------
 locale/sv/fusiondirectory.po          | 35 +++++++++------------
 locale/tr_TR/fusiondirectory.po       | 35 +++++++++------------
 locale/ug/fusiondirectory.po          | 35 +++++++++------------
 locale/vi_VN/fusiondirectory.po       | 35 +++++++++------------
 locale/zh/fusiondirectory.po          | 35 +++++++++------------
 locale/zh_TW/fusiondirectory.po       | 35 +++++++++------------
 31 files changed, 442 insertions(+), 669 deletions(-)

diff --git a/locale/af_ZA/fusiondirectory.po b/locale/af_ZA/fusiondirectory.po
index 5883c922a..a0da27dee 100644
--- a/locale/af_ZA/fusiondirectory.po
+++ b/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/ar/fusiondirectory.po b/locale/ar/fusiondirectory.po
index 56f66100f..96f6b4f98 100644
--- a/locale/ar/fusiondirectory.po
+++ b/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "خطأ داخلي"
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/ca/fusiondirectory.po b/locale/ca/fusiondirectory.po
index 418f92a48..6a7caeea7 100644
--- a/locale/ca/fusiondirectory.po
+++ b/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -347,9 +347,7 @@ msgstr "Nom de la plantilla"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -647,12 +645,12 @@ msgstr "Entrada"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1682,23 +1680,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1744,11 +1742,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/cs_CZ/fusiondirectory.po b/locale/cs_CZ/fusiondirectory.po
index 65ec46ab7..1a8a11bd1 100644
--- a/locale/cs_CZ/fusiondirectory.po
+++ b/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -356,9 +356,7 @@ msgstr "Název šablony"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Vnitřní chyba"
 
@@ -686,12 +684,12 @@ msgstr "uživatelské jméno"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Oprávnění"
@@ -1747,23 +1745,23 @@ msgstr "chyba filtru"
 msgid "The filter is incomplete!"
 msgstr "Tento filtr je neúplný!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Chyba oprávnění"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Nejste oprávněn(a) vytvořit snímek %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Nejste oprávněn(a) obnovit ze snímku %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr "Nemáte oprávnění pro smazání zachyceného stavu pro %s."
@@ -1811,12 +1809,6 @@ msgstr "Neznámá položka „%s“!"
 msgid "All users"
 msgstr "Všichni uživatelé"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Požadovaný kanál neexistuje! Prosím kontaktujte svého správce systémů."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Varování ohledně výkonnosti"
diff --git a/locale/de/fusiondirectory.po b/locale/de/fusiondirectory.po
index 2efd63208..3e89d3059 100644
--- a/locale/de/fusiondirectory.po
+++ b/locale/de/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -352,9 +352,7 @@ msgstr "Name der Vorlage"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Interner Fehler"
 
@@ -670,12 +668,12 @@ msgstr "Kennung"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Berechtigung"
@@ -1717,23 +1715,23 @@ msgstr "Filter Fehler"
 msgid "The filter is incomplete!"
 msgstr "Der Filter ist unvollständig!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Berechtigungsfehler"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Ihnen ist es nicht erlaubt, einen Snapshot für %s zu erstellen."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Ihnen ist es nicht erlaubt, einen Snapshot für %s wiederherzustellen."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1779,13 +1777,6 @@ msgstr "Unbekannter Eintrag '%s'!"
 msgid "All users"
 msgstr "Alle Benutzer"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Der angeforderte Kanal existiert nicht! Bitte benachrichtigen Sie Ihren "
-"Administrator."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Leistungswarnung"
diff --git a/locale/el_GR/fusiondirectory.po b/locale/el_GR/fusiondirectory.po
index 09f8e611b..1a2356fd7 100644
--- a/locale/el_GR/fusiondirectory.po
+++ b/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -348,9 +348,7 @@ msgstr "Όνομα προτύπου"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Εσωτερικό σφάλμα"
 
@@ -658,12 +656,12 @@ msgstr "Σύνδεση"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Άδεια"
@@ -1691,23 +1689,23 @@ msgstr "Σφάλμα φίλτρου"
 msgid "The filter is incomplete!"
 msgstr "Το φίλτρο δεν είναι ολοκληρωμένο! "
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Σφάλμα δικαιωμάτων"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Δεν επιτρέπεται να δημιουργήσετε ένα στιγμιότυπο για  %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Δεν επιτρέπεται να επαναφέρετε ένα στιγμιότυπο για  %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1753,11 +1751,6 @@ msgstr ""
 msgid "All users"
 msgstr "Όλοι οι χρήστες"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/es/fusiondirectory.po b/locale/es/fusiondirectory.po
index 655baa40a..59df13947 100644
--- a/locale/es/fusiondirectory.po
+++ b/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -350,9 +350,7 @@ msgstr "Nombre de la plantilla"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "error interno"
 
@@ -667,12 +665,12 @@ msgstr "Inicio"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Permisos"
@@ -1713,23 +1711,23 @@ msgstr "Error del filtro"
 msgid "The filter is incomplete!"
 msgstr "¡El filtro está incompleto!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Error de permisos"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "No tiene permisos para crear una instantanea para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "No tiene permisos para recuperar una instantanea para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1775,12 +1773,6 @@ msgstr "¡Entrada desconocida '%s'!"
 msgid "All users"
 msgstr "Todos los usuarios"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"¡El canal requerido no existe!. Por favor  contacte con su Administrador."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Aviso e rendimiento"
diff --git a/locale/es_CO/fusiondirectory.po b/locale/es_CO/fusiondirectory.po
index 394cf2c21..0c53a5d78 100644
--- a/locale/es_CO/fusiondirectory.po
+++ b/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -349,9 +349,7 @@ msgstr "Nombre de la plantilla"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Error Interno"
 
@@ -671,12 +669,12 @@ msgstr "Usuario"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Permisos"
@@ -1716,23 +1714,23 @@ msgstr "Error al filtrar"
 msgid "The filter is incomplete!"
 msgstr "¡El filtro está incompleto!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Error de permisos"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Usted no tiene permitido crear un 'snashot' para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Usted no está autorizado para restaurar un 'snapshot' para %s"
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1780,11 +1778,6 @@ msgstr "¡Entrada desconocida '%s'!"
 msgid "All users"
 msgstr "Todos los usuarios"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr "El canal requerido no existe. Por favor contacte a su administrador."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Advertencia de Rendmiento"
diff --git a/locale/es_VE/fusiondirectory.po b/locale/es_VE/fusiondirectory.po
index bb5738522..7bfc6a606 100644
--- a/locale/es_VE/fusiondirectory.po
+++ b/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -350,9 +350,7 @@ msgstr "Nombre de la plantilla"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "error interno"
 
@@ -667,12 +665,12 @@ msgstr "Inicio"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Permisos"
@@ -1713,23 +1711,23 @@ msgstr "Error del filtro"
 msgid "The filter is incomplete!"
 msgstr "¡El filtro está incompleto!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Error de permisos"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "No tiene permisos para crear una instantanea para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "No tiene permisos para recuperar una instantanea para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1775,12 +1773,6 @@ msgstr "¡Entrada desconocida '%s'!"
 msgid "All users"
 msgstr "Todos los usuarios"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"¡El canal requerido no existe!. Por favor  contacte con su Administrador."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Aviso e rendimiento"
diff --git a/locale/fa_IR/fusiondirectory.po b/locale/fa_IR/fusiondirectory.po
index dcde0afc3..3be0ed5e6 100644
--- a/locale/fa_IR/fusiondirectory.po
+++ b/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "خطای داخلی"
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "جواز"
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/fi_FI/fusiondirectory.po b/locale/fi_FI/fusiondirectory.po
index 33adce2c7..38e260e8c 100644
--- a/locale/fi_FI/fusiondirectory.po
+++ b/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Virhe"
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Lupa"
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/fr/fusiondirectory.po b/locale/fr/fusiondirectory.po
index 7e44beac4..383efa96c 100644
--- a/locale/fr/fusiondirectory.po
+++ b/locale/fr/fusiondirectory.po
@@ -6,16 +6,16 @@
 # Translators:
 # MCMic, 2018
 # fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@opensides.be>, 2019
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@opensides.be>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -362,9 +362,7 @@ msgstr "Nom du modèle"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Erreur interne"
 
@@ -695,12 +693,12 @@ msgstr "Identifiant"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Permissions"
@@ -1766,23 +1764,23 @@ msgstr "Erreur de filtre"
 msgid "The filter is incomplete!"
 msgstr "Le filtre est incomplet !"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Erreur de permissions"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Vous n'êtes pas autorisé à créer un nouvel instantané pour %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Vous n'êtes pas autorisé à restaurer un instantané de %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr "Vous n'êtes pas autorisé à supprimer l'instantané pour %s."
@@ -1830,13 +1828,6 @@ msgstr "Entrée inconnue '%s' !"
 msgid "All users"
 msgstr "Tous les utilisateurs"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Le canal demandé n'existe pas ! Veuillez contacter votre administrateur "
-"système."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Avertissement de performance"
diff --git a/locale/hu_HU/fusiondirectory.po b/locale/hu_HU/fusiondirectory.po
index bb368343d..37afe2cee 100644
--- a/locale/hu_HU/fusiondirectory.po
+++ b/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/id/fusiondirectory.po b/locale/id/fusiondirectory.po
index bf5cfef6d..b9a4da1a9 100644
--- a/locale/id/fusiondirectory.po
+++ b/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/it_IT/fusiondirectory.po b/locale/it_IT/fusiondirectory.po
index 6d6d0252b..b59f5a3a9 100644
--- a/locale/it_IT/fusiondirectory.po
+++ b/locale/it_IT/fusiondirectory.po
@@ -6,15 +6,16 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
 # Paola Penati <paola.penati@opensides.be>, 2019
+# Paola PENATI <paola.penati@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Paola Penati <paola.penati@opensides.be>, 2019\n"
+"Last-Translator: Paola PENATI <paola.penati@fusiondirectory.org>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -362,9 +363,7 @@ msgstr "Nome del modello"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Errore interno"
 
@@ -691,12 +690,12 @@ msgstr "Nome utente"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Autorizzazioni"
@@ -1447,7 +1446,7 @@ msgstr "L'attributo %s è disabilitato, il suo valore non può essere impostato"
 #: include/simpleplugin/attributes/class_FileAttribute.inc:107
 #, php-format
 msgid "Invalid base64 data for attribute %s"
-msgstr ""
+msgstr "Dati base64 non validi per l'attributo %s"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:165
 #: include/simpleplugin/attributes/class_FileAttribute.inc:418
@@ -1463,7 +1462,7 @@ msgstr "Scarica"
 #: include/simpleplugin/attributes/class_FileAttribute.inc:368
 #, php-format
 msgid "Cannot set \"%s\" value, it contains invalid data: %s"
-msgstr ""
+msgstr "Impossibile impostare il valore \"%s\", contiene dati non validi : %s"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:378
 msgid ""
@@ -1476,7 +1475,7 @@ msgstr ""
 #: include/simpleplugin/attributes/class_FileAttribute.inc:395
 #, php-format
 msgid "Invalid data, Imagick error: \"%s\""
-msgstr ""
+msgstr "Dati non validi, errore Imagick: \"%s\""
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:428
 #: include/simpleplugin/attributes/class_FileAttribute.inc:429
@@ -1758,23 +1757,23 @@ msgstr "Errore di filtro"
 msgid "The filter is incomplete!"
 msgstr "Il filtro non è completo!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Errore d'autorizzazione"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Non sei autorizzato a creare una 'copia instantanea' di %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Non sei autorizzato a restaurare una 'copia instantanea' di %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr "Non sei autorizzato a eliminare uno snapshot per 1%s."
@@ -1823,12 +1822,6 @@ msgstr "Voce '%s' sconosciuta !"
 msgid "All users"
 msgstr "Tutti gli utenti"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Il canale richiesto non esiste! Contatta l'amministratore del sistema."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Avvertimento sul rendimento"
diff --git a/locale/ja/fusiondirectory.po b/locale/ja/fusiondirectory.po
index 8f9b1498e..a3f17f5da 100644
--- a/locale/ja/fusiondirectory.po
+++ b/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/ko/fusiondirectory.po b/locale/ko/fusiondirectory.po
index f7653f6fc..8b38890e3 100644
--- a/locale/ko/fusiondirectory.po
+++ b/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "í—ˆ"
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "권한 오류"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/lv/fusiondirectory.po b/locale/lv/fusiondirectory.po
index cca015c88..8fe55afc5 100644
--- a/locale/lv/fusiondirectory.po
+++ b/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Iekšējā kļūda"
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Atļauja"
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/nb/fusiondirectory.po b/locale/nb/fusiondirectory.po
index 5936fe34b..747979c50 100644
--- a/locale/nb/fusiondirectory.po
+++ b/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -647,12 +645,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/nl/fusiondirectory.po b/locale/nl/fusiondirectory.po
index ccc238298..f2b2eeb0b 100644
--- a/locale/nl/fusiondirectory.po
+++ b/locale/nl/fusiondirectory.po
@@ -4,7 +4,7 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Benoit Mortier <benoit.mortier@opensides.be>, 2018
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
 # fusiondirectory <contact@fusiondirectory.org>, 2018
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018
 # 
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -358,9 +358,7 @@ msgstr "Sjabloon naam"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Interne fout"
 
@@ -690,12 +688,12 @@ msgstr "Login"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Rechten"
@@ -1750,23 +1748,23 @@ msgstr "Filterfout"
 msgid "The filter is incomplete!"
 msgstr "Deze filter is niet compleet!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Toestemmingsfout"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "U heeft geen toestemming om een snapshot te maken voor %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "U heeft geen toestemming om een snapshot te herstellen voor %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr "Je hebt geen toelating om een snapshot te verwijderen voor %s.  "
@@ -1814,12 +1812,6 @@ msgstr "Onbekende invoer '%s'!"
 msgid "All users"
 msgstr "Alle gebruikers"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Gevraagde kanaal bestaat niet! Gelieve je Systeembeheerder te contacteren."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Performantiewaarschuwing"
diff --git a/locale/pl/fusiondirectory.po b/locale/pl/fusiondirectory.po
index 7e80071a3..1f091badf 100644
--- a/locale/pl/fusiondirectory.po
+++ b/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -347,9 +347,7 @@ msgstr "Nazwa Szablonu"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Błąd wewnętrzny"
 
@@ -649,12 +647,12 @@ msgstr "Login"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Uprawnienie"
@@ -1682,23 +1680,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1744,11 +1742,6 @@ msgstr "Nieznany wpis  '%s'!"
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Ostrzeżenie wydajności"
diff --git a/locale/pt/fusiondirectory.po b/locale/pt/fusiondirectory.po
index 1efa6c057..e210da7b6 100644
--- a/locale/pt/fusiondirectory.po
+++ b/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -349,9 +349,7 @@ msgstr "Nome modelo"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Erro interno"
 
@@ -649,12 +647,12 @@ msgstr "Login"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1682,23 +1680,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1744,11 +1742,6 @@ msgstr "Entrada desconhecida '%s'!"
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Alerta de performance"
diff --git a/locale/pt_BR/fusiondirectory.po b/locale/pt_BR/fusiondirectory.po
index 554c733f2..f084330b1 100644
--- a/locale/pt_BR/fusiondirectory.po
+++ b/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -347,9 +347,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Erro interno"
 
@@ -651,12 +649,12 @@ msgstr "Login"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Permissão"
@@ -1684,23 +1682,23 @@ msgstr "Erro no filtro"
 msgid "The filter is incomplete!"
 msgstr "O filtro está incompleto!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Erro de permissão"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Você não tem permissões para criar um snapshot para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Você não tem permissões para restaurar um snapshot para %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1746,11 +1744,6 @@ msgstr ""
 msgid "All users"
 msgstr "Todos os usuários"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/ru/fusiondirectory.po b/locale/ru/fusiondirectory.po
index f14fce425..104862d96 100644
--- a/locale/ru/fusiondirectory.po
+++ b/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -350,9 +350,7 @@ msgstr "Название шаблона"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Внутренняя ошибка"
 
@@ -665,12 +663,12 @@ msgstr "Имя пользователя"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Права"
@@ -1710,23 +1708,23 @@ msgstr "Ошибка фильтра"
 msgid "The filter is incomplete!"
 msgstr "Фильтр неполный!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Ошибка доступа"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Вам не разрешено создавать снапшот для %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Вам не разрешено восстанавливать снапшот для %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1774,13 +1772,6 @@ msgstr "Неизвестная запись '%s'!"
 msgid "All users"
 msgstr "Все пользователи"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-"Запрашиваемый канал не существует! Пожалуйста свяжитесь с вашим системным "
-"администратором."
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Предупреждение о производительности"
diff --git a/locale/ru@petr1708/fusiondirectory.po b/locale/ru@petr1708/fusiondirectory.po
index 6623803ba..f2de75478 100644
--- a/locale/ru@petr1708/fusiondirectory.po
+++ b/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/sv/fusiondirectory.po b/locale/sv/fusiondirectory.po
index bbb25df5d..e36880a7b 100644
--- a/locale/sv/fusiondirectory.po
+++ b/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -348,9 +348,7 @@ msgstr "Mall-namn"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Internt fel"
 
@@ -663,12 +661,12 @@ msgstr "Användarnamn"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Rättighet"
@@ -1710,23 +1708,23 @@ msgstr "Filterfel"
 msgid "The filter is incomplete!"
 msgstr "Filtret är inte komplett!"
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Rättighetsfel"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Du har inte tillåtelse att skapa en ögonblicksbild för %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Du är inte tillåten att återskapa en ögonblicksbild för %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1772,11 +1770,6 @@ msgstr "Okänd post '%s'!"
 msgid "All users"
 msgstr "Alla användare"
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr "Begärd kanal finns inte! Vänligen kontakta din administratör"
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Prestandavarning"
diff --git a/locale/tr_TR/fusiondirectory.po b/locale/tr_TR/fusiondirectory.po
index 1fc49fe91..258fc60f7 100644
--- a/locale/tr_TR/fusiondirectory.po
+++ b/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/ug/fusiondirectory.po b/locale/ug/fusiondirectory.po
index ccd5e8df0..d026d3181 100644
--- a/locale/ug/fusiondirectory.po
+++ b/locale/ug/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/vi_VN/fusiondirectory.po b/locale/vi_VN/fusiondirectory.po
index 2ef9fff81..c765add20 100644
--- a/locale/vi_VN/fusiondirectory.po
+++ b/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -347,9 +347,7 @@ msgstr "Tên Mẫu"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr "Lá»—i ná»™i bá»™"
 
@@ -660,12 +658,12 @@ msgstr "Đăng nhập"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "Cho phép"
@@ -1701,23 +1699,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr "Lỗi về cấp phép"
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr "Bạn không được phép tạo ra snapshot cho %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr "Bạn không được phép phục hồi một snapshot cho %s."
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1763,11 +1761,6 @@ msgstr "Entry '%s' không được biết đến!"
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr "Cảnh báo khả năng hoạt động"
diff --git a/locale/zh/fusiondirectory.po b/locale/zh/fusiondirectory.po
index 179ca8208..273cbda4b 100644
--- a/locale/zh/fusiondirectory.po
+++ b/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -347,9 +347,7 @@ msgstr "模板名称"
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -647,12 +645,12 @@ msgstr "登录名"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr "允许"
@@ -1680,23 +1678,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1742,11 +1740,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
diff --git a/locale/zh_TW/fusiondirectory.po b/locale/zh_TW/fusiondirectory.po
index f0394723d..bc566d4f2 100644
--- a/locale/zh_TW/fusiondirectory.po
+++ b/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-06-27 14:00+0000\n"
+"POT-Creation-Date: 2019-10-01 16:03+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -343,9 +343,7 @@ msgstr ""
 #: include/functions.inc:584 include/functions.inc:705
 #: include/functions.inc:1683 include/functions.inc:1722
 #: include/functions.inc:1753 include/class_acl.inc:118
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127 include/class_ldap.inc:797
-#: include/class_ldap.inc:822
+#: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
 msgstr ""
 
@@ -643,12 +641,12 @@ msgstr ""
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
-#: include/simpleplugin/class_simpleManagement.inc:1041
-#: include/simpleplugin/class_simpleManagement.inc:1138
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1042
+#: include/simpleplugin/class_simpleManagement.inc:1139
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
 msgstr ""
@@ -1676,23 +1674,23 @@ msgstr ""
 msgid "The filter is incomplete!"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1106
+#: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1138
+#: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1187
-#: include/simpleplugin/class_simpleManagement.inc:1267
-#: include/simpleplugin/class_simpleManagement.inc:1285
+#: include/simpleplugin/class_simpleManagement.inc:1188
+#: include/simpleplugin/class_simpleManagement.inc:1268
+#: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
 msgstr ""
 
-#: include/simpleplugin/class_simpleManagement.inc:1329
+#: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
 msgstr ""
@@ -1738,11 +1736,6 @@ msgstr ""
 msgid "All users"
 msgstr ""
 
-#: include/class_session.inc:50 include/class_session.inc:88
-#: include/class_session.inc:127
-msgid "Requested channel does not exist! Please contact your Administrator."
-msgstr ""
-
 #: include/class_ldap.inc:277
 msgid "Performance warning"
 msgstr ""
-- 
GitLab


From 55dc8d8461c4c1b9c61a26aeb28a73eebeb6f40f Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@opensides.be>
Date: Fri, 29 Nov 2019 16:48:55 +0100
Subject: [PATCH 021/117] :handshake: fix(locales) update locale for 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@opensides.be>
---
 locale/af_ZA/fusiondirectory.po       |   2 +-
 locale/ar/fusiondirectory.po          |   2 +-
 locale/ca/fusiondirectory.po          |   2 +-
 locale/cs_CZ/fusiondirectory.po       |   2 +-
 locale/de/fusiondirectory.po          |   2 +-
 locale/el_GR/fusiondirectory.po       |   2 +-
 locale/es/fusiondirectory.po          |   2 +-
 locale/es_CO/fusiondirectory.po       |   2 +-
 locale/es_VE/fusiondirectory.po       |   2 +-
 locale/fa_IR/fusiondirectory.po       |   2 +-
 locale/fi_FI/fusiondirectory.po       |   2 +-
 locale/fr/fusiondirectory.po          |   2 +-
 locale/hu_HU/fusiondirectory.po       |   2 +-
 locale/id/fusiondirectory.po          |   2 +-
 locale/it_IT/fusiondirectory.po       |   6 +-
 locale/ja/fusiondirectory.po          |   2 +-
 locale/ko/fusiondirectory.po          | 138 +++++++++++++-------------
 locale/lv/fusiondirectory.po          |   2 +-
 locale/nb/fusiondirectory.po          |   2 +-
 locale/nl/fusiondirectory.po          |   2 +-
 locale/pl/fusiondirectory.po          |   2 +-
 locale/pt/fusiondirectory.po          |   2 +-
 locale/pt_BR/fusiondirectory.po       |   2 +-
 locale/ru/fusiondirectory.po          |   2 +-
 locale/ru@petr1708/fusiondirectory.po |   2 +-
 locale/sv/fusiondirectory.po          |   2 +-
 locale/tr_TR/fusiondirectory.po       |   2 +-
 locale/ug/fusiondirectory.po          |   2 +-
 locale/vi_VN/fusiondirectory.po       |   2 +-
 locale/zh/fusiondirectory.po          |   2 +-
 locale/zh_TW/fusiondirectory.po       |   2 +-
 31 files changed, 102 insertions(+), 100 deletions(-)

diff --git a/locale/af_ZA/fusiondirectory.po b/locale/af_ZA/fusiondirectory.po
index a0da27dee..8736a3a94 100644
--- a/locale/af_ZA/fusiondirectory.po
+++ b/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/ar/fusiondirectory.po b/locale/ar/fusiondirectory.po
index 96f6b4f98..4f6a8510e 100644
--- a/locale/ar/fusiondirectory.po
+++ b/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
diff --git a/locale/ca/fusiondirectory.po b/locale/ca/fusiondirectory.po
index 6a7caeea7..2f4e1d698 100644
--- a/locale/ca/fusiondirectory.po
+++ b/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
diff --git a/locale/cs_CZ/fusiondirectory.po b/locale/cs_CZ/fusiondirectory.po
index 1a8a11bd1..992f58fa1 100644
--- a/locale/cs_CZ/fusiondirectory.po
+++ b/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
diff --git a/locale/de/fusiondirectory.po b/locale/de/fusiondirectory.po
index 3e89d3059..dd8a2e993 100644
--- a/locale/de/fusiondirectory.po
+++ b/locale/de/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2018\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
diff --git a/locale/el_GR/fusiondirectory.po b/locale/el_GR/fusiondirectory.po
index 1a2356fd7..f7d16df62 100644
--- a/locale/el_GR/fusiondirectory.po
+++ b/locale/el_GR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
diff --git a/locale/es/fusiondirectory.po b/locale/es/fusiondirectory.po
index 59df13947..0088f14c3 100644
--- a/locale/es/fusiondirectory.po
+++ b/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
diff --git a/locale/es_CO/fusiondirectory.po b/locale/es_CO/fusiondirectory.po
index 0c53a5d78..cbffd041b 100644
--- a/locale/es_CO/fusiondirectory.po
+++ b/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
diff --git a/locale/es_VE/fusiondirectory.po b/locale/es_VE/fusiondirectory.po
index 7bfc6a606..9b9396e54 100644
--- a/locale/es_VE/fusiondirectory.po
+++ b/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
diff --git a/locale/fa_IR/fusiondirectory.po b/locale/fa_IR/fusiondirectory.po
index 3be0ed5e6..8071d26c3 100644
--- a/locale/fa_IR/fusiondirectory.po
+++ b/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
diff --git a/locale/fi_FI/fusiondirectory.po b/locale/fi_FI/fusiondirectory.po
index 38e260e8c..9d59bc341 100644
--- a/locale/fi_FI/fusiondirectory.po
+++ b/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
diff --git a/locale/fr/fusiondirectory.po b/locale/fr/fusiondirectory.po
index 383efa96c..bd9248fac 100644
--- a/locale/fr/fusiondirectory.po
+++ b/locale/fr/fusiondirectory.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
diff --git a/locale/hu_HU/fusiondirectory.po b/locale/hu_HU/fusiondirectory.po
index 37afe2cee..d1a03ed4a 100644
--- a/locale/hu_HU/fusiondirectory.po
+++ b/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
diff --git a/locale/id/fusiondirectory.po b/locale/id/fusiondirectory.po
index b9a4da1a9..c54c9e147 100644
--- a/locale/id/fusiondirectory.po
+++ b/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/it_IT/fusiondirectory.po b/locale/it_IT/fusiondirectory.po
index b59f5a3a9..c490a509d 100644
--- a/locale/it_IT/fusiondirectory.po
+++ b/locale/it_IT/fusiondirectory.po
@@ -6,16 +6,16 @@
 # Translators:
 # fusiondirectory <contact@fusiondirectory.org>, 2018
 # Paola Penati <paola.penati@opensides.be>, 2019
-# Paola PENATI <paola.penati@fusiondirectory.org>, 2019
+# Paola <paola.penati@fusiondirectory.org>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Paola PENATI <paola.penati@fusiondirectory.org>, 2019\n"
+"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2019\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff --git a/locale/ja/fusiondirectory.po b/locale/ja/fusiondirectory.po
index a3f17f5da..a5115bf65 100644
--- a/locale/ja/fusiondirectory.po
+++ b/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/ko/fusiondirectory.po b/locale/ko/fusiondirectory.po
index 8b38890e3..e37aec8b5 100644
--- a/locale/ko/fusiondirectory.po
+++ b/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2018
+# Choi Chris <chulwon.choi@gmail.com>, 2019
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2018\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -47,12 +47,12 @@ msgstr "오류"
 
 #: include/class_msg_dialog.inc:177
 msgid "Please fix the above error and reload the page."
-msgstr ""
+msgstr "위의 오류를 수정하고 페이지를 다시 로드하십시오."
 
 #: include/class_config.inc:151
 #, php-format
 msgid "XML error in fusiondirectory.conf: %s at line %d"
-msgstr ""
+msgstr "fusiondirectory.conf의 XML 오류 : %d 줄에 %s"
 
 #: include/class_config.inc:154 include/class_config.inc:287
 #: include/class_config.inc:775 include/class_config.inc:787
@@ -71,6 +71,8 @@ msgid ""
 "It seems you are trying to decode something which is not encoded : %s<br/>\n"
 "Please check you are not using a fusiondirectory.secrets file while your passwords are not encrypted."
 msgstr ""
+"인코딩되지 않은 것을 디코딩하려고하는 것 같습니다 : %s 1\n"
+"비밀번호가 암호화되지 않은 상태에서 fusiondirectory.secrets 파일을 사용하고 있지 않은지 확인하십시오."
 
 #: include/class_config.inc:325 include/class_SnapshotHandler.inc:66
 #: include/class_SnapshotHandler.inc:251 include/class_SnapshotHandler.inc:281
@@ -90,86 +92,86 @@ msgstr ""
 #: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
 #: setup/class_setupStepMigrate.inc:1068 html/index.php:379
 msgid "LDAP error"
-msgstr "lDAP 오류"
+msgstr "LDAP 오류"
 
 #: include/class_config.inc:325
 msgid "Cannot bind to LDAP. Please contact the system administrator."
-msgstr ""
+msgstr "LDAP에 바인딩 할 수 없습니다. 시스템 관리자에게 문의하십시오."
 
 #: include/class_config.inc:354
 #, php-format
 msgid "Location \"%s\" could not be found in the configuration file"
-msgstr ""
+msgstr "구성 파일에서 \"%s\" 위치를 찾을 수 없습니다"
 
 #: include/class_config.inc:776
 #, php-format
 msgid ""
 "The snapshot functionality is enabled, but the required variable \"%s\" is "
 "not set."
-msgstr ""
+msgstr "스냅 샷 기능이 사용 가능하지만 필수 변수 \"%s\"가 설정되지 않았습니다."
 
 #: include/class_config.inc:788
 #, php-format
 msgid ""
 "The snapshot functionality is enabled, but the required compression module "
 "is missing. Please install \"%s\"."
-msgstr ""
+msgstr "스냅 샷 기능이 활성화되었지만 필요한 압축 모듈이 없습니다. \"%s\"를 설치하십시오."
 
 #: include/class_config.inc:900
 msgid "All categories"
-msgstr ""
+msgstr "모든 카테고리"
 
 #: include/class_config.inc:1042
 msgid "My account"
-msgstr ""
+msgstr "내 계정"
 
 #: include/exporter/class_PDF.php:61
 msgid "Page"
-msgstr ""
+msgstr "페이지"
 
 #: include/exporter/class_pdfExporter.inc:58
 msgid "No PDF export possible: there is no FPDF library installed."
-msgstr ""
+msgstr "PDF로 내보낼 수 없음 : FPDF 라이브러리가 설치되어 있지 않습니다."
 
 #: include/exporter/class_pdfExporter.inc:196
 msgid "PDF"
-msgstr ""
+msgstr "PDF"
 
 #: include/exporter/class_cvsExporter.inc:93
 msgid "CSV"
-msgstr ""
+msgstr "CSV"
 
 #: include/php_setup.inc:45 include/php_setup.inc:132
 msgid "File"
-msgstr ""
+msgstr "파일"
 
 #: include/php_setup.inc:47 include/php_setup.inc:132
 msgid "Line"
-msgstr ""
+msgstr "라인"
 
 #: include/php_setup.inc:53
 msgid "PHP error"
-msgstr ""
+msgstr "PHP 오류"
 
 #: include/php_setup.inc:62
 msgid "class"
-msgstr ""
+msgstr "클래스"
 
 #: include/php_setup.inc:70
 msgid "function"
-msgstr ""
+msgstr "함수"
 
 #: include/php_setup.inc:76
 msgid "static"
-msgstr ""
+msgstr "정적"
 
 #: include/php_setup.inc:80
 msgid "method"
-msgstr ""
+msgstr "메소드"
 
 #: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
-msgstr ""
+msgstr "Trace"
 
 #: include/php_setup.inc:132
 msgid "Type"
@@ -177,23 +179,23 @@ msgstr "타입"
 
 #: include/php_setup.inc:133
 msgid "Arguments"
-msgstr ""
+msgstr "인수"
 
 #: include/php_setup.inc:231
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
-msgstr ""
+msgstr "이 페이지를 생성하면 PHP 인터프리터에서 오류가 발생됩니다!"
 
 #: include/php_setup.inc:236
 msgid "Send bug report to the FusionDirectory Team"
-msgstr ""
+msgstr "FusionDirectory 팀에 버그 보고서 보내기"
 
 #: include/php_setup.inc:237
 msgid "Send bugreport"
-msgstr ""
+msgstr "버그 리포트 보내기"
 
 #: include/php_setup.inc:242
 msgid "Toggle information"
-msgstr ""
+msgstr "정보 토글"
 
 #: include/class_listing.inc:312 include/class_listing.inc:1183
 #: include/class_listing.inc:1185
@@ -202,52 +204,52 @@ msgstr "위"
 
 #: include/class_listing.inc:312
 msgid "Down"
-msgstr ""
+msgstr "아래"
 
 #: include/class_listing.inc:312
 #: include/simpleplugin/attributes/class_SetAttribute.inc:479
 #: include/simpleplugin/attributes/class_SetAttribute.inc:480
 msgid "Sort up"
-msgstr ""
+msgstr "오름차순"
 
 #: include/class_listing.inc:312
 #: include/simpleplugin/attributes/class_SetAttribute.inc:492
 #: include/simpleplugin/attributes/class_SetAttribute.inc:493
 msgid "Sort down"
-msgstr ""
+msgstr "차순"
 
 #: include/class_listing.inc:364 setup/setup_migrate_accounts.tpl.c:23
 msgid "Select all"
-msgstr ""
+msgstr "전체선택"
 
 #: include/class_listing.inc:567
 msgid "created by"
-msgstr ""
+msgstr "만든 사람"
 
 #: include/class_listing.inc:1175
 msgid "Go to root department"
-msgstr ""
+msgstr "root 부서로 이동"
 
 #: include/class_listing.inc:1175 include/class_listing.inc:1177
 #: include/class_baseSelector.inc:212
 msgid "Root"
-msgstr ""
+msgstr "Root"
 
 #: include/class_listing.inc:1183
 msgid "Go up one department"
-msgstr ""
+msgstr "한 부서 위로 올라가"
 
 #: include/class_listing.inc:1191
 msgid "Go to user's department"
-msgstr ""
+msgstr "사용자 부서로 이동"
 
 #: include/class_listing.inc:1191 include/class_listing.inc:1193
 msgid "Home"
-msgstr ""
+msgstr "홈"
 
 #: include/class_listing.inc:1198
 msgid "Reload list"
-msgstr ""
+msgstr "새로 고침 목록"
 
 #: include/class_listing.inc:1342 include/simpleplugin/simple-list.xml:48
 #: plugins/admin/departments/dep-list.xml:37
@@ -257,50 +259,50 @@ msgstr "작업"
 
 #: include/class_listing.inc:1655 include/class_listing.inc:1708
 msgid "Copy"
-msgstr ""
+msgstr "복사"
 
 #: include/class_listing.inc:1661 include/class_listing.inc:1696
 msgid "Cut"
-msgstr ""
+msgstr "잘라내기"
 
 #: include/class_listing.inc:1669 include/class_listing.inc:1671
 #: include/class_CopyPasteHandler.inc:330
 msgid "Paste"
-msgstr ""
+msgstr "붙여넣기"
 
 #: include/class_listing.inc:1696
 msgid "Cut this entry"
-msgstr ""
+msgstr "항목 잘라내기"
 
 #: include/class_listing.inc:1708
 msgid "Copy this entry"
-msgstr ""
+msgstr "항목 복사하기"
 
 #: include/class_listing.inc:1733 include/class_listing.inc:1735
 msgid "Restore snapshots"
-msgstr ""
+msgstr "스냅샷 복구"
 
 #: include/class_listing.inc:1749
 msgid "Export list"
-msgstr ""
+msgstr "목록 내보내기"
 
 #: include/class_listing.inc:1781 include/class_listing.inc:1782
 #: include/class_listing.inc:1786
 msgid "Restore snapshot"
-msgstr ""
+msgstr "스냅샷 복구"
 
 #: include/class_listing.inc:1794
 msgid "Create snapshot"
-msgstr ""
+msgstr "스냅샷 생성"
 
 #: include/class_listing.inc:1795
 msgid "Create a new snapshot from this object"
-msgstr ""
+msgstr "이 객체에서 새 스냅샷 생성"
 
 #: include/class_timezone.inc:52
 #, php-format
 msgid "The timezone setting \"%s\" in your configuration is not valid."
-msgstr ""
+msgstr "구성에서 \"%s\"시간대 설정이 유효하지 않습니다."
 
 #: include/class_SnapshotHandler.inc:40
 msgid "Snapshot"
@@ -320,7 +322,7 @@ msgstr ""
 
 #: include/class_SnapshotHandler.inc:408
 msgid "There was a problem uncompressing snapshot data"
-msgstr ""
+msgstr "스냅샷 데이터를 압축 해제하는 중에 문제가 발생했습니다"
 
 #: include/class_SnapshotHandler.inc:412
 msgid "Snapshot data could not be fetched"
@@ -336,12 +338,12 @@ msgstr "템플릿"
 
 #: include/class_template.inc:44
 msgid "Object template, used to create several objects with similar values"
-msgstr ""
+msgstr "비슷한 값을 가진 여러 개체를 만드는 데 사용되는 개체 템플릿"
 
 #: include/class_template.inc:49
 #: include/simpleplugin/class_simplePlugin.inc:348
 msgid "Template name"
-msgstr ""
+msgstr "템플릿"
 
 #: include/class_logging.inc:81 include/functions.inc:512
 #: include/functions.inc:584 include/functions.inc:705
@@ -349,49 +351,49 @@ msgstr ""
 #: include/functions.inc:1753 include/class_acl.inc:118
 #: include/class_ldap.inc:797 include/class_ldap.inc:822
 msgid "Internal error"
-msgstr ""
+msgstr "내부 오"
 
 #: include/class_logging.inc:81
 #, php-format
 msgid "Logging failed: %s"
-msgstr ""
+msgstr "로깅 실패: %s"
 
 #: include/class_logging.inc:103
 #, php-format
 msgid "Invalid option \"%s\" specified!"
-msgstr ""
+msgstr "\"%s\" 옵션이 잘못되었습니다!"
 
 #: include/class_logging.inc:107
 msgid "Specified objectType is empty or invalid!"
-msgstr ""
+msgstr "지정된 objectType이 비어 있거나 유효하지 않습니다!"
 
 #: include/password-methods/class_password-methods-sasl.inc:65
 #, php-format
 msgid "Cannot change password, unknown user \"%s\""
-msgstr ""
+msgstr "패스워드를 변경할 수 없습니다, 사용자를 알 수 없습니다. \"%s\""
 
 #: include/password-methods/class_password-methods-sasl.inc:92
 #: plugins/config/class_configInLdap.inc:584
 msgid ""
 "You need to fill saslRealm or saslExop in the configuration screen in order "
 "to use SASL"
-msgstr ""
+msgstr "SASL을 사용하려면 구성 화면에서 saslRealm 또는 saslExop를 채워야 합니다."
 
 #: include/class_baseSelector.inc:275
 msgid "Submit"
-msgstr ""
+msgstr "제출"
 
 #: include/class_filter.inc:331 include/functions.inc:1545
 msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-msgstr ""
+msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 
 #: include/class_filter.inc:369
 msgid "Apply filter"
-msgstr ""
+msgstr "필터 적"
 
 #: include/class_filter.inc:380 include/class_msgPool.inc:51
 msgid "Search in subtrees"
-msgstr ""
+msgstr "하위 트리에서 검색"
 
 #: include/class_filter.inc:404
 #, php-format
@@ -1334,12 +1336,12 @@ msgstr "ë¶„"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:209
 msgid "Seconds"
-msgstr ""
+msgstr "ì´ˆ"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:297
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
-msgstr ""
+msgstr "일자"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:303
 msgid "Time"
@@ -1985,7 +1987,7 @@ msgstr ""
 #: plugins/admin/departments/class_department.inc:112
 #: plugins/personal/generic/class_user.inc:374
 msgid "Fax"
-msgstr ""
+msgstr "팩스"
 
 #: plugins/admin/departments/class_department.inc:112
 msgid "Facsimile telephone number"
@@ -5046,4 +5048,4 @@ msgstr ""
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:14
 msgid "Set"
-msgstr ""
+msgstr "설정"
diff --git a/locale/lv/fusiondirectory.po b/locale/lv/fusiondirectory.po
index 8fe55afc5..07eb6deee 100644
--- a/locale/lv/fusiondirectory.po
+++ b/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
diff --git a/locale/nb/fusiondirectory.po b/locale/nb/fusiondirectory.po
index 747979c50..51a863e7f 100644
--- a/locale/nb/fusiondirectory.po
+++ b/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
diff --git a/locale/nl/fusiondirectory.po b/locale/nl/fusiondirectory.po
index f2b2eeb0b..c3754c6f7 100644
--- a/locale/nl/fusiondirectory.po
+++ b/locale/nl/fusiondirectory.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
diff --git a/locale/pl/fusiondirectory.po b/locale/pl/fusiondirectory.po
index 1f091badf..3bd4d76ac 100644
--- a/locale/pl/fusiondirectory.po
+++ b/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
diff --git a/locale/pt/fusiondirectory.po b/locale/pt/fusiondirectory.po
index e210da7b6..bfb61eb7c 100644
--- a/locale/pt/fusiondirectory.po
+++ b/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
diff --git a/locale/pt_BR/fusiondirectory.po b/locale/pt_BR/fusiondirectory.po
index f084330b1..e23be3522 100644
--- a/locale/pt_BR/fusiondirectory.po
+++ b/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
diff --git a/locale/ru/fusiondirectory.po b/locale/ru/fusiondirectory.po
index 104862d96..09db00a5c 100644
--- a/locale/ru/fusiondirectory.po
+++ b/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
diff --git a/locale/ru@petr1708/fusiondirectory.po b/locale/ru@petr1708/fusiondirectory.po
index f2de75478..497dd1c3d 100644
--- a/locale/ru@petr1708/fusiondirectory.po
+++ b/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/sv/fusiondirectory.po b/locale/sv/fusiondirectory.po
index e36880a7b..02160ac6d 100644
--- a/locale/sv/fusiondirectory.po
+++ b/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
diff --git a/locale/tr_TR/fusiondirectory.po b/locale/tr_TR/fusiondirectory.po
index 258fc60f7..2999ec88c 100644
--- a/locale/tr_TR/fusiondirectory.po
+++ b/locale/tr_TR/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/ug/fusiondirectory.po b/locale/ug/fusiondirectory.po
index d026d3181..04ca1426f 100644
--- a/locale/ug/fusiondirectory.po
+++ b/locale/ug/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
diff --git a/locale/vi_VN/fusiondirectory.po b/locale/vi_VN/fusiondirectory.po
index c765add20..2dac7aeda 100644
--- a/locale/vi_VN/fusiondirectory.po
+++ b/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
diff --git a/locale/zh/fusiondirectory.po b/locale/zh/fusiondirectory.po
index 273cbda4b..a3264dc5e 100644
--- a/locale/zh/fusiondirectory.po
+++ b/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
diff --git a/locale/zh_TW/fusiondirectory.po b/locale/zh_TW/fusiondirectory.po
index bc566d4f2..6c2f636cc 100644
--- a/locale/zh_TW/fusiondirectory.po
+++ b/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-01 16:03+0000\n"
+"POT-Creation-Date: 2019-10-07 20:22+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
-- 
GitLab


From 7a7b326432de009541cafa5a333e99c8387ef476 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 20 Aug 2020 13:15:22 +0200
Subject: [PATCH 022/117] :sparkles: feat(bestpracticebadges) add
 bestpracticebadges

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 README.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/README.md b/README.md
index 0c6804e07..43f63f84f 100644
--- a/README.md
+++ b/README.md
@@ -82,6 +82,10 @@ You can [register on our system][register] and enter issues [FusionDirectory][is
 * You should treat IRC as what it is: asynchronous chat.  Sure the messages can
   be instant but in most channels people are in different time zones.  At times
   chat replies can be in excess of 24hrs.
+
+### Best practice badge
+
+[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/351/badge)](https://bestpractices.coreinfrastructure.org/projects/351)
   
 ## Donate
 
-- 
GitLab


From 5c52277b81bb001b39835788fe1ddce0861ff28b Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 28 Aug 2020 09:44:07 +0200
Subject: [PATCH 023/117] :handshake: feat(crowfunding) change the donate part
 to add all the crowfunding possibilities

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 README.md | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 43f63f84f..ff69835f7 100644
--- a/README.md
+++ b/README.md
@@ -87,9 +87,17 @@ You can [register on our system][register] and enter issues [FusionDirectory][is
 
 [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/351/badge)](https://bestpractices.coreinfrastructure.org/projects/351)
   
-## Donate
+## Crowfunding
 
-If you like [FusionDirectory][FusionDirectory] and would like to [donate][donate-liberapay] even a small amount you can go to our Liberapay account
+If you like us and want to send us a small contribution you can use the following crowfunding services
+
+* [liberapay] [donate-liberapay]: https://liberapay.com/fusiondirectory/donate
+
+* [kofi][donate-kofi]: https://ko-fi.com/fusiondirectory
+
+* [opencollective][donate-opencollective]: https://opencollective.com/fusiondirectory
+
+* [communitybridge][donate-communitybridge]: https://funding.communitybridge.org/projects/fusiondirectory
   
 ## License
 
@@ -110,3 +118,9 @@ If you like [FusionDirectory][FusionDirectory] and would like to [donate][donate
 [issues-plugins]: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins/issues
 
 [donate-liberapay]: https://liberapay.com/fusiondirectory/donate
+
+[donate-kofi]: https://ko-fi.com/fusiondirectory
+
+[donate-opencollective]: https://opencollective.com/fusiondirectory
+
+[donate-communitybridge]: https://funding.communitybridge.org/projects/fusiondirectory
-- 
GitLab


From 0923bc4a4c05789173ba556feb8d36d3928c910c Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 2 Sep 2020 11:13:21 +0200
Subject: [PATCH 024/117] :sparkles: feat(ci): Add tar.gz build and trigger

Add tar.gz build and trigger
---
 .gitlab-ci.yml | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 97ebe2ff6..83c9108a5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,6 +10,7 @@ stages:
   - codestyle
   - transifex
   - tarballs
+  - trigger
 
 ## Stage lint
 
@@ -139,16 +140,16 @@ update-transifex:
 build-tarballs:
   stage: tarballs
   only:
-    - /^1.*$/
+    - 1.3-fixes
   script:
-    - mkdir ../fusiondirectory-$(cut -d '-' -f1 <<< $CI_COMMIT_REF_NAME)
-    - cp -a ./* ../fusiondirectory-$(cut -d '-' -f1 <<< $CI_COMMIT_REF_NAME)
-    - mv ../fusiondirectory-$(cut -d '-' -f1 <<< $CI_COMMIT_REF_NAME) ./
+    - mkdir ../fusiondirectory-1.3.1/
+    - mv ./* ../fusiondirectory-1.3.1/
+    - mv  ../fusiondirectory-1.3.1/ ./
+    - tar -cvzf fusiondirectory-1.3.1.tar.gz *
   artifacts:
-    name: fusiondirectory-$(cut -d '-' -f1 <<< $CI_COMMIT_REF_NAME)
     paths:
-    - ./fusiondirectory-$(cut -d '-' -f1 <<< $CI_COMMIT_REF_NAME)
-    expire_in: 1h
+      - fusiondirectory-1.3.1.tar.gz
+    expire_in: 30d
 
 build-release:
   stage: tarballs
@@ -162,3 +163,11 @@ build-release:
     name: fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
     paths:
     - ./fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
+
+trigger-ci:
+  stage: trigger
+  only:
+    - 1.3-fixes
+  trigger:
+    project: fusiondirectory/fd-plugins
+    branch: 1.3-fixes
\ No newline at end of file
-- 
GitLab


From 180d70532de956ecf768a76d04f1d02180812c70 Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Mon, 21 Sep 2020 17:15:56 +0200
Subject: [PATCH 025/117] :sparkles: feat(ci): Use our own registry for our
 docker images

Use our own registry for our docker images
---
 .gitlab-ci.yml | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 83c9108a5..0d5f32a2d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,7 @@ stages:
 
 # Perl lint
 create_perl_lint_rapport:
-  image: perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
   stage: lint
   only:
     - branches
@@ -43,7 +43,7 @@ create_php_lint_rapport_stretch:
 
 # generate man pages to test validity
 create_manpages_lint_report:
-  image: perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
   stage: lint
   only:
     - branches
@@ -59,7 +59,7 @@ create_manpages_lint_report:
 
 # Generate perlcritic rapport
 create_perlcritic_rapport:
-  image: perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
   stage: codestyle
   only:
     - branches
@@ -69,8 +69,8 @@ create_perlcritic_rapport:
     - perlcritic --quiet --verbose "%f~|~%s~|~%l~|~%c~|~%m~|~%e~|~%p~||~%n" contrib/bin
 
 # PHP codesniffer
-create_php_code_sniffer_rapport_13:
-  image: phpcodesniffer-cli:stretch
+create_php_code_sniffer_rapport:
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:stretch
   stage: codestyle
   only:
     - branches
@@ -81,7 +81,7 @@ create_php_code_sniffer_rapport_13:
 
 # Sonar publishing
 sonar_publish:
-  image: sonar-cli:3.1.0.1141
+  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:3.1.0.1141
   stage: codestyle
   only:
     - 1.3-dev
@@ -98,7 +98,7 @@ sonar_publish:
 
 # Sonar preview
 sonar_preview:
-  image: sonar-cli:3.1.0.1141
+  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:3.1.0.1141
   stage: codestyle
   except:
     - 1.3-dev
@@ -116,7 +116,7 @@ sonar_preview:
 
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
-  image: transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
   stage: transifex
   only:
     - branches
@@ -126,7 +126,7 @@ fusiondirectory-update-locale:
 
 # Update transifex
 update-transifex:
-  image: transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
   stage: transifex
   only:
     - /^1.*$/
@@ -170,4 +170,4 @@ trigger-ci:
     - 1.3-fixes
   trigger:
     project: fusiondirectory/fd-plugins
-    branch: 1.3-fixes
\ No newline at end of file
+    branch: 1.3-fixes
-- 
GitLab


From 883f5b344d381b08980aa6ddce04d7ae31717aa1 Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Mon, 21 Sep 2020 19:22:49 +0200
Subject: [PATCH 026/117] :sparkles: feat(ci): Use last version of
 sonar-cli:4.4.0.2170

Use last version of sonar-cli:4.4.0.2170
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0d5f32a2d..a0ab5e41b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -81,7 +81,7 @@ create_php_code_sniffer_rapport:
 
 # Sonar publishing
 sonar_publish:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:3.1.0.1141
+  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
   stage: codestyle
   only:
     - 1.3-dev
@@ -98,7 +98,7 @@ sonar_publish:
 
 # Sonar preview
 sonar_preview:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:3.1.0.1141
+  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
   stage: codestyle
   except:
     - 1.3-dev
-- 
GitLab


From 2c3f7d6331ec507db35b6713618fe4bb947cdc95 Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 23 Sep 2020 10:23:17 +0200
Subject: [PATCH 027/117] :sparkles: feat(ci): Add breezy directory as
 exclusion for sonar-cli

Add breezy directory as exclusion for sonar-cli
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a0ab5e41b..59dc1066d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,7 +91,7 @@ sonar_publish:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
@@ -108,7 +108,7 @@ sonar_preview:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-- 
GitLab


From 719d7ae8acae8d4b95c5367396bb23cd955f42ba Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 23 Sep 2020 15:12:27 +0200
Subject: [PATCH 028/117] :sparkles: feat(ci): Exclude html/images/ for sonar

Exclude html/images/ for sonar
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 59dc1066d..0a2d2034e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,7 +91,7 @@ sonar_publish:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/*,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
@@ -108,7 +108,7 @@ sonar_preview:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/*,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-- 
GitLab


From 48df7cbc1729658696995a76a1fd2fe0e5c1a38d Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 23 Sep 2020 15:28:00 +0200
Subject: [PATCH 029/117] :ambulance: fix(ci): Exclude all directories under
 html/images for sonar

Exclude all directories under html/images for sonar
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0a2d2034e..75d167905 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,7 +91,7 @@ sonar_publish:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
@@ -108,7 +108,7 @@ sonar_preview:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/*,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-- 
GitLab


From 8dc154f733ffd94d51e3bcae9061e20bc162d3ec Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 23 Sep 2020 17:44:46 +0200
Subject: [PATCH 030/117] :sparkles: feat(ci): Exclude favicon and contrib for
 sonar

Exclude favicon and contrib for sonar
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 75d167905..29b37bb4c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,7 +91,7 @@ sonar_publish:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/favicon.ico,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
@@ -108,7 +108,7 @@ sonar_preview:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/favicon.ico,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-- 
GitLab


From 8c4bb0f8d05d128a3a7e47203d112cab4080626e Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Wed, 23 Sep 2020 21:19:59 +0200
Subject: [PATCH 031/117] :sparkles: feat(ci): Exclude also
 html/plugins/users/images for sonar

Exclude also html/plugins/users/images for sonar
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 29b37bb4c..49238be44 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,7 +91,7 @@ sonar_publish:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/favicon.ico,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
@@ -108,7 +108,7 @@ sonar_preview:
       -D sonar.projectName=FusionDirectory-Dev
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/favicon.ico,include/class_xml.inc'
+      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
       -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
       -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
       -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-- 
GitLab


From f607c9f9559eb4dd23f86336378cc36b30c834f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 25 Aug 2020 10:01:26 +0000
Subject: [PATCH 032/117] Merge branch
 '6097-when-using-fusiondirectory-setup-with-write-vars-smarty-value-isn-t-correctly-set'
 into '1.4-dev'

Resolve "when using fusiondirectory-setup with --write-vars, SMARTY value isn't correctly set"

See merge request fusiondirectory/fd!802

(cherry picked from commit adde47c4aafa91d222034579fe1a5f0aa213b91c)

2b1b8676 :ambulance: fix(fusiondirectory-setup) Fix smarty path setting for --write-vars
---
 contrib/bin/fusiondirectory-setup | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/contrib/bin/fusiondirectory-setup b/contrib/bin/fusiondirectory-setup
index d774746c2..30c2fc2a9 100644
--- a/contrib/bin/fusiondirectory-setup
+++ b/contrib/bin/fusiondirectory-setup
@@ -64,7 +64,7 @@ my %vars = (
  fd_home          => "/var/www/fusiondirectory",
  fd_cache         => "/var/cache/fusiondirectory",
  fd_config_dir    => "/etc/fusiondirectory",
- fd_smarty_dir    => "/usr/share/php/smarty3",
+ fd_smarty_path   => "/usr/share/php/smarty3/Smarty.class.php",
  fd_spool_dir     => "/var/spool/fusiondirectory",
  ldap_conf        => "/etc/ldap/ldap.conf",
  config_file      => "fusiondirectory.conf",
@@ -552,7 +552,7 @@ if (!defined("CONFIG_FILE")) {
 }
 
 /* Path for smarty3 libraries */
-define("SMARTY", "$vars{fd_smarty_dir}");
+define("SMARTY", "$vars{fd_smarty_path}");
 
 /* Smarty compile dir */
 define ("SPOOL_DIR", "$vars{fd_spool_dir}/"); /* FusionDirectory spool directory */
@@ -2074,16 +2074,16 @@ This flag will answer "yes" to every yes/no question asked by the script
 locale_cache_dir	[locale]
 config_file     	[fusiondirectory.conf]
 fd_cache        	[/var/cache/fusiondirectory]
-fd_smarty_dir   	[/usr/share/php/smarty3]
+fd_smarty_path  	[/usr/share/php/smarty3/Smarty.class.php]
 fd_spool_dir    	[/var/spool/fusiondirectory]
 fai_log_dir     	[fai]
-tmp_dir		        [tmp]
+tmp_dir         	[tmp]
 secrets_file    	[fusiondirectory.secrets]
 template_dir    	[template]
 locale_dir      	[locale]
 class_cache     	[class.cache]
 fd_config_dir   	[/etc/fusiondirectory]
-fd_home [/var/www/fusiondirectory]
+fd_home         	[/var/www/fusiondirectory]
 
 
  benoit@catbert$ fusiondirectory-setup --set-class_cache=class.cache --write-vars
-- 
GitLab


From 19cfb52b2ad8905f99283b506089b9d09b0a6d8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 19 Oct 2020 15:15:11 +0200
Subject: [PATCH 033/117] :ambulance: fix(core) Move clickToEdit message to the
 left

issue #6038
---
 include/simpleplugin/class_simplePlugin.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 68ab7e3dc..28ebc1238 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -2141,7 +2141,7 @@ class simplePlugin
         } else {
           /* Only display edit button if there is at least one attribute editable */
           if (preg_match('/r/', $ui->get_permissions($entry_dn, $plCategory.'/'.$tabObject->current))) {
-            $info .= '<div style="display:inline-block" class="optional"><img class="center" alt="information" '.
+            $info .= '<div style="float:left;" class="optional"><img class="center" alt="information" '.
                       'src="geticon.php?context=status&amp;icon=dialog-information&amp;size=16"> '.
                       msgPool::clickEditToChange().'</div>';
 
-- 
GitLab


From 7bf8c3e7d6f0c96e050b7d6ce4aa63f4c4831c0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Wed, 12 Feb 2020 17:14:35 +0100
Subject: [PATCH 034/117] :ambulance: fix(core) Change message

For the message explaining how to edit the fields on a click-to-edit screen.

issue #6038
---
 include/class_msgPool.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index dfbc1f44f..5cd99f74a 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -631,11 +631,11 @@ class msgPool {
   }
 
   /*!
-   * \brief Display : Click the 'Edit' button below to change information in this dialog
+   * \brief Display : Click the "Edit" button below to change information in this dialog
    */
   public static function clickEditToChange()
   {
-    return _("Click the 'Edit' button below to change information in this dialog");
+    return _('Click the "Edit" button on the bottom right corner of the page to edit the fields');
   }
 
   /*!
-- 
GitLab


From 9460e4f2b56a64812d92b297d931ad66a724f8c0 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 27 Nov 2020 16:49:47 +0100
Subject: [PATCH 035/117] :ambulance: fix(gitlab-ci) remove the
 GIT_SSL_NO_VERIFY insecure variable

---
 .gitlab-ci.yml | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 49238be44..0ae579e22 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,6 @@
 # Specify docker image
 image: debian:stretch
 
-# Define variable to disable SSL verification of GIT
-variables:
-  GIT_SSL_NO_VERIFY: "true"
-
 stages:
   - lint
   - codestyle
-- 
GitLab


From db248409a2565fa974a0d885ab54d556afd8c1a9 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 15 Dec 2020 11:35:31 +0100
Subject: [PATCH 036/117] Update .gitlab-ci.yml put the new FusionDirectory 1.3
 project from sonar

---
 .gitlab-ci.yml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0ae579e22..165a917fe 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -80,11 +80,11 @@ sonar_publish:
   image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
   stage: codestyle
   only:
-    - 1.3-dev
+    - 1.3-fixes
   script:
     - /home/sonar/*/bin/sonar-scanner
-      -D sonar.projectKey=fusiondirectory-dev
-      -D sonar.projectName=FusionDirectory-Dev
+      -D sonar.projectKey=FusionDirectory-13
+      -D sonar.projectName=FusionDirectory-1.3
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
       -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
@@ -97,11 +97,11 @@ sonar_preview:
   image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
   stage: codestyle
   except:
-    - 1.3-dev
+    - 1.3-fixes
   script:
     - /home/sonar/*/bin/sonar-scanner
-      -D sonar.projectKey=fusiondirectory-dev
-      -D sonar.projectName=FusionDirectory-Dev
+      -D sonar.projectKey=FusionDirectory-13
+      -D sonar.projectName=FusionDirectory-1.3
       -D sonar.projectVersion=1.3
       -D sonar.sourceEncoding=UTF-8
       -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
-- 
GitLab


From 34bc3da26529abf3ca0a96c6d4949893c03e7a53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 16 Apr 2020 16:21:58 +0200
Subject: [PATCH 037/117] ambulance: fix(login) Escape message on login screen

Fixes first and second XSS from audit

FSA-0021

issue #6135
---
 ihtml/themes/breezy/login.tpl | 2 +-
 ihtml/themes/legacy/login.tpl | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/ihtml/themes/breezy/login.tpl b/ihtml/themes/breezy/login.tpl
index 28ce334d1..32b3df902 100644
--- a/ihtml/themes/breezy/login.tpl
+++ b/ihtml/themes/breezy/login.tpl
@@ -61,7 +61,7 @@
   <div id="window-footer" class="plugbottom">
     <div>
       <!-- Display error message on demand -->
-      {$message}
+      {$message|escape}
     </div>
     <div>
       <input type="submit" name="login" value="{t}Sign in{/t}" title="{t}Click here to log in{/t}"/>
diff --git a/ihtml/themes/legacy/login.tpl b/ihtml/themes/legacy/login.tpl
index fd469c895..55a474b15 100644
--- a/ihtml/themes/legacy/login.tpl
+++ b/ihtml/themes/legacy/login.tpl
@@ -61,7 +61,7 @@
   <div id="window-footer" class="plugbottom">
     <div>
       <!-- Display error message on demand -->
-      {$message}
+      {$message|escape}
     </div>
     <div>
       <input type="submit" name="login" value="{t}Sign in{/t}" title="{t}Click here to log in{/t}"/>
-- 
GitLab


From 9f772bc9184f1b9def9d99f39bc7cd5cc10c16e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 28 Apr 2020 10:56:56 +0200
Subject: [PATCH 038/117] ambulance: fix(core) Escape HTML in fatal error
 messages

Fixes third XSS from audit

FSA-0021

issue #6135
---
 include/class_msg_dialog.inc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index b38f2b3f1..800a3c28a 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -169,12 +169,12 @@ class msg_dialog
         '<table style="width:100%; border:2px solid red;">
           <tr>
             <td style="vertical-align:top;padding:10px">
-              <img src="geticon.php?context=status&amp;icon=dialog-error&amp;size=32" alt="'._('Error').'"/>
+              <img src="geticon.php?context=status&amp;icon=dialog-error&amp;size=32" alt="'.htmlentities(_('Error'), ENT_COMPAT, 'UTF-8').'"/>
             </td>
             <td style="width:100%">
-              <b>'.$this->s_Title.'</b><br/>
-              '.$this->s_Message.'<br><br/>
-              '._('Please fix the above error and reload the page.').'
+              <b>'.htmlentities($this->s_Title, ENT_COMPAT, 'UTF-8').'</b><br/>
+              '.htmlentities($this->s_Message, ENT_COMPAT, 'UTF-8').'<br><br/>
+              '.htmlentities(_('Please fix the above error and reload the page.'), ENT_COMPAT, 'UTF-8').'
             </td>
           </tr>
         </table></body></html>';
-- 
GitLab


From 1e1704ca905d92a1a09b00f3ac9642a0471682ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 16 Apr 2020 16:43:35 +0200
Subject: [PATCH 039/117] ambulance: fix(IconTheme) Forbid arbitrary path in
 icon name

Fixes Arbitrary File Access from audit

FSA-0021

issue #6135
---
 include/class_IconTheme.inc | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 38c398907..72b3618f1 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -49,7 +49,7 @@ class IconThemeDir
    * Defaults to 2 if not present. */
   private $Threshold = 2;
 
-  function __construct($infos)
+  public function __construct ($infos)
   {
     $this->Size     = $infos['Size'];
     $this->MinSize  = $infos['Size'];
@@ -66,7 +66,7 @@ class IconThemeDir
     }
   }
 
-  function MatchesSize($size)
+  public function MatchesSize ($size)
   {
     switch ($this->Type) {
       case 'Fixed':
@@ -78,7 +78,7 @@ class IconThemeDir
     }
   }
 
-  function SizeDistance($size)
+  public function SizeDistance ($size)
   {
     switch ($this->Type) {
       case 'Fixed':
@@ -106,7 +106,7 @@ class IconTheme
   private $path;
   private $parent;
 
-  function __construct($folder, $default_parent)
+  public function __construct ($folder, $default_parent)
   {
     $this->path = $folder;
     $datas  = @parse_ini_file($folder.'/index.theme', TRUE, INI_SCANNER_RAW);
@@ -127,13 +127,16 @@ class IconTheme
     }
   }
 
-  function FindIcon($context, $icon, $size)
+  public function FindIcon ($context, $icon, $size)
   {
     $context = strtolower($context);
+    if (strpos($icon, '/') !== FALSE) {
+      return NULL;
+    }
     return $this->FindIconHelper($context, $icon, $size);
   }
 
-  function FindIconHelper($context, $icon, $size)
+  protected function FindIconHelper ($context, $icon, $size)
   {
     $filename = $this->LookupIcon($context, $icon, $size);
     if ($filename != NULL) {
@@ -159,7 +162,7 @@ class IconTheme
     return NULL;
   }
 
-  function LookupIcon($context, $iconname, $size)
+  protected function LookupIcon ($context, $iconname, $size)
   {
     if (!isset($this->subdirs[$context])) {
       return NULL;
@@ -222,7 +225,8 @@ class IconTheme
     }
     $_SESSION[static::$session_var] = $themes;
   }
-  static public function findThemeIcon($theme, $context, $icon, $size)
+
+  static public function findThemeIcon ($theme, $context, $icon, $size)
   {
     if (!isset($_SESSION[static::$session_var])) {
       die('Error: no theme found in session');
-- 
GitLab


From fcc28b48c2d1c0c90c23e4eaebe34bb31e948778 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 15 Dec 2020 10:54:18 +0000
Subject: [PATCH 040/117] Merge branch
 '6136-weak-random-generator-use-in-fusiondirectory-setup' into '1.4-dev'

Resolve "Weak random generator use in fusiondirectory-setup"

See merge request fusiondirectory/fd!843

(cherry picked from commit 901584c5108f2c949e1f85d3a4c929f871d38674)

b4eef767 ambulance: Use cryptographically secure random generator
---
 contrib/bin/fusiondirectory-setup | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/contrib/bin/fusiondirectory-setup b/contrib/bin/fusiondirectory-setup
index 30c2fc2a9..f6115b9bb 100644
--- a/contrib/bin/fusiondirectory-setup
+++ b/contrib/bin/fusiondirectory-setup
@@ -44,6 +44,7 @@ use MIME::Base64;
 # used to generate {SSHA} password (for LDAP)
 use Digest::SHA;
 use Crypt::CBC;
+use Bytes::Random::Secure qw(random_string_from);
 
 # used to uncompress tar.gz
 use Archive::Extract;
@@ -229,9 +230,7 @@ sub get_random_string {
   my ($size) = @_;
   $size = 32 if !$size;
   my @chars = ("A".."Z", "a".."z", '.', '/', 0..9);
-  my $string;
-  $string .= $chars[rand @chars] for 1..$size;
-  return $string;
+  return random_string_from(join('', @chars), $size);
 }
 
 sub encrypt_passwords {
-- 
GitLab


From e554b5691b06fe0d3e02e22892efd9231c1e2bdf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 28 Apr 2020 09:55:35 +0200
Subject: [PATCH 041/117] :ambulance: fix(management) Fix XSS in search filter

FSA-0023

issue #6137
---
 include/class_filter.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/class_filter.inc b/include/class_filter.inc
index aa3a4d58b..964a390a9 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -155,7 +155,7 @@ class filter
     if (isset($element['maxlength'])) {
       $maxlength = $element['maxlength'];
     }
-    $result = '<input class="filter_textfield" id="'.$tag.'" name="'.$tag.'" type="text" size="'.$size.'"'.(empty($maxlength) ? '' : ' maxlength="'.$maxlength.'"').' value="'.$this->elementValues[$tag].'"/>';
+    $result = '<input class="filter_textfield" id="'.$tag.'" name="'.$tag.'" type="text" size="'.$size.'"'.(empty($maxlength) ? '' : ' maxlength="'.$maxlength.'"').' value="'.htmlentities($this->elementValues[$tag], ENT_COMPAT, 'UTF-8').'"/>';
     if (isset($element['autocomplete'])) {
       $frequency  = "0.5";
       $characters = "1";
-- 
GitLab


From 1b842ff8fcebc57d2bb146402cefed4bfee298aa Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Thu, 17 Dec 2020 16:56:09 +0100
Subject: [PATCH 042/117] :ambulance: fix(gitab-ci): Remove dev-tools directory
 before clone if it exist

Remove dev-tools directory before clone if it exist
---
 .gitlab-ci.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 165a917fe..4c984f069 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -71,6 +71,7 @@ create_php_code_sniffer_rapport:
   only:
     - branches
   script:
+    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git -b 1.3 ../dev-tools
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
@@ -117,6 +118,7 @@ fusiondirectory-update-locale:
   only:
     - branches
   script:
+    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
 
@@ -127,6 +129,7 @@ update-transifex:
   only:
     - /^1.*$/
   script:
+    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - echo $'[https://www.transifex.com]\nhostname = https://www.transifex.com\nusername = '"$TRANSIFEX_USER"$'\npassword = '"$TRANSIFEX_PASSWORD"$'\ntoken = '"$TRANSIFEX_API_TOKEN"$'\n' > ~/.transifexrc
     - tx pull -a -f
-- 
GitLab


From 4b54b2ba2dd239aa6189b00fc3f2341cd39fcd31 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Sun, 3 Jan 2021 15:03:42 +0100
Subject: [PATCH 043/117] :ambulance: fix(crowfunding) change the donate part
 to add all the crowfunding possibilities

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 README.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index ff69835f7..e804b195c 100644
--- a/README.md
+++ b/README.md
@@ -91,13 +91,13 @@ You can [register on our system][register] and enter issues [FusionDirectory][is
 
 If you like us and want to send us a small contribution you can use the following crowfunding services
 
-* [liberapay] [donate-liberapay]: https://liberapay.com/fusiondirectory/donate
+* [donate-liberapay]
 
-* [kofi][donate-kofi]: https://ko-fi.com/fusiondirectory
+* [donate-kofi]
 
-* [opencollective][donate-opencollective]: https://opencollective.com/fusiondirectory
+* [donate-opencollective]
 
-* [communitybridge][donate-communitybridge]: https://funding.communitybridge.org/projects/fusiondirectory
+* [donate-communitybridge]
   
 ## License
 
-- 
GitLab


From 8d360d853668765900d89c46115b565b340d13a2 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Sun, 3 Jan 2021 22:29:51 +0100
Subject: [PATCH 044/117] :sparkles: feat(github-security) Add a security.md
 for github compliance

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 SECURITY.md | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 SECURITY.md

diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..6eb0a87ed
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,22 @@
+### Reporting Security Vulnerabilities
+
+Although we try to be proactive in preventing security concerns, it is unfortunately inevitable that security breaches will be discovered in all software, including our own.
+
+It is common practice in open source to disclose a security concern to the vendor in a responsible and private manner prior to publication, so that a patch can be prepared, and so that we can take proactive measures to protect FusionDirectory users.
+
+### What is a “security” issue ?
+
+A security issue is a type of bug that can affect the security of FusionDirectory installations.
+
+Specifically, it is a report of a bug that you have found in the code for FusionDirectory and that you have determined can be used to gain some level of access to a site running FusionDirectory that you should not have.
+
+### Where do I report security issues ?
+
+If you would like to contact us with a security vulnerability or possible vulnerability, please contact us via email [security@fusiondirectory.org](mailto:security@fusiondirectory.org).
+
+Your email can be signed with the following public gpg key :
+
+Benoit Mortier : **32BA 180F 6E14 7B5F 52BE 6322 EF2F F1E4 8638 EAD1**
+
+**In any case, you should not share details with anyone else until the bug fix has been officially released.**
+
-- 
GitLab


From 05c344aa65be50e172caf9fe5db2f90c5fc82e66 Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Mon, 4 Jan 2021 14:43:24 +0100
Subject: [PATCH 045/117] :sparkles: feat(ci): Use same trigger plugins than
 1.4

Use same trigger plugins than 1.4
---
 .gitlab-ci.yml | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c984f069..4bb970fd3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -163,10 +163,17 @@ build-release:
     paths:
     - ./fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
 
-trigger-ci:
+trigger-plugins:
+  variables:
+    GROUP: $GROUP
+    BRANCH_CORE: $CI_COMMIT_REF_NAME
+    BRANCH_PLUGIN: $CI_COMMIT_REF_NAME
+    BRANCH_BUILD_DEBIAN_STRETCH: $BRANCH_BUILD_DEBIAN_STRETCH
+    BRANCH_BUILD_DEBIAN_BUSTER: $BRANCH_BUILD_DEBIAN_BUSTER
+    BRANCH_BUILD_CENTOS_7: $BRANCH_BUILD_CENTOS_7
   stage: trigger
   only:
     - 1.3-fixes
   trigger:
     project: fusiondirectory/fd-plugins
-    branch: 1.3-fixes
+    branch: $CI_COMMIT_REF_NAME
-- 
GitLab


From 398961a5e16b0bb6bd0855ac89b4469ae40e0565 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 12 Jan 2021 15:56:46 +0100
Subject: [PATCH 046/117] :ambulance: fix(fusiondirectory-setup) Fix
 configuration fetch when creating admin account

issue #6142
---
 contrib/bin/fusiondirectory-setup | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/contrib/bin/fusiondirectory-setup b/contrib/bin/fusiondirectory-setup
index f6115b9bb..1a94de5ac 100644
--- a/contrib/bin/fusiondirectory-setup
+++ b/contrib/bin/fusiondirectory-setup
@@ -595,8 +595,9 @@ sub add_ldap_admin {
 
   # Get the configuration to know which attribute must be used in the dn
   my $mesg = $ldap->search(
-    base => "$base",
-    filter => "(&(objectClass=fusionDirectoryConf)(cn=fusiondirectory))",
+    base => "$configrdn,$base",
+    filter => '(objectClass=fusionDirectoryConf)',
+    scope => 'base',
     attrs => ['fdAccountPrimaryAttribute', 'fdForcePasswordDefaultHash', 'fdPasswordDefaultHash']
   );
   $mesg->code && die $mesg->error;
-- 
GitLab


From 7922bdb35258052f75a8f75738fa4264f572077b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 5 Jun 2019 11:34:46 +0200
Subject: [PATCH 047/117] :ambulance: fix(logging) Store microseconds in audit
 datetime

This avoids having too many audit events on the same timestamp.

issue #5995
---
 include/class_logging.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/class_logging.inc b/include/class_logging.inc
index b64c18d30..fb9ebb402 100644
--- a/include/class_logging.inc
+++ b/include/class_logging.inc
@@ -60,7 +60,7 @@ class logging {
 
     /* Create data object */
     $entry = array(
-      'timestamp'   => time(),
+      'timestamp'   => microtime(TRUE),
       'action'      => $action,
       'objecttype'  => $objecttype,
       'object'      => $object,
@@ -143,7 +143,7 @@ class logging {
     }
     $tabObject = objects::create('auditEvent');
     $baseObject = $tabObject->getBaseObject();
-    $baseObject->fdAuditDateTime    = new DateTime('@'.$entry['timestamp']);
+    $baseObject->fdAuditDateTime    = DateTime::createFromFormat('U.u', number_format($entry['timestamp'], 6, '.', ''));
     $baseObject->fdAuditAction      = $entry['action'];
     $baseObject->fdAuditAuthorDN    = $entry['user'];
     $baseObject->fdAuditObjectType  = $entry['objecttype'];
-- 
GitLab


From 1535744c4130e67eec608fea417dd713c7a304f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 5 Jun 2019 11:53:56 +0200
Subject: [PATCH 048/117] :ambulance: fix(simpleplugin) Also use non-string
 attributes in DN

Like int for instance, useful for audit which has fdAuditId

issue #5995
---
 include/simpleplugin/class_simplePlugin.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 28ebc1238..40aba6b15 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -1833,8 +1833,8 @@ class simplePlugin
     /* Build DN with multiple attributes */
     $usableAttributes = array();
     foreach ($this->attributes as $attr) {
-      if (($attr != $attribute) && is_string($this->$attr) && ($this->$attr != '')) {
-        $usableAttributes[] = $attr;
+      if (($attr != $attribute) && is_scalar($this->$attr) && ($this->$attr != '')) {
+        $usableAttributes[] = (string)$attr;
       }
     }
     for ($i = 1; $i < count($usableAttributes); $i++) {
-- 
GitLab


From 37f09e4faf5a075fb51e26b9ea9849d87199cc1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 5 Nov 2020 16:01:02 +0100
Subject: [PATCH 049/117] :ambulance: fix(setup) Fix problems in setup

Checks, LDAP base and admin creation were broken

issue #6122
---
 setup/class_setupStepLdap.inc    | 16 ++++++++++------
 setup/class_setupStepMigrate.inc |  5 +++++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/setup/class_setupStepLdap.inc b/setup/class_setupStepLdap.inc
index 80a05c685..f08c07acc 100644
--- a/setup/class_setupStepLdap.inc
+++ b/setup/class_setupStepLdap.inc
@@ -26,7 +26,10 @@ class setupStepLdap extends setupStep
   var $connect_id = FALSE;
   var $bind_id    = FALSE;
 
-  static function getAttributesInfo()
+  private $lastBase       = '';
+  private $lastConnection = '';
+
+  static function getAttributesInfo ()
   {
     return array(
       'connection' => array(
@@ -128,17 +131,18 @@ class setupStepLdap extends setupStep
         'base', TRUE
       );
     }
+    $this->lastConnection = $this->connection;
+    $this->lastBase       = $this->base;
   }
 
   function save_object()
   {
-    $base       = $this->base;
-    $connection = $this->connection;
     parent::save_object();
-    $this->connection = preg_replace("/\/$/", "", $this->connection);
-    if (($this->base != $base) || ($this->connection != $connection)) {
+    $this->connection = preg_replace('/\/$/', '', $this->connection);
+    if (($this->base != $this->lastBase) || ($this->connection != $this->lastConnection)) {
       $this->parent->disable_steps_from(($this->parent->step_name_to_id(get_class($this))) + 1);
-      if ($this->connection != $connection) {
+      $this->lastBase       = $this->base;
+      if ($this->connection != $this->lastConnection) {
         $this->update_base_choices();
       }
     }
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index d15e505a3..ecffb51fb 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -104,6 +104,11 @@ class StepMigrateDialog extends GenericDialog
   {
     return FALSE;
   }
+
+  public function getInfos ()
+  {
+    return $this->infos;
+  }
 }
 
 class StepMigrateCheck
-- 
GitLab


From f37649f5bbad07d94452ffab7c267f445c4c0294 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 12 Nov 2020 12:15:09 +0100
Subject: [PATCH 050/117] :ambulance: fix(setup) Fix crashes and problems in
 web setup

issue #6122
---
 setup/class_setupStep.inc        | 2 +-
 setup/class_setupStepMigrate.inc | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc
index bab60d15a..2554fd386 100644
--- a/setup/class_setupStep.inc
+++ b/setup/class_setupStep.inc
@@ -93,7 +93,7 @@ class setupStep extends simplePlugin
   }
 
   /* Return attributes handled by this setup step */
-  function get_attributes()
+  public function get_attributes ()
   {
     $tmp = array();
     foreach (array_keys($this->attributesAccess) as $attr) {
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index ecffb51fb..cfda33456 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -407,7 +407,7 @@ class setupStepMigrate extends setupStep
         $mods['ou'] = $val;
       }
 
-      /*Append description, it is required by gosaDepartment too */
+      /* Append description, it is required by gosaDepartment too */
       if (!isset($attrs['description'])) {
         $val = "GOsa";
         if (isset($attrs[$dep_infos['mainAttr']][0])) {
@@ -420,7 +420,7 @@ class setupStepMigrate extends setupStep
       $this->rootOC_details['target'] = $str;
       $this->rootOC_details['mods']   = $mods;
 
-      /*  Add button that allows to open the migration details */
+      /* Add button that allows to open the migration details */
       throw new CheckFailedException(
         _('Failed'),
         '&nbsp;'.$checkobj->submit()
@@ -433,6 +433,8 @@ class setupStepMigrate extends setupStep
 
   function check_baseOC_migrate (&$checkobj)
   {
+    /* Refresh $this->rootOC_details */
+    $checkobj->run();
     $this->openDialog(new StepMigrateDialog($checkobj, 'setup_migrate_baseOC.tpl', $this->rootOC_details));
   }
 
-- 
GitLab


From 5151f87bbecf03bdd57e70af60c1ea8444038688 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 12 Nov 2020 15:12:00 +0100
Subject: [PATCH 051/117] :ambulance: fix(setup) Fix escaped HTML link in setup

issue #6122
---
 setup/class_setupStepChecks.inc | 2 +-
 setup/setup_checks.tpl          | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/setup/class_setupStepChecks.inc b/setup/class_setupStepChecks.inc
index 66dbe033b..847f8c2f4 100644
--- a/setup/class_setupStepChecks.inc
+++ b/setup/class_setupStepChecks.inc
@@ -34,7 +34,7 @@ class setupStepChecks extends setupStep
         )
       ),
       'setup' => array(
-        'name'      => _('PHP setup configuration (<a href="?info" target="_blank">show information</a>)'),
+        'name'      => _('PHP setup configuration'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
         'attrs'     => array(
           new FakeAttribute('config_checks')
diff --git a/setup/setup_checks.tpl b/setup/setup_checks.tpl
index 80776db1c..d9d208fbc 100644
--- a/setup/setup_checks.tpl
+++ b/setup/setup_checks.tpl
@@ -1,6 +1,8 @@
 <div id="{$sectionId}" class="plugin-section">
   <span class="legend">
     {$section}
+    -
+    <a href="?info" target="_blank">{t}show information{/t}</a>
   </span>
   <div>
     {foreach from=$attributes item=infos}
-- 
GitLab


From 95ce01187ce6a08c0f1f24f1936f79283503eeec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 8 Mar 2021 17:00:11 +0100
Subject: [PATCH 052/117] :sparkles: feat(core) Add subscription page

issue #6152
---
 .../subscriptions/class_subscriptionInfo.inc  | 135 ++++++++++++++++++
 1 file changed, 135 insertions(+)
 create mode 100644 plugins/addons/subscriptions/class_subscriptionInfo.inc

diff --git a/plugins/addons/subscriptions/class_subscriptionInfo.inc b/plugins/addons/subscriptions/class_subscriptionInfo.inc
new file mode 100644
index 000000000..1e89d1cbb
--- /dev/null
+++ b/plugins/addons/subscriptions/class_subscriptionInfo.inc
@@ -0,0 +1,135 @@
+<?php
+/*
+  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
+  Copyright (C) 2020-2021  FusionDirectory
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+class subscriptionInfo extends simplePlugin
+{
+  public static $subscriptionAttributes = ['fdSubscriptionType', 'fdSubscriptionContractId', 'fdSubscriptionStartDate', 'fdSubscriptionEndDate'];
+
+  public static function plInfo (): array
+  {
+    return [
+      'plShortName'   => _('Subscription'),
+      'plTitle'       => _('Subscription information'),
+      'plDescription' => _('Information about your subscription to FusionDirectory, if any'),
+      'plIcon'        => 'geticon.php?context=applications&icon=fusiondirectory&size=48',
+      'plObjectClass' => ['fdSubscriptionInfo'],
+      'plObjectType'  => [
+        'subscriptionInfo' => [
+          'name'      => _('Subscription information'),
+        ]
+      ],
+      'plSection'     => 'conf',
+      'plPriority'    => 1,
+
+      'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo()),
+    ];
+  }
+
+  public static function getAttributesInfo (): array
+  {
+    return [
+      'stats' => [
+        'name'  => _('Subscription information'),
+        'attrs' => [
+          new HiddenAttribute(
+            'cn', TRUE, 'subscription'
+          ),
+          new DisplayLDAPAttribute(
+            _('Type'), _('Subscription type'),
+            'fdSubscriptionType', TRUE
+          ),
+          new DisplayLDAPAttribute(
+            _('Contract'), _('Contract identifier from Dolibarr'),
+            'fdSubscriptionContractId', TRUE
+          ),
+          new GeneralizedTimeDisplayAttribute(
+            _('Start date'), _('Start date of this subscription'),
+            'fdSubscriptionStartDate', TRUE,
+            ''
+          ),
+          new GeneralizedTimeDisplayAttribute(
+            _('End date'), _('End date of this subscription'),
+            'fdSubscriptionEndDate', TRUE,
+            ''
+          ),
+          new FileAttribute(
+            _('Import'), _('Import subscription'),
+            'import_file', FALSE
+          ),
+          new ButtonAttribute(
+            '', '',
+            'import',
+            _('Import'),
+            NULL, '',
+            'import_file'
+          ),
+        ],
+      ],
+    ];
+  }
+
+  public function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
+  {
+    parent::__construct($dn, $object, $parent, $mainTab);
+
+    $this->attributesAccess['import_file']->setInLdap(FALSE);
+    $this->attributesAccess['import']->setInLdap(FALSE);
+  }
+
+  public function handle_import ()
+  {
+    $data = $this->import_file;
+    if (empty($data)) {
+      /* No file or empty file */
+      $error = new SimplePluginError(
+        $this->attributesAccess['import_file'],
+        htmlescape(_('No data. Did you forgot to upload a file?'))
+      );
+      $error->display();
+    } elseif (($data = parse_ini_string($data)) === FALSE) {
+      /* Import of INI failed */
+      $error = new SimplePluginError(
+        $this->attributesAccess['import_file'],
+        htmlescape(_('Failed to parse imported file'))
+      );
+      $error->display();
+    } else {
+      /* Import data and save it to the LDAP */
+      foreach (static::$subscriptionAttributes as $attr) {
+        $this->attributesAccess[$attr]->setValue($data[$attr] ?? '');
+      }
+      $errors = $this->parent->save();
+      msg_dialog::displayChecks($errors);
+    }
+    /* Avoid double import */
+    $this->import_file = '';
+  }
+
+  public static function mainInc ($classname = NULL, $entry_dn = NULL, $tabs = FALSE, $edit_mode = FALSE, $objectType = FALSE)
+  {
+    global $config;
+
+    if ($entry_dn === NULL) {
+      $entry_dn = 'cn=subscription,'.get_ou('fusiondirectoryRDN').$config->current['BASE'];
+    }
+
+    parent::mainInc($classname, $entry_dn, $tabs, $edit_mode, $objectType);
+  }
+}
-- 
GitLab


From 9117e72aa93e22dffa00e5e0866fea1019e7053b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 8 Mar 2021 17:00:35 +0100
Subject: [PATCH 053/117] :ambulance: fix(simpleplugin) Improve empty Date
 handling

issue #6152
---
 .../simpleplugin/attributes/class_DateAttribute.inc   | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index e9ff6957c..c347907c0 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -44,9 +44,10 @@ class DateAttribute extends Attribute
 
   function inputValue ($value)
   {
-    if ($value === "" && !$this->isRequired()) {
-      return $value;
-    } elseif ($this->isTemplate() && preg_match('/%/', $value)) {
+    if (
+        ($value === '') ||
+        ($this->isTemplate() && preg_match('/%/', $value))
+      ) {
       return $value;
     } else {
       return $this->ldapToDate($value);
@@ -55,7 +56,7 @@ class DateAttribute extends Attribute
 
   function getValue ()
   {
-    if ($this->value === "" && !$this->isRequired()) {
+    if ($this->value === '') {
       return $this->value;
     } else {
       try {
@@ -97,7 +98,7 @@ class DateAttribute extends Attribute
 
   function computeLdapValue ()
   {
-    if ($this->value === "" && !$this->isRequired()) {
+    if ($this->value === '') {
       return $this->value;
     } elseif (!($this->value instanceof DateTime)) {
       try {
-- 
GitLab


From bfb870392a11ab93e416c9882f8624fbdbc73aad Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Mon, 8 Mar 2021 17:54:23 +0100
Subject: [PATCH 054/117] :handshake: fix(sentences) reworded some sentences

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 plugins/addons/subscriptions/class_subscriptionInfo.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/addons/subscriptions/class_subscriptionInfo.inc b/plugins/addons/subscriptions/class_subscriptionInfo.inc
index 1e89d1cbb..8fb8dfcfa 100644
--- a/plugins/addons/subscriptions/class_subscriptionInfo.inc
+++ b/plugins/addons/subscriptions/class_subscriptionInfo.inc
@@ -27,7 +27,7 @@ class subscriptionInfo extends simplePlugin
     return [
       'plShortName'   => _('Subscription'),
       'plTitle'       => _('Subscription information'),
-      'plDescription' => _('Information about your subscription to FusionDirectory, if any'),
+      'plDescription' => _('Information about your FusionDirectory subscription'),
       'plIcon'        => 'geticon.php?context=applications&icon=fusiondirectory&size=48',
       'plObjectClass' => ['fdSubscriptionInfo'],
       'plObjectType'  => [
@@ -56,7 +56,7 @@ class subscriptionInfo extends simplePlugin
             'fdSubscriptionType', TRUE
           ),
           new DisplayLDAPAttribute(
-            _('Contract'), _('Contract identifier from Dolibarr'),
+            _('Contract'), _('Contract reference'),
             'fdSubscriptionContractId', TRUE
           ),
           new GeneralizedTimeDisplayAttribute(
-- 
GitLab


From fd5686d047fd96ca94ebdfc0133da4d9d99f60ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 9 Mar 2021 10:41:15 +0100
Subject: [PATCH 055/117] :tractor: feat(core) rename subscriptions to
 subscription

issue #6152
---
 .../{subscriptions => subscription}/class_subscriptionInfo.inc    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename plugins/addons/{subscriptions => subscription}/class_subscriptionInfo.inc (100%)

diff --git a/plugins/addons/subscriptions/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
similarity index 100%
rename from plugins/addons/subscriptions/class_subscriptionInfo.inc
rename to plugins/addons/subscription/class_subscriptionInfo.inc
-- 
GitLab


From 741d39a3b2b16377e7f0bcaf2404f1793d81ca23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 9 Mar 2021 10:43:02 +0100
Subject: [PATCH 056/117] :sparkles: feat(core) Add schema and fix ini
 importation

issue #6152
---
 contrib/openldap/core-fd.schema               | 35 +++++++++++++++++++
 .../subscription/class_subscriptionInfo.inc   | 19 +++++++---
 2 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema
index f43752f7a..da1b451a5 100644
--- a/contrib/openldap/core-fd.schema
+++ b/contrib/openldap/core-fd.schema
@@ -57,6 +57,36 @@ attributetype ( 1.3.6.1.4.1.38414.62.1.3 NAME 'fdLockTimestamp'
   ORDERING generalizedTimeOrderingMatch
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE )
 
+# Subscriptions
+
+attributetype ( 1.3.6.1.4.1.38414.62.11.1 NAME 'fdSubscriptionStartDate'
+  DESC 'FusionDirectory - Subscription Starting Date'
+  EQUALITY generalizedTimeMatch
+  ORDERING generalizedTimeOrderingMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.38414.62.11.2 NAME 'fdSubscriptionEndDate'
+  DESC 'FusionDirectory - Subscription End Date'
+  EQUALITY generalizedTimeMatch
+  ORDERING generalizedTimeOrderingMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.38414.62.11.3 NAME 'fdSubscriptionType'
+  DESC 'FusionDirectory - Subscription type'
+  EQUALITY caseIgnoreMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.38414.62.11.4 NAME 'fdSubscriptionContractId'
+  DESC 'FusionDirectory - Subscription contract ID'
+  EQUALITY caseIgnoreMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.38414.62.11.5 NAME 'fdSubscriptionName'
+  DESC 'FusionDirectory - Subscription client name'
+  SUP name )
+
 # Classes
 
 objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.4 NAME 'gosaDepartment' SUP top AUXILIARY
@@ -89,3 +119,8 @@ objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.19 NAME 'gosaSnapshotObject'
 objectclass ( 1.3.6.1.4.1.38414.62.2.1 NAME 'fdLockEntry' SUP top STRUCTURAL
   DESC 'FusionDirectory - Class for FD locking'
   MUST ( fdUserDn $ fdObjectDn $ cn $ fdLockTimestamp ))
+
+objectclass ( 1.3.6.1.4.1.38414.62.2.2 NAME 'fdSubscriptionInformation' SUP top STRUCTURAL
+  DESC 'FusionDirectory - Information about current subscription'
+  MUST ( cn )
+  MAY ( fdSubscriptionStartDate $ fdSubscriptionEndDate $ fdSubscriptionType $ fdSubscriptionContractId $ fdSubscriptionName ))
diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 8fb8dfcfa..723fd2f7b 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -20,7 +20,14 @@
 
 class subscriptionInfo extends simplePlugin
 {
-  public static $subscriptionAttributes = ['fdSubscriptionType', 'fdSubscriptionContractId', 'fdSubscriptionStartDate', 'fdSubscriptionEndDate'];
+  /* ldap attribute => ini variable */
+  public static $subscriptionAttributes = [
+    'fdSubscriptionName'        => 'Name',
+    'fdSubscriptionType'        => 'Type',
+    'fdSubscriptionContractId'  => 'Contract',
+    'fdSubscriptionStartDate'   => 'StartDate',
+    'fdSubscriptionEndDate'     => 'EndDate',
+  ];
 
   public static function plInfo (): array
   {
@@ -29,7 +36,7 @@ class subscriptionInfo extends simplePlugin
       'plTitle'       => _('Subscription information'),
       'plDescription' => _('Information about your FusionDirectory subscription'),
       'plIcon'        => 'geticon.php?context=applications&icon=fusiondirectory&size=48',
-      'plObjectClass' => ['fdSubscriptionInfo'],
+      'plObjectClass' => ['fdSubscriptionInformation'],
       'plObjectType'  => [
         'subscriptionInfo' => [
           'name'      => _('Subscription information'),
@@ -51,6 +58,10 @@ class subscriptionInfo extends simplePlugin
           new HiddenAttribute(
             'cn', TRUE, 'subscription'
           ),
+          new DisplayLDAPAttribute(
+            _('Name'), _('Subscription name'),
+            'fdSubscriptionName', TRUE
+          ),
           new DisplayLDAPAttribute(
             _('Type'), _('Subscription type'),
             'fdSubscriptionType', TRUE
@@ -112,8 +123,8 @@ class subscriptionInfo extends simplePlugin
       $error->display();
     } else {
       /* Import data and save it to the LDAP */
-      foreach (static::$subscriptionAttributes as $attr) {
-        $this->attributesAccess[$attr]->setValue($data[$attr] ?? '');
+      foreach (static::$subscriptionAttributes as $attr => $iniVar) {
+        $this->attributesAccess[$attr]->setValue($data[$iniVar] ?? '');
       }
       $errors = $this->parent->save();
       msg_dialog::displayChecks($errors);
-- 
GitLab


From e49d89287c1cf071c9fabf072766f56a7236bb0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 9 Mar 2021 12:41:40 +0100
Subject: [PATCH 057/117] =?UTF-8?q?:ambulance:=20feat(subscription)=20Ajou?=
 =?UTF-8?q?t=20de=20l=E2=80=99uid=20au=20ini,=20fix=20du=20dn?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

issue #6152
---
 contrib/openldap/core-fd.schema                        | 2 +-
 plugins/addons/subscription/class_subscriptionInfo.inc | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema
index da1b451a5..a57a87e7a 100644
--- a/contrib/openldap/core-fd.schema
+++ b/contrib/openldap/core-fd.schema
@@ -123,4 +123,4 @@ objectclass ( 1.3.6.1.4.1.38414.62.2.1 NAME 'fdLockEntry' SUP top STRUCTURAL
 objectclass ( 1.3.6.1.4.1.38414.62.2.2 NAME 'fdSubscriptionInformation' SUP top STRUCTURAL
   DESC 'FusionDirectory - Information about current subscription'
   MUST ( cn )
-  MAY ( fdSubscriptionStartDate $ fdSubscriptionEndDate $ fdSubscriptionType $ fdSubscriptionContractId $ fdSubscriptionName ))
+  MAY ( uid $ fdSubscriptionStartDate $ fdSubscriptionEndDate $ fdSubscriptionType $ fdSubscriptionContractId $ fdSubscriptionName ))
diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 723fd2f7b..90b13b34e 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -23,6 +23,7 @@ class subscriptionInfo extends simplePlugin
   /* ldap attribute => ini variable */
   public static $subscriptionAttributes = [
     'fdSubscriptionName'        => 'Name',
+    'uid'                       => 'Id',
     'fdSubscriptionType'        => 'Type',
     'fdSubscriptionContractId'  => 'Contract',
     'fdSubscriptionStartDate'   => 'StartDate',
@@ -40,6 +41,7 @@ class subscriptionInfo extends simplePlugin
       'plObjectType'  => [
         'subscriptionInfo' => [
           'name'      => _('Subscription information'),
+          'ou'        => get_ou('fusiondirectoryRDN'),
         ]
       ],
       'plSection'     => 'conf',
@@ -62,6 +64,10 @@ class subscriptionInfo extends simplePlugin
             _('Name'), _('Subscription name'),
             'fdSubscriptionName', TRUE
           ),
+          new DisplayLDAPAttribute(
+            _('Id'), _('Subscription id'),
+            'uid', TRUE
+          ),
           new DisplayLDAPAttribute(
             _('Type'), _('Subscription type'),
             'fdSubscriptionType', TRUE
-- 
GitLab


From 120e8ca3e8deb4b4f5c8246d6c16c4506d7307f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 9 Mar 2021 14:51:46 +0100
Subject: [PATCH 058/117] :ambulance: fix(subscription) Hide time for start/end
 date

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 90b13b34e..f7f7c9174 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -79,12 +79,12 @@ class subscriptionInfo extends simplePlugin
           new GeneralizedTimeDisplayAttribute(
             _('Start date'), _('Start date of this subscription'),
             'fdSubscriptionStartDate', TRUE,
-            ''
+            '', 'Y-m-d'
           ),
           new GeneralizedTimeDisplayAttribute(
             _('End date'), _('End date of this subscription'),
             'fdSubscriptionEndDate', TRUE,
-            ''
+            '', 'Y-m-d'
           ),
           new FileAttribute(
             _('Import'), _('Import subscription'),
-- 
GitLab


From f8bf4e0f22541bb0643e7305aec6a5d6d54ba0cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 11 Mar 2021 10:37:19 +0100
Subject: [PATCH 059/117] :ambulance: fix(subscription) Add link to
 subscription page, split import in a second section

issue #6152
---
 .../subscription/class_subscriptionInfo.inc   | 44 ++++++++++++++++++-
 1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index f7f7c9174..13d7055b6 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -54,12 +54,16 @@ class subscriptionInfo extends simplePlugin
   public static function getAttributesInfo (): array
   {
     return [
-      'stats' => [
+      'info' => [
         'name'  => _('Subscription information'),
         'attrs' => [
           new HiddenAttribute(
             'cn', TRUE, 'subscription'
           ),
+          new DisplayAttribute(
+            '', _('Information text for subscription'),
+            'fdSubscriptionText', FALSE
+          ),
           new DisplayLDAPAttribute(
             _('Name'), _('Subscription name'),
             'fdSubscriptionName', TRUE
@@ -86,8 +90,13 @@ class subscriptionInfo extends simplePlugin
             'fdSubscriptionEndDate', TRUE,
             '', 'Y-m-d'
           ),
+        ],
+      ],
+      'import' => [
+        'name'  => _('Import your subscription'),
+        'attrs' => [
           new FileAttribute(
-            _('Import'), _('Import subscription'),
+            '', _('Import subscription'),
             'import_file', FALSE
           ),
           new ButtonAttribute(
@@ -108,6 +117,37 @@ class subscriptionInfo extends simplePlugin
 
     $this->attributesAccess['import_file']->setInLdap(FALSE);
     $this->attributesAccess['import']->setInLdap(FALSE);
+
+    $this->fdSubscriptionText = sprintf(
+      htmlescape(_('You do not have a valid subscription for this instance of FusionDirectory. Please visit %s for a list of available options')),
+      '<a href="https://www.fusiondirectory.org/support/" target="_blank">https://www.fusiondirectory.org/support/</a>'
+    );
+    $this->attributesAccess['fdSubscriptionText']->setAllowHTML(TRUE);
+  }
+
+  public function update (): bool
+  {
+    parent::update();
+
+    if ($this->uid !== '') {
+      $this->attributesAccess['fdSubscriptionText']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionName']->setVisible(TRUE);
+      $this->attributesAccess['uid']->setVisible(TRUE);
+      $this->attributesAccess['fdSubscriptionType']->setVisible(TRUE);
+      $this->attributesAccess['fdSubscriptionContractId']->setVisible(TRUE);
+      $this->attributesAccess['fdSubscriptionStartDate']->setVisible(TRUE);
+      $this->attributesAccess['fdSubscriptionEndDate']->setVisible(TRUE);
+    } else {
+      $this->attributesAccess['fdSubscriptionText']->setVisible(TRUE);
+      $this->attributesAccess['fdSubscriptionName']->setVisible(FALSE);
+      $this->attributesAccess['uid']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionType']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionContractId']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionStartDate']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionEndDate']->setVisible(FALSE);
+    }
+
+    return TRUE;
   }
 
   public function handle_import ()
-- 
GitLab


From 32413a3b4f0855e10477fdf4306e8f54e86a1d9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 11 Mar 2021 14:21:58 +0100
Subject: [PATCH 060/117] :sparkles: feat(subscription) Add text when
 subscription is expired

issue #6152
---
 .../subscription/class_subscriptionInfo.inc   | 23 +++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 13d7055b6..56c21ed82 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -95,6 +95,10 @@ class subscriptionInfo extends simplePlugin
       'import' => [
         'name'  => _('Import your subscription'),
         'attrs' => [
+          new DisplayAttribute(
+            '', _('Information text for expired subscription'),
+            'fdSubscriptionTextExpired', FALSE
+          ),
           new FileAttribute(
             '', _('Import subscription'),
             'import_file', FALSE
@@ -118,11 +122,16 @@ class subscriptionInfo extends simplePlugin
     $this->attributesAccess['import_file']->setInLdap(FALSE);
     $this->attributesAccess['import']->setInLdap(FALSE);
 
-    $this->fdSubscriptionText = sprintf(
-      htmlescape(_('You do not have a valid subscription for this instance of FusionDirectory. Please visit %s for a list of available options')),
-      '<a href="https://www.fusiondirectory.org/support/" target="_blank">https://www.fusiondirectory.org/support/</a>'
-    );
+    $this->fdSubscriptionText = '<p>'.nl2br(sprintf(
+      htmlescape(_("You do not have a valid subscription for this instance of FusionDirectory.\nPlease visit %s for a list of available options.")),
+      '<a href="https://www.fusiondirectory.org/support/" target="_blank"><strong>https://www.fusiondirectory.org/support/</strong></a>'
+    )).'</p>';
     $this->attributesAccess['fdSubscriptionText']->setAllowHTML(TRUE);
+    $this->fdSubscriptionTextExpired = '<p>'.nl2br(sprintf(
+      htmlescape(_("Your subscription is expired for this instance of FusionDirectory.\nPlease visit %s to renew it.")),
+      '<a href="https://www.fusiondirectory.org/support/" target="_blank"><strong>https://www.fusiondirectory.org/support/</strong></a>'
+    )).'</p>';
+    $this->attributesAccess['fdSubscriptionTextExpired']->setAllowHTML(TRUE);
   }
 
   public function update (): bool
@@ -137,6 +146,11 @@ class subscriptionInfo extends simplePlugin
       $this->attributesAccess['fdSubscriptionContractId']->setVisible(TRUE);
       $this->attributesAccess['fdSubscriptionStartDate']->setVisible(TRUE);
       $this->attributesAccess['fdSubscriptionEndDate']->setVisible(TRUE);
+      if ($this->attributesAccess['fdSubscriptionEndDate']->getDateValue() < new DateTime()) {
+        $this->attributesAccess['fdSubscriptionTextExpired']->setVisible(TRUE);
+      } else {
+        $this->attributesAccess['fdSubscriptionTextExpired']->setVisible(FALSE);
+      }
     } else {
       $this->attributesAccess['fdSubscriptionText']->setVisible(TRUE);
       $this->attributesAccess['fdSubscriptionName']->setVisible(FALSE);
@@ -145,6 +159,7 @@ class subscriptionInfo extends simplePlugin
       $this->attributesAccess['fdSubscriptionContractId']->setVisible(FALSE);
       $this->attributesAccess['fdSubscriptionStartDate']->setVisible(FALSE);
       $this->attributesAccess['fdSubscriptionEndDate']->setVisible(FALSE);
+      $this->attributesAccess['fdSubscriptionTextExpired']->setVisible(FALSE);
     }
 
     return TRUE;
-- 
GitLab


From c0af3c44bfd67fa559e329443084a0924312e363 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 16 Mar 2021 09:23:09 +0100
Subject: [PATCH 061/117] :ambulance: fix(subscription) Remove code not
 compatible with PHP 5.6

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 56c21ed82..9c1bbe00d 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -30,7 +30,7 @@ class subscriptionInfo extends simplePlugin
     'fdSubscriptionEndDate'     => 'EndDate',
   ];
 
-  public static function plInfo (): array
+  public static function plInfo ()
   {
     return [
       'plShortName'   => _('Subscription'),
@@ -51,7 +51,7 @@ class subscriptionInfo extends simplePlugin
     ];
   }
 
-  public static function getAttributesInfo (): array
+  public static function getAttributesInfo ()
   {
     return [
       'info' => [
@@ -134,7 +134,7 @@ class subscriptionInfo extends simplePlugin
     $this->attributesAccess['fdSubscriptionTextExpired']->setAllowHTML(TRUE);
   }
 
-  public function update (): bool
+  public function update ()
   {
     parent::update();
 
@@ -185,7 +185,7 @@ class subscriptionInfo extends simplePlugin
     } else {
       /* Import data and save it to the LDAP */
       foreach (static::$subscriptionAttributes as $attr => $iniVar) {
-        $this->attributesAccess[$attr]->setValue($data[$iniVar] ?? '');
+        $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
       }
       $errors = $this->parent->save();
       msg_dialog::displayChecks($errors);
-- 
GitLab


From d4e8fb9f089a7467f006ee0caa7a76e0e03e78f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 16 Mar 2021 09:48:48 +0100
Subject: [PATCH 062/117] :ambulance: fix(subscription) Change code to fix
 boggus codesniffer check

1.3-fixes codesniffer was complaining on these lines

issue #6152
---
 .../addons/subscription/class_subscriptionInfo.inc   | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 9c1bbe00d..5fe131323 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -22,12 +22,12 @@ class subscriptionInfo extends simplePlugin
 {
   /* ldap attribute => ini variable */
   public static $subscriptionAttributes = [
-    'fdSubscriptionName'        => 'Name',
-    'uid'                       => 'Id',
-    'fdSubscriptionType'        => 'Type',
-    'fdSubscriptionContractId'  => 'Contract',
-    'fdSubscriptionStartDate'   => 'StartDate',
-    'fdSubscriptionEndDate'     => 'EndDate',
+    'fdSubscriptionName'                => 'Name',
+    'uid'                               => 'Id',
+    'fdSubscriptionType'                => 'Type',
+    'fdSubscriptionContractId'          => 'Contract',
+    'fdSubscriptionStartDate'           => 'StartDate',
+    'fdSubscriptionEndDate'             => 'EndDate',
   ];
 
   public static function plInfo ()
-- 
GitLab


From 916e66815fb365e3d7b660873312768dc83fae0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 16 Mar 2021 10:12:27 +0100
Subject: [PATCH 063/117] :tractor: feat(simpleplugin) Move
 GeneralizedTimeDisplayAttribute from audit to core

issue #6152
---
 .../attributes/class_DateAttribute.inc         | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index c347907c0..0addfdeaf 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -309,3 +309,21 @@ class DateTimeAttribute extends CompositeAttribute
     parent::__construct($description, $ldapName, $attributes, '/^(\d{8})(\d{6})$/', '%s%s', $acl, $label);
   }
 }
+
+/*!
+ * \brief Read-only GeneralizedTimeDateAttribute. Used by audit plugin
+ */
+class GeneralizedTimeDisplayAttribute extends GeneralizedTimeDateAttribute
+{
+  function getValue ()
+  {
+    return $this->computeLdapValue();
+  }
+
+  function renderFormInput ()
+  {
+    $date = $this->getDateValue();
+    $date->setTimezone(timezone::getDefaultTimeZone());
+    return htmlentities($date->format('Y-m-d, H:i:s'), ENT_COMPAT, 'UTF-8');
+  }
+}
-- 
GitLab


From 740301eec11ea2cbc018a52f4127f8fdc955d006 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 16 Mar 2021 10:17:17 +0100
Subject: [PATCH 064/117] :sparkles: feat(simpleplugin) Add display format to
 GeneralizedTimeDisplayAttribute

issue #6152
---
 .../simpleplugin/attributes/class_DateAttribute.inc    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 0addfdeaf..3f573223f 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -315,6 +315,14 @@ class DateTimeAttribute extends CompositeAttribute
  */
 class GeneralizedTimeDisplayAttribute extends GeneralizedTimeDateAttribute
 {
+  protected $displayFormat;
+
+  function __construct ($label, $description, $ldapName, $required, $defaultValue = '', $format = 'Y-m-d, H:i:s', $acl = '')
+  {
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
+    $this->displayFormat = $format;
+  }
+
   function getValue ()
   {
     return $this->computeLdapValue();
@@ -324,6 +332,6 @@ class GeneralizedTimeDisplayAttribute extends GeneralizedTimeDateAttribute
   {
     $date = $this->getDateValue();
     $date->setTimezone(timezone::getDefaultTimeZone());
-    return htmlentities($date->format('Y-m-d, H:i:s'), ENT_COMPAT, 'UTF-8');
+    return htmlentities($date->format($this->displayFormat), ENT_COMPAT, 'UTF-8');
   }
 }
-- 
GitLab


From 43000c6503587e489dda02eb4338316b6b1ce014 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 18 Mar 2021 14:23:42 +0100
Subject: [PATCH 065/117] :ambulance: fix(subscription) Add missing main.inc
 file for 1.3-fixes

issue #6152
---
 plugins/addons/subscription/main.inc | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 plugins/addons/subscription/main.inc

diff --git a/plugins/addons/subscription/main.inc b/plugins/addons/subscription/main.inc
new file mode 100644
index 000000000..0d38b4186
--- /dev/null
+++ b/plugins/addons/subscription/main.inc
@@ -0,0 +1,21 @@
+<?php
+/*
+  This code is part of FusionDirectory (http://www.fusiondirectory.org)
+  Copyright (C) 2013-2021  FusionDirectory
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+subscriptionInfo::mainInc();
-- 
GitLab


From 2e5cfa49a0c8a6560f1f83998d7e5451cf5bae5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 18 Mar 2021 16:20:34 +0100
Subject: [PATCH 066/117] :ambulance: fix(subscription) Fix mainInc of
 subscription for 1.3-fixes

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 5fe131323..1475694cd 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -198,6 +198,10 @@ class subscriptionInfo extends simplePlugin
   {
     global $config;
 
+    if ($classname === NULL) {
+      $classname = get_called_class();
+    }
+
     if ($entry_dn === NULL) {
       $entry_dn = 'cn=subscription,'.get_ou('fusiondirectoryRDN').$config->current['BASE'];
     }
-- 
GitLab


From bd581ee889dbe01d75056e7509dab03fca75c562 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Mon, 22 Mar 2021 18:32:08 +0100
Subject: [PATCH 067/117] :handshake: fix(locales) updating locales for 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 locale/af_ZA/fusiondirectory.po       |  334 +++++---
 locale/ar/fusiondirectory.po          |  334 +++++---
 locale/ca/fusiondirectory.po          |  334 +++++---
 locale/cs_CZ/fusiondirectory.po       |  341 +++++---
 locale/de/fusiondirectory.po          |  356 +++++---
 locale/el_GR/fusiondirectory.po       |  341 +++++---
 locale/es/fusiondirectory.po          |  338 +++++---
 locale/es_CO/fusiondirectory.po       |  334 +++++---
 locale/es_VE/fusiondirectory.po       |  338 +++++---
 locale/fa_IR/fusiondirectory.po       |  334 +++++---
 locale/fi_FI/fusiondirectory.po       |  338 +++++---
 locale/fr/fusiondirectory.po          |  353 +++++---
 locale/hu_HU/fusiondirectory.po       |  334 +++++---
 locale/id/fusiondirectory.po          |  334 +++++---
 locale/it_IT/fusiondirectory.po       |  350 +++++---
 locale/ja/fusiondirectory.po          |  334 +++++---
 locale/ko/fusiondirectory.po          | 1094 ++++++++++++++-----------
 locale/lv/fusiondirectory.po          |  334 +++++---
 locale/nb/fusiondirectory.po          |  334 +++++---
 locale/nl/fusiondirectory.po          |  341 +++++---
 locale/pl/fusiondirectory.po          |  338 +++++---
 locale/pt/fusiondirectory.po          |  334 +++++---
 locale/pt_BR/fusiondirectory.po       |  338 +++++---
 locale/ru/fusiondirectory.po          |  338 +++++---
 locale/ru@petr1708/fusiondirectory.po |  334 +++++---
 locale/sv/fusiondirectory.po          |  334 +++++---
 locale/tr_TR/fusiondirectory.po       |  344 +++++---
 locale/ug/fusiondirectory.po          |  346 +++++---
 locale/vi_VN/fusiondirectory.po       |  334 +++++---
 locale/zh/fusiondirectory.po          |  338 +++++---
 locale/zh_TW/fusiondirectory.po       |  334 +++++---
 31 files changed, 7216 insertions(+), 4026 deletions(-)

diff --git a/locale/af_ZA/fusiondirectory.po b/locale/af_ZA/fusiondirectory.po
index 8736a3a94..6dda78fb3 100644
--- a/locale/af_ZA/fusiondirectory.po
+++ b/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4716,11 +4814,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/ar/fusiondirectory.po b/locale/ar/fusiondirectory.po
index 4f6a8510e..ed2d1accf 100644
--- a/locale/ar/fusiondirectory.po
+++ b/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "خطأ"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "النوع"
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "تحذير"
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "الإسم"
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "خطأ"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4752,11 +4850,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/ca/fusiondirectory.po b/locale/ca/fusiondirectory.po
index 2f4e1d698..e995df8a0 100644
--- a/locale/ca/fusiondirectory.po
+++ b/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Error d'LDAP"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avís"
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Canceŀla"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "D'acord"
 
@@ -1037,7 +1038,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1272,6 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nom"
@@ -1306,8 +1310,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1319,31 +1323,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1708,7 +1712,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2454,7 +2458,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3440,6 +3444,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3754,134 +3854,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4076,222 +4174,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Error"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4725,11 +4823,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/cs_CZ/fusiondirectory.po b/locale/cs_CZ/fusiondirectory.po
index 992f58fa1..27555cc24 100644
--- a/locale/cs_CZ/fusiondirectory.po
+++ b/locale/cs_CZ/fusiondirectory.po
@@ -4,17 +4,17 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
 # Pavel Borecki <pavel.borecki@gmail.com>, 2019
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2019\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -42,7 +42,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Chyba"
 
@@ -90,8 +90,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Chyba LDAP"
 
@@ -180,6 +180,7 @@ msgid "Trace"
 msgstr "stopa"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Typ"
 
@@ -499,11 +500,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "LDAP server odpověděl: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varování"
@@ -973,8 +974,8 @@ msgstr "Chybějící rozšíření PHP %s!"
 msgid "Cancel"
 msgstr "Zrušit"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "v pořádku"
 
@@ -1084,9 +1085,10 @@ msgid "Remove %s settings"
 msgstr "odebrat nastavení pro %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
-"Informace v tomto dialogu je možné upravit níže kliknutím na „Upravit“"
 
 #: include/class_msgPool.inc:646
 msgid "January"
@@ -1328,6 +1330,7 @@ msgstr "Vyberte požadované položky"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Název"
@@ -1362,8 +1365,8 @@ msgid "Restart service"
 msgstr "Restartovat službu"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "základ"
 
@@ -1375,31 +1378,31 @@ msgstr "Základ objektu"
 msgid "Base field value should always be a string"
 msgstr "Hodnota základní kolonky by vždy měla být řetězec"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr "Chyba, nesprávné datum: %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "hodiny"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "minuty"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Sekund"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Datum"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "ÄŒas"
 
@@ -1773,7 +1776,7 @@ msgstr "BEZ POPISKU"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "vytvořit"
 
@@ -2529,7 +2532,7 @@ msgstr "Odebrat uživatele"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Uživatelé"
 
@@ -3589,6 +3592,102 @@ msgid ""
 msgstr ""
 "Statistiky pro typ „%s“ nebylo možné spočítat kvůli následující chybě: %s"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Identifikátor"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Typ předplatného"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Datum začátku"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Datum ukončení"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "import(ovat)"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Upravit skupiny a role uživatele"
@@ -3909,46 +4008,46 @@ msgstr "vítejte v průvodci nastavením FusionDirectory"
 msgid "The welcome message"
 msgstr "uvítací zpráva"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr "LDAP spojení"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "název místa"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 "Název tohoto připojení, který bude zobrazován v seznamu serverů v LDAP"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "připojovací URI (adresa)"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 "URI adresa, na které kontaktovat LDAP server. Obvykle začíná na ldap://"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "připojení pomocí TLS (šifrované)"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr "Šifrovat komunikaci s LDAP serverem (pomocí TLS)?"
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "Základ LDAP adresáře"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "ověření"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
@@ -3956,39 +4055,39 @@ msgstr ""
 "Rozlišený název účtu správce, použitého pro spojování do LDAP. Základ je "
 "připojen samočinně."
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN (rozlišené jméno) účtu správce"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "heslo účtu správce"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr "Heslo k účtu správce, použitého pro spojování do LDAP"
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Stav"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "současný stav"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr "Výsledek posledního pokusu kontroly LDAP spojení a základních schémat"
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "nastavení LDAPu"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "nastavení připojení k LDAPu"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3996,39 +4095,39 @@ msgstr ""
 "V tomto dialogu budou provedena základní nastavení pro komunikaci "
 "FusionDirectory s LDAPem."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Anonymní přihlášení k serveru '%s' se nezdařilo!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Přihlášení jako uživatel '%s' se nezdařilo!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Znovu"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Anonymní přihlášení k serveru '%s' proběhlo úspěšně."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "obnovit"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Zadejte prosím uživatelské jména a heslo!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Přihlášení se jako uživatel '%s' k serveru '%s' proběhlo úspěšně!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
@@ -4037,17 +4136,13 @@ msgstr ""
 "%s\n"
 "Schéma „%s“: %s"
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "kontroly PHP a jeho rozšiřujících modulů"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
-"Nastavení uspořádání PHP (<a href=\"?info\" target=\"_blank\">zobrazit "
-"informace</a>)"
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
 msgid "Installation check"
@@ -4289,23 +4384,23 @@ msgstr ""
 "Vyhledejte ve svém php.ini parametr 'zend.ze1_compatibility_mode' a nastavte"
 " jej na 'off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "migrovat"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "kontrola LDAPu"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "prozkoumání Vášeho LDAPu, zda je slučitelný s FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Udělit veškerá práva na uživatelích v dané větvi"
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
@@ -4313,86 +4408,86 @@ msgstr ""
 "Umožnit uživatelům upravovat své vlastní údaje (panely Hlavní a Posix "
 "použijte jen na základu)"
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 "Umožnit uživatelům upravovat jejich vlastní hesla (použijte pouze na "
 "základu)"
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "kontrolují se třídy objektů v kořenovém objektu"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "kontrolují se oprávnění na LDAP databázi"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "kontroluje se, zda neexistují „neviditelní“ uživatelé"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "kontroluji, zda již existuje účet správce FusionDirectory/GOsa"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr "Kontrola výchozích ACL úloh a skupin"
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "kontroluje se, zda neexistují účty uživatelů mimo příslušný podstrom"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "kontroluje se, zda neexistují účty skupin mimo příslušný podstrom"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "kontroluje se, zda neexistují „neviditelná“ oddělení"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 "kontroluje se, zda neexistují duplicity v číselných identifikátorech "
 "uživatelů (UID)"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr "Kontrola duplicitních identifikátorů skupin (GID)"
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "dotaz do LDAPu byl neúspěšný"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr "Možná chybí kořenový objekt."
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Nezdařilo se"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Chybí chybí třída objektů '%s' FusionDirectory!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Zkontrolujte svou instalaci."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4401,17 +4496,17 @@ msgstr ""
 "Nedaří se manipulace s typem struktury kořenového objektu. Prosím pokuste se"
 " přidat třídu objektů '%s' ručním zásahem."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr "Zvolený uživatel %s nemá plný přístup do LDAP databáze."
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr "Zvolený uživatel %s nemá plný přístup do LDAP databáze."
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4420,102 +4515,102 @@ msgstr ""
 "Nalezeno %s uživatelů, kteří nebudou dostupní z FusionDirectory nebo jsou "
 "jejich účty neúplné."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Přemístění uživatele"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "chyba během migrace"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "Položku %s nelze přemístit:"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Skupiny"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Role"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Ve Vašem LDAPu neexistuje účet správce FusionDirectory/GOsa."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Uděluje veškerá práva na veškerých objektech"
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "Výchozí ACL úlohy nebyly vloženy"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Chybí některé výchozí ACL úlohy"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "Výchozí ACL úlohy byly vloženy"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "Nelze přidat ACL úlohu %s:"
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr "Nalezeno %s uživatelů, nacházejících se mimo nastavený strom %s."
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "přesunout uživatele do příslušného stromu"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr "Položky nelze přesunout do požadovaného oddělení!"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "Položka bude přesunuta z"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "do"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "tyto odkazy budou aktualizovány"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 "Bylo nalezeno %s účtů skupin, nacházejících se mimo příslušný strom '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Přesunout skupiny do příslušného stromu"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr "Bylo nalezeno %s oddělení, která nebudou viditelná z FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr "Přemístění oddělení"
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr "Nalezeno %s duplicitních hodnot pro atribut „uidNumber“: %s"
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr "Nalezeno %s duplicitních hodnot pro atribut „gidNumber“: %s"
@@ -4994,11 +5089,15 @@ msgstr "po migraci"
 msgid "Close"
 msgstr "Zavřít"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "Dokud to nebude opraveno, FusionDirectory NEbude fungovat."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory bude fungovat i tak."
 
diff --git a/locale/de/fusiondirectory.po b/locale/de/fusiondirectory.po
index dd8a2e993..7acc56faa 100644
--- a/locale/de/fusiondirectory.po
+++ b/locale/de/fusiondirectory.po
@@ -4,17 +4,17 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
-# Ettore Atalan <atalanttore@googlemail.com>, 2018
+# Ettore Atalan <atalanttore@googlemail.com>, 2021
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -42,7 +42,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fehler"
 
@@ -88,8 +88,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP-Fehler"
 
@@ -175,6 +175,7 @@ msgid "Trace"
 msgstr "Ablaufverfolgung"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Typ"
 
@@ -489,11 +490,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "Der LDAP-Server meldete: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Warnung"
@@ -894,7 +895,7 @@ msgstr "Der Wert für '%s' ist zu groß!"
 #: include/class_msgPool.inc:364
 #, php-format
 msgid "'%s' must be smaller than %s!"
-msgstr "'%s' muß kleiner sein als %s!"
+msgstr "'%s' muss kleiner sein als %s!"
 
 #: include/class_msgPool.inc:378
 #, php-format
@@ -904,7 +905,7 @@ msgstr "Der Wert für '%s' ist zu kein!"
 #: include/class_msgPool.inc:380
 #, php-format
 msgid "'%s' must be %d or above!"
-msgstr "'%s' muß größer oder gleich %d sein!"
+msgstr "'%s' muss größer oder gleich %d sein!"
 
 #: include/class_msgPool.inc:393
 #, php-format
@@ -948,7 +949,7 @@ msgstr "'%s' sind nicht erlaubt!"
 #: include/class_msgPool.inc:471
 #, php-format
 msgid "Missing %s PHP extension!"
-msgstr "Fehlenden %s PHP-Erweiterung!"
+msgstr "Fehlende %s PHP-Erweiterung!"
 
 #: include/class_msgPool.inc:479 setup/setup_migrate_adminAccount.tpl.c:23
 #: setup/setup_migrate_accounts.tpl.c:32
@@ -957,8 +958,8 @@ msgstr "Fehlenden %s PHP-Erweiterung!"
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1067,7 +1068,9 @@ msgid "Remove %s settings"
 msgstr "%s Einstellungen entfernen"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1307,6 +1310,7 @@ msgstr "Bitte wählen Sie die gewünschten Einträge"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Name"
@@ -1341,8 +1345,8 @@ msgid "Restart service"
 msgstr "Dienst neustarten"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Basis"
 
@@ -1354,31 +1358,31 @@ msgstr "Objektbasis"
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr "Fehler, falsches Datum: %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Stunden"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minuten"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Sekunden"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Datum"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Zeit"
 
@@ -1743,7 +1747,7 @@ msgstr "KEIN LABEL"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Anlegen"
 
@@ -1881,7 +1885,7 @@ msgstr "Wiederherstellen"
 
 #: include/class_SnapshotDialogs.inc:257
 msgid "Restoring snapshots"
-msgstr ""
+msgstr "Schnappschüsse wiederherstellen"
 
 #: include/class_SnapshotDialogs.inc:265
 msgid "Snapshots"
@@ -2491,7 +2495,7 @@ msgstr "Benutzer entfernen"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Benutzer"
 
@@ -3257,7 +3261,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:321
 msgid "Postal address pattern"
-msgstr ""
+msgstr "Postalisches Adressmuster"
 
 #: plugins/config/class_configInLdap.inc:321
 msgid ""
@@ -3355,7 +3359,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:385
 msgid "Group or role"
-msgstr ""
+msgstr "Gruppe oder Rolle"
 
 #: plugins/config/class_configInLdap.inc:390
 msgid "Plugin to blacklist"
@@ -3474,11 +3478,11 @@ msgstr "Passwörter"
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:27
 msgid "Statistics about passwords"
-msgstr ""
+msgstr "Statistik über Passwörter"
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:39
 msgid "Passwords statistics"
-msgstr ""
+msgstr "Passwörterstatistik"
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:64
 #, php-format
@@ -3517,6 +3521,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Kennung"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Abonnementstyp"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Startdatum"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Enddatum"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importieren"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Gruppen und Rollen des Benutzers bearbeiten"
@@ -3832,82 +3932,82 @@ msgstr "Willkommen im FusionDirectory Einrichtungsassistent"
 msgid "The welcome message"
 msgstr "Die Willkommensnachricht"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr "LDAP-Verbindung"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Name des Standortes"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "Verbindungs-URI"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "TLS-Verbindung"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "Die LDAP-Verzeichnisbasis"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Authentisierung"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "Administrator-DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Administrator-Passwort:"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Momentaner Status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "LDAP-Einrichtung"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Einrichten der LDAP-Verbindung"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3915,53 +4015,51 @@ msgstr ""
 "Dieser Dialog leistet die grundlegende Konfiguration der LDAP-Konnektivität "
 "für FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Anonyme Anmeldung an server '%s' ist fehlgeschlagen!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Verbindung als Benutzer '%s' ist fehlgeschlagen!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Wiederholen"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Verbindung als anonymer Benutzer zu Server '%s' war erfolgreich."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Aktualisieren"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Bitte geben Sie Ihren Benutzer und das zugehörige Passwort ein!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Verbindung als Benutzer '%s' zu Server '%s' war erfolgreich!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "PHP Modul- und Erweiterungsprüfung"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4201,105 +4299,105 @@ msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'zend.ze1_compatibility_mode' und setzen "
 "Sie es auf 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrieren"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "LDAP-Inspektion"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 "Analysieren Sie Ihr aktuelles LDAP nach Kompatibilität mit FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Prüfe Objekt-Klassen des Wurzelobjektes"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Prüfe Berechtigungen auf die LDAP-Datenbank"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Prüfe auf unsichtbare Benutzer"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Prüfe auf Superadministrator"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Prüfe auf Benutzer ausserhalb des Benutzerbaums"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Prüfe auf Gruppen ausserhalb des Gruppenbaums"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Prüfe auf unsichtbare Abteilungen"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Prüfe auf doppelte UID Nummern"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "LDAP-Abfrage fehlgeschlagen."
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Fehlgeschlagen"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Fehlende FusionDirectory Objektklasse '%s'!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Bitte überprüfen Sie Ihre Installation."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4308,17 +4406,17 @@ msgstr ""
 "Die strukturelle Objekt-Typ Ihres Wurzel-Objektes kann nicht konvertiert "
 "werden. Bitte fügen Sie die Objekt-Klasse '%s' manuell hinzu."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4327,103 +4425,103 @@ msgstr ""
 "%s Benutzer(innen) gefunden, die nicht in FusionDirectory sichtbar sein "
 "werden oder unvollständig sind."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Benutzermigration"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Migrationsfehler"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "Kann Eintrag \"%s\" nicht migrieren:"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Gruppen"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Rollen"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Es gibt kein FusionDirectory Administratorkonto innerhalb Ihres LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Gibt alle Rechte auf alle Objekte"
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Einige Standard-ACL-Rollen fehlen"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "Kann ACL-Rolle \"%s\" nicht hinzufügen:"
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Verschiebe Benutzer in den konfigurierten Benutzerbaum"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "Eintrag wird verschoben von"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "an"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Die folgenden Referenzen werden aktualisiert"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 "Es wurden %s Gruppen ausserhalb des konfigurierten Baums '%s' gefunden."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Gruppen in den konfigurierten Gruppenbaum verschieben"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Fand %s Abteilungen, die nicht in FusionDirectory sichtbar sein werden."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4876,11 +4974,15 @@ msgstr "Nach der Migration"
 msgid "Close"
 msgstr "Schliessen"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory wird NICHT ohne entsprechende Änderung laufen."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory wird ohne eine entsprechende Änderung laufen."
 
diff --git a/locale/el_GR/fusiondirectory.po b/locale/el_GR/fusiondirectory.po
index f7d16df62..ea3622181 100644
--- a/locale/el_GR/fusiondirectory.po
+++ b/locale/el_GR/fusiondirectory.po
@@ -4,16 +4,17 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
+# LOUKAS SKOUROLIAKOS, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +42,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Σφάλμα"
 
@@ -88,8 +89,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Σφάλμα LDAP"
 
@@ -173,6 +174,7 @@ msgid "Trace"
 msgstr "Ανίχνευση"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Τύπος"
 
@@ -481,11 +483,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "Ο διακομιστής LDAP επίστρεψε: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Προειδοποίηση"
@@ -944,8 +946,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Ακύρωση"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1046,7 +1048,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1281,6 +1285,7 @@ msgstr "Παρακαλώ επιλέξτε τις επιθυμητές εγγρα
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Όνομα"
@@ -1315,8 +1320,8 @@ msgid "Restart service"
 msgstr "Επανεκκίνηση υπηρεσίας"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Βάση"
 
@@ -1328,33 +1333,33 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Ώρες"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Λεπτά"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Ημερομηνία"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
-msgstr ""
+msgstr "Χρόνος"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:33
 #: include/simpleplugin/attributes/class_FileAttribute.inc:36
@@ -1717,7 +1722,7 @@ msgstr "ΧΩΡΙΣ ΕΤΙΚΕΤΑ"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Δημιουργία"
 
@@ -2465,7 +2470,7 @@ msgstr "Αφαίρεση χρήστη"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Χρήστες"
 
@@ -3470,6 +3475,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Id"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Τύπος συνδρομής"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Ημερομηνία Εκκίνησης "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Εισαγωγή"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Επεξεργασία ομάδων και ρόλων του χρήστη"
@@ -3790,134 +3891,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Κατάσταση"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Προσπάθεια ξανά"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Ανανέωση"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Παρακαλώ επαληθεύστε το όνομα χρήστη και τον κωδικό σας!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4112,222 +4211,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Μετακίνηση"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Έλεγχος έγκρισης για βάση δεδομένων  LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "'Έλεγχος για αόρατους χρήστες"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Έλεγχος για υπερδιαχειριστές "
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr "Έλεγχος για προεπιλεγμένους ρόλους και ομάδες στην ACL"
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Έλεγχος για χρήστες εκτός της δομής δεδομένων "
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Έλεγχος για ομάδες εκτός της δομής δεδομένων"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Ομάδες"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Ρόλοι"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4759,11 +4858,15 @@ msgstr "Ύστερα από την μετάβαση"
 msgid "Close"
 msgstr "Κλείσιμο"
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/es/fusiondirectory.po b/locale/es/fusiondirectory.po
index 0088f14c3..cf97f0471 100644
--- a/locale/es/fusiondirectory.po
+++ b/locale/es/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Error LDAP"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr "Traza"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -488,11 +489,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "El servidor LDAP devolvio: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -954,8 +955,8 @@ msgstr "¡Extensión PHP %s no encontrada!"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1064,7 +1065,9 @@ msgid "Remove %s settings"
 msgstr "Eliminar las caracteristicas %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1303,6 +1306,7 @@ msgstr "Por favor seleccione las entradas que desee"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1337,8 +1341,8 @@ msgid "Restart service"
 msgstr "Reiniciar servicio"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1350,31 +1354,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Horas"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minutos"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Fecha"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Tiempo"
 
@@ -1739,7 +1743,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Crear"
 
@@ -2485,7 +2489,7 @@ msgstr "Eliminar usuario"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Usuarios"
 
@@ -3475,6 +3479,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importar"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3790,82 +3890,82 @@ msgstr "Bienvenido al asistente de configuración de FusionDirectory"
 msgid "The welcome message"
 msgstr "Mensaje de Bienvenida"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nombre de la localización"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI de conexión"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Conexión TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autenticación"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN del administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Contraseña de administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Estado"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Estado actual"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configuración LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Conectividad LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3873,53 +3973,51 @@ msgstr ""
 "Este dialogo realiza la configuración básica de la conectividad LDAP para "
 "FusionDirectory"
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "¡La conexión anónima al servidor '%s' ha fallado!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "¡La conexión como usuario '%s' ha fallado!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Reintento"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "La conexión anónima al servidor '%s' ha tenido exito."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Refresco"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "¡Por Favor especifique un usuario y contraseña!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "¡La conexión como usuario '%s' al servidor '%s' ha tenido exito!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Comprobaciones de módulos y extensiones PHP"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4137,104 +4235,104 @@ msgid ""
 msgstr ""
 "Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Inspección LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Analizar el arbol LDAP actual por compatibilidad con FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Analizando objetos en la entrada raíz"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Comprobando permisos en la base de datos LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Comprobando usuarios invisibles"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Comprobando súper administrador"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Comprobando cuentas fuera del árbol de usuarios"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Comprobando grupos fuera del árbol de grupos"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Comprobando departamentos invisibles"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Comprobando números UID duplicados"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "La consulta LDAP ha fallado"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Error"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Objeto '%s' de FusionDirectory faltante!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Por favor compruebe su instalación"
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4243,17 +4341,17 @@ msgstr ""
 "No se puede un tipo de objeto estructural en su entrada raíz. Por favor "
 "intente añadir la clase de objeto '%s' manualmente."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4262,102 +4360,102 @@ msgstr ""
 "Se encontraron %s usuarios que no serán visibles en FusionDirectory o están "
 "incompletos."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Error de migración"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupos"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Roles"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "No hay una cuenta de administrador FusionDirectory dentro de su LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Mover usuarios al árbol de usuarios configurado"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "a"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Las siguientes referencias se actualizaran"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Encontrados '%s' grupos fuera del árbol configurado '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Se encontraron %s departamentos que no serán visibles en FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4805,11 +4903,15 @@ msgstr "Despues de migrar"
 msgid "Close"
 msgstr "Cerrar"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory NO correrá si no se arregla esto."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory correrá aun si no se arregla esto."
 
diff --git a/locale/es_CO/fusiondirectory.po b/locale/es_CO/fusiondirectory.po
index cbffd041b..ab1c11790 100644
--- a/locale/es_CO/fusiondirectory.po
+++ b/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Error LDAP"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr "Trace"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -486,11 +487,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "El servidor LDAP respondió: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Precacuión"
@@ -957,8 +958,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1067,7 +1068,9 @@ msgid "Remove %s settings"
 msgstr "Borrar %s configuraciones "
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1304,6 +1307,7 @@ msgstr "Por favor elija las entradas que desea"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1338,8 +1342,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1351,31 +1355,31 @@ msgstr "Objeto base"
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1742,7 +1746,7 @@ msgstr "SIN ETIQUETA"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Crear"
 
@@ -2493,7 +2497,7 @@ msgstr "Borrar usuario"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Usuarios"
 
@@ -3533,6 +3537,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Editar grupos y roles del usuario"
@@ -3854,45 +3954,45 @@ msgstr "Bienvenido al asistente de configuración de FusionDirectory."
 msgid "The welcome message"
 msgstr "Mensaje de bienvenida"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Ubicación"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 "Nombre de esta conexión para mostrar en la lista de servidores de LDAP."
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI de conexión"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr "URI para contactar al servidor LDAP. Usualmente comienza con ldap://"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Conexión TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr "¿Debería usarse TLS para conectarse a este servidor LDAP?"
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "El directorio base de LDAP"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autenticación"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
@@ -3900,41 +4000,41 @@ msgstr ""
 "DN de la cuenta admin para conectarse a LDAP. La base se añade "
 "automáticamente."
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN para el Administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Contraseña de Administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr "Contraseña para la cuenta de Administrador que será vinculada a LDAP."
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Estado"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Estado Actual"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 "Resultado del último intento al revisar la vinculación con LDAP y los "
 "esquemas básicos."
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configuración de LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Configuración de conexión LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3942,53 +4042,51 @@ msgstr ""
 "Este mensaje muestra una configuración básica de la conectividad de LDAP con"
 " FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "¡La vinculación anónima al servidor %s ha fallado!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Falló la vinculación con el usuario '%s'"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "¡La vinculación anónima al servidor %s ha funcionado!"
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "¡Por favor especifique su usuario y contraseña!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "¡Ha funcionado la vinculación del usuario '%s' al servidor '%s'!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Verificación de extensiones y módulos PHP "
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4219,23 +4317,23 @@ msgstr ""
 "Busca  'zend.ze1_compatibility_mode' en su archivo php.ini y lo establece "
 "como 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Revisión de LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Se va a analizar la compatibilidad entre LDAP y FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Otorgar todos los permisos en usuarios que pertenezcan a dicha rama."
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
@@ -4243,84 +4341,84 @@ msgstr ""
 "Permitir a los usuarios editar su propia información (Pestaña de Inicio y "
 "posix, usar únicamente en base)"
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 "Permitir a los usuarios editar su propia contraseña (Solo en las pestañas "
 "POSIX e Inicio)"
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Revisar las clases del objeto 'root'"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Revisar los permisos para la base de datos LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Revisar si existen Divisiones ocultas"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Falló"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "¡No se encuentra el objeto clase '%s' de FusionDirectory!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Por favor verifique su instalación."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4329,21 +4427,21 @@ msgstr ""
 "No es posible utilizar el tipo de objeto estructurado de su objeto 'root'. "
 "Por favor intente agregar el objeto clase '%s' manualmente."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 "El usuario \"%s\" especificado no tiene acceso completo a la base de datos "
 "LDAP."
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 "El usuario \"%s\" especificado no tiene acceso completo a la base de datos "
 "ldap."
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4352,102 +4450,102 @@ msgstr ""
 "Se encontraron %s usuario(s) que no estarán visibles en FusionDirectory o "
 "que están incompletos."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Migración de Usuario"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Error de migración"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "No se puede migrar la entrada \"%s\":"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupos"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "No hay una cuenta de administrador de FusionDirectory en su LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Dar permisos en todos los objetos."
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "Los roles ACL por defecto no han sido insertados"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "No se encuentran algunos de los roles ACL por defecto"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "Los roles ACL por defecto han sido insertados"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "No es posible agregar el rol ACL \"%s\":"
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr "Se encontraron %s usuario(s) fuera del árbol configurado \"%s\"."
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Mover usuarios dentro del árbol configurado"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr "¡No se pueden mover entradas en la División seleccionada!"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "La entrada será movida desde "
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "a"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Las siguientes referencias serán actualizadas"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Se encontraron %s grupos fuera del árbol configurado '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Mover grupos dentro del árbol configurado"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Se encontraron %s Division(es) que no serán visibles en FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr "Migración de Divisiones."
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4911,11 +5009,15 @@ msgstr "Luego de la migración"
 msgid "Close"
 msgstr "Cerrar"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory no se ejecutará sin arreglar esto."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory intentará ejecutarse sin arreglar esto."
 
diff --git a/locale/es_VE/fusiondirectory.po b/locale/es_VE/fusiondirectory.po
index 9b9396e54..fe2c47729 100644
--- a/locale/es_VE/fusiondirectory.po
+++ b/locale/es_VE/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Error LDAP"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr "Traza"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -488,11 +489,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "El servidor LDAP devolvio: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -954,8 +955,8 @@ msgstr "¡Extensión PHP %s no encontrada!"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1064,7 +1065,9 @@ msgid "Remove %s settings"
 msgstr "Eliminar las caracteristicas %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1303,6 +1306,7 @@ msgstr "Por favor seleccione las entradas que desee"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1337,8 +1341,8 @@ msgid "Restart service"
 msgstr "Reiniciar servicio"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1350,31 +1354,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Horas"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minutos"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Fecha"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Tiempo"
 
@@ -1739,7 +1743,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Crear"
 
@@ -2485,7 +2489,7 @@ msgstr "Eliminar usuario"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Usuarios"
 
@@ -3475,6 +3479,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importar"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3790,82 +3890,82 @@ msgstr "Bienvenido al asistente de configuración de FusionDirectory"
 msgid "The welcome message"
 msgstr "Mensaje de Bienvenida"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nombre de la localización"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI de conexión"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Conexión TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autenticación"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN del administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Contraseña de administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Estado"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Estado actual"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configuración LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Conectividad LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3873,53 +3973,51 @@ msgstr ""
 "Este dialogo realiza la configuración básica de la conectividad LDAP para "
 "FusionDirectory"
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "¡La conexión anónima al servidor '%s' ha fallado!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "¡La conexión como usuario '%s' ha fallado!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Reintento"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "La conexión anónima al servidor '%s' ha tenido exito."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Refresco"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "¡Por Favor especifique un usuario y contraseña!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "¡La conexión como usuario '%s' al servidor '%s' ha tenido exito!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Comprobaciones de módulos y extensiones PHP"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4139,104 +4237,104 @@ msgid ""
 msgstr ""
 "Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Inspección LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Analizar el arbol LDAP actual por compatibilidad con FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Analizando objetos en la entrada raíz"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Comprobando permisos en la base de datos LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Comprobando usuarios invisibles"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Comprobando súper administrador"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Comprobando cuentas fuera del árbol de usuarios"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Comprobando grupos fuera del árbol de grupos"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Comprobando departamentos invisibles"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Comprobando números UID duplicados"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "La consulta LDAP ha fallado"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Error"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Objeto '%s' de FusionDirectory faltante!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Por favor compruebe su instalación"
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4245,17 +4343,17 @@ msgstr ""
 "No se puede un tipo de objeto estructural en su entrada raíz. Por favor "
 "intente añadir la clase de objeto '%s' manualmente."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4264,102 +4362,102 @@ msgstr ""
 "Se encontraron %s usuarios que no serán visibles en FusionDirectory o están "
 "incompletos."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Error de migración"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupos"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Roles"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "No hay una cuenta de administrador FusionDirectory dentro de su LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Mover usuarios al árbol de usuarios configurado"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "a"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Las siguientes referencias se actualizaran"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Encontrados '%s' grupos fuera del árbol configurado '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Se encontraron %s departamentos que no serán visibles en FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4807,11 +4905,15 @@ msgstr "Despues de migrar"
 msgid "Close"
 msgstr "Cerrar"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory NO correrá si no se arregla esto."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory correrá aun si no se arregla esto."
 
diff --git a/locale/fa_IR/fusiondirectory.po b/locale/fa_IR/fusiondirectory.po
index 8071d26c3..24d2ab92e 100644
--- a/locale/fa_IR/fusiondirectory.po
+++ b/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "خطا"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "خطای LDAP"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "خطا"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4721,11 +4819,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/fi_FI/fusiondirectory.po b/locale/fi_FI/fusiondirectory.po
index 9d59bc341..c02fa5bc8 100644
--- a/locale/fi_FI/fusiondirectory.po
+++ b/locale/fi_FI/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Virhe"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP virhe"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tyyppi"
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varoitus"
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Peruta"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nimi"
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Aika"
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Luo"
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Alkupäivämäärä"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Loppupäivämäärä"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4720,11 +4818,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/fr/fusiondirectory.po b/locale/fr/fusiondirectory.po
index bd9248fac..304f13d50 100644
--- a/locale/fr/fusiondirectory.po
+++ b/locale/fr/fusiondirectory.po
@@ -5,17 +5,17 @@
 # 
 # Translators:
 # MCMic, 2018
-# fusiondirectory <contact@fusiondirectory.org>, 2018
-# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019
+# fusiondirectory <contact@fusiondirectory.org>, 2021
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2019\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -43,7 +43,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erreur"
 
@@ -91,8 +91,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Erreur LDAP"
 
@@ -184,6 +184,7 @@ msgid "Trace"
 msgstr "Trace"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Type"
 
@@ -505,11 +506,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "Le serveur LDAP a retourné : %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avertissement"
@@ -985,8 +986,8 @@ msgstr "Extension PHP %s manquante !"
 msgid "Cancel"
 msgstr "Annuler"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1097,10 +1098,12 @@ msgid "Remove %s settings"
 msgstr "Retirer les paramètres %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
-"Cliquez sur le bouton 'Éditer' ci-dessous pour changer les informations dans"
-" cette fenêtre"
+"Cliquez sur le bouton \"Modifier\" dans le coin inférieur droit de la page "
+"pour modifier les champs"
 
 #: include/class_msgPool.inc:646
 msgid "January"
@@ -1342,6 +1345,7 @@ msgstr "Veuillez sélectionner les entrées désirées"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nom"
@@ -1376,8 +1380,8 @@ msgid "Restart service"
 msgstr "Redémarrer le service"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1389,31 +1393,31 @@ msgstr "Base de l'objet"
 msgid "Base field value should always be a string"
 msgstr "La valeur de la base doit toujours être une chaîne"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr "Erreur, date incorrecte : %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Heures"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minutes"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Secondes"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Date"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Temps"
 
@@ -1792,7 +1796,7 @@ msgstr "PAS DE TITRE"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Créer"
 
@@ -2560,7 +2564,7 @@ msgstr "Supprimer l'utilisateur"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Utilisateurs"
 
@@ -3638,6 +3642,107 @@ msgstr ""
 "Les statistiques pour le type «%s» n'ont pas pu être calculées en raison de "
 "l'erreur suivante : %s"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr "Abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr "Information d'abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr "Informations sur votre abonnement FusionDirectory"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr "Texte d'information pour l'abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr "Nom de l'abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Id"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr "Identifiant d'abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Type d'inscription"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr "Contrat"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr "Référence du contrat"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Date de début"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr "Date de début de cet abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Date de fin"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr "Date de fin de cet abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr "Importez votre abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr "Texte d'information pour l'abonnement expiré"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr "Importer l'abonnement"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importer"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+"Vous ne disposez pas d'un abonnement valide pour cette instance de "
+"FusionDirectory. Veuillez visiter %s pour une liste des options disponibles."
+" "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+"Votre abonnement a expiré pour cette instance de FusionDirectory.\n"
+"Veuillez visiter %s pour le renouveler."
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr "Pas de données. Avez-vous oublié de télécharger un fichier ?"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr "Échec de l'analyse du fichier importé"
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Éditer les groupes et rôles de l’utilisateur"
@@ -3962,46 +4067,46 @@ msgstr "Bienvenue dans l'assistant de configuration de FusionDirectory"
 msgid "The welcome message"
 msgstr "Le message d'accueil"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr "Connexion LDAP"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nom de la connexion"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr "Nom de cette connexion à afficher dans la liste des serveurs LDAP"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI de connexion"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 "URI pour contacter le serveur LDAP. Commence habituellement par ldap://"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Connexion TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 "Est-ce que TLS doit être utilisé pour se connecter à ce serveur LDAP ?"
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "La base de l’annuaire LDAP"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Authentification"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
@@ -4009,43 +4114,43 @@ msgstr ""
 "DN du compte admin à utiliser pour l’identification au LDAP. La base y est "
 "automatiquement ajoutée."
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN de l'administrateur"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Mot de passe administrateur"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 "Mot de passe pour le compte administrateur à utiliser pour l’identification "
 "au LDAP"
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Statut"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Statut actuel"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 "Résultat de la dernière tentative de connexion LDAP et vérification des "
 "schémas de base"
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configuration LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Configuration de la connexion LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -4053,39 +4158,39 @@ msgstr ""
 "Cette page permet la configuration de base de l'annuaire LDAP pour "
 "FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "La connexion anonyme au serveur '%s' a échoué !"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "La connexion sous l’utilisateur '%s' a échoué !"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Réessayer"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "La connexion anonyme au serveur '%s' a réussi."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Rafraîchir"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Veuillez introduire un utilisateur et un mot de passe !"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "La connexion sous l'utilisateur '%s' au serveur '%s' a réussi !"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
@@ -4094,17 +4199,13 @@ msgstr ""
 "%s\n"
 "Schéma \"%s\" : %s"
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Vérification des extensions et modules PHP"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
-msgstr ""
-"Configuration de PHP (<a href=\"?info\" target=\"_blank\">afficher les "
-"informations</a>)"
+msgid "PHP setup configuration"
+msgstr "Configuration de l'installation PHP"
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
 msgid "Installation check"
@@ -4343,24 +4444,24 @@ msgstr ""
 "Cherchez l'option 'zend.ze1_compatibility_mode' dans votre hp.ini et mettez "
 "la à 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrer"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Inspection LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 "Analyse de votre annuaire LDAP pour la compatibilité avec FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Donner tous les droits aux utilisateurs sur cette branche"
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
@@ -4368,84 +4469,84 @@ msgstr ""
 "Permet aux utilisateurs d'éditer leurs propres informations (onglets "
 "générique et posix, à n'utiliser que sur la base)"
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 "Permet aux utilisateurs de changer leur mot de passe (à n’utiliser que sur "
 "la base)"
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Inspection des classes d'objets de l'objet racine"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Vérification des permissions sur l'annuaire LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Recherche d’utilisateurs invisibles"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Vérification du superadministrateur"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr "Vérification des rôles ACL et groupes par défaut"
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Recherche d'utilisateurs en dehors de la branche des utilisateurs"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Recherche de groupes en dehors de la branche des groupes"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Recherche de départements invisibles"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Recherche d’UID en double"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr "Recherche de GID en double"
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "La requête LDAP a échoué"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr "L'objet racine est peut-être manquant."
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Échec"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Object class FusionDirectory obligatoire '%s' manquante !"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Veuillez vérifier votre installation."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4454,17 +4555,17 @@ msgstr ""
 "Impossible de gérer l'objet structural de votre objet racine. Veuillez "
 "essayer d’ajouter la classe d’objet '%s' à la main."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr "L'utilisateur «%s» n'a pas un accès complet à votre annuaire LDAP."
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr "L'utilisateur «%s» n'a pas un accès complet à votre annuaire LDAP."
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4473,104 +4574,104 @@ msgstr ""
 "%s utilisateur(s) trouvé(s) qui ne seront pas visibles dans FusionDirectory "
 "ou qui sont incomplet(s)."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Migration des utilisateurs"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Erreur de migration"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "Impossible de migrer l'entrée «%s» :"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Groupes"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Rôles"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 "Il n'y a pas d'administrateur FusionDirectory dans votre annuaire LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Donne tous les droits sur tous les objets"
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "Les rôles ACL par défaut n'ont pas été insérés"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Certains rôles ACL par défaut sont manquants"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "Les rôles ACL par défaut ont été insérés"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "Impossible d’ajouter le rôle ACL «%s» :"
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr "%s utilsateur(s) trouvé(s) en dehors de la branche configurée «%s»."
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Déplacer les utilisateurs dans la branche configurée"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr "Impossible de déplacer les entrées vers le département spécifié !"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "Les entrées seront déplacées depuis"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "vers"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Les références suivantes seront mises à jour"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "%s groupes trouvés en dehors de la branche configurée '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Déplacer les groupes dans la branche configurée"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "%s département(s) trouvé(s) qui ne seront pas visible(s) dans "
 "FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr "Migration des départements"
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr "%s valeurs dupliquées trouvées pour l'attribut «uidNumber» : %s"
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr "%s valeurs dupliquées trouvées pour l'attribut «gidNumber» : %s"
@@ -5044,11 +5145,15 @@ msgstr "Après migration"
 msgid "Close"
 msgstr "Fermer"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr "Montrer l'information"
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory ne fonctionnera pas si vous ne corrigez pas cela."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory fonctionnera même si vous ne corrigez pas cela."
 
diff --git a/locale/hu_HU/fusiondirectory.po b/locale/hu_HU/fusiondirectory.po
index d1a03ed4a..60e8cf3f3 100644
--- a/locale/hu_HU/fusiondirectory.po
+++ b/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Név"
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Felhasználók"
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4720,11 +4818,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/id/fusiondirectory.po b/locale/id/fusiondirectory.po
index c54c9e147..c8d949ebc 100644
--- a/locale/id/fusiondirectory.po
+++ b/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4708,11 +4806,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/it_IT/fusiondirectory.po b/locale/it_IT/fusiondirectory.po
index c490a509d..b86afa5e6 100644
--- a/locale/it_IT/fusiondirectory.po
+++ b/locale/it_IT/fusiondirectory.po
@@ -4,18 +4,18 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
 # Paola Penati <paola.penati@opensides.be>, 2019
-# Paola <paola.penati@fusiondirectory.org>, 2019
+# fusiondirectory <contact@fusiondirectory.org>, 2021
+# Paola <paola.penati@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2019\n"
+"Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2021\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -43,7 +43,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Errore"
 
@@ -91,8 +91,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Errore LDAP"
 
@@ -182,6 +182,7 @@ msgid "Trace"
 msgstr "Traccia"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -505,11 +506,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "Il server LDAP ha risposto: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avvertimento"
@@ -981,8 +982,8 @@ msgstr "Estensione PHP %s  mancante !"
 msgid "Cancel"
 msgstr "Annulla"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1093,10 +1094,12 @@ msgid "Remove %s settings"
 msgstr "Rimuovi i parametri %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
-"Clicka sul bottone 'Modifica' qui sotto per cambiare le informazioni in "
-"questa finestra"
+"Clicka su \"Modifica\" nell'angolo in basso a destra della pagina per "
+"modificare i campi"
 
 #: include/class_msgPool.inc:646
 msgid "January"
@@ -1338,6 +1341,7 @@ msgstr "Seleziona le entries desiderate"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1372,8 +1376,8 @@ msgid "Restart service"
 msgstr "Riavvia il servizio"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1385,31 +1389,31 @@ msgstr "Base dell'oggetto"
 msgid "Base field value should always be a string"
 msgstr "Il valore del campo base dovrebbe sempre essere una stringa"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr "Errore, la data non é corretta: %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Ore"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minuti"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Secondi"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Data"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Tempo"
 
@@ -1785,7 +1789,7 @@ msgstr "Nessuna etichetta"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Crea"
 
@@ -2550,7 +2554,7 @@ msgstr "Elimina utente"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Utenti"
 
@@ -3628,6 +3632,106 @@ msgstr ""
 "Le statistiche per il tipo \"%s\" non possono essere calcolate a causa del "
 "seguente errore: %s"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr "Abbonamento"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr "Informazioni sull'abbonamento"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr "Informazioni sul tuo abbonamento FusionDirectory "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr "Testo informativo per l'abbonamento"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr "Nome dell'abbonamento"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Id"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr "ID abbonamento "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Tipo di sottoscrizione"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr "Contratto"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr "Riferimento del contratto "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Data d'inizio"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr "Data di inizio di questo abbonamento"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Data di fine"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr "Data di fine di questo abbonamento "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr "Importa il tuo abbonamento "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr "Testo informativo per abbonamento scaduto "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr "Importa abbonamento "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importa"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+"Non disponi di un abbonamento valido per questa istanza di FusionDirectory. "
+"Visitare %s per un elenco delle opzioni disponibili. "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+"L'abbonamento è scaduto per questa istanza di FusionDirectory. Si prega di "
+"visitare %s per rinnovarlo. "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr "Nessun dato. Hai dimenticato di caricare un file? "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr "Impossibile analizzare il file importato "
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Modifica gruppi e ruoli degli utenti"
@@ -3949,44 +4053,44 @@ msgstr ""
 msgid "The welcome message"
 msgstr "Messaggio di benvenuto"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr "Connessione LDAP"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nome del luogo"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr "Nome di questo collegamento per mostrare nell'elenco dei server LDAP"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI di connessione"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr "URI per contattare il server LDAP. Di solito inizia con ldap://"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Connessione TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr "TLS dovrebbe essere usato per connetterlo a questo server LDAP?"
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "Base del directory LDAP"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autentificazione"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
@@ -3994,43 +4098,43 @@ msgstr ""
 "DN dell'account amministratore da utilizzare per il legame alla LDAP . La "
 "base viene automaticamente aggiunta."
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN dell'amministratore"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Password dell'amministratore"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 "Password dell'account amministratore da utilizzare per il legame alla LDAP ."
 " "
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Stato"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Stato attuale"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 "Risultato dell'ultimo tentativo di controllo dei vincoli LDAP e degli schemi"
 " di base."
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configurazione di LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Configurazione della connessione di LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -4038,39 +4142,39 @@ msgstr ""
 "Questa finestra permette di indicare la configurazione di base di LDAP per "
 "FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "La connessione anonima sul server '%s' è fallita !"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "La connessione dell'utente '%s' è fallita !"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Riprova"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "La connessione anonima al server '%s' è riuscita."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Aggiorna"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Specifica il nome utente e la password !"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "La connessione dell'utente '%s' al server '%s' è riuscita !"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
@@ -4079,15 +4183,13 @@ msgstr ""
 "%s\n"
 "Schema \"%s\": %s"
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Verifica del modulo PHP e delle sue estensioni"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
-msgstr "Configurazione di installazione PHP ( 1 mostra informazione 1 )"
+msgid "PHP setup configuration"
+msgstr "Configurazione dell'installazione PHP"
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
 msgid "Installation check"
@@ -4333,23 +4435,23 @@ msgstr ""
 "Cerca la variabile 'zend.ze1_compatibility_mode' nel file php.ini e "
 "impostala su 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migra"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Ispezione dell'annuario LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Analisi dell'annuario LDAP per la compatibilità con FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Dare tutti i diritti sugli utenti nel ramo dato"
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
@@ -4357,83 +4459,83 @@ msgstr ""
 "Permette agli utenti di modificare le proprie informazioni (uso di scheda e "
 "posix principale solo sulla base)"
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 "Permette agli utenti di modificare la loro password (usare solo su base)"
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Ispezione delle classi di oggetti nell'oggetto radice"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Verifica del permesso di accesso al database LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Verifica degli utenti nascosti"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Verifica del super amministratore"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr "Controllo per i ruoli ed i gruppi ACL predefiniti"
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Verifica degli utenti al di fuori del ramo \"people\""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Verifica dei gruppi al di fuori del ramo \"groups\""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Verifica dei dipartimenti nascosti"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Verifica dei possibili doppioni UID"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr "Verifica dei possibili doppioni GID"
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "La richiesta al database LDAP è fallita!"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr "Forse l'\"oggetto radice\" é mancante"
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Fallito"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "L'oggetto di classe '%s' richiesto per FusionDirectory è mancante !"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Verifica la tua installazione."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4442,17 +4544,17 @@ msgstr ""
 "Impossibile gestire il tipo di oggetto strutturale del tuo oggetto radice. "
 "Prova ad aggiungere manualmente la classe d'oggetto '%s'. "
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr "L'utente \"%s\" non ha accesso completo al vostro database LDAP."
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr "L'utente \"%s\" non ha pieno accesso al database LDAP."
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4461,104 +4563,104 @@ msgstr ""
 "Ho trovato %s utenti(e) che non saranno visibili in FusionDirectory che sono"
 " incompleti."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Migrazione utente"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Errore durante la migrazione"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "Impossibile eseguire la migrazione di voce \"%s\":"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Gruppi"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Ruoli"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 "Non ho trovato alcun amministratore di FusionDirectory nel tuo annuario "
 "LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Dà tutti i diritti su ogni oggetto"
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "I ruoli ACL di default non sono stati inseriti"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Mancano alcuni ruoli ACL di default"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "Ruoli ACL di default sono stati inseriti"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "Impossibile aggiungere ruolo \"%s\" ACL "
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr "Ho trovato %s utente(i) al di fuori del ramo \"%s\" configurato."
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Sposta gli utenti nel ramo utenti configurato nell'annuario"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr "Impossibile spostare le entrate nel dipartimento richiesto!"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "L'entrata verrà spostata"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "verso"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Le seguenti reference saranno aggiornate"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Ho trovato %s gruppi al di fuori del ramo '%s' configurato."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Sposta i gruppi nel ramo di gruppi configurato"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Ho trovato %s departimenti(o) che non saranno visibili in FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr "Migrazione Dipartilento"
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr "Trovati %s valori duplicati per l'attributo \"uidNumber\":%s"
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr "Trovati %s valori duplicati per l'attributo \"gidNumber\":%s"
@@ -5028,11 +5130,15 @@ msgstr "Dopo la migrazione"
 msgid "Close"
 msgstr "Chiuso"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr "Mostra informazione"
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "Fusiondirectory NON funzionerà prima di aver corretto questo."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "Fusiondirectory funzionerà anche senza aver corretto questo."
 
diff --git a/locale/ja/fusiondirectory.po b/locale/ja/fusiondirectory.po
index a5115bf65..9845ac36f 100644
--- a/locale/ja/fusiondirectory.po
+++ b/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4708,11 +4806,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/ko/fusiondirectory.po b/locale/ko/fusiondirectory.po
index e37aec8b5..29edaf493 100644
--- a/locale/ko/fusiondirectory.po
+++ b/locale/ko/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Choi Chris <chulwon.choi@gmail.com>, 2019
+# Choi Chris <chulwon.choi@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2019\n"
+"Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "오류"
 
@@ -89,8 +89,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP 오류"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr "Trace"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "타입"
 
@@ -249,7 +250,7 @@ msgstr "홈"
 
 #: include/class_listing.inc:1198
 msgid "Reload list"
-msgstr "새로 고침 목록"
+msgstr "목록 새로 고침"
 
 #: include/class_listing.inc:1342 include/simpleplugin/simple-list.xml:48
 #: plugins/admin/departments/dep-list.xml:37
@@ -306,19 +307,19 @@ msgstr "구성에서 \"%s\"시간대 설정이 유효하지 않습니다."
 
 #: include/class_SnapshotHandler.inc:40
 msgid "Snapshot"
-msgstr ""
+msgstr "스냅샷"
 
 #: include/class_SnapshotHandler.inc:41
 msgid "Snapshot handler"
-msgstr ""
+msgstr "스냅샷 핸들러"
 
 #: include/class_SnapshotHandler.inc:46
 msgid "Restore over an existing object"
-msgstr ""
+msgstr "기존 객체를 통해 복원"
 
 #: include/class_SnapshotHandler.inc:47
 msgid "Restore a deleted object"
-msgstr ""
+msgstr "삭제된 객체 복원"
 
 #: include/class_SnapshotHandler.inc:408
 msgid "There was a problem uncompressing snapshot data"
@@ -326,7 +327,7 @@ msgstr "스냅샷 데이터를 압축 해제하는 중에 문제가 발생했습
 
 #: include/class_SnapshotHandler.inc:412
 msgid "Snapshot data could not be fetched"
-msgstr ""
+msgstr "스냅샷 데이터를 가져올 수 없습니다"
 
 #: include/class_template.inc:43
 #: include/simpleplugin/class_simpleManagement.inc:295
@@ -398,38 +399,38 @@ msgstr "하위 트리에서 검색"
 #: include/class_filter.inc:404
 #, php-format
 msgid "Searches in %s"
-msgstr ""
+msgstr "%s에서 검색"
 
 #: include/class_ldapSizeLimit.inc:114
 #, php-format
 msgid "The size limit of %d entries is exceed!"
-msgstr ""
+msgstr "%d 항목의 크기 제한이 초과되었습니다!"
 
 #: include/class_ldapSizeLimit.inc:115
 #, php-format
 msgid ""
 "Set the new size limit to %s and show me this message if the limit still "
 "exceeds"
-msgstr ""
+msgstr "새 크기 제한을 %s 으로 설정하고 제한이 여전히 초과하면 이 메시지를 표시하십시오"
 
 #: include/class_ldapSizeLimit.inc:131
 msgid "Configure"
-msgstr ""
+msgstr "구성"
 
 #: include/class_ldapSizeLimit.inc:136
 msgid "incomplete"
-msgstr ""
+msgstr "불완전한"
 
 #: include/functions.inc:97
 #, php-format
 msgid "Fatal error: no class locations defined - please run '%s' to fix this"
-msgstr ""
+msgstr "치명적인 오류 : 클래스 위치가 정의되지 않았습니다.이 문제를 해결하려면 '1%s'을 (를) 실행하십시오."
 
 #: include/functions.inc:116
 #, php-format
 msgid ""
 "Fatal error: cannot instantiate class '%s' - try running '%s' to fix this"
-msgstr ""
+msgstr "치명적인 오류 : 클래스 '1%s'을 (를) 인스턴스화 할 수 없습니다. '1%s'을(를) 실행하여이 문제를 해결하십시오."
 
 #: include/functions.inc:411 include/functions.inc:2310
 #: include/simpleplugin/class_simplePlugin.inc:468
@@ -437,50 +438,50 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:485
 #: html/class_passwordRecovery.inc:118
 msgid "Fatal error"
-msgstr ""
+msgstr "치명적 오류"
 
 #: include/functions.inc:412
 #, php-format
 msgid "FATAL: Error when connecting the LDAP. Server said '%s'."
-msgstr ""
+msgstr "치명적 : LDAP 연결시 오류가 발생했습니다. 서버 오류 '%s'."
 
 #: include/functions.inc:472
 msgid ""
 "Login (uid) is not unique inside the LDAP tree. Please contact your "
 "administrator."
-msgstr ""
+msgstr "로그인 (uid)은 LDAP 트리 내에서 고유하지 않습니다. 관리자에게 문의하십시오."
 
 #: include/functions.inc:532
 msgid "Authentication error"
-msgstr ""
+msgstr "인증 오류"
 
 #: include/functions.inc:533
 msgid ""
 "It seems your user password has expired. Please use <a "
 "href=\"recovery.php\">password recovery</a> to change it."
-msgstr ""
+msgstr "사용자 비밀번호가 만료 된 것 같습니다. <a href=\"recovery.php\">비밀번호 복구</a>를 사용하여 변경하십시오."
 
 #: include/functions.inc:584 include/functions.inc:705
 msgid "Error while adding a lock. Contact the developers!"
-msgstr ""
+msgstr "잠금을 추가하는 중 오류가 발생했습니다. 개발자에게 문의하십시오!"
 
 #: include/functions.inc:594
 #, php-format
 msgid ""
 "Cannot create locking information in LDAP tree. Please contact your "
 "administrator!"
-msgstr ""
+msgstr "LDAP 트리에서 잠금 정보를 작성할 수 없습니다. 관리자에게 문의하십시오!"
 
 #: include/functions.inc:594
 #, php-format
 msgid "LDAP server returned: %s"
-msgstr ""
+msgstr "LDAP 서버에서 반환 : %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "ã…—"
@@ -489,65 +490,65 @@ msgstr "ã…—"
 msgid ""
 "Found multiple locks for object to be locked. This should not happen - "
 "cleaning up multiple references."
-msgstr ""
+msgstr "오브젝트를 잠글 여러 잠금을 찾았습니다. 여러 참조를 정리하지 마십시오."
 
 #: include/functions.inc:1107
 msgid "Continue anyway"
-msgstr ""
+msgstr "어쨌든 계속"
 
 #: include/functions.inc:1109
 msgid "Edit anyway"
-msgstr ""
+msgstr "어쨌든 편집"
 
 #: include/functions.inc:1111
 #, php-format
 msgid "You're going to edit the LDAP entry/entries %s"
-msgstr ""
+msgstr "LDAP 항목 %s을 편집하려고 합니다."
 
 #: include/functions.inc:1505
 #, php-format
 msgid "%sB"
-msgstr ""
+msgstr "%sB"
 
 #: include/functions.inc:1506
 #, php-format
 msgid "%sKiB"
-msgstr ""
+msgstr "%sKiB"
 
 #: include/functions.inc:1507
 #, php-format
 msgid "%sMiB"
-msgstr ""
+msgstr "%sMiB"
 
 #: include/functions.inc:1508
 #, php-format
 msgid "%sGiB"
-msgstr ""
+msgstr "%sGiB"
 
 #: include/functions.inc:1509
 #, php-format
 msgid "%sTiB"
-msgstr ""
+msgstr "%sTiB"
 
 #: include/functions.inc:1510
 #, php-format
 msgid "%sPiB"
-msgstr ""
+msgstr "%sPiB"
 
 #: include/functions.inc:1511
 #, php-format
 msgid "%sEiB"
-msgstr ""
+msgstr "%sEiB"
 
 #: include/functions.inc:1512
 #, php-format
 msgid "%sZiB"
-msgstr ""
+msgstr "%sZiB"
 
 #: include/functions.inc:1513
 #, php-format
 msgid "%sYiB"
-msgstr ""
+msgstr "%sYiB"
 
 #: include/functions.inc:1683
 #, php-format
@@ -555,79 +556,81 @@ msgid ""
 "File '%s' could not be deleted. Try fusiondirectory-setup --check-"
 "directories to fix permissions."
 msgstr ""
+"'%s' 파일을 삭제할 수 없습니다. fusiondirectory-setup --check-directories를 사용하여 권한을 "
+"수정하십시오."
 
 #: include/functions.inc:1722
 msgid "Cannot write to revision file!"
-msgstr ""
+msgstr "수정본 파일에 쓸 수 없습니다!"
 
 #: include/functions.inc:1753
 msgid "Cannot read revision file!"
-msgstr ""
+msgstr "개정판 파일을 읽을 수 없습니다!"
 
 #: include/functions.inc:1867
 msgid "LDAP warning"
-msgstr ""
+msgstr "LDAP 경고"
 
 #: include/functions.inc:1867
 msgid "Cannot get schema information from server. No schema check possible!"
-msgstr ""
+msgstr "서버에서 스키마 정보를 가져올 수 없습니다. 스키마 검사가 불가능합니다!"
 
 #: include/functions.inc:1891
 msgid "Main FusionDirectory schema"
-msgstr ""
+msgstr "기본 FusionDirectory 스키마"
 
 #: include/functions.inc:1899
 msgid "Schema used to store FusionDirectory configuration"
-msgstr ""
+msgstr "FusionDirectory 구성을 저장하는 데 사용되는 스키마"
 
 #: include/functions.inc:1907
 msgid "Used to store trust mode information in users or groups."
-msgstr ""
+msgstr "트러스트 모드 정보를 사용자 또는 그룹에 저장하는데 사용됩니다."
 
 #: include/functions.inc:1915
 msgid "Used to store templates."
-msgstr ""
+msgstr "템플릿을 저장하는데 사용됩니다."
 
 #: include/functions.inc:1924
 msgid "Used to store POSIX information."
-msgstr ""
+msgstr "POSIX 정보를 저장하는데 사용됩니다."
 
 #: include/functions.inc:1932
 #, php-format
 msgid "Missing required object class \"%s\"!"
-msgstr ""
+msgstr "필수 개체 클래스 \"%s\"가 없습니다!"
 
 #: include/functions.inc:1934
 #, php-format
 msgid "Missing optional object class \"%s\"!"
-msgstr ""
+msgstr "선택적 객체 클래스 \"%s\"가 없습니다!"
 
 #: include/functions.inc:1938
 #, php-format
 msgid "Class(es) available"
-msgstr ""
+msgstr "이용 가능한 클래스(들)"
 
 #: include/functions.inc:1957
 msgid ""
 "You have installed the mixed groups plugin, but your schema configuration "
 "does not support this."
-msgstr ""
+msgstr "혼합 그룹 플러그인을 설치했지만 스키마 구성에서 이를 지원하지 않습니다."
 
 #: include/functions.inc:1958
 msgid ""
 "In order to use mixed groups the objectClass \"posixGroup\" must be "
 "AUXILIARY"
-msgstr ""
+msgstr "혼합 그룹을 사용하려면 objectClass \"posixGroup\"이 AUXILIARY여야 합니다."
 
 #: include/functions.inc:1961
 msgid ""
 "Your schema is configured to support mixed groups, but this plugin is not "
 "present."
-msgstr ""
+msgstr "스키마가 혼합 그룹을 지원하도록 구성되었지만 이 플러그인이 없습니다."
 
 #: include/functions.inc:1962
 msgid "The objectClass \"posixGroup\" must be STRUCTURAL"
-msgstr ""
+msgstr "objectClass \"posixGroup\"은 STRUCTURAL이어야 합니다."
 
 #: include/functions.inc:2311
 #, php-format
@@ -636,14 +639,14 @@ msgstr "'%s' 파일을 사용할 수 없습니다.  '%s' 를 실행해 주세요
 
 #: include/class_pluglist.inc:196
 msgid "All objects in this category"
-msgstr ""
+msgstr "이 카테고리의 모든 객체"
 
 #: include/select/userSelect/class_userSelect.inc:35
 #: plugins/admin/users/user-list.xml:49
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:63
 #: plugins/personal/generic/class_user.inc:389
 msgid "Login"
-msgstr ""
+msgstr "로그인"
 
 #: include/class_CopyPasteHandler.inc:206
 #: include/simpleplugin/class_simpleTabs.inc:316
@@ -655,309 +658,309 @@ msgstr ""
 #: include/simpleplugin/class_simpleManagement.inc:1330
 #: plugins/admin/users/class_userManagement.inc:153
 msgid "Permission"
-msgstr "í—ˆ"
+msgstr "허가"
 
 #: include/class_CopyPasteHandler.inc:266
 msgid "Cancel all"
-msgstr ""
+msgstr "모두 취소"
 
 #: include/class_CopyPasteHandler.inc:332
 msgid "Cannot paste"
-msgstr ""
+msgstr "붙여 넣을 수 없습니다"
 
 #: include/class_msgPool.inc:43
 #, php-format
 msgid "Select to list objects of type '%s'."
-msgstr ""
+msgstr "'%s' 유형의 객체를 나열하려면 선택하십시오."
 
 #: include/class_msgPool.inc:45
 #, php-format
 msgid "Select to list objects containig '%s'."
-msgstr ""
+msgstr "'%s'가 포함 된 객체를 나열하려면 선택하십시오."
 
 #: include/class_msgPool.inc:47
 #, php-format
 msgid "Select to list objects that have '%s' enabled"
-msgstr ""
+msgstr "'%s'가 활성화 된 개체를 나열하려면 선택하십시오"
 
 #: include/class_msgPool.inc:49
 msgid "Select to search within subtrees"
-msgstr ""
+msgstr "하위 트리 내에서 검색하려면 선택"
 
 #: include/class_msgPool.inc:67
 msgid "This object will be deleted!"
-msgstr ""
+msgstr "이 객체가 삭제됩니다!"
 
 #: include/class_msgPool.inc:69
 #, php-format
 msgid "This '%s' object will be deleted!"
-msgstr ""
+msgstr "이 '%s' 객체가 삭제됩니다!"
 
 #: include/class_msgPool.inc:74
 #, php-format
 msgid "This object will be deleted: %s"
-msgstr ""
+msgstr "이 객체는 삭제됩니다: %s"
 
 #: include/class_msgPool.inc:76
 #, php-format
 msgid "This '%s' object will be deleted: %s"
-msgstr ""
+msgstr "이 '%s' 객체가 삭제됩니다: %s"
 
 #: include/class_msgPool.inc:81
 msgid "This object will be deleted:"
-msgstr ""
+msgstr "이 객체는 삭제됩니다:"
 
 #: include/class_msgPool.inc:83
 #, php-format
 msgid "This '%s' object will be deleted:"
-msgstr ""
+msgstr "이 '%s' 객체가 삭제됩니다:"
 
 #: include/class_msgPool.inc:87
 #, php-format
 msgid "These objects will be deleted: %s"
-msgstr ""
+msgstr "이 객체들은 삭제됩니다: %s"
 
 #: include/class_msgPool.inc:89
 #, php-format
 msgid "These '%s' objects will be deleted: %s"
-msgstr ""
+msgstr "이 '%s'  객체들이 삭제됩니다: %s"
 
 #: include/class_msgPool.inc:101
 msgid "You have no permission to delete this object!"
-msgstr ""
+msgstr "이 객체를 삭제할 권한이 없습니다!"
 
 #: include/class_msgPool.inc:105 include/class_msgPool.inc:109
 msgid "You have no permission to delete the object:"
-msgstr ""
+msgstr "객체를 삭제할 권한이 없습니다:"
 
 #: include/class_msgPool.inc:112
 msgid "You have no permission to delete these objects:"
-msgstr ""
+msgstr "다음 객체들을 삭제할 권한이 없습니다."
 
 #: include/class_msgPool.inc:123
 msgid "You have no permission to create this object!"
-msgstr ""
+msgstr "이 개체를 만들 권한이 없습니다!"
 
 #: include/class_msgPool.inc:127 include/class_msgPool.inc:131
 msgid "You have no permission to create the object:"
-msgstr ""
+msgstr "객체를 생성할 권한이 없습니다 :"
 
 #: include/class_msgPool.inc:134
 msgid "You have no permission to create these objects:"
-msgstr ""
+msgstr "이러한 객체를 생성할 권한이 없습니다 :"
 
 #: include/class_msgPool.inc:146
 msgid "You have no permission to modify this object!"
-msgstr ""
+msgstr "이 개체를 수정할 권한이 없습니다!"
 
 #: include/class_msgPool.inc:151
 #, php-format
 msgid "You have no permission to modify the field \"%s\" of object \"%s\""
-msgstr ""
+msgstr "\"%s\"개체의 \"%s\" 필드를 수정할 권한이 없습니다."
 
 #: include/class_msgPool.inc:153 include/class_msgPool.inc:158
 #, php-format
 msgid "You have no permission to modify the object:<br/>%s"
-msgstr ""
+msgstr "개체를 수정할 권한이 없습니다 : <br/>%s"
 
 #: include/class_msgPool.inc:161
 #, php-format
 msgid "You have no permission to modify these objects:<br/>%s"
-msgstr ""
+msgstr "이러한 개체를 수정할 권한이 없습니다 : <br/>%s"
 
 #: include/class_msgPool.inc:172
 msgid "You have no permission to view this object!"
-msgstr ""
+msgstr "이 개체를 볼 권한이 없습니다!"
 
 #: include/class_msgPool.inc:176 include/class_msgPool.inc:180
 msgid "You have no permission to view the object:"
-msgstr ""
+msgstr "객체를 볼 권한이 없습니다 :"
 
 #: include/class_msgPool.inc:183
 msgid "You have no permission to view these objects:"
-msgstr ""
+msgstr "다음 개체를 볼 수있는 권한이 없습니다 :"
 
 #: include/class_msgPool.inc:194
 msgid "You have no permission to move this object!"
-msgstr ""
+msgstr "이 개체를 이동할 권한이 없습니다!"
 
 #: include/class_msgPool.inc:198 include/class_msgPool.inc:202
 msgid "You have no permission to move the object:"
-msgstr ""
+msgstr "개체를 이동할 권한이 없습니다."
 
 #: include/class_msgPool.inc:205
 msgid "You have no permission to move these objects:"
-msgstr ""
+msgstr "이러한 개체를 이동할 권한이 없습니다:"
 
 #: include/class_msgPool.inc:223 include/class_msgPool.inc:243
 #: include/class_msgPool.inc:273
 msgid "Connection information"
-msgstr ""
+msgstr "ì—°ê²° ì •ë³´"
 
 #: include/class_msgPool.inc:225
 #, php-format
 msgid "Cannot connect to %s database!"
-msgstr ""
+msgstr "%s 데이터베이스에 연결할 수 없습니다!"
 
 #: include/class_msgPool.inc:245
 #, php-format
 msgid "Cannot select %s database!"
-msgstr ""
+msgstr "%s 데이터베이스를 선택할 수 없습니다!"
 
 #: include/class_msgPool.inc:255
 #, php-format
 msgid "No %s server defined!"
-msgstr ""
+msgstr "%s 서버가 정의되지 않았습니다!"
 
 #: include/class_msgPool.inc:275
 #, php-format
 msgid "Cannot query %s database!"
-msgstr ""
+msgstr "%s 데이터베이스를 쿼리 할 수 ​​없습니다!"
 
 #: include/class_msgPool.inc:285
 #, php-format
 msgid "The field '%s' contains a reserved keyword!"
-msgstr ""
+msgstr "'%s' 입력란에 예약 키워드가 있습니다!"
 
 #: include/class_msgPool.inc:297
 #, php-format
 msgid "Command specified as %s hook for plugin '%s' does not exist!"
-msgstr ""
+msgstr "플러그인 '%s'에 대한 후크로 지정된 명령 %s이 없습니다!"
 
 #: include/class_msgPool.inc:313
 #, php-format
 msgid "'%s' command is invalid!"
-msgstr ""
+msgstr "'%s' 명령이 유효하지 않습니다!"
 
 #: include/class_msgPool.inc:315
 #, php-format
 msgid "'%s' command for plugin %s is invalid!"
-msgstr ""
+msgstr "%s 플러그인에 대한 '%s' 명령이 잘못되었습니다!"
 
 #: include/class_msgPool.inc:319
 #, php-format
 msgid "'%s' command (%s) is invalid!"
-msgstr ""
+msgstr "'%s' 명령(%s)이 유효하지 않습니다!"
 
 #: include/class_msgPool.inc:321
 #, php-format
 msgid "'%s' command (%s) for plugin %s is invalid!"
-msgstr ""
+msgstr "'%s'  플러그인에 대한 '%s' 명령(%s)이 유효하지 않습니다!"
 
 #: include/class_msgPool.inc:339
 #, php-format
 msgid "Cannot execute '%s' command!"
-msgstr ""
+msgstr "'%s' 명령을 실행할 수 없습니다!"
 
 #: include/class_msgPool.inc:341
 #, php-format
 msgid "Cannot execute '%s' command for plugin %s!"
-msgstr ""
+msgstr " %s 플러그인에 대해 '%s' 명령을 실행할 수 없습니다!"
 
 #: include/class_msgPool.inc:345
 #, php-format
 msgid "Cannot execute '%s' command (%s)!"
-msgstr ""
+msgstr "'%s' 명령(%s)을 실행할 수 없습니다!"
 
 #: include/class_msgPool.inc:347
 #, php-format
 msgid "Cannot execute '%s' command (%s) for plugin %s!"
-msgstr ""
+msgstr " %s 플러그인에 대해 '%s'명령 (%s)을 실행할 수 없습니다!"
 
 #: include/class_msgPool.inc:362
 #, php-format
 msgid "Value for '%s' is too large!"
-msgstr ""
+msgstr "'%s'의 값이 너무 큽니다!"
 
 #: include/class_msgPool.inc:364
 #, php-format
 msgid "'%s' must be smaller than %s!"
-msgstr ""
+msgstr "'%s'는 %s보다 작아야합니다!"
 
 #: include/class_msgPool.inc:378
 #, php-format
 msgid "Value for '%s' is too small!"
-msgstr ""
+msgstr "'%s'의 값이 너무 작습니다!"
 
 #: include/class_msgPool.inc:380
 #, php-format
 msgid "'%s' must be %d or above!"
-msgstr ""
+msgstr "'%s'는 %d 이상이어야 합니다!"
 
 #: include/class_msgPool.inc:393
 #, php-format
 msgid "'%s' depends on '%s' - please provide both values!"
-msgstr ""
+msgstr "'%s'는 '%s'에 의존합니다 - 두 값을 모두 입력하십시오!"
 
 #: include/class_msgPool.inc:405
 #, php-format
 msgid "There is already an entry with this '%s' attribute in the system!"
-msgstr ""
+msgstr "시스템에 이미 '%s' 속성을 가진 항목이 이미 있습니다!"
 
 #: include/class_msgPool.inc:407
 #, php-format
 msgid "The entry '%s' already use this '%s' attribute!"
-msgstr ""
+msgstr "'%s' 항목은 이미 이 '%s' 속성을 사용합니다!"
 
 #: include/class_msgPool.inc:418
 #, php-format
 msgid "The required field '%s' is empty!"
-msgstr ""
+msgstr "필수 입력란 '%s'이 비어 있습니다!"
 
 #: include/class_msgPool.inc:436
 msgid "Example:"
-msgstr ""
+msgstr "예:"
 
 #: include/class_msgPool.inc:456 include/class_msgPool.inc:460
 #, php-format
 msgid "The field '%s' contains invalid characters"
-msgstr ""
+msgstr "'%s' 필드에 잘못된 문자가 포함되어 있습니다"
 
 #: include/class_msgPool.inc:457
 #, php-format
 msgid "'%s' is not allowed:"
-msgstr ""
+msgstr "'%s'는 허용되지 않습니다 :"
 
 #: include/class_msgPool.inc:457
 #, php-format
 msgid "'%s' are not allowed!"
-msgstr ""
+msgstr "'%s'는 허용되지 않습니다 :"
 
 #: include/class_msgPool.inc:471
 #, php-format
 msgid "Missing %s PHP extension!"
-msgstr ""
+msgstr "%s PHP 확장이 없습니다!"
 
 #: include/class_msgPool.inc:479 setup/setup_migrate_adminAccount.tpl.c:23
 #: setup/setup_migrate_accounts.tpl.c:32
 #: ihtml/themes/breezy/msg_dialog.tpl.c:17
 #: ihtml/themes/breezy/islocked.tpl.c:17
 msgid "Cancel"
-msgstr ""
+msgstr "취소"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
-msgstr ""
+msgstr "확인"
 
 #: include/class_msgPool.inc:495 setup/setup_migrate_adminAccount.tpl.c:20
 #: setup/setup_migrate_accounts.tpl.c:29
 msgid "Apply"
-msgstr ""
+msgstr "적용"
 
 #: include/class_msgPool.inc:503
 msgid "Save"
-msgstr ""
+msgstr "저장"
 
 #: include/class_msgPool.inc:513
 #, php-format
 msgid "Add"
-msgstr ""
+msgstr "추가"
 
 #: include/class_msgPool.inc:513
 #, php-format
 msgid "Add %s"
-msgstr ""
+msgstr "%s 추가"
 
 #: include/class_msgPool.inc:523
 #: include/simpleplugin/attributes/class_SetAttribute.inc:517
@@ -965,189 +968,191 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclEditionDialog.inc:194
 #, php-format
 msgid "Delete"
-msgstr ""
+msgstr "삭제"
 
 #: include/class_msgPool.inc:523
 #, php-format
 msgid "Delete %s"
-msgstr ""
+msgstr "%s를 삭"
 
 #: include/class_msgPool.inc:533
 #, php-format
 msgid "Edit..."
-msgstr ""
+msgstr "편집..."
 
 #: include/class_msgPool.inc:533
 #, php-format
 msgid "Edit %s..."
-msgstr ""
+msgstr "%s 편집..."
 
 #: include/class_msgPool.inc:541
 msgid "Back"
-msgstr ""
+msgstr "뒤로"
 
 #: include/class_msgPool.inc:570
 #, php-format
 msgid "This account has no valid %s extensions!"
-msgstr ""
+msgstr "이 계정에는 유효한 %s 확장이 없습니다!"
 
 #: include/class_msgPool.inc:583
 #, php-format
 msgid ""
 "This account has %s settings enabled. You can disable them by clicking "
 "below."
-msgstr ""
+msgstr "이 계정에는 %s 설정이 활성화되어 있습니다. 아래를 클릭하여 비활성화 할 수 있습니다."
 
 #: include/class_msgPool.inc:588
 #, php-format
 msgid ""
 "This account has %s settings enabled. To disable them, you'll need to remove"
 " the %s settings first!"
-msgstr ""
+msgstr "이 계정에는 %s 설정이 활성화되어 있습니다. 비활성화하려면 먼저 %s 설정을 제거해야 합니다!"
 
 #: include/class_msgPool.inc:604
 #, php-format
 msgid ""
 "This account has %s settings disabled. You can enable them by clicking "
 "below."
-msgstr ""
+msgstr "이 계정은 %s 설정이 비활성화되어 있습니다. 아래를 클릭하여 활성화 할 수 있습니다."
 
 #: include/class_msgPool.inc:606
 #, php-format
 msgid ""
 "This account has %s settings disabled. To enable them, you'll need to add "
 "the %s settings first!"
-msgstr ""
+msgstr "이 계정은 %s 설정이 비활성화되어 있습니다. 이를 활성화하려면 먼저 %s 설정을 추가해야 합니다!"
 
 #: include/class_msgPool.inc:608
 #, php-format
 msgid ""
 "This account has %s settings disabled. To enable them, you'll need to "
 "disable the %s settings first!"
-msgstr ""
+msgstr "이 계정은 %s 설정이 비활성화되어 있습니다. 이를 활성화하려면 먼저 %s 설정을 비활성화해야 합니다!"
 
 #: include/class_msgPool.inc:619
 #, php-format
 msgid "Add %s settings"
-msgstr ""
+msgstr "%s 설정 추가"
 
 #: include/class_msgPool.inc:630
 #, php-format
 msgid "Remove %s settings"
-msgstr ""
+msgstr "%s 설정 제거"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
 msgid "January"
-msgstr ""
+msgstr "1ì›”"
 
 #: include/class_msgPool.inc:646
 msgid "February"
-msgstr ""
+msgstr "2ì›”"
 
 #: include/class_msgPool.inc:646
 msgid "March"
-msgstr ""
+msgstr "3ì›”"
 
 #: include/class_msgPool.inc:646
 msgid "April"
-msgstr ""
+msgstr "4"
 
 #: include/class_msgPool.inc:647
 msgid "May"
-msgstr ""
+msgstr "5ì›”"
 
 #: include/class_msgPool.inc:647
 msgid "June"
-msgstr ""
+msgstr "6ì›”"
 
 #: include/class_msgPool.inc:647
 msgid "July"
-msgstr ""
+msgstr "7ì›”"
 
 #: include/class_msgPool.inc:647
 msgid "August"
-msgstr ""
+msgstr "8ì›”"
 
 #: include/class_msgPool.inc:647
 msgid "September"
-msgstr ""
+msgstr "9ì›”"
 
 #: include/class_msgPool.inc:648
 msgid "October"
-msgstr ""
+msgstr "10"
 
 #: include/class_msgPool.inc:648
 msgid "November"
-msgstr ""
+msgstr "11ì›”"
 
 #: include/class_msgPool.inc:648
 msgid "December"
-msgstr ""
+msgstr "12ì›”"
 
 #: include/class_msgPool.inc:657
 msgid "Sunday"
-msgstr ""
+msgstr "일요일"
 
 #: include/class_msgPool.inc:657
 msgid "Monday"
-msgstr ""
+msgstr "월요일"
 
 #: include/class_msgPool.inc:657
 msgid "Tuesday"
-msgstr ""
+msgstr "수요일"
 
 #: include/class_msgPool.inc:657
 msgid "Wednesday"
-msgstr ""
+msgstr "수요일"
 
 #: include/class_msgPool.inc:657
 msgid "Thursday"
-msgstr ""
+msgstr "목요일"
 
 #: include/class_msgPool.inc:657
 msgid "Friday"
-msgstr ""
+msgstr "금요일"
 
 #: include/class_msgPool.inc:657
 msgid "Saturday"
-msgstr ""
+msgstr "토요일"
 
 #: include/class_msgPool.inc:674
 msgid "read operation"
-msgstr ""
+msgstr "읽기 조작"
 
 #: include/class_msgPool.inc:674
 msgid "add operation"
-msgstr ""
+msgstr "작업 추가"
 
 #: include/class_msgPool.inc:674
 msgid "modify operation"
-msgstr ""
+msgstr "작업 수정"
 
 #: include/class_msgPool.inc:675
 msgid "delete operation"
-msgstr ""
+msgstr "작업 삭제"
 
 #: include/class_msgPool.inc:675
 msgid "search operation"
-msgstr ""
+msgstr "작업  검색"
 
 #: include/class_msgPool.inc:675
 msgid "authentication"
-msgstr ""
+msgstr "인증"
 
 #: include/class_msgPool.inc:678
 #, php-format
 msgid "LDAP %s failed!"
-msgstr ""
+msgstr "LDAP %s가 실패했습니다!"
 
 #: include/class_msgPool.inc:680
 msgid "LDAP operation failed!"
-msgstr ""
+msgstr "LDAP 작업이 실패했습니다!"
 
 #: include/class_msgPool.inc:685 include/class_SnapshotDialogs.inc:43
 #: include/class_SnapshotDialogs.inc:261
@@ -1157,21 +1162,21 @@ msgstr "오브젝트"
 
 #: include/class_msgPool.inc:701
 msgid "Upload failed!"
-msgstr ""
+msgstr "업로드하지 못했습니다!"
 
 #: include/class_msgPool.inc:704
 #, php-format
 msgid "Upload failed: %s"
-msgstr ""
+msgstr "업로드 실패 : %s"
 
 #: include/class_msgPool.inc:715
 msgid "Communication failure with the infrastructure service!"
-msgstr ""
+msgstr "인프라 서비스와의 통신 실패!"
 
 #: include/class_msgPool.inc:717
 #, php-format
 msgid "Communication failure with the infrastructure service: %s"
-msgstr ""
+msgstr "인프라 서비스와의 통신 실패 : %s"
 
 #: include/class_msgPool.inc:730 include/class_msgPool.inc:733
 #, php-format
@@ -1228,12 +1233,12 @@ msgstr ""
 #: include/class_msgPool.inc:818
 #, php-format
 msgid "Checking for %s support"
-msgstr ""
+msgstr "%s 지원 확인"
 
 #: include/class_msgPool.inc:828
 #, php-format
 msgid "Install and activate the %s PHP module."
-msgstr ""
+msgstr "%s PHP 모듈을 설치하고 활성화합니다."
 
 #: include/class_msgPool.inc:838
 #, php-format
@@ -1250,14 +1255,14 @@ msgstr ""
 #: include/class_msgPool.inc:856
 msgid ""
 "The supplied base is not valid and has been reset to the previous value!"
-msgstr ""
+msgstr "제공된 베이스가 유효하지 않으며 이전 값으로 재설정되었습니다!"
 
 #: include/class_templateHandling.inc:500
 #, php-format
 msgid ""
 "Recursive dependency in the template fields: \"%1$s\" cannot depend on "
 "\"%2$s\" as \"%2$s\" already depends on \"%1$s\""
-msgstr ""
+msgstr "템플릿 필드의 순환적 종속성 : \"%1$s\"는 \"%1$s\"에 이미 종속되어 있으므로 \"%2$s\"은 \"%2$s\"에 종속 될 수 없습니다."
 
 #: include/simpleplugin/simple-select-list.xml:11
 msgid "Please select the desired entries"
@@ -1272,6 +1277,7 @@ msgstr "원하는 항목을 선택하십시오."
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "명칭"
@@ -1291,7 +1297,7 @@ msgstr "설명"
 
 #: include/simpleplugin/class_simpleService.inc:113
 msgid "Get service status"
-msgstr ""
+msgstr "서비스 상태 확인"
 
 #: include/simpleplugin/class_simpleService.inc:114
 msgid "Start service"
@@ -1306,44 +1312,44 @@ msgid "Restart service"
 msgstr "서비스 재시작"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:42
 msgid "Object base"
-msgstr ""
+msgstr "객체 기반"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:126
 msgid "Base field value should always be a string"
-msgstr ""
+msgstr "기본 필드 값은 항상 문자열이어야 합니다"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
-msgstr ""
+msgstr "오류, 잘못된 날짜: %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "ì‹ "
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "ë¶„"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "ì´ˆ"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "일자"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "시간"
 
@@ -1352,7 +1358,7 @@ msgstr "시간"
 #: include/simpleplugin/attributes/class_FileAttribute.inc:39
 #, php-format
 msgid "Cannot read uploaded file: %s"
-msgstr ""
+msgstr "업로드 한 파일을 읽을 수 없습니다 : %s"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:33
 msgid "file is empty"
@@ -1360,22 +1366,22 @@ msgstr "파일이 비어있음"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:36
 msgid "file not found"
-msgstr ""
+msgstr "파일을 찾을 수 없습니다"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:39
 msgid "file not readable"
-msgstr ""
+msgstr "읽을 수 없는 파일"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:74
 #, php-format
 msgid "%s (%d bytes)"
-msgstr ""
+msgstr " %s (%d bytes)"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:102
 #: include/simpleplugin/class_Attribute.inc:641
 #, php-format
 msgid "Attribute %s is disabled, its value could not be set"
-msgstr ""
+msgstr "%s 속성이 비활성화되어 해당 값을 설정할 수 없습니다."
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:107
 #, php-format
@@ -1425,7 +1431,7 @@ msgstr "제거"
 
 #: include/simpleplugin/attributes/class_PhoneNumberAttribute.inc:37
 msgid "Number"
-msgstr ""
+msgstr "번호"
 
 #: include/simpleplugin/attributes/class_PhoneNumberAttribute.inc:144
 #: include/simpleplugin/attributes/class_PhoneNumberAttribute.inc:145
@@ -1441,7 +1447,7 @@ msgstr ""
 #: plugins/admin/users/user-list.xml:108
 #: plugins/admin/aclrole/class_aclEditionDialog.inc:192
 msgid "Edit"
-msgstr ""
+msgstr "편집"
 
 #: include/simpleplugin/attributes/class_IntAttribute.inc:50
 #, php-format
@@ -1508,19 +1514,19 @@ msgstr ""
 #: include/simpleplugin/attributes/class_StringAttribute.inc:114
 #, php-format
 msgid "StringAttribute \"%s\" was set to a non-compatible value"
-msgstr ""
+msgstr "StringAttribute \"%s\"이 호환되지 않는 값으로 설정되었습니다."
 
 #: include/simpleplugin/class_simplePlugin.inc:345
 msgid "Template settings"
-msgstr ""
+msgstr "템플릿 설정"
 
 #: include/simpleplugin/class_simplePlugin.inc:348
 msgid "This is the name of the template"
-msgstr ""
+msgstr "이것은 템플릿의 이름입니다"
 
 #: include/simpleplugin/class_simplePlugin.inc:468
 msgid "Only main tab can compute dn"
-msgstr ""
+msgstr "기본 탭만 DN을 계산할 수 있습니다"
 
 #: include/simpleplugin/class_simplePlugin.inc:475
 #, php-format
@@ -1541,27 +1547,29 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:1326
 #, php-format
 msgid "The entry %s is not existing"
-msgstr ""
+msgstr "%s 항목이 없습니다."
 
 #: include/simpleplugin/class_simplePlugin.inc:1525
 msgid ""
 "The object has changed since opened in FusionDirectory. All changes that may"
 " be done by others will get lost if you save this entry!"
 msgstr ""
+"FusionDirectory에서 열린 이후 개체가 변경되었습니다. 이 항목을 저장하면 다른 사용자가 수행 할 수 있는 모든 변경 사항이 "
+"손실됩니다!"
 
 #: include/simpleplugin/class_simplePlugin.inc:1789
 #, php-format
 msgid "Service \"%s\""
-msgstr ""
+msgstr "서비스 \"%s\""
 
 #: include/simpleplugin/class_simplePlugin.inc:1791
 #, php-format
 msgid "Tab \"%s\""
-msgstr ""
+msgstr "탭 \"%s\""
 
 #: include/simpleplugin/class_simplePlugin.inc:1854
 msgid "Failed to create a unique DN"
-msgstr ""
+msgstr "고유한 DN을 만들지 못했습니다."
 
 #: include/simpleplugin/class_simplePlugin.inc:1946
 #, php-format
@@ -1592,64 +1600,64 @@ msgstr ""
 
 #: include/simpleplugin/class_helpersAttribute.inc:268
 msgid "B"
-msgstr ""
+msgstr "B"
 
 #: include/simpleplugin/class_helpersAttribute.inc:269
 msgid "KiB"
-msgstr ""
+msgstr "KiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:270
 msgid "MiB"
-msgstr ""
+msgstr "MiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:271
 msgid "GiB"
-msgstr ""
+msgstr "GiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:272
 msgid "TiB"
-msgstr ""
+msgstr "TiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:286
 msgid "seconds"
-msgstr ""
+msgstr "ì´ˆ"
 
 #: include/simpleplugin/class_helpersAttribute.inc:287
 msgid "minutes"
-msgstr ""
+msgstr "ë¶„"
 
 #: include/simpleplugin/class_helpersAttribute.inc:288
 msgid "hours"
-msgstr ""
+msgstr "시"
 
 #: include/simpleplugin/class_helpersAttribute.inc:289
 msgid "days"
-msgstr ""
+msgstr "일"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
 msgid "Add (dialog)"
-msgstr ""
+msgstr "추가(대화창)"
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
 #, php-format
 msgid "POSIX group %s"
-msgstr ""
+msgstr "POSIX 그룹 %s"
 
 #: include/simpleplugin/class_dialogAttributes.inc:519
 #: plugins/config/class_configInLdap.inc:479
 #, php-format
 msgid "Role %s"
-msgstr ""
+msgstr "ì—­í•  %s"
 
 #: include/simpleplugin/class_dialogAttributes.inc:521
 #: plugins/config/class_configInLdap.inc:472
 #, php-format
 msgid "Group %s"
-msgstr ""
+msgstr "그룹 %s"
 
 #: include/simpleplugin/class_dialogAttributes.inc:559
 msgid "Group of user"
-msgstr ""
+msgstr "사용자 그룹"
 
 #: include/simpleplugin/class_dialogAttributes.inc:760
 msgid "Unknown"
@@ -1658,27 +1666,27 @@ msgstr "알 수 없음"
 #: include/simpleplugin/class_simpleManagement.inc:301
 #: plugins/admin/users/user-list.xml:87
 msgid "From template"
-msgstr ""
+msgstr "템플릿에서"
 
 #: include/simpleplugin/class_simpleManagement.inc:329
 #, php-format
 msgid "%s template"
-msgstr ""
+msgstr "%s 템플릿"
 
 #: include/simpleplugin/class_simpleManagement.inc:526
 #: include/simpleplugin/class_simpleManagement.inc:532
 #: plugins/admin/groups/class_groupManagement.inc:355
 #, php-format
 msgid "Show %s"
-msgstr ""
+msgstr "보기 %s"
 
 #: include/simpleplugin/class_simpleManagement.inc:563
 msgid "Filter error"
-msgstr ""
+msgstr "필터 오류"
 
 #: include/simpleplugin/class_simpleManagement.inc:563
 msgid "The filter is incomplete!"
-msgstr ""
+msgstr "필터가 불완전합니다!"
 
 #: include/simpleplugin/class_simpleManagement.inc:1107
 msgid "Permission error"
@@ -1687,34 +1695,34 @@ msgstr "권한 오류"
 #: include/simpleplugin/class_simpleManagement.inc:1139
 #, php-format
 msgid "You are not allowed to create a snapshot for %s."
-msgstr ""
+msgstr "%s에 대한 스냅샷을 생성 할 수 없습니다."
 
 #: include/simpleplugin/class_simpleManagement.inc:1188
 #: include/simpleplugin/class_simpleManagement.inc:1268
 #: include/simpleplugin/class_simpleManagement.inc:1286
 #, php-format
 msgid "You are not allowed to restore a snapshot for %s."
-msgstr ""
+msgstr "%s에 대한 스냅샷을 복원 할 수 없습니다."
 
 #: include/simpleplugin/class_simpleManagement.inc:1330
 #, php-format
 msgid "You are not allowed to delete a snapshot for %s."
-msgstr ""
+msgstr "%s에 대한 스냅 샷을 삭제할 수 없습니다."
 
 #: include/simpleplugin/simple-list.xml:11
 msgid "NO LABEL"
-msgstr ""
+msgstr "라벨 없음"
 
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "생성"
 
 #: include/class_acl.inc:35 include/class_acl.inc:39
 msgid "ACL"
-msgstr ""
+msgstr "ACL"
 
 #: include/class_acl.inc:36
 msgid "Manage access control lists"
@@ -1723,7 +1731,7 @@ msgstr ""
 #: include/class_acl.inc:39
 #: plugins/admin/aclrole/class_aclRoleManagement.inc:34
 msgid "ACL roles"
-msgstr ""
+msgstr "ACL ì—­í• "
 
 #: include/class_acl.inc:118
 #, php-format
@@ -1740,11 +1748,11 @@ msgstr ""
 #: include/class_acl.inc:173
 #, php-format
 msgid "All users"
-msgstr ""
+msgstr "모든 사용자들"
 
 #: include/class_ldap.inc:277
 msgid "Performance warning"
-msgstr ""
+msgstr "성능 경고"
 
 #: include/class_ldap.inc:277
 #, php-format
@@ -1808,11 +1816,11 @@ msgstr ""
 
 #: include/class_SnapshotDialogs.inc:40
 msgid "Creating an object snapshot"
-msgstr ""
+msgstr "개체 스냅샷 만들기"
 
 #: include/class_SnapshotDialogs.inc:43 include/class_SnapshotDialogs.inc:261
 msgid "DN of the object you are creating a snapshot of"
-msgstr ""
+msgstr "스냅샷을 생성할 개체의 DN"
 
 #: include/class_SnapshotDialogs.inc:47
 msgid "Timestamp"
@@ -1820,80 +1828,80 @@ msgstr "타임스탬프"
 
 #: include/class_SnapshotDialogs.inc:47
 msgid "Timestamp of this snapshot creation"
-msgstr ""
+msgstr "이 스냅샷 생성의 타임스탬프"
 
 #: include/class_SnapshotDialogs.inc:51
 msgid "Reason"
-msgstr ""
+msgstr "사유"
 
 #: include/class_SnapshotDialogs.inc:51
 msgid "Reason for creating this snapshot"
-msgstr ""
+msgstr "이 스냅샷을 만든 이유"
 
 #: include/class_SnapshotDialogs.inc:105 include/class_SnapshotDialogs.inc:187
 msgid "Y-m-d, H:i:s"
-msgstr ""
+msgstr "Y-m-d, H:i:s"
 
 #: include/class_SnapshotDialogs.inc:142
 msgid "DN"
-msgstr ""
+msgstr "DN"
 
 #: include/class_SnapshotDialogs.inc:204 include/class_SnapshotDialogs.inc:205
 msgid "Restore"
-msgstr ""
+msgstr "복원"
 
 #: include/class_SnapshotDialogs.inc:257
 msgid "Restoring snapshots"
-msgstr ""
+msgstr "스냅샷 복원"
 
 #: include/class_SnapshotDialogs.inc:265
 msgid "Snapshots"
-msgstr ""
+msgstr "스냅샷"
 
 #: include/class_SnapshotDialogs.inc:265
 msgid "Existing snapshots for this object"
-msgstr ""
+msgstr "이 객체의 기존 스냅샷"
 
 #: plugins/admin/departments/dep-list.xml:9
 msgid "List of departments"
-msgstr ""
+msgstr "부서리스트"
 
 #: plugins/admin/departments/dep-list.xml:21
 #: plugins/admin/departments/class_department.inc:33
 #: plugins/admin/departments/class_department.inc:39
 msgid "Department"
-msgstr ""
+msgstr "부서"
 
 #: plugins/admin/departments/class_domain.inc:30
 #: plugins/admin/departments/class_domain.inc:31
 #: plugins/admin/departments/class_domain.inc:34
 msgid "Domain"
-msgstr "도메"
+msgstr "도메인"
 
 #: plugins/admin/departments/class_domain.inc:51
 msgid "domain"
-msgstr ""
+msgstr "도메인"
 
 #: plugins/admin/departments/class_organization.inc:30
 #: plugins/admin/departments/class_organization.inc:31
 #: plugins/admin/departments/class_organization.inc:34
 #: plugins/personal/generic/class_user.inc:432
 msgid "Organization"
-msgstr ""
+msgstr "조직"
 
 #: plugins/admin/departments/class_organization.inc:51
 msgid "organization"
-msgstr ""
+msgstr "조직"
 
 #: plugins/admin/departments/class_department.inc:34
 #: plugins/admin/departments/class_department.inc:35
 #: plugins/admin/departments/class_departmentManagement.inc:33
 msgid "Departments"
-msgstr ""
+msgstr "부서"
 
 #: plugins/admin/departments/class_department.inc:57
 msgid "department"
-msgstr ""
+msgstr "부서"
 
 #: plugins/admin/departments/class_department.inc:63
 #: plugins/admin/groups/class_ogroup.inc:211
@@ -1907,45 +1915,45 @@ msgstr "설정"
 #: plugins/admin/departments/class_department.inc:67
 #, php-format
 msgid "Name of %s"
-msgstr ""
+msgstr "%s의 이름"
 
 #: plugins/admin/departments/class_department.inc:67
 #, php-format
 msgid "A name for this %s"
-msgstr ""
+msgstr "이 %s의 이름"
 
 #: plugins/admin/departments/class_department.inc:72
 #, php-format
 msgid "Short description of this %s"
-msgstr ""
+msgstr "이 %s에 대한 간단한 설명"
 
 #: plugins/admin/departments/class_department.inc:76
 msgid "Category"
-msgstr ""
+msgstr "카테고리"
 
 #: plugins/admin/departments/class_department.inc:76
 #, php-format
 msgid "Category of this %s"
-msgstr ""
+msgstr "이 %s의 카테고리"
 
 #: plugins/admin/departments/class_department.inc:80
 msgid "Website"
-msgstr ""
+msgstr "웹사이트"
 
 #: plugins/admin/departments/class_department.inc:80
 #, php-format
 msgid "Website of this %s"
-msgstr ""
+msgstr "이 %s의 웹 사이트"
 
 #: plugins/admin/departments/class_department.inc:84
 #: plugins/personal/generic/class_user.inc:452
 msgid "Manager"
-msgstr ""
+msgstr "관리자"
 
 #: plugins/admin/departments/class_department.inc:84
 #, php-format
 msgid "Manager of this %s"
-msgstr ""
+msgstr "이 %s의 관리자"
 
 #: plugins/admin/departments/class_department.inc:90
 #: plugins/admin/departments/class_department.inc:96
@@ -1973,7 +1981,7 @@ msgstr "주소"
 #: plugins/admin/departments/class_department.inc:102
 #, php-format
 msgid "A postal address for this %s"
-msgstr ""
+msgstr "이 %s의 우편 주소"
 
 #: plugins/admin/departments/class_department.inc:106
 #: plugins/personal/generic/class_user.inc:358
@@ -1982,7 +1990,7 @@ msgstr "전화번호"
 
 #: plugins/admin/departments/class_department.inc:106
 msgid "Telephone number"
-msgstr ""
+msgstr "전화번호"
 
 #: plugins/admin/departments/class_department.inc:112
 #: plugins/personal/generic/class_user.inc:374
@@ -1991,43 +1999,43 @@ msgstr "팩스"
 
 #: plugins/admin/departments/class_department.inc:112
 msgid "Facsimile telephone number"
-msgstr ""
+msgstr "팩시밀리 전화번호"
 
 #: plugins/admin/departments/class_dcObject.inc:30
 #: plugins/admin/departments/class_dcObject.inc:31
 #: plugins/admin/departments/class_dcObject.inc:34
 msgid "Domain Component"
-msgstr ""
+msgstr "도메인 구성 요소"
 
 #: plugins/admin/departments/class_dcObject.inc:51
 msgid "domain component"
-msgstr ""
+msgstr "도메인 구성 요소"
 
 #: plugins/admin/departments/class_country.inc:50
 msgid "country"
-msgstr ""
+msgstr "êµ­ê°€"
 
 #: plugins/admin/departments/class_country.inc:56
 msgid "Country code"
-msgstr ""
+msgstr "국가 코드"
 
 #: plugins/admin/departments/class_country.inc:56
 msgid "A two-letter country code from ISO 3166"
-msgstr ""
+msgstr "ISO 3166의 2자리 국가 코드"
 
 #: plugins/admin/departments/class_locality.inc:30
 #: plugins/admin/departments/class_locality.inc:31
 #: plugins/admin/departments/class_locality.inc:34
 msgid "Locality"
-msgstr ""
+msgstr "소재지"
 
 #: plugins/admin/departments/class_locality.inc:51
 msgid "locality"
-msgstr ""
+msgstr "소재지"
 
 #: plugins/admin/departments/class_departmentManagement.inc:34
 msgid "Manage departments"
-msgstr ""
+msgstr "부서 관리"
 
 #: plugins/admin/departments/class_departmentManagement.inc:35
 msgid ""
@@ -2050,7 +2058,7 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:37
 msgid "Allows you to manage object groups, POSIX groups and roles"
-msgstr ""
+msgstr "객체 그룹, POSIX 그룹 및 역할을 관리할 수 ​​있습니다"
 
 #: plugins/admin/groups/class_groupManagement.inc:155
 #: plugins/admin/groups/class_groupManagement.inc:158
@@ -2099,7 +2107,7 @@ msgstr "오류없이 호출된 작업 (결과는 \"%s\")"
 #: plugins/admin/acl/class_aclAssignment.inc:47
 #: plugins/admin/aclrole/class_aclRole.inc:77
 msgid "Role"
-msgstr ""
+msgstr "ì—­í• "
 
 #: plugins/admin/groups/class_groupManagement.inc:263
 msgid "Edit role properties"
@@ -2119,7 +2127,7 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:323
 msgid "Show organizational roles"
-msgstr ""
+msgstr "조직 역할 표시"
 
 #: plugins/admin/groups/class_groupManagement.inc:324
 msgid "Show application groups"
@@ -2175,12 +2183,12 @@ msgstr ""
 #: plugins/admin/groups/class_ogroup.inc:61
 #, php-format
 msgid "Unknown type : %s"
-msgstr ""
+msgstr "알 수없는 유형 : %s"
 
 #: plugins/admin/groups/class_ogroup.inc:69
 #, php-format
 msgid "Non existing dn: %s"
-msgstr ""
+msgstr "존재하지 않는 DN : %s"
 
 #: plugins/admin/groups/class_ogroup.inc:175
 msgid "Object group"
@@ -2282,7 +2290,7 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:65
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:71
 msgid "Phone number"
-msgstr ""
+msgstr "전화 번호"
 
 #: plugins/admin/groups/class_roleGeneric.inc:99
 msgid "Fax number"
@@ -2315,7 +2323,7 @@ msgstr ""
 
 #: plugins/admin/acl/class_aclAssignment.inc:44
 msgid "Subtree"
-msgstr ""
+msgstr "서브 트리"
 
 #: plugins/admin/acl/class_aclAssignment.inc:44
 msgid "Base only"
@@ -2335,7 +2343,7 @@ msgstr ""
 
 #: plugins/admin/acl/class_aclAssignment.inc:56
 msgid "Members"
-msgstr ""
+msgstr "멤"
 
 #: plugins/admin/acl/class_aclAssignment.inc:56
 msgid "Users or groups to assign this role to."
@@ -2348,7 +2356,7 @@ msgstr ""
 
 #: plugins/admin/acl/class_aclAssignment.inc:270
 msgid "ACL assignment"
-msgstr ""
+msgstr "ACL 할당"
 
 #: plugins/admin/acl/class_aclAssignment.inc:284
 #: plugins/admin/acl/class_aclManagement.inc:226
@@ -2357,7 +2365,7 @@ msgstr ""
 
 #: plugins/admin/acl/class_aclAssignment.inc:285
 msgid "Access control roles assignment"
-msgstr ""
+msgstr "액세스 제어 역할 할당"
 
 #: plugins/admin/acl/class_aclAssignment.inc:304
 msgid "Assignments"
@@ -2376,7 +2384,7 @@ msgstr ""
 #: plugins/admin/acl/class_aclManagement.inc:32
 #: plugins/admin/acl/class_aclManagement.inc:45
 msgid "ACL assignment creation"
-msgstr ""
+msgstr "ACL 할당 생성"
 
 #: plugins/admin/acl/class_aclManagement.inc:33
 msgid "Create an ACL assignment on an arbitrary dn"
@@ -2434,7 +2442,7 @@ msgstr ""
 
 #: plugins/admin/users/user-list.xml:146
 msgid "Apply template"
-msgstr ""
+msgstr "템플릿 적용"
 
 #: plugins/admin/users/user-list.xml:177
 msgid "New user from template"
@@ -2454,9 +2462,9 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
-msgstr ""
+msgstr "사용자"
 
 #: plugins/admin/users/class_userManagement.inc:43
 msgid "Manage users"
@@ -2496,7 +2504,7 @@ msgstr ""
 #: plugins/admin/users/class_userManagement.inc:255
 #: plugins/personal/generic/class_user.inc:285
 msgid "User account"
-msgstr ""
+msgstr "사용자 계정"
 
 #: plugins/admin/users/class_userManagement.inc:255
 #: plugins/personal/generic/class_user.inc:279
@@ -2526,7 +2534,7 @@ msgstr ""
 
 #: plugins/admin/aclrole/class_aclRole.inc:109
 msgid "ACLs"
-msgstr ""
+msgstr "ACLs"
 
 #: plugins/admin/aclrole/class_aclRole.inc:113
 msgid "ACLs which are part of this group"
@@ -2602,7 +2610,7 @@ msgstr ""
 
 #: plugins/admin/aclrole/class_aclRoleManagement.inc:36
 msgid "Manage ACL roles"
-msgstr ""
+msgstr "ACL 역할 관리"
 
 #: plugins/config/class_mainPluginsConfig.inc:28
 msgid "Plugins configuration"
@@ -2610,7 +2618,7 @@ msgstr ""
 
 #: plugins/config/class_mainPluginsConfig.inc:29
 msgid "FusionDirectory plugins configuration"
-msgstr ""
+msgstr "FusionDirectory 플러그인 구성"
 
 #: plugins/config/class_mainPluginsConfig.inc:42
 msgid "Object groups"
@@ -2636,11 +2644,11 @@ msgstr ""
 msgid ""
 "Useful if you add a hook using password value when SASL user passwords are "
 "edited"
-msgstr ""
+msgstr "SASL 사용자 비밀번호를 편집할 때 비밀번호 값을 사용하여 hook을 추가하는 경우 유용"
 
 #: plugins/config/class_dashBoardConfig.inc:28
 msgid "Dashboard configuration"
-msgstr ""
+msgstr "대시보드 설정"
 
 #: plugins/config/class_dashBoardConfig.inc:29
 msgid "FusionDirectory dashboard plugin configuration"
@@ -2668,7 +2676,7 @@ msgstr ""
 
 #: plugins/config/class_dashBoardConfig.inc:59
 msgid "Dashboard expired users"
-msgstr ""
+msgstr "대시보드 만료된 사용자"
 
 #: plugins/config/class_dashBoardConfig.inc:62
 msgid "Number of days"
@@ -2691,7 +2699,7 @@ msgstr ""
 #: plugins/config/class_recoveryConfig.inc:28
 #: html/class_passwordRecovery.inc:357
 msgid "Password recovery"
-msgstr ""
+msgstr "비밀번호 복구"
 
 #: plugins/config/class_recoveryConfig.inc:29
 msgid "Settings for the password recovery feature"
@@ -2703,7 +2711,7 @@ msgstr ""
 
 #: plugins/config/class_recoveryConfig.inc:45
 msgid "Activate password recovery"
-msgstr ""
+msgstr "비밀번호 복구 활성화"
 
 #: plugins/config/class_recoveryConfig.inc:46
 msgid "Whether to activate or not password recovery feature"
@@ -2859,7 +2867,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:96
 msgid "Theme"
-msgstr ""
+msgstr "테마"
 
 #: plugins/config/class_configInLdap.inc:96
 msgid "Theme to be used"
@@ -2905,7 +2913,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:130
 msgid "Schema validation"
-msgstr ""
+msgstr "스키마 검증"
 
 #: plugins/config/class_configInLdap.inc:131
 msgid "Enables schema checking during login."
@@ -2923,7 +2931,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:141
 msgid "Snapshot base"
-msgstr ""
+msgstr "스냅샷 베이스"
 
 #: plugins/config/class_configInLdap.inc:141
 msgid "The base where snapshots should be stored inside of the LDAP."
@@ -2988,7 +2996,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:180
 msgid "SASL Realm"
-msgstr ""
+msgstr "SASL 영역"
 
 #: plugins/config/class_configInLdap.inc:184
 msgid "SASL Exop"
@@ -3079,7 +3087,7 @@ msgstr ""
 #: plugins/config/class_configInLdap.inc:246
 #: plugins/config/class_configInLdap.inc:261
 msgid "CA certificate path"
-msgstr ""
+msgstr "CA 인증서 경로"
 
 #: plugins/config/class_configInLdap.inc:246
 msgid "Path to the CA certificate. Used for validating Argonaut Server host."
@@ -3087,11 +3095,11 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:253
 msgid "CAS"
-msgstr ""
+msgstr "CAS"
 
 #: plugins/config/class_configInLdap.inc:256
 msgid "Enable CAS"
-msgstr ""
+msgstr "CAS 활성화"
 
 #: plugins/config/class_configInLdap.inc:256
 msgid "CAS login will be used instead of LDAP bind"
@@ -3099,7 +3107,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:261
 msgid "Path to the CA certificate of the CAS server"
-msgstr ""
+msgstr "CAS 서버의 CA 인증서 경로"
 
 #: plugins/config/class_configInLdap.inc:266
 msgid "Host"
@@ -3143,7 +3151,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:292
 msgid "The pattern to use to build the common name field"
-msgstr ""
+msgstr "공통 이름 필드를 빌드하는 데 사용할 패턴"
 
 #: plugins/config/class_configInLdap.inc:297
 msgid "Strict naming policy"
@@ -3159,7 +3167,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:303
 msgid "The branch where users are stored."
-msgstr ""
+msgstr "사용자가 저장된 브랜치."
 
 #: plugins/config/class_configInLdap.inc:308
 msgid "ACL role RDN"
@@ -3274,7 +3282,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:381
 msgid "Use this to hide some menu entry to specific groups of users"
-msgstr ""
+msgstr "특정 사용자 그룹에게 일부 메뉴 항목을 숨기려면이 옵션을 사용하십시오."
 
 #: plugins/config/class_configInLdap.inc:385
 msgid "Group or role"
@@ -3291,11 +3299,11 @@ msgstr ""
 #: plugins/config/class_configInLdap.inc:405
 #: plugins/config/class_configInLdap.inc:433
 msgid "Hooks"
-msgstr ""
+msgstr "Hooks"
 
 #: plugins/config/class_configInLdap.inc:410
 msgid "Hooks that are called when specific actions happens"
-msgstr ""
+msgstr "특정 액션이 발생할 때 호출되는 후크"
 
 #: plugins/config/class_configInLdap.inc:414
 msgid "Tab"
@@ -3303,7 +3311,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:414
 msgid "The tab that this hook concerns"
-msgstr ""
+msgstr "이 훅에 관한 탭"
 
 #: plugins/config/class_configInLdap.inc:419
 msgid "When to call this command"
@@ -3319,7 +3327,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:440
 msgid "Display hook output"
-msgstr ""
+msgstr "Hook 출력 표"
 
 #: plugins/config/class_configInLdap.inc:441
 msgid ""
@@ -3347,7 +3355,7 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:50
 #: plugins/addons/dashboard/users_accounts.tpl.c:8
 msgid "Expired accounts"
-msgstr ""
+msgstr "만료된 계정"
 
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:66
 msgid "Expiration date"
@@ -3356,7 +3364,7 @@ msgstr "만료일자"
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:70
 #: ihtml/themes/legacy/recovery.tpl.c:83 ihtml/themes/breezy/recovery.tpl.c:83
 msgid "Email"
-msgstr ""
+msgstr "이메일"
 
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:91
 #, php-format
@@ -3393,7 +3401,7 @@ msgstr ""
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:26
 msgid "Passwords"
-msgstr ""
+msgstr "비밀번호"
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:27
 msgid "Statistics about passwords"
@@ -3414,7 +3422,7 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoard.inc:28
 #: plugins/addons/dashboard/class_dashBoard.inc:33
 msgid "Dashboard"
-msgstr ""
+msgstr "대시보"
 
 #: plugins/addons/dashboard/class_dashBoard.inc:29
 msgid "Statistics and various information"
@@ -3422,7 +3430,7 @@ msgstr "통계 및 각종 정보"
 
 #: plugins/addons/dashboard/class_dashBoard.inc:38
 msgid "Reporting"
-msgstr ""
+msgstr "ë³´ê³ "
 
 #: plugins/addons/dashboard/class_dashBoard.inc:42
 msgid "See dashboard"
@@ -3440,6 +3448,102 @@ msgid ""
 "error: %s"
 msgstr "다음 오류로 인해 유형 \"%s\"의 통계를 계산할 수 없습니다 : %s"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "아이디"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "가입 유형"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "시작일자"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "종료일자"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "가져오기"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3452,11 +3556,11 @@ msgstr ""
 #: plugins/personal/roles/class_userRoles.inc:60
 #: plugins/personal/roles/class_userRoles.inc:64
 msgid "Roles membership"
-msgstr ""
+msgstr "역할 멤버십"
 
 #: plugins/personal/generic/class_user.inc:46
 msgid "Password method"
-msgstr ""
+msgstr "비밀번호 방법"
 
 #: plugins/personal/generic/class_user.inc:46
 msgid "Password hash method to use"
@@ -3473,7 +3577,7 @@ msgstr "패스워드"
 
 #: plugins/personal/generic/class_user.inc:51
 msgid "Password (Leave empty if you do not wish to change it)"
-msgstr ""
+msgstr "비밀번호 (변경하지 않으려면 비워 두십시오)"
 
 #: plugins/personal/generic/class_user.inc:55
 msgid "Password again"
@@ -3505,11 +3609,11 @@ msgstr "성"
 
 #: plugins/personal/generic/class_user.inc:322
 msgid "First name of this user"
-msgstr ""
+msgstr "이 사용자의 이름"
 
 #: plugins/personal/generic/class_user.inc:327
 msgid "Short description of the user"
-msgstr ""
+msgstr "사용자에 대한 간단한 설명"
 
 #: plugins/personal/generic/class_user.inc:331
 msgid "Picture"
@@ -3553,7 +3657,7 @@ msgstr "호출기"
 
 #: plugins/personal/generic/class_user.inc:370
 msgid "Business pager number"
-msgstr ""
+msgstr "사업자 호출기 번호"
 
 #: plugins/personal/generic/class_user.inc:374
 msgid "Business fax number"
@@ -3565,11 +3669,11 @@ msgstr ""
 
 #: plugins/personal/generic/class_user.inc:378
 msgid "Personal homepage"
-msgstr ""
+msgstr "개인 홈페이지"
 
 #: plugins/personal/generic/class_user.inc:384
 msgid "Account information"
-msgstr ""
+msgstr "계정 정보"
 
 #: plugins/personal/generic/class_user.inc:389
 msgid "Login of this user"
@@ -3618,7 +3722,7 @@ msgstr ""
 
 #: plugins/personal/generic/class_user.inc:427
 msgid "Title"
-msgstr ""
+msgstr "제목"
 
 #: plugins/personal/generic/class_user.inc:427
 msgid ""
@@ -3735,7 +3839,7 @@ msgstr ""
 
 #: setup/class_setup.inc:194
 msgid "Completed"
-msgstr ""
+msgstr "완료"
 
 #: setup/class_setup.inc:237
 msgid "Next"
@@ -3754,134 +3858,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
-msgstr ""
+msgstr "LDAP 서버 목록에 표시할 연결의 이름"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
-msgstr ""
+msgstr "LDAP 서버에 접속하기 위한 URI. 일반적으로 ldap://로 시작합니다"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
-msgstr ""
+msgstr "관리자 DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "상태"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "재시도"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
-msgstr ""
+msgstr "리프레시"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -3894,7 +3996,7 @@ msgstr ""
 
 #: setup/class_setupStepChecks.inc:67
 msgid "Checking PHP version"
-msgstr ""
+msgstr "PHP 버전 확인"
 
 #: setup/class_setupStepChecks.inc:68
 #, php-format
@@ -4013,7 +4115,7 @@ msgstr ""
 #: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
 #: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
 msgid "Off"
-msgstr ""
+msgstr "끄"
 
 #: setup/class_setupStepChecks.inc:190
 msgid ""
@@ -4076,222 +4178,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
-msgstr ""
+msgstr "실패"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
-msgstr ""
+msgstr "설치를 확인하십시오."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "그룹"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
-msgstr ""
+msgstr "ì—­í• "
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4379,17 +4481,17 @@ msgstr "로그인 계정 \"%s\"이 여러 개 있습니다."
 #: html/class_passwordRecovery.inc:517
 #, php-format
 msgid "There is no account using email \"%s\""
-msgstr ""
+msgstr "\"%s\" 이메일을 사용하는 계정이 없습니다."
 
 #: html/class_passwordRecovery.inc:520
 #, php-format
 msgid "There are several accounts using email \"%s\""
-msgstr ""
+msgstr "\"%s\" 이메일을 사용하는 계정이 여러 개 있습니다."
 
 #: html/class_passwordRecovery.inc:528
 #, php-format
 msgid "The user using email \"%s\" is locked. Please contact your administrator."
-msgstr ""
+msgstr "이메일 \"%s\"을 사용하는 사용자가 잠겨 있습니다. 관리자에게 문의하십시오."
 
 #: html/class_passwordRecovery.inc:583
 msgid "Contact your administrator, there was a problem with mail server"
@@ -4401,7 +4503,7 @@ msgstr "토큰이 유효하지 않습니다."
 
 #: html/class_passwordRecovery.inc:660
 msgid "There was a problem with mail server, confirmation email not sent"
-msgstr ""
+msgstr "메일 서버에 문제가 있습니다. 확인 이메일이 전송되지 않았습니다."
 
 #: html/main.php:113
 msgid "PHP configuration"
@@ -4415,7 +4517,7 @@ msgstr ""
 
 #: html/main.php:140
 msgid "Password change"
-msgstr ""
+msgstr "비빌번호 변경"
 
 #: html/main.php:140
 msgid "Your password is about to expire, please change your password!"
@@ -4423,7 +4525,7 @@ msgstr ""
 
 #: html/main.php:156
 msgid "Your password has expired, please set a new one."
-msgstr ""
+msgstr "비밀번호가 만료되었습니다. 새 비밀번호를 설정하십시오."
 
 #: html/main.php:206
 msgid "Running out of memory!"
@@ -4431,7 +4533,7 @@ msgstr ""
 
 #: html/main.php:249
 msgid "User ACL checks disabled"
-msgstr ""
+msgstr "사용자 ACL 검사 비활성화"
 
 #: html/main.php:287
 msgid "Plugin"
@@ -4446,7 +4548,7 @@ msgstr ""
 
 #: html/main.php:303
 msgid "Configuration Error"
-msgstr ""
+msgstr "설정 오류"
 
 #: html/main.php:304
 #, php-format
@@ -4459,7 +4561,7 @@ msgstr ""
 #: ihtml/themes/legacy/login.tpl.c:38 ihtml/themes/breezy/login.tpl.c:2
 #: ihtml/themes/breezy/login.tpl.c:38
 msgid "Sign in"
-msgstr ""
+msgstr "로그인"
 
 #: html/index.php:67
 msgid ""
@@ -4481,7 +4583,7 @@ msgstr ""
 #: html/index.php:178
 #, php-format
 msgid "Directory \"%s\" specified as compile directory is not accessible!"
-msgstr ""
+msgstr "컴파일 디렉토리로 지정된 \"%s\" 디렉토리에 액세스 할 수 없습니다!"
 
 #: html/index.php:216
 msgid "Your FusionDirectory session has expired!"
@@ -4490,15 +4592,15 @@ msgstr ""
 #: html/index.php:219
 #, php-format
 msgid "Invalid plugin parameter \"%s\"!"
-msgstr ""
+msgstr "잘못된 플러그인 매개 변수 \"%s\"!"
 
 #: html/index.php:222
 msgid "No session found!"
-msgstr ""
+msgstr "세션이 없습니다!"
 
 #: html/index.php:258
 msgid "LDAP schema check reported errors:"
-msgstr ""
+msgstr "LDAP 스키마 검사에서 보고된 오류 :"
 
 #: html/index.php:260
 msgid "LDAP schema error"
@@ -4506,11 +4608,11 @@ msgstr ""
 
 #: html/index.php:287
 msgid "Please specify a valid username!"
-msgstr ""
+msgstr "유효한 사용자이름을 지정하십시오!"
 
 #: html/index.php:290
 msgid "Please specify your password!"
-msgstr ""
+msgstr "암호를 지정하십시오!"
 
 #: html/index.php:309
 msgid "Please check the username/password combination."
@@ -4518,27 +4620,27 @@ msgstr ""
 
 #: html/index.php:344
 msgid "Account locked. Please contact your system administrator!"
-msgstr ""
+msgstr "계정이 잠겼습니다. 시스템 관리자에게 문의하십시오!"
 
 #: html/index.php:463
 #, php-format
 msgid "No value found in HTTP header \"%s\""
-msgstr ""
+msgstr "HTTP 헤더 \"%s\"에 값이 없습니다."
 
 #: html/index.php:477
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
-msgstr ""
+msgstr "헤더 사용자 \"%s\"를 LDAP에서 찾을 수 없습니다."
 
 #: html/index.php:487 html/index.php:554
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
-msgstr ""
+msgstr "사용자 \"%s\"로 로그인 시 오류가 발생했습니다: %s"
 
 #: html/index.php:544
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
-msgstr ""
+msgstr "LDAP에서 CAS 사용자 \"%s\"를 찾을 수 없습니다."
 
 #: html/index.php:594
 msgid ""
@@ -4600,7 +4702,7 @@ msgstr ""
 #: plugins/addons/dashboard/users_accounts.tpl.c:11
 #: plugins/addons/dashboard/users_accounts.tpl.c:23
 msgid "Manager concerned"
-msgstr ""
+msgstr "관심있는 관리자"
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:14
 msgid "There is one account expiring in the next %1 days"
@@ -4714,11 +4816,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
@@ -4785,29 +4891,30 @@ msgstr ""
 
 #: setup/setup_migrate.tpl.c:5
 msgid "Check again"
-msgstr ""
+msgstr "다시 확인"
 
 #: setup/setup_finish.tpl.c:2
 msgid "Create your configuration file"
-msgstr ""
+msgstr "구성 파일 작성"
 
 #: setup/setup_finish.tpl.c:5
 msgid "Run %1 to put the correct right on fusiondirectory.conf"
-msgstr ""
+msgstr "fusiondirectory.conf에 올바른 권한을 설정하려면 %1을 실행하십시오."
 
 #: setup/setup_finish.tpl.c:8
 msgid "Download configuration"
-msgstr ""
+msgstr "구성 다운로드"
 
 #: setup/setup_finish.tpl.c:11
 msgid "Status: "
-msgstr ""
+msgstr "상태:"
 
 #: setup/setup_migrate_accounts.tpl.c:2
 msgid ""
 "This dialog allows moving a couple of entries to the configured tree. Doing "
 "this may straighten your LDAP service."
 msgstr ""
+"이 대화 상자에서는 몇 개의 항목을 구성된 트리로 이동할 수 있습니다. 이 작업을 수행하면 LDAP 서비스가 향상 될 수 있습니다."
 
 #: setup/setup_migrate_accounts.tpl.c:5
 msgid ""
@@ -4815,10 +4922,12 @@ msgid ""
 "entries. The FusionDirectory setup can't migrate references, so you may want"
 " to cancel the migration in this case."
 msgstr ""
+"이 옵션에주의하십시오! 이러한 항목을 가리키는 참조가 있을 수 있습니다. FusionDirectory 설정은 참조를 마이그레이션 할 수 "
+"없으므로 이 경우 마이그레이션을 취소 할 수 있습니다."
 
 #: setup/setup_migrate_accounts.tpl.c:8
 msgid "Move selected entries into this tree"
-msgstr ""
+msgstr "선택한 항목을 이 트리로 이동"
 
 #: setup/setup_migrate_accounts.tpl.c:11
 msgid ""
@@ -4826,34 +4935,38 @@ msgid ""
 " If you want to change this for a couple of entries only, just select them "
 "and use the 'Migrate' button below."
 msgstr ""
+"나열된 항목은 현재 FusionDirectory 인터페이스에서 보이지 않습니다. 몇 개의 항목에 대해서만 이를 변경하려면 해당 항목을 "
+"선택하고 아래의 '마이그레이션' 버튼을 사용하십시오."
 
 #: setup/setup_migrate_accounts.tpl.c:14
 msgid ""
 "If you want to know what will be done when migrating the selected entries, "
 "use the 'Show changes' button to see the LDIF."
-msgstr ""
+msgstr "선택한 항목을 마이그레이션 할 때 수행 할 작업을 알려면 '변경사항 표시' 버튼을 사용하여 LDIF를 확인하십시오."
 
 #: setup/setup_migrate_accounts.tpl.c:26
 msgid "Show changes"
-msgstr ""
+msgstr "변경사항 표시"
 
 #: ihtml/themes/legacy/recovery.tpl.c:2 ihtml/themes/breezy/recovery.tpl.c:2
 msgid "Lost password"
-msgstr ""
+msgstr "비밀번호 분실"
 
 #: ihtml/themes/legacy/recovery.tpl.c:5 ihtml/themes/breezy/recovery.tpl.c:5
 msgid "Information to reset password for %1 has been sent to email address %2"
-msgstr ""
+msgstr "%1 의 비밀번호를 재설정하는 정보가 이메일 주소 %2 로 전송되었습니다"
 
 #: ihtml/themes/legacy/recovery.tpl.c:8 ihtml/themes/breezy/recovery.tpl.c:8
 msgid "Warning : this email is only valid for %1 minutes."
-msgstr ""
+msgstr "경고 : 이 이메일은 %1 분 동안 만 유효합니다."
 
 #: ihtml/themes/legacy/recovery.tpl.c:11 ihtml/themes/breezy/recovery.tpl.c:11
 msgid ""
 "This dialog provides a simple way to change your password.<br/> Enter the "
 "new password (twice) in the fields below and press the 'Change' button."
 msgstr ""
+"이 대화 상자는 비밀번호를 변경하는 간단한 방법을 제공합니다. <br/> 아래 필드에 새 비밀번호 (2 회)를 입력하고 '변경' 버튼을 "
+"누르십시오."
 
 #: ihtml/themes/legacy/recovery.tpl.c:14 ihtml/themes/legacy/recovery.tpl.c:17
 #: ihtml/themes/legacy/recovery.tpl.c:20 ihtml/themes/legacy/login.tpl.c:8
@@ -4862,17 +4975,17 @@ msgstr ""
 #: ihtml/themes/breezy/recovery.tpl.c:20 ihtml/themes/breezy/login.tpl.c:8
 #: ihtml/themes/breezy/login.tpl.c:11 ihtml/themes/breezy/login.tpl.c:14
 msgid "Username"
-msgstr ""
+msgstr "사용자 이름"
 
 #: ihtml/themes/legacy/recovery.tpl.c:32 ihtml/themes/legacy/recovery.tpl.c:35
 #: ihtml/themes/legacy/recovery.tpl.c:38 ihtml/themes/breezy/recovery.tpl.c:32
 #: ihtml/themes/breezy/recovery.tpl.c:35 ihtml/themes/breezy/recovery.tpl.c:38
 msgid "New password repeated"
-msgstr ""
+msgstr "새 비밀번호 반복"
 
 #: ihtml/themes/legacy/recovery.tpl.c:41 ihtml/themes/breezy/recovery.tpl.c:41
 msgid "Password strength"
-msgstr ""
+msgstr "비밀번호 강도"
 
 #: ihtml/themes/legacy/recovery.tpl.c:44 ihtml/themes/legacy/recovery.tpl.c:47
 #: ihtml/themes/legacy/recovery.tpl.c:50 ihtml/themes/legacy/recovery.tpl.c:86
@@ -4889,14 +5002,14 @@ msgstr "디렉토리"
 #: ihtml/themes/legacy/recovery.tpl.c:53 ihtml/themes/legacy/recovery.tpl.c:98
 #: ihtml/themes/breezy/recovery.tpl.c:53 ihtml/themes/breezy/recovery.tpl.c:98
 msgid "Change"
-msgstr ""
+msgstr "변경"
 
 #: ihtml/themes/legacy/recovery.tpl.c:56
 #: ihtml/themes/legacy/recovery.tpl.c:101
 #: ihtml/themes/breezy/recovery.tpl.c:56
 #: ihtml/themes/breezy/recovery.tpl.c:101
 msgid "Click here to change your password"
-msgstr ""
+msgstr "비밀번호를 변경하려면 여기를 클릭하십시오"
 
 #: ihtml/themes/legacy/recovery.tpl.c:59 ihtml/themes/legacy/recovery.tpl.c:62
 #: ihtml/themes/breezy/recovery.tpl.c:59 ihtml/themes/breezy/recovery.tpl.c:62
@@ -4905,49 +5018,49 @@ msgstr "성공"
 
 #: ihtml/themes/legacy/recovery.tpl.c:65 ihtml/themes/breezy/recovery.tpl.c:65
 msgid "Your password has been changed successfully."
-msgstr ""
+msgstr "비밀번호가 성공적으로 변경되었습니다."
 
 #: ihtml/themes/legacy/recovery.tpl.c:68 ihtml/themes/legacy/recovery.tpl.c:95
 #: ihtml/themes/breezy/recovery.tpl.c:68 ihtml/themes/breezy/recovery.tpl.c:95
 msgid "Return to login screen"
-msgstr ""
+msgstr "로그인 화면으로 돌아가기"
 
 #: ihtml/themes/legacy/recovery.tpl.c:71 ihtml/themes/breezy/recovery.tpl.c:71
 msgid ""
 "Enter your current e-mail address in the field below and press the 'Change' "
 "button."
-msgstr ""
+msgstr "아래 필드에 현재 이메일 주소를 입력하고 '변경' 버튼을 누르십시오."
 
 #: ihtml/themes/legacy/recovery.tpl.c:74 ihtml/themes/breezy/recovery.tpl.c:74
 msgid ""
 "=> Use your e-mail in the long format, e.g : John Doe => "
 "john.doe@example.com"
-msgstr ""
+msgstr "=> 긴 형식으로 이메일을 사용하십시오, 예 : John Doe => john.doe@example.com"
 
 #: ihtml/themes/legacy/recovery.tpl.c:104
 #: ihtml/themes/breezy/recovery.tpl.c:104
 msgid ""
 "Password recovery is not activated. If you have lost your password, please "
 "contact your administrator"
-msgstr ""
+msgstr "비밀번호 복구가 활성화되지 않았습니다. 비밀번호를 잊어 버린 경우 관리자에게 문의하십시오"
 
 #: ihtml/themes/legacy/login.tpl.c:5 ihtml/themes/breezy/login.tpl.c:5
 msgid ""
 "Please use your username and your password to log into the site "
 "administration system."
-msgstr ""
+msgstr "사이트 관리 시스템에 로그인하려면 사용자 이름과 비밀번호를 사용하십시오."
 
 #: ihtml/themes/legacy/login.tpl.c:26 ihtml/themes/breezy/login.tpl.c:26
 msgid "I forgot my password"
-msgstr ""
+msgstr "비밀번호를 잊었습니다"
 
 #: ihtml/themes/legacy/login.tpl.c:41 ihtml/themes/breezy/login.tpl.c:41
 msgid "Click here to log in"
-msgstr ""
+msgstr "로그인하려면 여기를 클릭하십시오"
 
 #: ihtml/themes/breezy/simple-remove.tpl.c:2
 msgid "Warning: you are about to delete the following objects"
-msgstr ""
+msgstr "경고 : 다음 객체를 삭제하려고합니다."
 
 #: ihtml/themes/breezy/simple-remove.tpl.c:5
 #: ihtml/themes/breezy/restore-confirm.tpl.c:8
@@ -4955,19 +5068,20 @@ msgid ""
 "Please double check if you really want to do this since there is no way for "
 "FusionDirectory to get your data back."
 msgstr ""
+"FusionDirectory에서 데이터를 다시 가져올 수 있는 방법이 없기 때문에 실제로 이 작업을 수행하려면 다시 확인하십시오."
 
 #: ihtml/themes/breezy/simple-remove.tpl.c:8
 msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort."
-msgstr ""
+msgstr "따라서 확실하다면 '삭제'를 눌러 계속하거나 '취소'를 눌러 중단하십시오."
 
 #: ihtml/themes/breezy/template.tpl.c:2
 msgid "Creating a new object using templates"
-msgstr ""
+msgstr "템플릿을 사용하여 새 객체 만들기"
 
 #: ihtml/themes/breezy/template.tpl.c:8
 #: ihtml/themes/breezy/restore-confirm.tpl.c:14
 msgid "Continue"
-msgstr ""
+msgstr "계속"
 
 #: ihtml/themes/breezy/copynotice.tpl.c:2
 msgid ""
@@ -4977,7 +5091,7 @@ msgstr ""
 
 #: ihtml/themes/breezy/islocked.tpl.c:2
 msgid "Locking conflict detected"
-msgstr ""
+msgstr "잠금 충돌 감지"
 
 #: ihtml/themes/breezy/islocked.tpl.c:8
 msgid "\"%1\" has been locked by \"%2\" since %3"
@@ -4992,37 +5106,37 @@ msgstr ""
 
 #: ihtml/themes/breezy/islocked.tpl.c:14
 msgid "Read only"
-msgstr ""
+msgstr "읽기 전용"
 
 #: ihtml/themes/breezy/restore-confirm.tpl.c:2
 msgid "Warning: you are about to restore the following snapshot"
-msgstr ""
+msgstr "경고 : 다음 스냅샷을 복원하려고합니다"
 
 #: ihtml/themes/breezy/restore-confirm.tpl.c:5
 msgid "Any modification made to the object since this snapshot will be lost."
-msgstr ""
+msgstr "이 스냅샷 이후 개체에 대한 수정 내용은 손실됩니다."
 
 #: ihtml/themes/breezy/restore-confirm.tpl.c:11
 msgid ""
 "So - if you're sure - press 'Continue' to continue or 'Cancel' to abort."
-msgstr ""
+msgstr "따라서 확실하다면 '계속'을 눌러 계속하거나 '취소'를 눌러 중단하십시오."
 
 #: ihtml/themes/breezy/framework.tpl.c:2
 msgid "Main"
-msgstr ""
+msgstr "메인"
 
 #: ihtml/themes/breezy/framework.tpl.c:5
 msgid "Sign out"
-msgstr ""
+msgstr "로그아웃"
 
 #: ihtml/themes/breezy/framework.tpl.c:8
 msgid "Signed in:"
-msgstr ""
+msgstr "로그인:"
 
 #: ihtml/themes/breezy/framework.tpl.c:11
 #, c-format
 msgid "Session expires in %d!"
-msgstr ""
+msgstr "%d에서 세션이 만료됩니다!"
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:2
 msgid ""
@@ -5034,17 +5148,17 @@ msgstr ""
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:5
 msgid "Please choose the way to react for this session"
-msgstr ""
+msgstr "이 세션에 대응할 방법을 선택하십시오"
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:8
 msgid "ignore this error and show all entries the LDAP server returns"
-msgstr ""
+msgstr "이 오류를 무시하고 LDAP 서버가 리턴하는 모든 항목을 표시하십시오."
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:11
 msgid ""
 "ignore this error and show all entries that fit into the defined sizelimit "
 "and let me use filters instead"
-msgstr ""
+msgstr "이 오류를 무시하고 정의 된 크기 제한에 맞는 모든 항목을 표시하고 대신 필터를 사용하겠습니다"
 
 #: ihtml/themes/breezy/sizelimit.tpl.c:14
 msgid "Set"
diff --git a/locale/lv/fusiondirectory.po b/locale/lv/fusiondirectory.po
index 07eb6deee..c0c28243c 100644
--- a/locale/lv/fusiondirectory.po
+++ b/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Kļūda"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP kļūda"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Veids"
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Brīdinājums"
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Vārds "
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Izveidot"
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Lietotāji"
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4728,11 +4826,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/nb/fusiondirectory.po b/locale/nb/fusiondirectory.po
index 51a863e7f..61556733a 100644
--- a/locale/nb/fusiondirectory.po
+++ b/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Feil"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP-feil"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Navn"
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Opprett"
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Feil"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4720,11 +4818,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/nl/fusiondirectory.po b/locale/nl/fusiondirectory.po
index c3754c6f7..14c12caf6 100644
--- a/locale/nl/fusiondirectory.po
+++ b/locale/nl/fusiondirectory.po
@@ -5,17 +5,17 @@
 # 
 # Translators:
 # Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2018
-# fusiondirectory <contact@fusiondirectory.org>, 2018
 # Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Lucien Antonissen <lucien.antonissen@digipolis.be>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -43,7 +43,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fout"
 
@@ -91,8 +91,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAPfout"
 
@@ -180,6 +180,7 @@ msgid "Trace"
 msgstr "Trace"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Type"
 
@@ -502,11 +503,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "LDAP server weergegeven: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Waarschuwing"
@@ -976,8 +977,8 @@ msgstr "%s PHP extensie ontbreekt!"
 msgid "Cancel"
 msgstr "Annuleren"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1088,9 +1089,10 @@ msgid "Remove %s settings"
 msgstr "Verwijder %s opties"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
-"Klik de 'Bewerk' knop onderaan om informatie te veranderen in deze dialoog"
 
 #: include/class_msgPool.inc:646
 msgid "January"
@@ -1332,6 +1334,7 @@ msgstr "Gelieve de items te selecteren"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Naam"
@@ -1366,8 +1369,8 @@ msgid "Restart service"
 msgstr "Herstart service"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Basis"
 
@@ -1379,31 +1382,31 @@ msgstr "Objectbasis"
 msgid "Base field value should always be a string"
 msgstr "La valeur de la base doit toujours être une chaîne"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr "Fout, niet correcte datum: %s"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Uren"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minuten"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Seconden"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Datum"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr "Tijd"
 
@@ -1776,7 +1779,7 @@ msgstr "Geen label"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Aanmaken"
 
@@ -2535,7 +2538,7 @@ msgstr "Verwijder gebruiker"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Gebruikers"
 
@@ -3596,6 +3599,102 @@ msgstr ""
 "Statistieken voor type \"%s\" kunnen niet verwerkt worden vanwege de "
 "volgende fout: %s"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Id"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Subscription type"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Startdatum"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Einddatum"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importeren"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Bewerk gebruikers groepen en rollen"
@@ -3916,44 +4015,44 @@ msgstr "Welkom bij de FusionDirectory opzetbegeleider"
 msgid "The welcome message"
 msgstr "Het welkomstbericht"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr "LDAP connectie"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Naam van de plaats"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr "Naam van deze verbinding om te tonen in de LDAP server lijst"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "Connectie URI"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr "URI om de LDAP server te contacteren. Meestal startend met ldap://"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "TLS verbinding"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr "Moet TLS gebruikt worden om te verbinden met deze LDAP server?"
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr "De LDAP directory basis"
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Authenticatie"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
@@ -3961,40 +4060,40 @@ msgstr ""
 "DN van het admin account te gebruiken voor binding naar de LDAP. Basis is "
 "automatisch toegevoegd."
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "Beheerders DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Beheerderspaswoord"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr "Paswoord voor het adminaccount te gebruiken voor binding naar de LDAP"
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Huidige status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 "Resultaat van laatste poging van LDAP binding en basisschema's controles."
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "LDAP setup"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "LDAP verbindingsopzet"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -4002,39 +4101,39 @@ msgstr ""
 "Deze dialoog zorgt voor de basis configuratie van de LDAP connectiviteit "
 "voor FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Anonieme bind naar server '%s' is mislukt! "
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Bind als gebruiker '%s' is mislukt!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Opnieuw proberen"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Anonieme bind naar server '%s' is succesvol."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Vernieuwen"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Specifieer a.u.b. een gebruikersnaam en paswoord!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Bind als gebruiker '%s' naar server '%s' is succesvol!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
@@ -4043,15 +4142,13 @@ msgstr ""
 "%s\n"
 "Schema \"%s\": %s"
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "PHP module en extensie verificaties"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
-msgstr "PHP setup configuratie (1show information1)"
+msgid "PHP setup configuration"
+msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
 msgid "Installation check"
@@ -4289,23 +4386,23 @@ msgstr ""
 "Zoek naar 'zend.ze1_compatibility_mode' in je php.ini en plaats het naar "
 "'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migratie"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "LDAP inspectie"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Analyseer je huidige LDAP voor FusionDirectory compatibiliteit"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Geef alle rechten aan gebruikers in de gegeven familie"
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
@@ -4313,83 +4410,83 @@ msgstr ""
 "Toestaan dat gebruikers hun eigen informatie bewerken (enkel hoofdtab en "
 "posix gebruik alleen op basis)"
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 "Toestaan dat gebruikers hun eigen paswoord bewerken (gebruik enkel op basis)"
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Inspectie van de object classes in root object"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Controle op LDAPdatabankrechten"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Controle op niet-zichtbare gebruikers"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Controle op super-administrator"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr "Controle op standaard ACL rollen en groepen"
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Controle op gebruikers buiten de personenstructuur"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Controle op groepen buiten de groepsstructuur"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Controle op niet-zichtbare afdelingen"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Controle op dubbele UID nummers"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr "Controle op dubbele GID nummers"
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "LDAP query mislukt"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr "Mogelijk ontbreekt het \"root object\"."
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Mislukt"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Ontbrekende FusionDirectory object class '%s'!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Kijk je installatie na a.u.b.."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4398,21 +4495,21 @@ msgstr ""
 "Kan het structurele object type van je root object niet gebruiken. Probeer "
 "de object class '%s' manueel toe te voegen."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 "De vermelde gebruiker \"%s\" heeft geen volledige toegang tot je LDAP "
 "database."
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 "De vermelde gebruiker \"%s\" heeft geen volledige toegang tot je ldap "
 "database."
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4421,102 +4518,102 @@ msgstr ""
 "%s gebruiker(s) gevonden die niet zichtbaar zijn in FusionDirectory of die "
 "incompleet zijn."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr "Gebruikersmigratie"
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Migratiefout"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr "Kan ingave \"%s\" niet migreren:"
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Groepen"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Rollen"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Er is geen FusionDirectory administrator account in je LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr "Geeft alle rechten op alle objecten"
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "Standaard ACL rollen zijn niet ingevoegd"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Sommige standaard ACL rollen mankeren"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "Standaard ACL rollen zijn toegevoegd"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr "Kan de ACL rol \"%s\" niet toevoegen:"
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr "Gebruiker(s) %s gevonden buiten de configuratieboom \"%s\"."
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Verplaats gebruikers in deze geconfigureerde user tree"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr "Kan ingaves niet naar de aangevraagde afdeling verplaatsen"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr "Ingave zal verplaatst worden van"
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "naar"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "De volgende referenties zullen upgedate worden"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Vond %s groepen buiten de geconfigureerde tree '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr "Verplaats groep naar geconfigureerde groepsboom"
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Vond %s departement(en) die niet zichtbaar zullen zijn in FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr "Afdelingmigratie"
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr "Dubbele waardes %s gevonden voor attribuut \"uidNumber\":%s"
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr "Dubbele waardes %s gevonden voor attribuut \"gidNumber\":%s"
@@ -4981,11 +5078,15 @@ msgstr "Na migratie"
 msgid "Close"
 msgstr "Sluiten"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory zal NIET werken zonder dit op te lossen. "
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory zal werken zonder dit op te lossen."
 
diff --git a/locale/pl/fusiondirectory.po b/locale/pl/fusiondirectory.po
index 3bd4d76ac..b15d5546d 100644
--- a/locale/pl/fusiondirectory.po
+++ b/locale/pl/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Błąd"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "błąd LDAP"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr "Åšledzenie"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Typ"
 
@@ -476,11 +477,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Ostrzeżenie"
@@ -935,8 +936,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Anuluj"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1037,7 +1038,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1272,6 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "ImiÄ™"
@@ -1306,8 +1310,8 @@ msgid "Restart service"
 msgstr "Restartuj usługę"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Kontener"
 
@@ -1319,31 +1323,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Data"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1708,7 +1712,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Utwórz"
 
@@ -2454,7 +2458,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Użytkownicy"
 
@@ -3440,6 +3444,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Import"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3754,134 +3854,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr "Wiadomość powitalna"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nazwa lokalizacji"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN Administratora"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Hasło Administratora"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Obecny status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Ustawienia LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Ponawia"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Odśwież"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4076,222 +4174,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Niepowodzenie"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Błąd migracji"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupy"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Przenieś użytkowników do skonfigurowanego drzewa"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "do"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4740,11 +4838,15 @@ msgstr ""
 msgid "Close"
 msgstr "Zamknij"
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/pt/fusiondirectory.po b/locale/pt/fusiondirectory.po
index bfb61eb7c..c95e724f1 100644
--- a/locale/pt/fusiondirectory.po
+++ b/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erro"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -476,11 +477,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Atenção"
@@ -935,8 +936,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1037,7 +1038,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1272,6 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1306,8 +1310,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1319,31 +1323,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1708,7 +1712,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Criar"
 
@@ -2455,7 +2459,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Usuários"
 
@@ -3441,6 +3445,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3755,134 +3855,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Estatus"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Recarregar"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4077,222 +4175,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Erro"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupos"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4725,11 +4823,15 @@ msgstr ""
 msgid "Close"
 msgstr "Fechar"
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/pt_BR/fusiondirectory.po b/locale/pt_BR/fusiondirectory.po
index e23be3522..268b383b2 100644
--- a/locale/pt_BR/fusiondirectory.po
+++ b/locale/pt_BR/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erro"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Erro de LDAP"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Tipo"
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -937,8 +938,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1039,7 +1040,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1274,6 +1277,7 @@ msgstr "Por favor, selecione as entradas desejadas"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1308,8 +1312,8 @@ msgid "Restart service"
 msgstr "Reiniciar serviço"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Base"
 
@@ -1321,31 +1325,31 @@ msgstr "Base de objeto"
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr "Horas"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Minutos"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Data"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1710,7 +1714,7 @@ msgstr "SEM RÓTULO"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Criar"
 
@@ -2456,7 +2460,7 @@ msgstr "Remover usuário"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Usuários"
 
@@ -3456,6 +3460,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr "Tipo de inscrição"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Importar"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3770,82 +3870,82 @@ msgstr "Bem vindo ao assistente de configuração do FusionDirectory"
 msgid "The welcome message"
 msgstr "A mensagem de \"bem vindo\""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Nome do local"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI da conexão"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "conexão TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autenticação"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN do administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Senha do administrador"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Estado"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Status atual"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Configuração de LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Configuração da conexão de LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3853,53 +3953,51 @@ msgstr ""
 "Este diálogo executa a configuração básica da conectividade LDAP para o "
 "FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Ligação anônima para o servidor '%s' falhou!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Ligação como usuário '%s' falhou!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Tente novamente"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Ligação anônima para o servidor '%s' bem sucedida."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Atualizar"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Por favor, especifique usuário e senha!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Ligação como usuário '%s' para o servidor '%s' bem sucedida!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Módulo de PHP e checagem de extensões"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4119,224 +4217,224 @@ msgstr ""
 "Pesquisar por 'zend.ze1_compatibility_mode' no seu php.ini e defina-o como "
 "'Desligado'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Inspeção LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 "Analisar seu LDAP atual para verificação de compatibilidade com o "
 "FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Inspecionando classes de objeto em objeto root"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Checando permissão para banco de dados LDAP"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Checando por usuários invisíveis"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Checando por super administrador"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Checando por usuários fora da árvore de pessoas"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Checando por grupos fora da árvore de grupos"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Checando por departamentos invisíveis"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Checando por números de UID duplicados"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "Consulta em LDAP falhou"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Falhou"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupos"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Atribuições"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Não existe uma conta de administrador do FusioDirectory no seu LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Encontrado %s grupos fora da árvore configurada '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4779,11 +4877,15 @@ msgstr ""
 msgid "Close"
 msgstr "Fechar"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "O FusionDirectory NÃO irá rodar sem a correção disto."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "O FusionDirectory irá rodar sem a correção disto."
 
diff --git a/locale/ru/fusiondirectory.po b/locale/ru/fusiondirectory.po
index 09db00a5c..1744da7f9 100644
--- a/locale/ru/fusiondirectory.po
+++ b/locale/ru/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Ошибка"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Ошибка LDAP"
 
@@ -174,6 +174,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Тип"
 
@@ -485,11 +486,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "LDAP сервер вернул: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Предупреждение"
@@ -951,8 +952,8 @@ msgstr "Пропущено %s PHP расширение!"
 msgid "Cancel"
 msgstr "Отмена"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1061,7 +1062,9 @@ msgid "Remove %s settings"
 msgstr "Удалить параметры %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1300,6 +1303,7 @@ msgstr "Пожалуйста выберете нужные записи"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Название"
@@ -1334,8 +1338,8 @@ msgid "Restart service"
 msgstr "Перезапустить службу"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Ветка"
 
@@ -1347,31 +1351,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr "Минуты"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr "Секунды"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "Дата"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1736,7 +1740,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Создать"
 
@@ -2486,7 +2490,7 @@ msgstr "Удалить пользователя"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Пользователи"
 
@@ -3509,6 +3513,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr "Ид"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr "Дата начала"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr "Дата окончания"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "Импортировать"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3823,82 +3923,82 @@ msgstr "Добро пожаловать в мастер настройки Fusio
 msgid "The welcome message"
 msgstr "Сообщение приветствия"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Местоположение"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "URI подключения"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "TLS соединение"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Аутентификация"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "DN администратора"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Пароль администратора"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Состояние"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Текущее состояние"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Настройки LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Настройки LDAP соединения"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3906,53 +4006,51 @@ msgstr ""
 "Этот диалог выполняет основную настройку LDAP соединения для "
 "FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Сбой при анонимном привязывании к серверу '%s'!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Сбой при привязки под пользователем '%s'!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "Retry"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Анонимное подключение (bind) а к серверу '%s' удалась."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Refresh"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Пожалуйста укажите пользователя и пароль!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Привязка под пользователем '%s' к серверу '%s' удалась!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4170,121 +4268,121 @@ msgid ""
 msgstr ""
 "Найдите 'zend.ze1_compatibility_mode' в вашем php.ini и установите в 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Перемещение"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Инспекция LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr "Анализ вашего текущего LDAP для совместимости с FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr "Дать полные права на пользователей в выбранной ветке"
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Проверка прав для LDAP базы"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Проверка на невидимых пользователей"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Проверка для супер администратора"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Проверка на пользователей за пределами дерева людей"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Проверка на группы за пределами дерева для них"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Проверка на невидимые подразделения"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "LDAP запрос не удался"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Ошибка"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Пропущен объектный класс FusionDirectory '%s'!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Пожалуйста проверьте вашу установку."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4293,102 +4391,102 @@ msgstr ""
 "Найден пользователь(и) %s, которые будут не видны в FusionDirectory или "
 "которые не полные."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Ошибка перемещения"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Группы"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr "Роли"
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Нет учетной записи администратора FusionDirectory в вашем LDAP."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr "ACL ролей по умолчанию не вставлены"
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr "Некоторые ACL ролей по умолчанию пропущены"
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr "ACL ролей по умолчанию вставлен"
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Переместить пользователей в настроенное дерево пользователей"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Следующие ссылки будут обновлены"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Найдены группы %s, выходящие за пределы настроенного дерева '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Найдены подразделение(я) %s, которые будет не видны в FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4858,12 +4956,16 @@ msgstr "После миграции"
 msgid "Close"
 msgstr "Закрыть"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr ""
 "FusionDirectory НЕ сможет продолжить работу без исправления этой ошибки."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory сможет продолжить работу без исправления этой ошибки."
 
diff --git a/locale/ru@petr1708/fusiondirectory.po b/locale/ru@petr1708/fusiondirectory.po
index 497dd1c3d..2db8dcfe9 100644
--- a/locale/ru@petr1708/fusiondirectory.po
+++ b/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4732,11 +4830,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/sv/fusiondirectory.po b/locale/sv/fusiondirectory.po
index 02160ac6d..f382863b9 100644
--- a/locale/sv/fusiondirectory.po
+++ b/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fel"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP-fel"
 
@@ -173,6 +173,7 @@ msgid "Trace"
 msgstr "Spårning"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Typ"
 
@@ -483,11 +484,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "LDAP-server returnerade %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varning"
@@ -949,8 +950,8 @@ msgstr "Saknar PHP-tillägget %s !"
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1059,7 +1060,9 @@ msgid "Remove %s settings"
 msgstr "Ta bort %s-inställningar"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1300,6 +1303,7 @@ msgstr "Välj önskade poster"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Namn"
@@ -1334,8 +1338,8 @@ msgid "Restart service"
 msgstr "Starta om tjänsten"
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Bas"
 
@@ -1347,31 +1351,31 @@ msgstr "Objekt-bas"
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1736,7 +1740,7 @@ msgstr "INGEN ETIKETT"
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Skapa"
 
@@ -2482,7 +2486,7 @@ msgstr "Ta bort användare"
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Användare"
 
@@ -3501,6 +3505,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3815,82 +3915,82 @@ msgstr "Välkommen till FusionDirectory setup wizard"
 msgid "The welcome message"
 msgstr "Välkomstmeddelandet"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Location name"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr "Koppling-URI"
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "TLS-koppling"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Autentisering"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "Admin DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Adminlösenord"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Nuvarande status"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "LDAP-inställningar"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "LDAP-koppling"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
@@ -3898,53 +3998,51 @@ msgstr ""
 "Den här dialogrutan utför den grundläggande konfigurationen för LDAP-"
 "kopplingen till FusionDirectory."
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Anonym koppling till server '%s' misslyckades!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Koppling som användare '%s' misslyckades!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Anonym koppling till servern '%s' lyckades."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "Uppdatera"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Skriv in användare och lösenord!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Koppling som användare '%s' till servern '%s' lyckades!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "PHP modul- och tilläggskontroll"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4173,105 +4271,105 @@ msgid ""
 msgstr ""
 "Sök efter 'zend.ze1_compatibility_mode' i php.ini och sätt den till 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrera"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "LDAP-inspektion"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 "Analysera nuvarande LDAP-katalog för kompatibilitet med FusionDirectory"
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr "Inspekterar objektklasser i root-objektet"
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr "Kontrollerar rättigheter för LDAP-databas"
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Söker efter osynliga användare"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Söker efter superadministratör"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Söker efter användare utanför person-trädet"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Söker efter grupper utanför gruppträdet"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Söker efter osynliga avdelningar"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Söker efter dubbletter av UID-nummer"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "LDAP-fråga misslyckades"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Misslyckades"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr "Saknar objektklassen '%s' för FusionDirectory!"
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr "Vänligen kontrollera din installation."
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
@@ -4280,17 +4378,17 @@ msgstr ""
 "Kan inte hantera den strukturella objekttypen hos ditt root-objekt. Vänligen"
 " lägg till objektklassen '%s' manuellt."
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
@@ -4299,102 +4397,102 @@ msgstr ""
 "Hittade %s användare som inte kommer att vara synlig(a) i FusionDirectory "
 "eller som är ofullständig(a)."
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Migreringsfel"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Grupper"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr "Det finns inget FusionDirectory-adminkonto i din LDAP-katalog."
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Flytta användare in i det konfigurerade användarträdet"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "till"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Följande referenser kommer att uppdateras"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Hittade %s grupper utanför det konfigurerade trädet '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 "Hittade %s avdelning(ar) som inte kommer att vara synliga i FusionDirectory."
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4844,11 +4942,15 @@ msgstr "Efter migrering"
 msgid "Close"
 msgstr "Stäng"
 
-#: setup/setup_checks.tpl.c:11
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
+msgstr ""
+
+#: setup/setup_checks.tpl.c:14
 msgid "FusionDirectory will NOT run without fixing this."
 msgstr "FusionDirectory kommer INTE att kunna köras utan att åtgärda detta."
 
-#: setup/setup_checks.tpl.c:14
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr "FusionDirectory kommer att kunna köras utan att åtgärda detta."
 
diff --git a/locale/tr_TR/fusiondirectory.po b/locale/tr_TR/fusiondirectory.po
index 2999ec88c..756b35178 100644
--- a/locale/tr_TR/fusiondirectory.po
+++ b/locale/tr_TR/fusiondirectory.po
@@ -3,13 +3,17 @@
 # This file is distributed under the same license as the FusionDirectory package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
+# Translators:
+# abc Def <hdogan1974@gmail.com>, 2020
+# 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -37,9 +41,9 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: include/class_msg_dialog.inc:177
 msgid "Please fix the above error and reload the page."
@@ -83,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +172,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -375,7 +380,7 @@ msgstr ""
 
 #: include/class_baseSelector.inc:275
 msgid "Submit"
-msgstr ""
+msgstr "Gönder"
 
 #: include/class_filter.inc:331 include/functions.inc:1545
 msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
@@ -470,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4716,11 +4818,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
@@ -4903,7 +5009,7 @@ msgstr ""
 #: ihtml/themes/legacy/recovery.tpl.c:59 ihtml/themes/legacy/recovery.tpl.c:62
 #: ihtml/themes/breezy/recovery.tpl.c:59 ihtml/themes/breezy/recovery.tpl.c:62
 msgid "Success"
-msgstr ""
+msgstr "Başarı"
 
 #: ihtml/themes/legacy/recovery.tpl.c:65 ihtml/themes/breezy/recovery.tpl.c:65
 msgid "Your password has been changed successfully."
diff --git a/locale/ug/fusiondirectory.po b/locale/ug/fusiondirectory.po
index 04ca1426f..75ecc0a27 100644
--- a/locale/ug/fusiondirectory.po
+++ b/locale/ug/fusiondirectory.po
@@ -8,14 +8,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Language-Team: Uighur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4586,6 +4684,7 @@ msgstr ""
 msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4600,6 +4699,7 @@ msgstr ""
 msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4613,6 +4713,7 @@ msgstr ""
 msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4622,6 +4723,7 @@ msgstr ""
 msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4632,16 +4734,19 @@ msgstr ""
 msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4655,6 +4760,7 @@ msgstr ""
 msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
+msgstr[1] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
@@ -4708,11 +4814,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/vi_VN/fusiondirectory.po b/locale/vi_VN/fusiondirectory.po
index 2dac7aeda..662d118d9 100644
--- a/locale/vi_VN/fusiondirectory.po
+++ b/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Lá»—i"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "Lá»—i LDAP"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr "Dò theo"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "Loại"
 
@@ -483,11 +484,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr "LDAP server trả về: %s"
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Cảnh báo"
@@ -946,8 +947,8 @@ msgstr "PHP mở rộng %s mất tích!"
 msgid "Cancel"
 msgstr "Hủy bỏ"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "Ok"
 
@@ -1056,7 +1057,9 @@ msgid "Remove %s settings"
 msgstr "Xóa thiết lập %s"
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1291,6 +1294,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Tên"
@@ -1325,8 +1329,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "Cơ sở"
 
@@ -1338,31 +1342,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1727,7 +1731,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "Tạo "
 
@@ -2474,7 +2478,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "Người dùng"
 
@@ -3460,6 +3464,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3774,134 +3874,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr "Tin nhắn chào mừng"
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "Tên vị trí"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr "Kết nối TLS"
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr "Thẩm định quyền"
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "Admin DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "Mật khẩu Admin"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "Trạng thái"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr "Tình trạng hiện tại"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr "Cài đặt LDAP"
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr "Thiết lập kết nối LDAP"
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr "Kết nối nặc danh với server '%s' thất bại!"
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr "Kết nối với vai trò người dùng '%s' thất bại!"
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr "Kết nối nặc danh đến server '%s' thành công."
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr "Xin hãy xác định người dùng và mật khẩu!"
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr "Kết nối với tư cách người dùng '%s' đến server '%s' thành công!"
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr "Kiểm tra các module và mở rộng của PHP"
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4123,222 +4221,222 @@ msgstr ""
 "Tìm kiếm 'zend.ze1_compatibility_mode' trong thư mục  php.ini và chuyển nó "
 "thành 'Off'."
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Di trú"
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr "Thanh tra LDAP"
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr "Kiểm tra những người dùng ẩn"
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr "Kiểm tra siêu admin"
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr "Kiểm tra người dùng bên ngoài cây con người"
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr "Kiểm tra nhóm bên ngoài cây nhóm"
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr "Kiểm tra các bộ phận ẩn"
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr "Kiểm tra các số ID cuả người dùng (UID) được nhân bản"
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr "Yêu cầu LDAP thất bại"
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "Thất bại"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr "Lỗi di trú"
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "Các nhóm"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr "Chuyển người dùng sang cây người dùng được cấu hình"
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr "đến"
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr "Tham chiếu sau sẽ được cập nhật"
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr "Đã tìm thấy %s nhóm bên ngoài cây được cấu hình '%s'."
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4768,11 +4866,15 @@ msgstr "Sau khi di trú"
 msgid "Close"
 msgstr "Đóng"
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/zh/fusiondirectory.po b/locale/zh/fusiondirectory.po
index a3264dc5e..6ce8a7142 100644
--- a/locale/zh/fusiondirectory.po
+++ b/locale/zh/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# fusiondirectory <contact@fusiondirectory.org>, 2018
+# fusiondirectory <contact@fusiondirectory.org>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
+"Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -41,7 +41,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "错误"
 
@@ -87,8 +87,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr "LDAP 错误"
 
@@ -172,6 +172,7 @@ msgid "Trace"
 msgstr "跟踪"
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr "类型"
 
@@ -474,11 +475,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "警告"
@@ -933,8 +934,8 @@ msgstr ""
 msgid "Cancel"
 msgstr "取消"
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr "好"
 
@@ -1035,7 +1036,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1270,6 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "名称"
@@ -1304,8 +1308,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr "位置"
 
@@ -1317,31 +1321,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr "日期"
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1706,7 +1710,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr "创建"
 
@@ -2452,7 +2456,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr "用户"
 
@@ -3438,6 +3442,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr "导入"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3752,134 +3852,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr "位置名称"
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr "管理员 DN"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr "管理员口令"
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr "状态"
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr "重试"
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr "刷新"
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4074,222 +4172,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr "失败"
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr "用户组"
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4712,11 +4810,15 @@ msgstr ""
 msgid "Close"
 msgstr "关闭"
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
diff --git a/locale/zh_TW/fusiondirectory.po b/locale/zh_TW/fusiondirectory.po
index 6c2f636cc..0e84ad9b2 100644
--- a/locale/zh_TW/fusiondirectory.po
+++ b/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2019-10-07 20:22+0000\n"
+"POT-Creation-Date: 2021-03-18 15:28+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
 #: include/simpleplugin/class_multiPlugin.inc:78
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
 #: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
-#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:2
+#: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
 
@@ -83,8 +83,8 @@ msgstr ""
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:185
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:63
 #: plugins/addons/dashboard/class_dashBoard.inc:78
-#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:452
-#: setup/class_setupStepMigrate.inc:1068 html/index.php:379
+#: setup/class_setupStepConfig.inc:108 setup/class_setupStepMigrate.inc:459
+#: setup/class_setupStepMigrate.inc:1075 html/index.php:379
 msgid "LDAP error"
 msgstr ""
 
@@ -168,6 +168,7 @@ msgid "Trace"
 msgstr ""
 
 #: include/php_setup.inc:132
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
 msgid "Type"
 msgstr ""
 
@@ -470,11 +471,11 @@ msgstr ""
 msgid "LDAP server returned: %s"
 msgstr ""
 
-#: include/functions.inc:783 setup/class_setupStepLdap.inc:212
-#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:1021
-#: setup/class_setupStepMigrate.inc:1140 setup/class_setupStepMigrate.inc:1251
-#: setup/class_setupStepMigrate.inc:1326 setup/class_setupStepMigrate.inc:1370
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:8
+#: include/functions.inc:783 setup/class_setupStepLdap.inc:216
+#: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
+#: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
+#: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
+#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -929,8 +930,8 @@ msgstr ""
 msgid "Cancel"
 msgstr ""
 
-#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:133
-#: setup/setup_checks.tpl.c:2 ihtml/themes/breezy/msg_dialog.tpl.c:14
+#: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
+#: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
 msgid "Ok"
 msgstr ""
 
@@ -1031,7 +1032,9 @@ msgid "Remove %s settings"
 msgstr ""
 
 #: include/class_msgPool.inc:638
-msgid "Click the 'Edit' button below to change information in this dialog"
+msgid ""
+"Click the \"Edit\" button on the bottom right corner of the page to edit the"
+" fields"
 msgstr ""
 
 #: include/class_msgPool.inc:646
@@ -1266,6 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1300,8 +1304,8 @@ msgid "Restart service"
 msgstr ""
 
 #: include/simpleplugin/attributes/class_BaseSelectorAttribute.inc:39
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127 ihtml/themes/breezy/simple-list.tpl.c:2
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130 ihtml/themes/breezy/simple-list.tpl.c:2
 msgid "Base"
 msgstr ""
 
@@ -1313,31 +1317,31 @@ msgstr ""
 msgid "Base field value should always be a string"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:131
+#: include/simpleplugin/attributes/class_DateAttribute.inc:132
 #, php-format
 msgid "Error, incorrect date: %s"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:199
-#: include/simpleplugin/attributes/class_DateAttribute.inc:273
+#: include/simpleplugin/attributes/class_DateAttribute.inc:200
+#: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:204
-#: include/simpleplugin/attributes/class_DateAttribute.inc:278
+#: include/simpleplugin/attributes/class_DateAttribute.inc:205
+#: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:209
+#: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:297
+#: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
 msgid "Date"
 msgstr ""
 
-#: include/simpleplugin/attributes/class_DateAttribute.inc:303
+#: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
 msgstr ""
 
@@ -1702,7 +1706,7 @@ msgstr ""
 #: include/simpleplugin/simple-list.xml:59
 #: plugins/admin/departments/dep-list.xml:48
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
-#: setup/class_setupStepMigrate.inc:822
+#: setup/class_setupStepMigrate.inc:829
 msgid "Create"
 msgstr ""
 
@@ -2448,7 +2452,7 @@ msgstr ""
 
 #: plugins/admin/users/class_userManagement.inc:42
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:27
-#: setup/class_setupStepMigrate.inc:809
+#: setup/class_setupStepMigrate.inc:816
 msgid "Users"
 msgstr ""
 
@@ -3434,6 +3438,102 @@ msgid ""
 "error: %s"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+msgid "Subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:37
+#: plugins/addons/subscription/class_subscriptionInfo.inc:43
+#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+msgid "Subscription information"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+msgid "Information about your FusionDirectory subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+msgid "Information text for subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+msgid "Subscription name"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+msgid "Subscription id"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+msgid "Subscription type"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+msgid "Contract reference"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+msgid "Start date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+msgid "End date of this subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+msgid "Import your subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+msgid "Information text for expired subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+msgid "Import subscription"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+msgid "Import"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#, php-format
+msgid ""
+"You do not have a valid subscription for this instance of FusionDirectory.\n"
+"Please visit %s for a list of available options."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#, php-format
+msgid ""
+"Your subscription is expired for this instance of FusionDirectory.\n"
+"Please visit %s to renew it."
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+msgid "No data. Did you forgot to upload a file?"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+msgid "Failed to parse imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3748,134 +3848,132 @@ msgstr ""
 msgid "The welcome message"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:33
+#: setup/class_setupStepLdap.inc:36
 msgid "LDAP connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Location name"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:36
+#: setup/class_setupStepLdap.inc:39
 msgid "Name of this connexion to show in the LDAP server list"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "Connection URI"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:41
+#: setup/class_setupStepLdap.inc:44
 msgid "URI to contact the LDAP server. Usually starts with ldap://"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "TLS connection"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:46
+#: setup/class_setupStepLdap.inc:49
 msgid "Should TLS be used to connect to this LDAP server?"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:50 setup/class_setupStepLdap.inc:119
-#: setup/class_setupStepLdap.inc:127
+#: setup/class_setupStepLdap.inc:53 setup/class_setupStepLdap.inc:122
+#: setup/class_setupStepLdap.inc:130
 msgid "The LDAP directory base"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:56
+#: setup/class_setupStepLdap.inc:59
 msgid "Authentication"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:59
+#: setup/class_setupStepLdap.inc:62
 msgid ""
 "DN of the admin account to use for binding to the LDAP. Base is "
 "automatically appended."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:74
+#: setup/class_setupStepLdap.inc:77
 msgid "Admin DN"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:77
+#: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:83
+#: setup/class_setupStepLdap.inc:86
 msgid "Status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Current status"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:86
+#: setup/class_setupStepLdap.inc:89
 msgid "Result of last attempt at checking LDAP binding and basic schemas"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:107
+#: setup/class_setupStepLdap.inc:110
 msgid "LDAP setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:108
+#: setup/class_setupStepLdap.inc:111
 msgid "LDAP connection setup"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:109
+#: setup/class_setupStepLdap.inc:112
 msgid ""
 "This dialog performs the basic configuration of the LDAP connectivity for "
 "FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:179
+#: setup/class_setupStepLdap.inc:183
 #, php-format
 msgid "Anonymous bind to server '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:181
+#: setup/class_setupStepLdap.inc:185
 #, php-format
 msgid "Bind as user '%s' failed!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:183
+#: setup/class_setupStepLdap.inc:187
 msgid "Retry"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:187
+#: setup/class_setupStepLdap.inc:191
 #, php-format
 msgid "Anonymous bind to server '%s' succeeded."
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:188 setup/class_setupStepLdap.inc:192
+#: setup/class_setupStepLdap.inc:192 setup/class_setupStepLdap.inc:196
 msgid "Refresh"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:189
+#: setup/class_setupStepLdap.inc:193
 msgid "Please specify user and password!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:191
+#: setup/class_setupStepLdap.inc:195
 #, php-format
 msgid "Bind as user '%s' to server '%s' succeeded!"
 msgstr ""
 
-#: setup/class_setupStepLdap.inc:210 setup/class_setupStepLdap.inc:212
+#: setup/class_setupStepLdap.inc:214 setup/class_setupStepLdap.inc:216
 #, php-format
 msgid ""
 "%s\n"
 "Schema \"%s\": %s"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:206
+#: setup/class_setupStepChecks.inc:30 setup/class_setupStepMigrate.inc:211
 msgid "PHP module and extension checks"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:37
-msgid ""
-"PHP setup configuration (<a href=\"?info\" target=\"_blank\">show "
-"information</a>)"
+msgid "PHP setup configuration"
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:48 setup/class_setupStepChecks.inc:49
@@ -4070,222 +4168,222 @@ msgid ""
 "'Off'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:157 setup/setup_migrate_baseOC.tpl.c:11
+#: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:223 setup/class_setupStepMigrate.inc:224
+#: setup/class_setupStepMigrate.inc:228 setup/class_setupStepMigrate.inc:229
 msgid "LDAP inspection"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:225
+#: setup/class_setupStepMigrate.inc:230
 msgid "Analyze your current LDAP for FusionDirectory compatibility"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:233
+#: setup/class_setupStepMigrate.inc:238
 msgid "Give all rights on users in the given branch"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:239
+#: setup/class_setupStepMigrate.inc:244
 msgid ""
 "Allow users to edit their own information (main tab and posix use only on "
 "base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:245
+#: setup/class_setupStepMigrate.inc:250
 msgid "Allow users to edit their own password (use only on base)"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:258
+#: setup/class_setupStepMigrate.inc:263
 msgid "Inspecting object classes in root object"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:259
+#: setup/class_setupStepMigrate.inc:264
 msgid "Checking permission for LDAP database"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:260
+#: setup/class_setupStepMigrate.inc:265
 msgid "Checking for invisible users"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:261
+#: setup/class_setupStepMigrate.inc:266
 msgid "Checking for super administrator"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:262
+#: setup/class_setupStepMigrate.inc:267
 msgid "Checking for default ACL roles and groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:263
+#: setup/class_setupStepMigrate.inc:268
 msgid "Checking for users outside the people tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:264
+#: setup/class_setupStepMigrate.inc:269
 msgid "Checking for groups outside the groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:265
+#: setup/class_setupStepMigrate.inc:270
 msgid "Checking for invisible departments"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:266
+#: setup/class_setupStepMigrate.inc:271
 msgid "Checking for duplicated UID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:267
+#: setup/class_setupStepMigrate.inc:272
 msgid "Checking for duplicated GID numbers"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:329 setup/class_setupStepMigrate.inc:488
-#: setup/class_setupStepMigrate.inc:565 setup/class_setupStepMigrate.inc:713
-#: setup/class_setupStepMigrate.inc:918 setup/class_setupStepMigrate.inc:994
-#: setup/class_setupStepMigrate.inc:1117 setup/class_setupStepMigrate.inc:1210
-#: setup/class_setupStepMigrate.inc:1300 setup/class_setupStepMigrate.inc:1344
+#: setup/class_setupStepMigrate.inc:334 setup/class_setupStepMigrate.inc:495
+#: setup/class_setupStepMigrate.inc:572 setup/class_setupStepMigrate.inc:720
+#: setup/class_setupStepMigrate.inc:925 setup/class_setupStepMigrate.inc:1001
+#: setup/class_setupStepMigrate.inc:1124 setup/class_setupStepMigrate.inc:1217
+#: setup/class_setupStepMigrate.inc:1307 setup/class_setupStepMigrate.inc:1351
 msgid "LDAP query failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:330 setup/class_setupStepMigrate.inc:489
-#: setup/class_setupStepMigrate.inc:566 setup/class_setupStepMigrate.inc:714
-#: setup/class_setupStepMigrate.inc:919 setup/class_setupStepMigrate.inc:995
-#: setup/class_setupStepMigrate.inc:1118 setup/class_setupStepMigrate.inc:1211
-#: setup/class_setupStepMigrate.inc:1301 setup/class_setupStepMigrate.inc:1345
+#: setup/class_setupStepMigrate.inc:335 setup/class_setupStepMigrate.inc:496
+#: setup/class_setupStepMigrate.inc:573 setup/class_setupStepMigrate.inc:721
+#: setup/class_setupStepMigrate.inc:926 setup/class_setupStepMigrate.inc:1002
+#: setup/class_setupStepMigrate.inc:1125 setup/class_setupStepMigrate.inc:1218
+#: setup/class_setupStepMigrate.inc:1308 setup/class_setupStepMigrate.inc:1352
 msgid "Possibly the \"root object\" is missing."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:346 setup/class_setupStepMigrate.inc:369
-#: setup/class_setupStepMigrate.inc:420 setup/class_setupStepMigrate.inc:500
-#: setup/class_setupStepMigrate.inc:511 setup/class_setupStepMigrate.inc:820
+#: setup/class_setupStepMigrate.inc:351 setup/class_setupStepMigrate.inc:374
+#: setup/class_setupStepMigrate.inc:425 setup/class_setupStepMigrate.inc:507
+#: setup/class_setupStepMigrate.inc:518 setup/class_setupStepMigrate.inc:827
 msgid "Failed"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:347
+#: setup/class_setupStepMigrate.inc:352
 #, php-format
 msgid "Missing FusionDirectory object class '%s'!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:348
+#: setup/class_setupStepMigrate.inc:353
 msgid "Please check your installation."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:370
+#: setup/class_setupStepMigrate.inc:375
 #, php-format
 msgid ""
 "Cannot handle the structural object type of your root object. Please try to "
 "add the object class '%s' manually."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:501
+#: setup/class_setupStepMigrate.inc:508
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your LDAP database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:512
+#: setup/class_setupStepMigrate.inc:519
 #, php-format
 msgid "The specified user \"%s\" does not have full access to your ldap database."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:575
+#: setup/class_setupStepMigrate.inc:582
 #, php-format
 msgid ""
 "Found %s user(s) that will not be visible in FusionDirectory or which are "
 "incomplete."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:587 setup/class_setupStepMigrate.inc:598
+#: setup/class_setupStepMigrate.inc:594 setup/class_setupStepMigrate.inc:605
 msgid "User migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:685 setup/class_setupStepMigrate.inc:965
+#: setup/class_setupStepMigrate.inc:692 setup/class_setupStepMigrate.inc:972
 msgid "Migration error"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:687
+#: setup/class_setupStepMigrate.inc:694
 #, php-format
 msgid "Cannot migrate entry \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:812
+#: setup/class_setupStepMigrate.inc:819
 msgid "Groups"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:815
+#: setup/class_setupStepMigrate.inc:822
 msgid "Roles"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:821
+#: setup/class_setupStepMigrate.inc:828
 msgid "There is no FusionDirectory administrator account inside your LDAP."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:859
+#: setup/class_setupStepMigrate.inc:866
 msgid "Gives all rights on all objects"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:933
+#: setup/class_setupStepMigrate.inc:940
 msgid "Default ACL roles have not been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:935
+#: setup/class_setupStepMigrate.inc:942
 msgid "Some default ACL roles are missing"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:937
+#: setup/class_setupStepMigrate.inc:944
 msgid "Default ACL roles have been inserted"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:967
+#: setup/class_setupStepMigrate.inc:974
 #, php-format
 msgid "Cannot add ACL role \"%s\":"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1022
+#: setup/class_setupStepMigrate.inc:1029
 #, php-format
 msgid "Found %s user(s) outside the configured tree \"%s\"."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1036 setup/class_setupStepMigrate.inc:1050
+#: setup/class_setupStepMigrate.inc:1043 setup/class_setupStepMigrate.inc:1057
 msgid "Move users into configured user tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1068
+#: setup/class_setupStepMigrate.inc:1075
 msgid "Cannot move entries to the requested department!"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "Entry will be moved from"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1080
+#: setup/class_setupStepMigrate.inc:1087
 msgid "to"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1090
+#: setup/class_setupStepMigrate.inc:1097
 msgid "The following references will be updated"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1141
+#: setup/class_setupStepMigrate.inc:1148
 #, php-format
 msgid "Found %s groups outside the configured tree '%s'."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1155 setup/class_setupStepMigrate.inc:1169
+#: setup/class_setupStepMigrate.inc:1162 setup/class_setupStepMigrate.inc:1176
 msgid "Move groups into configured groups tree"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1252
+#: setup/class_setupStepMigrate.inc:1259
 #, php-format
 msgid "Found %s department(s) that will not be visible in FusionDirectory."
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1263 setup/class_setupStepMigrate.inc:1274
+#: setup/class_setupStepMigrate.inc:1270 setup/class_setupStepMigrate.inc:1281
 msgid "Department migration"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1327
+#: setup/class_setupStepMigrate.inc:1334
 #, php-format
 msgid "Found %s duplicate values for attribute \"uidNumber\":%s"
 msgstr ""
 
-#: setup/class_setupStepMigrate.inc:1371
+#: setup/class_setupStepMigrate.inc:1378
 #, php-format
 msgid "Found %s duplicate values for attribute \"gidNumber\":%s"
 msgstr ""
@@ -4708,11 +4806,15 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
-#: setup/setup_checks.tpl.c:11
-msgid "FusionDirectory will NOT run without fixing this."
+#: setup/setup_checks.tpl.c:2
+msgid "show information"
 msgstr ""
 
 #: setup/setup_checks.tpl.c:14
+msgid "FusionDirectory will NOT run without fixing this."
+msgstr ""
+
+#: setup/setup_checks.tpl.c:17
 msgid "FusionDirectory will run without fixing this."
 msgstr ""
 
-- 
GitLab


From 98baf66a7f588eccf0b123c1bfc04eb6f0149910 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 23 Mar 2021 11:09:52 +0100
Subject: [PATCH 068/117] :ambulance: fix(core) Import htmlescape from 1.4-dev

Needed by subscriptionInfo

issue #6152
---
 include/php_setup.inc | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/include/php_setup.inc b/include/php_setup.inc
index 29f4ef362..2bc9c961e 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -26,6 +26,22 @@
  */
 require_once ("variables.inc");
 
+/*!
+ * \brief Escape string for HTML output
+ */
+function htmlescape ($str)
+{
+  return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+}
+
+/*!
+ * \brief Unescape string for HTML output, reverse of htmlescape
+ */
+function htmlunescape ($html)
+{
+  return html_entity_decode($html, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+}
+
 function html_trace($errstr = "")
 {
   static $hideArgs = array(
-- 
GitLab


From c06d6c76a539e73a1a288b79b7cd9a8e8a313c93 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@opensides.be>
Date: Wed, 20 May 2020 09:52:06 +0000
Subject: [PATCH 069/117] Merge branch
 '6095-put-the-fusiondirectory-github-funding-yml-for-github' into '1.4-dev'

Resolve "put the fusiondirectory/.github/FUNDING.yml for github"

Closes #6095

See merge request fusiondirectory/fd!774

(cherry picked from commit 286ce8695f2214a2a1e84dce712ea6704f31d474)

28aad03f :sparkles: feat(github-funding) add github funding
---
 .github/FUNDING.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 .github/FUNDING.yml

diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..521c6e33e
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,4 @@
+# These are supported funding model platforms
+
+ko_fi: fusiondirectory
+liberapay: fusiondirectory
-- 
GitLab


From 284562e405ded8a94e844545b8619de9db2c11ac Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@opensides.be>
Date: Thu, 21 May 2020 16:11:56 +0000
Subject: [PATCH 070/117] Merge branch
 '6095-put-the-fusiondirectory-github-funding-yml-for-github' into '1.4-dev'

Resolve "put the fusiondirectory/.github/FUNDING.yml for github"

Closes #6095

See merge request fusiondirectory/fd!776

(cherry picked from commit e6339fb8f7117ac35fc4dc6cd0af388747dcd849)

f9ba8ceb :handshake: fix(funding) update funding for github
---
 .github/FUNDING.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 521c6e33e..717c1518a 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -2,3 +2,5 @@
 
 ko_fi: fusiondirectory
 liberapay: fusiondirectory
+open_collective: fusiondirectory
+community_bridge: fusiondirectory
-- 
GitLab


From afba18fab26ee029aac6c800c7dc3f08e33f5788 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 23 Mar 2021 14:19:25 +0100
Subject: [PATCH 071/117] :ambulance: fix(subscription) Fix plInfo to match 1.3
 behavior

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 1475694cd..ea5af4648 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -20,6 +20,8 @@
 
 class subscriptionInfo extends simplePlugin
 {
+  public $objectclasses = ['fdSubscriptionInformation'];
+
   /* ldap attribute => ini variable */
   public static $subscriptionAttributes = [
     'fdSubscriptionName'                => 'Name',
@@ -42,6 +44,7 @@ class subscriptionInfo extends simplePlugin
         'subscriptionInfo' => [
           'name'      => _('Subscription information'),
           'ou'        => get_ou('fusiondirectoryRDN'),
+          'filter'    => 'objectClass=fdSubscriptionInformation',
         ]
       ],
       'plSection'     => 'conf',
-- 
GitLab


From 5b61a714503c23a6dea633ccb7a46090c17ca76b Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 23 Mar 2021 16:29:04 +0000
Subject: [PATCH 072/117] Merge branch
 '6157-fix-reference-to-the-documentation-after-moving-around-fusiondirectory-documentationin-upgrade'
 into '1.4-dev'

Resolve "fix reference to the documentation after moving around fusiondirectory documentationin UPGRADE.md and README.md"

Closes #6157

See merge request fusiondirectory/fd!888

(cherry picked from commit 598c9c594242019413b721b22605fcf4a8b288c5)

fd99dc93 :ambulance: fix(docs) fix reference to the documentation after moving around...
---
 README.md  | 2 +-
 UPGRADE.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index e804b195c..e12625693 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ If you like us and want to send us a small contribution you can use the followin
 
 [FusionDirectory]: https://www.fusiondirectory.org/
 
-[fusiondirectory-install]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/install/index.html
+[fusiondirectory-install]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/fusiondirectory/install/index.html
 
 [get help]: https://www.fusiondirectory.org/en/communaute/
 
diff --git a/UPGRADE.md b/UPGRADE.md
index 227ca902d..e3d325dab 100644
--- a/UPGRADE.md
+++ b/UPGRADE.md
@@ -3265,7 +3265,7 @@ Fonctionality removed
 
 [php-cas]: http://packages.ubuntu.com/trusty/all/php-cas/download
 
-[repo-urls]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/install/index.html
+[repo-urls]: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/fusiondirectory/install/index.html
 
 ---
 * Further information
-- 
GitLab


From 44a8f1c0856781d2c24f6f9fba70beeb84fc3669 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Wed, 24 Mar 2021 09:35:18 +0100
Subject: [PATCH 073/117] :ambulance: fix(subscription) There is no update
 function in 1.3-fixes

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index ea5af4648..a4c6f7b11 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -137,10 +137,8 @@ class subscriptionInfo extends simplePlugin
     $this->attributesAccess['fdSubscriptionTextExpired']->setAllowHTML(TRUE);
   }
 
-  public function update ()
+  function execute ()
   {
-    parent::update();
-
     if ($this->uid !== '') {
       $this->attributesAccess['fdSubscriptionText']->setVisible(FALSE);
       $this->attributesAccess['fdSubscriptionName']->setVisible(TRUE);
@@ -165,7 +163,7 @@ class subscriptionInfo extends simplePlugin
       $this->attributesAccess['fdSubscriptionTextExpired']->setVisible(FALSE);
     }
 
-    return TRUE;
+    return parent::execute();
   }
 
   public function handle_import ()
-- 
GitLab


From f095427b7ac175ca69865abf7d9e8810157cf538 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Wed, 24 Mar 2021 11:10:10 +0100
Subject: [PATCH 074/117] :ambulance: fix(subscription) Fix error when
 importing twice without leaving the page

issue #6152
---
 plugins/addons/subscription/class_subscriptionInfo.inc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index a4c6f7b11..9b9ab4664 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -189,7 +189,13 @@ class subscriptionInfo extends simplePlugin
         $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
       }
       $errors = $this->parent->save();
-      msg_dialog::displayChecks($errors);
+      if (empty($errors)) {
+        /* The object will stay open so it needs to appear as loaded from LDAP */
+        $this->is_account             = TRUE;
+        $this->initially_was_account  = TRUE;
+      } else {
+        msg_dialog::displayChecks($errors);
+      }
     }
     /* Avoid double import */
     $this->import_file = '';
-- 
GitLab


From d15df1d284e3788038f7509fc192ca611b92ac54 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Thu, 1 Apr 2021 15:43:55 +0200
Subject: [PATCH 075/117] :ambulance: fix(subscription) Do not use non-existing
 class SimplePluginError

issue #6152
---
 .../subscription/class_subscriptionInfo.inc      | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 9b9ab4664..62b7be1cc 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -171,18 +171,18 @@ class subscriptionInfo extends simplePlugin
     $data = $this->import_file;
     if (empty($data)) {
       /* No file or empty file */
-      $error = new SimplePluginError(
-        $this->attributesAccess['import_file'],
-        htmlescape(_('No data. Did you forgot to upload a file?'))
+      msg_dialog::display(
+        _('Import error'),
+        htmlescape(_('No data. Did you forgot to upload a file?')),
+        ERROR_DIALOG
       );
-      $error->display();
     } elseif (($data = parse_ini_string($data)) === FALSE) {
       /* Import of INI failed */
-      $error = new SimplePluginError(
-        $this->attributesAccess['import_file'],
-        htmlescape(_('Failed to parse imported file'))
+      msg_dialog::display(
+        _('Import error'),
+        htmlescape(_('Failed to parse imported file')),
+        ERROR_DIALOG
       );
-      $error->display();
     } else {
       /* Import data and save it to the LDAP */
       foreach (static::$subscriptionAttributes as $attr => $iniVar) {
-- 
GitLab


From 56e1fc72570950bc70f3b996dcca4d6aeee314fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 6 Apr 2021 10:01:35 +0200
Subject: [PATCH 076/117] :ambulance: fix(subscription) Add validation of ini
 file section and attributes

issue #6152
---
 .../subscription/class_subscriptionInfo.inc   | 47 +++++++++++++++----
 1 file changed, 37 insertions(+), 10 deletions(-)

diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 62b7be1cc..4e381b623 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -32,6 +32,8 @@ class subscriptionInfo extends simplePlugin
     'fdSubscriptionEndDate'             => 'EndDate',
   ];
 
+  public static $sectionName = 'FusionDirectory Subscription';
+
   public static function plInfo ()
   {
     return [
@@ -176,7 +178,7 @@ class subscriptionInfo extends simplePlugin
         htmlescape(_('No data. Did you forgot to upload a file?')),
         ERROR_DIALOG
       );
-    } elseif (($data = parse_ini_string($data)) === FALSE) {
+    } elseif (($data = parse_ini_string($data, TRUE)) === FALSE) {
       /* Import of INI failed */
       msg_dialog::display(
         _('Import error'),
@@ -184,17 +186,42 @@ class subscriptionInfo extends simplePlugin
         ERROR_DIALOG
       );
     } else {
-      /* Import data and save it to the LDAP */
-      foreach (static::$subscriptionAttributes as $attr => $iniVar) {
-        $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
+      /* Check content of ini file */
+      $errorText = NULL;
+      if (!isset($data[static::$sectionName])) {
+        $errorText = sprintf(_('Missing section "%s" in imported file'), static::$sectionName);
+      } else {
+        $data = $data[static::$sectionName];
+        foreach (static::$subscriptionAttributes as $attr => $iniVar) {
+          if ($this->attributesAccess[$attr]->isRequired() && (!isset($data[$iniVar]) || ($data[$iniVar] === ''))) {
+            $errorText = sprintf(_('Missing attribute "%s" in imported file'), $iniVar);
+            break;
+          }
+        }
       }
-      $errors = $this->parent->save();
-      if (empty($errors)) {
-        /* The object will stay open so it needs to appear as loaded from LDAP */
-        $this->is_account             = TRUE;
-        $this->initially_was_account  = TRUE;
+      if ($errorText !== NULL) {
+        msg_dialog::display(
+          _('Import error'),
+          htmlescape($errorText),
+          ERROR_DIALOG
+        );
       } else {
-        msg_dialog::displayChecks($errors);
+        /* Import data and save it to the LDAP */
+        foreach (static::$subscriptionAttributes as $attr => $iniVar) {
+          $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
+        }
+        $errors = $this->parent->save();
+        if (empty($errors)) {
+          /* The object will stay open so it needs to appear as loaded from LDAP */
+          $this->is_account             = TRUE;
+          $this->initially_was_account  = TRUE;
+        } else {
+          msg_dialog::displayChecks($errors);
+          /* Reset fields to LDAP value */
+          foreach (array_keys(static::$subscriptionAttributes) as $attr) {
+            $this->attributesAccess[$attr]->setValue($this->attributesAccess[$attr]->getInitialValue());
+          }
+        }
       }
     }
     /* Avoid double import */
-- 
GitLab


From 6a3af917567be11603eccb40e2dbb48b1a363df3 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Mon, 19 Apr 2021 18:36:04 +0000
Subject: [PATCH 077/117] Merge branch
 '6095-put-the-fusiondirectory-github-funding-yml-for-github' into '1.4-dev'

Resolve "put the fusiondirectory/.github/FUNDING.yml for github"

Closes #6095

See merge request fusiondirectory/fd!896

(cherry picked from commit 1673443d82a15a006c7a99286e15092ed69ec54f)

ab6f438d :sparkles: feat(github) add sponsoring for github
---
 .github/FUNDING.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 717c1518a..99ab470ea 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -4,3 +4,4 @@ ko_fi: fusiondirectory
 liberapay: fusiondirectory
 open_collective: fusiondirectory
 community_bridge: fusiondirectory
+github: fusiondirectory
-- 
GitLab


From 13ad8cb7b27af38f78d16c7c283cbf7e55a84059 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 14 Jun 2021 16:58:09 +0200
Subject: [PATCH 078/117] :sparkles: feat(ci)

Add PHPCompatibility check to php codesniffer CI step

issue #6167
---
 .gitlab-ci.yml | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4bb970fd3..c0edf022d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -76,6 +76,19 @@ create_php_code_sniffer_rapport:
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
 
+create_php_compatibility_rapport:
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
+  stage: codestyle
+  only:
+    - branches
+  script:
+    - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
+    - git clone --depth 1 https://github.com/PHPCompatibility/PHPCompatibility.git ../PHPCompatibility
+    - git clone --depth 1 https://github.com/PHPCSStandards/PHPCSUtils.git ../PHPCSUtils
+    - phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
+    - PHP_MIN_VERSION=$(grep PHP_MIN_VERSION include/variables_common.inc| cut -d\' -f4| cut -d"." -f 1-2)
+    - phpcs --standard=PHPCompatibility --runtime-set testVersion $PHP_MIN_VERSION- --file-list=./filelist
+
 # Sonar publishing
 sonar_publish:
   image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
-- 
GitLab


From a23ceb53bdfbce6c11fa63b35904fe1b2d45e8a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 22 Jun 2021 14:06:37 +0200
Subject: [PATCH 079/117] :ambulance: fix(ci) Limit PHPCompatibility test to
 7.4

1.3-fixes will not support PHP>=8 anyway

issue #6167
---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c0edf022d..fbbfed221 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -87,7 +87,7 @@ create_php_compatibility_rapport:
     - git clone --depth 1 https://github.com/PHPCSStandards/PHPCSUtils.git ../PHPCSUtils
     - phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
     - PHP_MIN_VERSION=$(grep PHP_MIN_VERSION include/variables_common.inc| cut -d\' -f4| cut -d"." -f 1-2)
-    - phpcs --standard=PHPCompatibility --runtime-set testVersion $PHP_MIN_VERSION- --file-list=./filelist
+    - phpcs --standard=PHPCompatibility --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
 
 # Sonar publishing
 sonar_publish:
-- 
GitLab


From 77d533f807af8aea23923615775485e4661265b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 22 Jun 2021 15:01:53 +0200
Subject: [PATCH 080/117] :ambulance: fix(ci) Use custom profile for 1.3
 PHPCompatibility

We need to exclude check for random_int as we have a polyfill, and for
 Attribute class as we have our own.

issue #6167
---
 .gitlab-ci.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fbbfed221..ad92895ab 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -82,12 +82,14 @@ create_php_compatibility_rapport:
   only:
     - branches
   script:
+    - test -d ../dev-tools/ && rm -Rf ../dev-tools/
+    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - git clone --depth 1 https://github.com/PHPCompatibility/PHPCompatibility.git ../PHPCompatibility
     - git clone --depth 1 https://github.com/PHPCSStandards/PHPCSUtils.git ../PHPCSUtils
     - phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
     - PHP_MIN_VERSION=$(grep PHP_MIN_VERSION include/variables_common.inc| cut -d\' -f4| cut -d"." -f 1-2)
-    - phpcs --standard=PHPCompatibility --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
+    - phpcs --standard=../dev-tools/php-codesniffer-rules/PHPCompatibility-fd1.3/ruleset.xml --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
 
 # Sonar publishing
 sonar_publish:
-- 
GitLab


From a4e7c8b94dc1f47b5dd7cce06c0687e782fc5cd7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 15 Jun 2021 14:16:51 +0200
Subject: [PATCH 081/117] :ambulance: fix(core) Remove unused debug functions
 causing codesniffer warnings

issue #6167
---
 include/functions_debug.inc | 112 ------------------------------------
 1 file changed, 112 deletions(-)

diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index d7447e3c2..e0a29422d 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -17,16 +17,6 @@
 *   if mode is defined the function returns the output instead of
 *   printing it to the browser
 *
-* show_vars([int mode])
-*   use this function on the bottom of your script to see all
-*   superglobals and global variables in your script in a nice
-*   formated way
-*
-*   show_vars() without parameter shows $_GET, $_POST, $_SESSION,
-*   $_FILES and all global variables you've defined in your script
-*
-*   show_vars(1) shows $_SERVER and $_ENV in addition
-*
 * Happy debugging and feel free to email me your comments.
 *
 * History: (starting with version 0.5.3 at 2003-02-24)
@@ -36,15 +26,6 @@
 *   - pre() function now trims trailing tabs
 ----------------------------------------------------------------------*/
 
-
-// This file must be the first include on your page.
-
-/* used for tracking of generation-time */
-{
-  $MICROTIME_START = microtime();
-  @$GLOBALS_initial_count = count($GLOBALS);
-}
-
 /*!
  * \file functions_debug.inc
  * Source code for print_a class
@@ -252,96 +233,3 @@ function print_a($array, $return_mode = FALSE, $show_object_vars = FALSE, $expor
     return TRUE;
   }
 }
-
-function _script_globals()
-{
-  global $GLOBALS_initial_count;
-
-  $varcount = 0;
-
-  foreach ($GLOBALS as $GLOBALS_current_key => $GLOBALS_current_value) {
-    if (++$varcount > $GLOBALS_initial_count) {
-      /* die wollen wir nicht! */
-      if ($GLOBALS_current_key != 'HTTP_SESSION_VARS' && $GLOBALS_current_key != '_SESSION') {
-        $script_GLOBALS[$GLOBALS_current_key] = $GLOBALS_current_value;
-      }
-    }
-  }
-
-  unset($script_GLOBALS['GLOBALS_initial_count']);
-  return $script_GLOBALS;
-}
-
-/*!
- * \brief Show the runtime
- */
-function show_runtime()
-{
-  $MICROTIME_END    = microtime();
-  $MICROTIME_START  = explode(' ', $GLOBALS['MICROTIME_START']);
-  $MICROTIME_END    = explode(' ', $MICROTIME_END);
-  $GENERATIONSEC    = $MICROTIME_END[1] - $MICROTIME_START[1];
-  $GENERATIONMSEC   = $MICROTIME_END[0] - $MICROTIME_START[0];
-  $GENERATIONTIME   = substr($GENERATIONSEC + $GENERATIONMSEC, 0, 8);
-
-  return '<span style="color:red;font-weight:normal;font-size:9px;">(runtime: '.$GENERATIONTIME.' sec)</span>';
-}
-
-
-/*!
- * \brief function shows all superglobals and script defined global variables
- * show_vars() without the first parameter shows all superglobals except $_ENV and $_SERVER
- * show_vars(1) shows all
- * show_vars(,1) shows object properties in addition
- */
-function show_vars($show_all_vars = FALSE, $show_object_vars = FALSE)
-{
-  if (isset($GLOBALS['no_vars'])) {
-    return;
-  }
-
-  $script_globals = _script_globals();
-  print '
-    <style type="text/css">
-    .vars-container {
-      font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular, sans-serif;
-      font-size: 8pt;
-      padding:5px;
-    }
-    .varsname {
-      font-weight:bold;
-    }
-    </style>
-  ';
-
-  print '<br />
-    <div style="border-style:dotted;border-width:1px;padding:2px;font-family:Verdana;font-size:10pt;font-weight:bold;">
-    DEBUG '.show_runtime().'
-  ';
-
-  $vars_arr['script_globals'] = array('global script variables', '#7ACCC8');
-
-  $vars_arr['_GET']     = array('$_GET', '#7DA7D9');
-  $vars_arr['_POST']    = array('$_POST', '#F49AC1');
-  $vars_arr['_FILES']   = array('$_POST FILES', '#82CA9C');
-  $vars_arr['_SESSION'] = array('$_SESSION', '#FCDB26');
-  $vars_arr['_COOKIE']  = array('$_COOKIE', '#A67C52');
-
-  if ($show_all_vars) {
-    $vars_arr['_SERVER']  = array('SERVER', '#A186BE');
-    $vars_arr['_ENV']     = array('ENV', '#7ACCC8');
-  }
-
-  foreach ($vars_arr as $vars_name => $vars_data) {
-    if ($vars_name != 'script_globals') {
-      global $$vars_name;
-    }
-    if ($$vars_name) {
-      print '<div class="vars-container" style="background-color:'.$vars_data[1].';"><span class="varsname">'.$vars_data[0].'</span><br />';
-      print_a($$vars_name, FALSE, $show_object_vars, FALSE );
-      print '</div>';
-    }
-  }
-  print '</div>';
-}
-?>
-- 
GitLab


From 6f8c0ee4dbd250a7deac52063e40878a680d2a01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 22 Jun 2021 10:33:08 +0200
Subject: [PATCH 082/117] :ambulance: fix(core) Remove double underscore from
 autoload function name

This fixes a warning from PHPCompatiblity about a possible future
 conflict with PHP internal functions.

issue #6167
---
 html/index.php        | 8 ++++----
 include/functions.inc | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/html/index.php b/html/index.php
index 5a53e3d53..304e73ced 100644
--- a/html/index.php
+++ b/html/index.php
@@ -119,8 +119,8 @@ if (isset($_REQUEST['signout']) && $_REQUEST['signout']) {
     if ($config->get_cfg_value('casActivated') == 'TRUE') {
       require_once('CAS.php');
       /* Move FD autoload after CAS autoload */
-      spl_autoload_unregister('__fusiondirectory_autoload');
-      spl_autoload_register('__fusiondirectory_autoload');
+      spl_autoload_unregister('fusiondirectory_autoload');
+      spl_autoload_register('fusiondirectory_autoload');
       phpCAS::client(
         CAS_VERSION_2_0,
         $config->get_cfg_value('casHost', 'localhost'),
@@ -580,8 +580,8 @@ if ($config->get_cfg_value('httpAuthActivated') == 'TRUE') {
 } elseif ($config->get_cfg_value('casActivated') == 'TRUE') {
   require_once('CAS.php');
   /* Move FD autoload after CAS autoload */
-  spl_autoload_unregister('__fusiondirectory_autoload');
-  spl_autoload_register('__fusiondirectory_autoload');
+  spl_autoload_unregister('fusiondirectory_autoload');
+  spl_autoload_register('fusiondirectory_autoload');
   Index::casLoginProcess();
 } elseif ($config->get_cfg_value('httpHeaderAuthActivated') == 'TRUE') {
   Index::headerAuthLoginProcess();
diff --git a/include/functions.inc b/include/functions.inc
index 5f848ed87..1a9bd6138 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -83,7 +83,7 @@ $REWRITE = array( "ä" => "ae",
  *  \param array $class_name list of class name
  */
 
-function __fusiondirectory_autoload($class_name)
+function fusiondirectory_autoload ($class_name)
 {
   global $class_mapping, $BASE_DIR, $config;
 
@@ -117,7 +117,7 @@ function __fusiondirectory_autoload($class_name)
     exit;
   }
 }
-spl_autoload_register('__fusiondirectory_autoload');
+spl_autoload_register('fusiondirectory_autoload');
 
 
 /*!
-- 
GitLab


From e4531d21b84ce2b07e2eeb57d35516685d5a960f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 22 Jun 2021 15:14:41 +0200
Subject: [PATCH 083/117] :ambulance: fix(core) Remove usages of curly brace
 syntax for arrays

issue #6167
---
 html/class_passwordRecovery.inc | 2 +-
 include/class_userinfo.inc      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 2cae64e15..825525d38 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -239,7 +239,7 @@ class standAlonePage {
     $max        = strlen($base) - 1;
     $randomhash = '';
     while (strlen($randomhash) < $len + 1) {
-      $randomhash .= $base{random_int(0, $max)};
+      $randomhash .= $base[random_int(0, $max)];
     }
     return $randomhash;
   }
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 4da2e4e27..430e8c000 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -250,7 +250,7 @@ class userinfo
           foreach ($without_self_acl[$sdn][$dn] as $acl_id => $acl_set) {
 
             /* Remember which ACL set has speicial user filter */
-            if (isset($acl_set['filter']{1})) {
+            if (isset($acl_set['filter'][1])) {
               $this->ACLperPath_usesFilter[$sdn] = TRUE;
             }
 
-- 
GitLab


From c4abb8b4ddc02ff2619cfb8682b35e51bdd892d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 22 Jun 2021 16:44:44 +0200
Subject: [PATCH 084/117] :ambulance: fix(setup) Remove obsolete ini settings
 checks from web setup

issue #6167
---
 setup/class_setupStepChecks.inc | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/setup/class_setupStepChecks.inc b/setup/class_setupStepChecks.inc
index 847f8c2f4..081645f53 100644
--- a/setup/class_setupStepChecks.inc
+++ b/setup/class_setupStepChecks.inc
@@ -167,14 +167,6 @@ class setupStepChecks extends setupStep
 
     /* PHP Configuration checks */
 
-    /* Register_globals off */
-    $N = "register_globals = <b>off</b>";
-    $D = _("register_globals is a PHP mechanism to register all global variables to be accessible from scripts without changing the scope. This may be a security risk.");
-    $S = _("Search for 'register_globals' in your php.ini and switch it to 'Off'.");
-    $R = ini_get("register_globals") == 0;
-    $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
-
     /* session lifetime set to >=86400 seconds ? */
     $N = "session.gc_maxlifetime &gt;= <b>86400</b>";
     $D = _("PHP uses this value for the garbage collector to delete old sessions.")." ".
@@ -225,14 +217,6 @@ class setupStepChecks extends setupStep
     $M = FALSE;
     $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
-    /* Emulating old stuff? */
-    $N = "zend.ze1_compatibility_mode = <b>"._("Off")."</b>";
-    $D = _("Increase your server performance by setting magic_quotes_gpc to 'off'.");
-    $S = _("Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'.");
-    $R = !ini_get('zend.ze1_compatibility_mode');
-    $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
-
     $this->basic_checks   = $basic_checks;
     $this->config_checks  = $config_checks;
   }
-- 
GitLab


From dad18d6a9984c9c3c45ec9782e91282042bd72a9 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 27 Jul 2021 18:56:14 +0000
Subject: [PATCH 085/117] Remove sonar from 1.3-fixes

---
 .gitlab-ci.yml | 35 -----------------------------------
 1 file changed, 35 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ad92895ab..64f86a58e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,41 +91,6 @@ create_php_compatibility_rapport:
     - PHP_MIN_VERSION=$(grep PHP_MIN_VERSION include/variables_common.inc| cut -d\' -f4| cut -d"." -f 1-2)
     - phpcs --standard=../dev-tools/php-codesniffer-rules/PHPCompatibility-fd1.3/ruleset.xml --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
 
-# Sonar publishing
-sonar_publish:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
-  stage: codestyle
-  only:
-    - 1.3-fixes
-  script:
-    - /home/sonar/*/bin/sonar-scanner
-      -D sonar.projectKey=FusionDirectory-13
-      -D sonar.projectName=FusionDirectory-1.3
-      -D sonar.projectVersion=1.3
-      -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
-      -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
-      -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
-      -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-
-# Sonar preview
-sonar_preview:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/sonar-cli:4.4.0.2170
-  stage: codestyle
-  except:
-    - 1.3-fixes
-  script:
-    - /home/sonar/*/bin/sonar-scanner
-      -D sonar.projectKey=FusionDirectory-13
-      -D sonar.projectName=FusionDirectory-1.3
-      -D sonar.projectVersion=1.3
-      -D sonar.sourceEncoding=UTF-8
-      -D sonar.exclusions='html/themes/legacy/**/*,html/themes/breezy/**/*,html/images/**,contrib/**,html/plugins/users/images/**,html/favicon.ico,include/class_xml.inc'
-      -D sonar.gitlab.project_id="$CI_PROJECT_PATH"
-      -D sonar.gitlab.commit_sha="$CI_COMMIT_SHA"
-      -D sonar.gitlab.ref_name="$CI_COMMIT_REF_NAME"
-      -D sonar.analysis.mode=preview
-
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
   image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
-- 
GitLab


From 2d92df2bae6c1581ae3a73e693ebb753238f06e2 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 27 Jul 2021 19:43:01 +0000
Subject: [PATCH 086/117] Remove default image Remove jessie lint Remove -f for
 force in transifex Use our own image in php_lint_stretch

---
 .gitlab-ci.yml | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 64f86a58e..ece2fdb7b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,3 @@
-# Specify docker image
-image: debian:stretch
-
 stages:
   - lint
   - codestyle
@@ -19,18 +16,9 @@ create_perl_lint_rapport:
   script:
     - perl -cW contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-insert-schema
 
-# PHP lint (jessie)
-create_php_lint_rapport_jessie:
-  image: php:5.6.33-cli-jessie
-  stage: lint
-  only:
-    - branches
-  script:
-    - find . -type f -name '*.php' -o -name '*.inc' -print0 | xargs -0 -n1 php -l
-
 # PHP lint (stretch)
 create_php_lint_rapport_stretch:
-  image: php:cli-stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:stretch
   stage: lint
   only:
     - branches
@@ -114,7 +102,7 @@ update-transifex:
     - echo $'[https://www.transifex.com]\nhostname = https://www.transifex.com\nusername = '"$TRANSIFEX_USER"$'\npassword = '"$TRANSIFEX_PASSWORD"$'\ntoken = '"$TRANSIFEX_API_TOKEN"$'\n' > ~/.transifexrc
     - tx pull -a -f
     - ../dev-tools/locale-scripts/fusiondirectory-update-locale -g
-    - tx push -f -s -t --skip --no-interactive
+    - tx push -s -t --skip --no-interactive
 
 build-tarballs:
   stage: tarballs
-- 
GitLab


From a493037e4a3265bb829a07610d04e1864afa103d Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Mon, 23 Aug 2021 08:46:49 +0000
Subject: [PATCH 087/117] Merge branch
 '6182-remove-reference-to-freenode-net-in' into '1.4-dev'

Resolve "remove reference to freenode.net in"

Closes #6182

See merge request fusiondirectory/fd!922

(cherry picked from commit f4372943b99b4639aa6cd38a415b85bd03dd4a0e)

13f8d993 :ambulance: fix(irc) remove reference to freenode.net
---
 CONTRIBUTING.md | 2 +-
 README.md       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 93bc7d522..980c8af62 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ All projects and everyone participating in it is governed by [FusionDirectory Co
 
 We have an various channel of communications
 
-*  [#fusiondirectory, the irc channel of FusionDirectory on freenode](https://webchat.freenode.net/), channel #fusiondirectory
+*  [#fusiondirectory, the irc channel of FusionDirectory on Libera](https://web.libera.chat/), channel #fusiondirectory
 *  [FusionDirectory Users mailing list](https://lists.fusiondirectory.org/wws/info/users)
 *  [FusionDirectory dev mailing list](https://lists.fusiondirectory.org/wws/info/developpers)
 
diff --git a/README.md b/README.md
index e12625693..f34369528 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ Be aware that if your naming policy of user cn's differs from the way FusionDire
 
 ### Community support
 
-There are a couple ways you can try [to get help][get help].You can also join the `#fusiondirectory` IRC channel at freenode.net.
+There are a couple ways you can try [to get help][get help].You can also join the `#fusiondirectory` IRC channel at libera.chat.
 
 ### Professional support
 
-- 
GitLab


From d847a12c2155e832870e5ba2b9c2334b5cbc1e42 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Mon, 23 Aug 2021 12:42:16 +0000
Subject: [PATCH 088/117] Merge branch
 '6184-change-the-text-in-the-professional-support-in-the-readme-md' into
 '1.4-dev'

Resolve "Change the text in the professional support in the README.md"

Closes #6184

See merge request fusiondirectory/fd!925

(cherry picked from commit e34aa636842d335a5f1f4968f40d4851b66b89a6)

b8ec9e33 :ambulance: fix(support) Change the text in the professional support in the README.md
---
 README.md | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index f34369528..df42a65da 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,19 @@ There are a couple ways you can try [to get help][get help].You can also join th
 
 ### Professional support
 
-If you need professional support you can [get support][get support] and chose one of the options available. 
+Professional support is provided through of subscription.
+
+We have two type of subscription :
+
+* [FusionDirectory][subscription-fusiondirectory] : Global subscription for FusionDirectory and all the plugins
+* [FusionDirectory Plus][subscription-fusiondirectory-plus] : Expert Support on Education, Deployement and Infrastructure plugins
+
+The subscription provides access to FusionDirectory's stable enterprise repository, providing reliable software updates and security enhancements,
+as well as technical help and support.
+
+Choose the plan that's right for you. Our subscriptions are flexible and scalable according to your needs
+
+The subscription period is one year from the date of purchase and gives you access to the extensive infrastructure of enterprise-class software and services.
 
 You can [register on our system][register] and enter issues [FusionDirectory][issues-core] for the core program, and 
 [FusionDirectory Plugins][issues-plugins] for plugins.
@@ -109,7 +121,9 @@ If you like us and want to send us a small contribution you can use the followin
 
 [get help]: https://www.fusiondirectory.org/en/communaute/
 
-[get support]: https://www.fusiondirectory.org/en/support/
+[subscription-fusiondirectory]: https://www.fusiondirectory.org/en/subscription-fusiondirectory/
+
+[subscription-fusiondirectory-plus]: https://www.fusiondirectory.org/en/subscriptions-fusiondirectory-plus/
 
 [register]: https://register.fusiondirectory.org
 
-- 
GitLab


From 3185b79c0cf1e0bea6013d51bbd95b4c14efb45c Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 24 Aug 2021 15:27:23 +0000
Subject: [PATCH 089/117] Merge branch
 '6185-remove-the-where-to-open-a-bug-from-the-readme-md' into '1.4-dev'

Resolve "remove the where to open a bug from the README.md"

Closes #6185

See merge request fusiondirectory/fd!928

(cherry picked from commit ff41fa5097a391f195a8d2c38ca1ec3df080406b)

a15cbaa1 :ambulance: fix(readme) remove the where to open a bug from the README.md
---
 README.md | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/README.md b/README.md
index df42a65da..041aad2a1 100644
--- a/README.md
+++ b/README.md
@@ -82,9 +82,6 @@ Choose the plan that's right for you. Our subscriptions are flexible and scalabl
 
 The subscription period is one year from the date of purchase and gives you access to the extensive infrastructure of enterprise-class software and services.
 
-You can [register on our system][register] and enter issues [FusionDirectory][issues-core] for the core program, and 
-[FusionDirectory Plugins][issues-plugins] for plugins.
-
 ## IRC Etiquette
 
 * If we don't answer right away then just hang out in the channel.  Someone will
@@ -127,10 +124,6 @@ If you like us and want to send us a small contribution you can use the followin
 
 [register]: https://register.fusiondirectory.org
 
-[issues-core]: https://gitlab.fusiondirectory.org/fusiondirectory/fd/issues
-
-[issues-plugins]: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins/issues
-
 [donate-liberapay]: https://liberapay.com/fusiondirectory/donate
 
 [donate-kofi]: https://ko-fi.com/fusiondirectory
-- 
GitLab


From 4494d33fae98efe04e2620d5cc38b58addbf11b9 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 2 Sep 2021 12:48:27 +0000
Subject: [PATCH 090/117] Merge branch
 '6182-remove-reference-to-freenode-net-in' into '1.4-dev'

Resolve "remove reference to freenode.net in"

Closes #6182

See merge request fusiondirectory/fd!936

(cherry picked from commit e75256354d4cd3c7041d3abb06cc6dd607f95a40)

d78eac63 :ambulance: fix(irc) remove reference to freenode.net
---
 UPGRADE.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/UPGRADE.md b/UPGRADE.md
index e3d325dab..7cea3c7a1 100644
--- a/UPGRADE.md
+++ b/UPGRADE.md
@@ -3275,7 +3275,7 @@ on https://gitlab.fusiondirectory.org
 
 Documentation: https://fusiondirectory-user-manual.readthedocs.io/en/1.3/index.html
 Mailinglist:   https://lists.fusiondirectory.org/
-Irc:           #fusiondirectory on freenode
+Irc:           #fusiondirectory on libera.chat
 
 ---
 The FusionDirectory project https://www.fusiondirectory.org/
-- 
GitLab


From e2e390e6dc261899e9d035b07e53752961c278e5 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 3 Sep 2021 12:33:40 +0200
Subject: [PATCH 091/117] ambulance: fix(opensides) remove all leftover of
 opensides.be inside the sources

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 AUTHORS.md | 6 +++---
 UPGRADE.md | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/AUTHORS.md b/AUTHORS.md
index 4f4a578c9..8758b3003 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -39,7 +39,7 @@ documentation and additional help.
 * Steve Moitozo <god at zilla dot us>
   Password checker
 
-* Benoit Mortier <benoit.mortier@opensides.be>
+* Benoit Mortier <benoit.mortier@fusiondirectory.org>
   Butracking, QA, French translation
 
 * Igor Muratov <migor@altlinux.org>
@@ -187,7 +187,7 @@ documentation and additional help.
 * Martin Hamant <mh@ow2.org>
   Coded the LockUser fonction for the webservice
   
-* Jonathan Swaelens <jonathan@opensides.be>
+* Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
   QA on FusionDirectory
   RPM packaging maintener and ArchLinux Packager
   
@@ -201,7 +201,7 @@ documentation and additional help.
 * Thomas Niercke <thomas@niercke.de>
   Code and ideas for making Argonaut Events Extensible
   
-* Paola Penati <paolapenati@hotmail.com>
+* Paola Penati <paola.penati@fusiondirectory.org>
   Italian translation of FusionDirectory and the website
 
 * Martin Hamant <mh@ow2.org>
diff --git a/UPGRADE.md b/UPGRADE.md
index 7cea3c7a1..00faa6d32 100644
--- a/UPGRADE.md
+++ b/UPGRADE.md
@@ -489,7 +489,7 @@ Modify your LDIF like below:
   * Before
 
 ```ldif
-cn=namePhone,ou=phones,ou=systems,dc=labo,dc=opensides,dc=be
+cn=namePhone,ou=phones,ou=systems,dc=fusiondirectory,dc=org
 cn: namePhone
 goFonType: friend
 goFonDmtfMode: inband
-- 
GitLab


From dc58b0a38007df1ef325c1cb41ef5f09bedf9dd8 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 3 Sep 2021 13:36:16 +0200
Subject: [PATCH 092/117] :ambulance: fix(opensides) remove all leftover of
 opensides.be inside the sources

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 locale/it_IT/fusiondirectory.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/locale/it_IT/fusiondirectory.po b/locale/it_IT/fusiondirectory.po
index b86afa5e6..6e14c0a2b 100644
--- a/locale/it_IT/fusiondirectory.po
+++ b/locale/it_IT/fusiondirectory.po
@@ -4,7 +4,7 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Paola Penati <paola.penati@opensides.be>, 2019
+# Paola Penati <paola.penati@fusiondirectory.org>, 2019
 # fusiondirectory <contact@fusiondirectory.org>, 2021
 # Paola <paola.penati@fusiondirectory.org>, 2021
 # 
-- 
GitLab


From fadebb79b932a0260bdb8723eb23694a3ae62366 Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Tue, 5 Jul 2022 15:59:08 +0000
Subject: [PATCH 093/117] Merge branch
 '6217-security-set-cookie-settings-to-true-for-option-httponly' into
 '1.3-fixes'

---
 include/class_session.inc | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/class_session.inc b/include/class_session.inc
index cfae33679..0b678b1e2 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -151,6 +151,13 @@ class session {
        !! The garbage collector is a cron job on debian systems, the cronjob will fetch the timeout from
        the php.ini, so if you use debian, you must hardcode session.gc_maxlifetime in your php.ini */
     ini_set("session.gc_maxlifetime", 24 * 60 * 60);
+
+    /*
+     *  Set HttpOnly in order to enhance security by disabling execution of javascript on cookies,
+     *  allowing possible XSS attacks
+     */
+    ini_set("session.cookie_httponly", "1");
+
     if ($id !== NULL) {
       session_id($id);
     }
-- 
GitLab


From c423c93da8f503bbecf9e22686d9746fa278c5dc Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 12 Jul 2022 15:06:18 +0100
Subject: [PATCH 094/117] :ambulance: Fix(Index.php) Session ID renew after
 login

Fix session ID is now renewed after proper login
---
 html/index.php | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/html/index.php b/html/index.php
index 304e73ced..a72e361f9 100644
--- a/html/index.php
+++ b/html/index.php
@@ -408,6 +408,10 @@ class Index {
 
     if ($success) {
       /* Everything went well, redirect to main.php */
+
+      //Regenerate after login in order to avoid session fixation issues (vuln),
+      session_regenerate_id();
+
       static::redirect();
     }
   }
-- 
GitLab


From 46b03343f23f09147dcf21c640321df690389fa5 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 12 Jul 2022 19:21:12 +0100
Subject: [PATCH 095/117] :ambulance: Fix(1.3-fixes) - Codestyle

Fixing codestyle
---
 contrib/smarty/plugins/block.render.php       |   8 +-
 contrib/smarty/plugins/function.msgPool.php   |   4 +-
 html/autocomplete.php                         |   4 +-
 html/class_passwordRecovery.inc               |  28 +-
 html/getbin.php                               |   4 +-
 html/geticon.php                              |   4 +-
 html/index.php                                |  30 +-
 html/main.php                                 |  16 +-
 html/progress.php                             |   2 +-
 html/setup.php                                |   2 +-
 include/accept-to-gettext.inc                 |   8 +-
 include/class_Combinations.inc                |   2 +-
 include/class_CopyPasteHandler.inc            |  30 +-
 include/class_IconTheme.inc                   | 320 +++++++++---------
 include/class_Language.inc                    |  12 +-
 include/class_SnapshotDialogs.inc             |  72 ++--
 include/class_SnapshotHandler.inc             |  52 +--
 include/class_acl.inc                         |  40 +--
 include/class_baseSelector.inc                |   2 +-
 include/class_config.inc                      | 134 ++++----
 include/class_divSelectBox.inc                |   2 +-
 include/class_filter.inc                      |  44 +--
 include/class_filterLDAP.inc                  |  10 +-
 include/class_ldap.inc                        | 112 +++---
 include/class_ldapFilter.inc                  |  20 +-
 include/class_ldapMultiplexer.inc             |   4 +-
 include/class_listing.inc                     | 112 +++---
 include/class_logging.inc                     |  14 +-
 include/class_msgPool.inc                     |  14 +-
 include/class_msg_dialog.inc                  |   8 +-
 include/class_objects.inc                     |  44 +--
 include/class_pluglist.inc                    |  56 +--
 include/class_template.inc                    |  32 +-
 include/class_templateHandling.inc            |  92 ++---
 include/class_tests.inc                       |   4 +-
 include/class_timezone.inc                    |   4 +-
 include/class_userinfo.inc                    |  82 ++---
 include/class_xml.inc                         |  16 +-
 include/exporter/class_cvsExporter.inc        |   4 +-
 include/exporter/class_pdfExporter.inc        |   6 +-
 include/functions.inc                         | 128 +++----
 include/functions_debug.inc                   |   4 +-
 .../class_password-methods-crypt.inc          |   2 +-
 .../class_password-methods-sasl.inc           |   2 +-
 .../class_password-methods.inc                |   8 +-
 include/php_setup.inc                         |  28 +-
 include/select/class_filterLDAPBlacklist.inc  |   2 +-
 .../select/groupSelect/class_groupSelect.inc  |   2 +-
 .../objectSelect/class_objectSelect.inc       |   6 +-
 .../systemSelect/class_systemSelect.inc       |   6 +-
 .../userGroupSelect/class_userGroupSelect.inc |   8 +-
 .../select/userSelect/class_userSelect.inc    |  12 +-
 .../class_BaseSelectorAttribute.inc           |   4 +-
 .../attributes/class_BooleanAttribute.inc     |   4 +-
 .../attributes/class_CompositeAttribute.inc   |   6 +-
 .../attributes/class_DateAttribute.inc        |  16 +-
 .../attributes/class_FileAttribute.inc        |  22 +-
 .../attributes/class_IntAttribute.inc         |   8 +-
 .../attributes/class_PhoneNumberAttribute.inc |  20 +-
 .../attributes/class_SelectAttribute.inc      |   6 +-
 .../attributes/class_SetAttribute.inc         |  74 ++--
 .../attributes/class_StringAttribute.inc      |  10 +-
 include/simpleplugin/class_Attribute.inc      |  42 +--
 .../simpleplugin/class_dialogAttributes.inc   |  70 ++--
 .../simpleplugin/class_helpersAttribute.inc   |  26 +-
 include/simpleplugin/class_multiPlugin.inc    |  12 +-
 .../simpleplugin/class_simpleManagement.inc   | 112 +++---
 include/simpleplugin/class_simplePlugin.inc   | 212 ++++++------
 include/simpleplugin/class_simpleService.inc  |   2 +-
 include/simpleplugin/class_simpleTabs.inc     |  24 +-
 plugins/addons/dashboard/class_dashBoard.inc  |  34 +-
 .../dashboard/class_dashBoardPasswords.inc    |  34 +-
 .../addons/dashboard/class_dashBoardUsers.inc | 102 +++---
 plugins/admin/acl/class_aclAssignment.inc     |  94 ++---
 plugins/admin/acl/class_aclManagement.inc     |  40 +--
 .../admin/aclrole/class_aclEditionDialog.inc  |  24 +-
 plugins/admin/aclrole/class_aclRole.inc       |  36 +-
 .../admin/aclrole/class_aclRoleManagement.inc |  12 +-
 plugins/admin/departments/class_country.inc   |  16 +-
 plugins/admin/departments/class_dcObject.inc  |  18 +-
 .../admin/departments/class_department.inc    |  48 +--
 .../class_departmentManagement.inc            |  12 +-
 plugins/admin/departments/class_domain.inc    |  18 +-
 plugins/admin/departments/class_locality.inc  |  18 +-
 .../admin/departments/class_organization.inc  |  18 +-
 .../admin/groups/class_groupManagement.inc    |  70 ++--
 plugins/admin/groups/class_roleGeneric.inc    |  54 +--
 plugins/admin/groups/tabs_ogroups.inc         |  24 +-
 plugins/admin/users/class_userManagement.inc  |  34 +-
 plugins/config/class_configInLdap.inc         | 240 ++++++-------
 plugins/config/class_dashBoardConfig.inc      |  34 +-
 plugins/config/class_mainPluginsConfig.inc    |  32 +-
 plugins/config/class_pluginsConfigInLdap.inc  |  10 +-
 plugins/config/class_recoveryConfig.inc       |  54 +--
 .../generic/references/class_reference.inc    |  46 +--
 plugins/personal/generic/class_user.inc       | 136 ++++----
 plugins/personal/roles/class_userRoles.inc    |  90 ++---
 setup/class_setup.inc                         |  32 +-
 setup/class_setupStep.inc                     |  30 +-
 setup/class_setupStepChecks.inc               |  74 ++--
 setup/class_setupStepConfig.inc               |  50 +--
 setup/class_setupStepFinish.inc               |  26 +-
 setup/class_setupStepLanguage.inc             |  26 +-
 setup/class_setupStepLdap.inc                 |  46 +--
 setup/class_setupStepMigrate.inc              | 262 +++++++-------
 setup/class_setupStepWelcome.inc              |  22 +-
 106 files changed, 2124 insertions(+), 2124 deletions(-)

diff --git a/contrib/smarty/plugins/block.render.php b/contrib/smarty/plugins/block.render.php
index 0727cc211..90770bcb7 100644
--- a/contrib/smarty/plugins/block.render.php
+++ b/contrib/smarty/plugins/block.render.php
@@ -62,17 +62,17 @@ function smarty_block_render($params, $text, &$smarty)
   }
 
   /* Remove select options */
-  $from = array(
+  $from = [
     "#<option.*<\/option>#is",
     "/(<textarea.*>).*(<\/textarea>)/is",
     "/^(.*<input.*)checked(.*>.*)$/isD"
-  );
+  ];
 
-  $to = array(
+  $to = [
     " ",
     "\\1\\2",
     "\\1 \\2"
-  );
+  ];
 
   $text = preg_replace($from, $to, $text);
 
diff --git a/contrib/smarty/plugins/function.msgPool.php b/contrib/smarty/plugins/function.msgPool.php
index c63fc95f4..ae72af0ca 100644
--- a/contrib/smarty/plugins/function.msgPool.php
+++ b/contrib/smarty/plugins/function.msgPool.php
@@ -21,14 +21,14 @@
 function smarty_function_msgPool($params, &$smarty)
 {
   if (class_available('msgPool') && isset($params['type'])) {
-    $parameter = array();
+    $parameter = [];
     foreach ($params as $para => $value) {
       if (!preg_match('/^type$/i', $para)) {
         $parameter[$para] = $value;
       }
     }
     if (is_callable('msgPool::'.$params['type'])) {
-      echo call_user_func_array(array('msgPool',$params['type']), $parameter);
+      echo call_user_func_array(['msgPool',$params['type']], $parameter);
     } else {
       trigger_error('Unknown msgPool function '.$params['type']);
     }
diff --git a/html/autocomplete.php b/html/autocomplete.php
index c8f5437b2..0b0bce54d 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -26,11 +26,11 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', array(), 'Error: autocomplete.php called without session');
+  logging::log('security', 'unknown', '', [], 'Error: autocomplete.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 825525d38..e8a91ee66 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -59,7 +59,7 @@ class standAlonePage {
       $smarty = get_smarty();
 
       /* Generate server list */
-      $servers = array();
+      $servers = [];
       foreach ($config->data['LOCATIONS'] as $key => $ignored) {
         $servers[$key] = $key;
       }
@@ -248,7 +248,7 @@ class standAlonePage {
 class passwordRecovery extends standAlonePage {
   protected $loginAttribute;
   protected $login;
-  var $message = array();
+  var $message = [];
   var $email_address;
 
   var $step = 1;
@@ -401,7 +401,7 @@ class passwordRecovery extends standAlonePage {
 
     // Check if token branch is here
     $token = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($token, array('dn'));
+    $ldap->cat($token, ['dn']);
     if (!$ldap->count()) {
       /* It's not, let's create it */
       $ldap->cd ($config->current['BASE']);
@@ -414,15 +414,15 @@ class passwordRecovery extends standAlonePage {
     }
 
     $dn = 'ou='.$this->login.','.$token;
-    $ldap->cat($dn, array('dn'));
+    $ldap->cat($dn, ['dn']);
     $add = ($ldap->count() == 0);
     /* We store the token and its validity due date */
-    $attrs = array(
-      'objectClass'   => array('organizationalUnit'),
+    $attrs = [
+      'objectClass'   => ['organizationalUnit'],
       'ou'            => $this->login,
       'userPassword'  => $sha1_temp_password,
       'description'   => time() + $this->delay_allowed * 60,
-    );
+    ];
     $ldap->cd($dn);
     if ($add) {
       $ldap->add($attrs);
@@ -466,7 +466,7 @@ class passwordRecovery extends standAlonePage {
     /* Retrieve dn from the ldap */
     $ldap = $config->get_ldap_link();
 
-    $objectClasses = array('gosaMailAccount');
+    $objectClasses = ['gosaMailAccount'];
     if (class_available('personalInfo') && ($config->get_cfg_value('privateEmailPasswordRecovery', 'FALSE') == 'TRUE')) {
       $objectClasses[] = 'fdPersonalInfo';
     }
@@ -475,7 +475,7 @@ class passwordRecovery extends standAlonePage {
     }
     $filter = '(&(|(objectClass='.join(')(objectClass=', $objectClasses).'))('.$this->loginAttribute.'='.ldap_escape_f($this->login).'))';
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, array('dn'));
+    $ldap->search($filter, ['dn']);
 
     if ($ldap->count() < 1) {
       $this->message[] = sprintf(_('Did not find an account with login "%s"'), htmlentities($this->login, ENT_COMPAT, 'UTF-8'));
@@ -510,7 +510,7 @@ class passwordRecovery extends standAlonePage {
     }
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, array('dn', 'userPassword', $this->loginAttribute));
+    $ldap->search($filter, ['dn', 'userPassword', $this->loginAttribute]);
 
     /* Only one ldap node should be found */
     if ($ldap->count() < 1) {
@@ -536,7 +536,7 @@ class passwordRecovery extends standAlonePage {
 
       $smarty->assign('login', $this->login);
       $smarty->assign('email_address', $this->email_address);
-      $params = $this->encodeParams(array('login', 'directory', 'email_address'));
+      $params = $this->encodeParams(['login', 'directory', 'email_address']);
       $smarty->assign('params', $params);
     }
 
@@ -603,7 +603,7 @@ class passwordRecovery extends standAlonePage {
     $this->uniq = $uniq_id_from_mail;
     $this->step = 4;
     $smarty->assign('login', $this->login);
-    $params = $this->encodeParams(array('login', 'directory', 'email_address', 'uniq'));
+    $params = $this->encodeParams(['login', 'directory', 'email_address', 'uniq']);
     $smarty->assign('params', $params);
 
     if (isset($_POST['change'])) {
@@ -620,13 +620,13 @@ class passwordRecovery extends standAlonePage {
 
     $userTabs = objects::open($dn, 'user');
     $userTab  = $userTabs->getBaseObject();
-    $userTab->userPassword = array(
+    $userTab->userPassword = [
       '',
       $new_password,
       $new_password_repeated,
       $userTab->userPassword,
       $userTab->attributesAccess['userPassword']->isLocked()
-    );
+    ];
 
     /* Is there any problem with entered passwords? */
     $userTabs->save_object();
diff --git a/html/getbin.php b/html/getbin.php
index 0598ea917..a41a60e74 100644
--- a/html/getbin.php
+++ b/html/getbin.php
@@ -27,11 +27,11 @@
 error_reporting (0);
 session_cache_limiter('private');
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', array(), 'Error: getbin.php called without session');
+  logging::log('security', 'unknown', '', [], 'Error: getbin.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/geticon.php b/html/geticon.php
index 2e338e288..0e2fc5ae2 100644
--- a/html/geticon.php
+++ b/html/geticon.php
@@ -25,7 +25,7 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 $theme = '';
 if (session::is_set('config')) {
@@ -34,7 +34,7 @@ if (session::is_set('config')) {
 } else {
   header("cache-control: no-cache");
 }
-IconTheme::$extensions    = array('png');
+IconTheme::$extensions    = ['png'];
 if (!isset($_GET['context']) || !isset($_GET['icon']) || !isset($_GET['size'])) {
   trigger_error('Missing information in query string: '.$_SERVER['QUERY_STRING']);
   exit;
diff --git a/html/index.php b/html/index.php
index a72e361f9..a444fc69b 100644
--- a/html/index.php
+++ b/html/index.php
@@ -70,7 +70,7 @@ function displayLogin()
   }
 
   /* Generate server list */
-  $servers = array();
+  $servers = [];
   if (isset($_POST['server'])) {
     $selected = $_POST['server'];
   } else {
@@ -246,7 +246,7 @@ class Index {
     if ($config->get_cfg_value('schemaCheck') != 'TRUE') {
       return TRUE;
     }
-    $cfg = array();
+    $cfg = [];
     $cfg['admin']       = $config->current['ADMINDN'];
     $cfg['password']    = $config->current['ADMINPASSWORD'];
     $cfg['connection']  = $config->current['SERVER'];
@@ -269,7 +269,7 @@ class Index {
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], array('dn'));
+    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], ['dn']);
     $attrs = $ldap->fetch();
     if (!count($attrs)) {
       $ldap->cd($config->current['BASE']);
@@ -302,9 +302,9 @@ class Index {
     $ui = ldap_login_user(static::$username, static::$password);
     if ($ui === NULL) {
       if (isset($_SERVER['REMOTE_ADDR'])) {
-        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
+        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
       } else {
-        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'"');
+        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'"');
       }
       $message = _('Please check the username/password combination.');
       $smarty->assign ('focusfield', 'password');
@@ -340,7 +340,7 @@ class Index {
       $expired = $ui->expired_status();
 
       if ($expired == POSIX_ACCOUNT_EXPIRED) {
-        logging::log('security', 'login', '', array(), 'Account for user "'.static::$username.'" has expired');
+        logging::log('security', 'login', '', [], 'Account for user "'.static::$username.'" has expired');
         $message = _('Account locked. Please contact your system administrator!');
         $smarty->assign ('focusfield', 'username');
         return FALSE;
@@ -354,7 +354,7 @@ class Index {
   {
     global $config;
     /* Not account expired or password forced change go to main page */
-    logging::log('security', 'login', '', array(), 'User "'.static::$username.'" logged in successfully.');
+    logging::log('security', 'login', '', [], 'User "'.static::$username.'" logged in successfully.');
     session::set('connected', 1);
     session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
     header ('Location: main.php?global_check=1');
@@ -398,13 +398,13 @@ class Index {
     static::$username = $_POST['username'];
     static::$password = $_POST['password'];
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -430,13 +430,13 @@ class Index {
     static::$username = $_SERVER['PHP_AUTH_USER'];
     static::$password = $_SERVER['PHP_AUTH_PW'];
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -499,11 +499,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -566,11 +566,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
diff --git a/html/main.php b/html/main.php
index 00a1e3100..367e90533 100644
--- a/html/main.php
+++ b/html/main.php
@@ -40,8 +40,8 @@ textdomain($domain);
 
 /* Remember everything we did after the last click */
 session::start();
-session::set('errorsAlreadyPosted', array());
-session::set('runtime_cache', array());
+session::set('errorsAlreadyPosted', []);
+session::set('runtime_cache', []);
 session::set('limit_exceeded', FALSE);
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
@@ -51,7 +51,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
 /* Logged in? Simple security check */
 if (!session::is_set('connected')) {
-  logging::log('security', 'login', '', array(), 'main.php called without session - logging out');
+  logging::log('security', 'login', '', [], 'main.php called without session - logging out');
   header ('Location: index.php?message=nosession');
   exit;
 }
@@ -83,7 +83,7 @@ if (session::get('_LAST_PAGE_REQUEST') != '') {
      */
     if ($request_time > $max_life) {
       session::destroy();
-      logging::log('security', 'login', '', array(), 'main.php called with expired session - logging out');
+      logging::log('security', 'login', '', [], 'main.php called with expired session - logging out');
       header ('Location: index.php?signout=1&message=expired');
       exit;
     }
@@ -114,7 +114,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
             _("Fatal error: Register globals is on. FusionDirectory will refuse to login unless this is fixed by an administrator."),
             FATAL_ERROR_DIALOG);
 
-  logging::log('security', 'login', '', array(), 'Register globals is on. For security reasons, this should be turned off.');
+  logging::log('security', 'login', '', [], 'Register globals is on. For security reasons, this should be turned off.');
   session::destroy ();
   exit;
 }
@@ -136,7 +136,7 @@ if ($config->get_cfg_value("handleExpiredAccounts") == "TRUE") {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, 'This user account ('.$ui->uid.') is about to expire');
 
     // The users password is about to xpire soon, display a warning message.
-    logging::log('security', 'fusiondirectory', '', array(), 'password for user "'.$ui->uid.'" is about to expire');
+    logging::log('security', 'fusiondirectory', '', [], 'password for user "'.$ui->uid.'" is about to expire');
     msg_dialog::display(_('Password change'), _('Your password is about to expire, please change your password!'), INFO_DIALOG);
     session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE);
   } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE) {
@@ -166,7 +166,7 @@ if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   $plugin_dir = $plist->get_path($plug);
   session::set('plugin_dir', $plugin_dir);
   if ($plugin_dir == '') {
-    logging::log('security', 'fusiondirectory', '', array(), "main.php called with invalid plug parameter \"$plug\"");
+    logging::log('security', 'fusiondirectory', '', [], "main.php called with invalid plug parameter \"$plug\"");
     header ('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
     exit;
   }
@@ -346,4 +346,4 @@ echo $display;
 /* Save plist and config */
 session::set('plist', $plist);
 session::set('config', $config);
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
diff --git a/html/progress.php b/html/progress.php
index 782bb2759..352aaa539 100644
--- a/html/progress.php
+++ b/html/progress.php
@@ -58,7 +58,7 @@ if (!function_exists("imagecreate")) {
 
   $x_matches = FALSE;
   $y_matches = FALSE;
-  foreach (array(7,6,5,4,3,2,1,0) as $font) {
+  foreach ([7,6,5,4,3,2,1,0] as $font) {
     $fx = ImageFontWidth($font) * strlen("$p%");
     $fy = ImageFontHeight($font);
 
diff --git a/html/setup.php b/html/setup.php
index 48f981613..4695b6ad1 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -50,7 +50,7 @@ ini_set("session.gc_maxlifetime", 24 * 60 * 60);
 /* Start session */
 session::start();
 session::set('DEBUGLEVEL', 0);
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 CSRFProtection::check();
 
diff --git a/include/accept-to-gettext.inc b/include/accept-to-gettext.inc
index d4f171469..0995f1db7 100644
--- a/include/accept-to-gettext.inc
+++ b/include/accept-to-gettext.inc
@@ -74,7 +74,7 @@
  */
 function parse_scores ($str)
 {
-  $scores = array();
+  $scores = [];
   $parts = preg_split('/,/', $str);
   foreach ($parts as $part) {
     $part = trim(strtolower($part));
@@ -109,7 +109,7 @@ function max_scores ($scores, $testvals)
 function parse_gettext_lang ($str)
 {
   if (preg_match("/^([^_]*)(_([^_]*))?\.(.*)$/", $str, $m)) {
-    return array(strtolower($m[1]), strtolower($m[3]), strtolower($m[4]));
+    return [strtolower($m[1]), strtolower($m[3]), strtolower($m[4])];
   } else {
     return FALSE;
   }
@@ -157,8 +157,8 @@ function al2gt($gettextlangs)
     }
     list ($lang, $country, $char) = $infos;
 
-    $lang_score = max_scores($lang_scores, array($lang,$lang.'-'.$country,'*'));
-    $char_score = max_scores($char_scores, array($char,'*'));
+    $lang_score = max_scores($lang_scores, [$lang,$lang.'-'.$country,'*']);
+    $char_score = max_scores($char_scores, [$char,'*']);
     if ($char_score == 0) {
       // exclude charsets the user refuses
       continue;
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index 2821f6df5..d2776767f 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -43,7 +43,7 @@ class Combinations implements Iterator
 
   function current()
   {
-    $r = array();
+    $r = [];
     for ($i = 0; $i < $this->size; $i++) {
       $r[] = $this->input[$this->current[$i]];
     }
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index 15586d2de..9a8e6b6ea 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -34,20 +34,20 @@ class CopyPasteHandler
   /*!
    * \brief This array contains all dns of the currently copied objects
    */
-  protected $objectList = array();
+  protected $objectList = [];
   /*!
    * \brief This array contains all remaining objects to paste
    */
-  protected $queue = array();
+  protected $queue = [];
 
   /*!
    *  \brief The dn of the last edited object
    */
   var $lastdn = "";
 
-  var $disallowed_objects = array();
-  var $objects_to_fix     = array();
-  var $clean_objects      = array();
+  var $disallowed_objects = [];
+  var $objects_to_fix     = [];
+  var $clean_objects      = [];
   var $require_update     = FALSE;
 
   /*!
@@ -56,7 +56,7 @@ class CopyPasteHandler
   function __construct()
   {
     $this->current  = NULL;
-    $this->queue    = array();
+    $this->queue    = [];
   }
 
 
@@ -77,12 +77,12 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
 
-    if (!in_array($action, array('cut','copy'))) {
+    if (!in_array($action, ['cut','copy'])) {
       trigger_error(sprintf('Specified action "%s" does not exists for copy & paste.', $action));
       return FALSE;
     }
 
-    $tmp = array();
+    $tmp = [];
 
     $tmp['method']  = $action;
     $tmp['dn']      = $dn;
@@ -112,8 +112,8 @@ class CopyPasteHandler
   {
     $this->current        = FALSE;
     $this->require_update = TRUE;
-    $this->queue          = array();
-    $this->objectList     = array();
+    $this->queue          = [];
+    $this->objectList     = [];
   }
 
   /*!
@@ -141,7 +141,7 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
     if (!isset($entry['tab_class']) && !isset($entry['type'])) {
-      return array();
+      return [];
     }
 
     $entry['object'] = objects::open($entry['dn'], $entry['type']);
@@ -172,9 +172,9 @@ class CopyPasteHandler
      * Create a list of all entries that can be pasted directly.
      */
     if ($this->require_update) {
-      $this->clean_objects      = array();
-      $this->objects_to_fix     = array();
-      $this->disallowed_objects = array();
+      $this->clean_objects      = [];
+      $this->objects_to_fix     = [];
+      $this->disallowed_objects = [];
 
       /* Put each queued object in one of the above arrays */
       foreach ($this->queue as $key => $entry) {
@@ -199,7 +199,7 @@ class CopyPasteHandler
         }
       }
       if (count($this->disallowed_objects)) {
-        $dns = array();
+        $dns = [];
         foreach ($this->disallowed_objects as $entry) {
           $dns[] = $entry['dn'];
         }
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 72b3618f1..495f88d2f 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -54,7 +54,7 @@ class IconThemeDir
     $this->Size     = $infos['Size'];
     $this->MinSize  = $infos['Size'];
     $this->MaxSize  = $infos['Size'];
-    foreach (array('Type', 'MaxSize', 'MinSize', 'Threshold') as $key) {
+    foreach (['Type', 'MaxSize', 'MinSize', 'Threshold'] as $key) {
       if (isset($infos[$key])) {
         $this->$key = $infos[$key];
       }
@@ -102,7 +102,7 @@ class IconThemeDir
  */
 class IconTheme
 {
-  private $subdirs = array();
+  private $subdirs = [];
   private $path;
   private $parent;
 
@@ -200,14 +200,14 @@ class IconTheme
   }
 
   static public $default_theme  = 'breezy';
-  static public $extensions     = array('png', 'xpm', 'svg');
+  static public $extensions     = ['png', 'xpm', 'svg'];
   static public $find_closest   = FALSE;
 
   /* We store themes in the session. To do otherwise, override these methods. */
   static public $session_var    = 'IconThemes';
   static public function loadThemes($path)
   {
-    $themes = array();
+    $themes = [];
     if ($dir = opendir("$path")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (file_exists("$path/$file/index.theme") && !preg_match("/^\./", $file)) {
@@ -246,162 +246,162 @@ class IconTheme
   }
 
   /* Fallback system */
-  static public $fallbacks = array(
-    'types/user-group'              => array(
-      array('applications','system-users')
-    ),
-    'types/resource-group'          => array(
-      array('actions','resource-group')
-    ),
-    'types/user'                    => array(
-      array('places','user-identity'),
-      array('status','avatar-default'),
-    ),
-    'types/contact'                 => array(
-      array('mimetypes','x-office-contact'),
-    ),
-    'types/certificate'             => array(
-      array('mimetypes','stock_certificate'),
-      array('mimetypes','application-certificate'),
-      array('actions','view-certificate'),
-    ),
-    'applications/user-info'        => array(
-      array('actions','user-properties'),
-      array('types','contact'),
-      array('mimetypes','x-office-contact'),
-      array('types','user'),
-      array('places','user-identity'),
-      array('status','avatar-default'),
-    ),
-    'applications/office-calendar'  => array(
-      array('mimetypes','x-office-calendar'),
-    ),
-    'applications/os-linux'         => array(
-      array('applications','linux'),
-    ),
-    'applications/os-windows'       => array(
-      array('applications','windows'),
-    ),
-    'applications/samba'            => array(
-      array('applications','os-windows'),
-      array('applications','windows'),
-    ),
-    'applications/config-language'  => array(
-      array('applications','locale'),
-      array('applications','preferences-desktop-locale'),
-    ),
-    'mimetypes/text-csv'            => array(
-      array('mimetypes','x-office-spreadsheet'),
-      array('mimetypes','text-x-generic'),
-    ),
-    'mimetypes/application-pdf'     => array(
-      array('mimetypes','x-office-document'),
-    ),
-    'actions/application-exit'      => array(
-      array('actions','system-log-out'),
-    ),
-    'actions/document-export'       => array(
-      array('actions','document-send'),
-    ),
-    'actions/download'              => array(
-      array('actions','document-save'),
-    ),
-    'actions/document-restore'      => array(
-      array('actions','document-import'),
-      array('actions','document-open'),
-    ),
-    'actions/document-edit'         => array(
-      array('actions','edit'),
-      array('applications','text-editor'),
-      array('applications','accessories-text-editor'),
-      array('actions','document-open'),
-    ),
-    'actions/snapshot'              => array(
-      array('actions','document-save'),
-    ),
-    'actions/system-reboot'         => array(
-      array('actions','view-refresh'),
-    ),
-    'actions/system-update'         => array(
-      array('applications','system-software-update'),
-    ),
-    'actions/system-reinstall'      => array(
-      array('applications','system-installer'),
-    ),
-    'actions/task-start'            => array(
-      array('actions','media-playback-start'),
-    ),
-    'actions/task-stop'             => array(
-      array('actions','media-playback-stop'),
-    ),
-    'actions/task-schedule'         => array(
-      array('actions','chronometer'),
-      array('actions','smallclock'),
-    ),
-    'actions/up'                    => array(
-      array('actions','go-up'),
-      array('actions','arrow-up'),
-    ),
-    'actions/upload'                => array(
-      array('actions','document-import'),
-      array('actions','up'),
-    ),
-    'actions/down'                  => array(
-      array('actions','go-down'),
-      array('actions','arrow-down'),
-    ),
-    'actions/previous'              => array(
-      array('actions','go-previous'),
-      array('actions','arrow-left'),
-    ),
-    'actions/next'                  => array(
-      array('actions','go-next'),
-      array('actions','arrow-right'),
-    ),
-    'actions/submit'                => array(
-      array('actions','go-jump'),
-    ),
-    'categories/settings'           => array(
-      array('categories','gnome-settings'),
-      array('categories','preferences-other'),
-      array('categories','preferences-system'),
-    ),
-    'categories/checks'             => array(
-      array('actions','view-task'),
-      array('actions','view-calendar-tasks'),
-      array('actions','checkbox'),
-      array('status','task-complete'),
-    ),
-    'devices/server'                => array(
-      array('places','server'),
-      array('places','network-server'),
-    ),
-    'devices/media-cdrom'           => array(
-      array('devices','media-optical'),
-    ),
-    'devices/terminal'              => array(
-      array('applications','utilities-terminal'),
-    ),
-    'devices/computer-windows'      => array(
-      array('applications','os-windows'),
-      array('applications','windows'),
-    ),
-    'devices/template'              => array(
-      array('actions','document-new'),
-    ),
-    'status/object-locked'          => array(
-      array('status','changes-prevent'),
-    ),
-    'status/object-unlocked'        => array(
-      array('status','changes-allow'),
-    ),
-    'status/task-waiting'        => array(
-      array('actions','task-schedule'),
-    ),
-    'places/folder-network'        => array(
-      array('places','folder-remote'),
-    ),
-  );
+  static public $fallbacks = [
+    'types/user-group'              => [
+      ['applications','system-users']
+    ],
+    'types/resource-group'          => [
+      ['actions','resource-group']
+    ],
+    'types/user'                    => [
+      ['places','user-identity'],
+      ['status','avatar-default'],
+    ],
+    'types/contact'                 => [
+      ['mimetypes','x-office-contact'],
+    ],
+    'types/certificate'             => [
+      ['mimetypes','stock_certificate'],
+      ['mimetypes','application-certificate'],
+      ['actions','view-certificate'],
+    ],
+    'applications/user-info'        => [
+      ['actions','user-properties'],
+      ['types','contact'],
+      ['mimetypes','x-office-contact'],
+      ['types','user'],
+      ['places','user-identity'],
+      ['status','avatar-default'],
+    ],
+    'applications/office-calendar'  => [
+      ['mimetypes','x-office-calendar'],
+    ],
+    'applications/os-linux'         => [
+      ['applications','linux'],
+    ],
+    'applications/os-windows'       => [
+      ['applications','windows'],
+    ],
+    'applications/samba'            => [
+      ['applications','os-windows'],
+      ['applications','windows'],
+    ],
+    'applications/config-language'  => [
+      ['applications','locale'],
+      ['applications','preferences-desktop-locale'],
+    ],
+    'mimetypes/text-csv'            => [
+      ['mimetypes','x-office-spreadsheet'],
+      ['mimetypes','text-x-generic'],
+    ],
+    'mimetypes/application-pdf'     => [
+      ['mimetypes','x-office-document'],
+    ],
+    'actions/application-exit'      => [
+      ['actions','system-log-out'],
+    ],
+    'actions/document-export'       => [
+      ['actions','document-send'],
+    ],
+    'actions/download'              => [
+      ['actions','document-save'],
+    ],
+    'actions/document-restore'      => [
+      ['actions','document-import'],
+      ['actions','document-open'],
+    ],
+    'actions/document-edit'         => [
+      ['actions','edit'],
+      ['applications','text-editor'],
+      ['applications','accessories-text-editor'],
+      ['actions','document-open'],
+    ],
+    'actions/snapshot'              => [
+      ['actions','document-save'],
+    ],
+    'actions/system-reboot'         => [
+      ['actions','view-refresh'],
+    ],
+    'actions/system-update'         => [
+      ['applications','system-software-update'],
+    ],
+    'actions/system-reinstall'      => [
+      ['applications','system-installer'],
+    ],
+    'actions/task-start'            => [
+      ['actions','media-playback-start'],
+    ],
+    'actions/task-stop'             => [
+      ['actions','media-playback-stop'],
+    ],
+    'actions/task-schedule'         => [
+      ['actions','chronometer'],
+      ['actions','smallclock'],
+    ],
+    'actions/up'                    => [
+      ['actions','go-up'],
+      ['actions','arrow-up'],
+    ],
+    'actions/upload'                => [
+      ['actions','document-import'],
+      ['actions','up'],
+    ],
+    'actions/down'                  => [
+      ['actions','go-down'],
+      ['actions','arrow-down'],
+    ],
+    'actions/previous'              => [
+      ['actions','go-previous'],
+      ['actions','arrow-left'],
+    ],
+    'actions/next'                  => [
+      ['actions','go-next'],
+      ['actions','arrow-right'],
+    ],
+    'actions/submit'                => [
+      ['actions','go-jump'],
+    ],
+    'categories/settings'           => [
+      ['categories','gnome-settings'],
+      ['categories','preferences-other'],
+      ['categories','preferences-system'],
+    ],
+    'categories/checks'             => [
+      ['actions','view-task'],
+      ['actions','view-calendar-tasks'],
+      ['actions','checkbox'],
+      ['status','task-complete'],
+    ],
+    'devices/server'                => [
+      ['places','server'],
+      ['places','network-server'],
+    ],
+    'devices/media-cdrom'           => [
+      ['devices','media-optical'],
+    ],
+    'devices/terminal'              => [
+      ['applications','utilities-terminal'],
+    ],
+    'devices/computer-windows'      => [
+      ['applications','os-windows'],
+      ['applications','windows'],
+    ],
+    'devices/template'              => [
+      ['actions','document-new'],
+    ],
+    'status/object-locked'          => [
+      ['status','changes-prevent'],
+    ],
+    'status/object-unlocked'        => [
+      ['status','changes-allow'],
+    ],
+    'status/task-waiting'        => [
+      ['actions','task-schedule'],
+    ],
+    'places/folder-network'        => [
+      ['places','folder-remote'],
+    ],
+  ];
 }
 
 ?>
diff --git a/include/class_Language.inc b/include/class_Language.inc
index bd99cb243..13bc7dff8 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -118,7 +118,7 @@ class Language
     $languages = static::getList();
 
     /* Move supported languages to flat list */
-    $langs = array();
+    $langs = [];
     foreach (array_keys($languages) as $lang) {
       $langs[] = $lang.'.UTF-8';
     }
@@ -135,7 +135,7 @@ class Language
   public static function getList($ownLanguage = FALSE)
   {
     /* locales in english */
-    $tmp_english = array(
+    $tmp_english = [
       'en_US' => 'English',
       'af_ZA' => 'Afrikaans',
       'ar_EG' => 'Arabic',
@@ -166,12 +166,12 @@ class Language
       'vi_VN' => 'Vietnamese',
       'zh_TW' => 'Taiwanese',
       'zh_CN' => 'Chinese',
-    );
+    ];
 
-    $ret = array();
+    $ret = [];
     if ($ownLanguage) {
       /* locales in their own language */
-      $tmp_ownlang = array(
+      $tmp_ownlang = [
         'en_US' => 'English',
         'ar_EG' => 'عربية',
         'af_ZA' => 'Afrikaans',
@@ -202,7 +202,7 @@ class Language
         'vi_VN' => 'Tiếng Việt',
         'zh_TW' => 'Taiwanese',
         'zh_CN' => '中文, 汉语, 漢語',
-      );
+      ];
 
       foreach ($tmp_english as $key => $name) {
         $ret[$key] = _($name).' ('.$tmp_ownlang[$key].')';
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index 034241092..ced9d6910 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -28,17 +28,17 @@ class SnapshotCreateDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName' => 'SnapshotCreateDialog',
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Creating an object snapshot'),
-        'attrs' => array(
+        'attrs' => [
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -53,9 +53,9 @@ class SnapshotCreateDialog extends simplePlugin
             '',
             'SnapshotHandler'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn, $parent, $aclCategory)
@@ -124,7 +124,7 @@ class SnapshotCreateDialog extends simplePlugin
  */
 class SnapshotsAttribute extends OrderedArrayAttribute
 {
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = FALSE;
@@ -138,18 +138,18 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     parent::setParent($plugin);
     if (is_object($this->plugin)) {
       if ($this->plugin->global) {
-        $this->setHeaders(array(
+        $this->setHeaders([
           _('DN'),
           _('Date'),
           _('Description'),
           ''
-        ));
+        ]);
       } else {
-        $this->setHeaders(array(
+        $this->setHeaders([
           _('Date'),
           _('Description'),
           ''
-        ));
+        ]);
       }
     }
   }
@@ -183,10 +183,10 @@ class SnapshotsAttribute extends OrderedArrayAttribute
 
   protected function getAttributeArrayValue($key, $value)
   {
-    $values = array(
+    $values = [
       date(_('Y-m-d, H:i:s'), preg_replace('/\-.*$/', '', $value['gosaSnapshotTimestamp'][0])),
       $value['description'][0]
-    );
+    ];
     if ($this->plugin->global) {
       array_unshift($values, $value['gosaSnapshotDN'][0]);
     }
@@ -199,16 +199,16 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     list ($img, $nbicons) = parent::genRowIcons($key, $value);
     $img = $this->renderInputField(
       'image', $id.'_restore_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
         'title' => _('Restore'),
         'alt'   => _('Restore'),
         'class' => 'center'
-      )
+      ]
     ).$img;
     $nbicons++;
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
   protected function handlePostValueActions($id, $postValue)
@@ -245,18 +245,18 @@ class SnapshotRestoreDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName' => 'SnapshotRestoreDialog',
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Restoring snapshots'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -264,12 +264,12 @@ class SnapshotRestoreDialog extends simplePlugin
           new SnapshotsAttribute (
             _('Snapshots'), _('Existing snapshots for this object'),
             'snapshots', FALSE,
-            array(),
+            [],
             'SnapshotHandler'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn, $parent, $global, $aclCategory)
@@ -298,28 +298,28 @@ class SnapshotRestoreDialog extends simplePlugin
   {
     global $ui;
     if ($this->dialog == 'delete') {
-      $objects = array(
-        array(
+      $objects = [
+        [
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        )
-      );
+        ]
+      ];
 
       // Display confirmation dialog.
       $smarty = get_smarty();
       $smarty->assign('objects', $objects);
       $str = $smarty->fetch(get_template_path('simple-remove.tpl'));
     } elseif ($this->dialog == 'restore') {
-      $objects = array(
-        array(
+      $objects = [
+        [
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        )
-      );
+        ]
+      ];
 
       // Display confirmation dialog.
       $smarty = get_smarty();
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 185fec9dd..08072cab8 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -30,23 +30,23 @@
  */
 class SnapshotHandler
 {
-  var $snapshotBases  = array();
+  var $snapshotBases  = [];
 
   protected $enabled;
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Snapshot'),
       'plDescription' => _('Snapshot handler'),
       /* Categories for snapshots are computed in config class */
-      'plCategory'    => array(),
+      'plCategory'    => [],
 
-      'plProvidedAcls' => array(
+      'plProvidedAcls' => [
         'restore_over'    => _('Restore over an existing object'),
         'restore_deleted' => _('Restore a deleted object'),
-      )
-    );
+      ]
+    ];
   }
 
   /*!
@@ -137,10 +137,10 @@ class SnapshotHandler
 
     /* Fetch all objects with */
     $ldap->cd($base);
-    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', array('gosaSnapshotDN'));
+    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', ['gosaSnapshotDN']);
 
     /* Store for which object we have snapshots */
-    $this->snapshotsCache = array();
+    $this->snapshotsCache = [];
     while ($entry = $ldap->fetch()) {
       $this->snapshotsCache[$entry['gosaSnapshotDN'][0]] = TRUE;
     }
@@ -167,7 +167,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -181,12 +181,12 @@ class SnapshotHandler
     $ldap->cd($base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
 
     /* Put results into a list and add description if missing */
-    $objects = array();
+    $objects = [];
     while ($entry = $ldap->fetch()) {
       if (!isset($entry['description'][0])) {
         $entry['description'][0]  = "";
@@ -198,7 +198,7 @@ class SnapshotHandler
     if ($raw) {
       return $objects;
     } else {
-      $tmp = array();
+      $tmp = [];
       foreach ($objects as $entry) {
         $tmp[base64_encode($entry['dn'])] = $entry['description'][0];
       }
@@ -214,7 +214,7 @@ class SnapshotHandler
    *
    * \param array $description Snapshot description
    */
-  function createSnapshot($dn, $description = array())
+  function createSnapshot($dn, $description = [])
   {
     global $config;
     if (!$this->enabled()) {
@@ -226,7 +226,7 @@ class SnapshotHandler
       $dns  = $dn;
       $dn   = $dns[0];
     } else {
-      $dns = array($dn);
+      $dns = [$dn];
     }
 
     $ldap = $config->get_ldap_link();
@@ -252,9 +252,9 @@ class SnapshotHandler
       }
     }
 
-    $target   = array();
+    $target   = [];
 
-    $target['objectClass']            = array('top', 'gosaSnapshotObject');
+    $target['objectClass']            = ['top', 'gosaSnapshotObject'];
     $target['gosaSnapshotData']       = gzcompress($data, 6);
     $target['gosaSnapshotDN']         = $dn;
     $target['description']            = $description;
@@ -307,7 +307,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -315,13 +315,13 @@ class SnapshotHandler
     /* Prepare bases and some other infos */
     $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn);
     $new_base       = $this->snapshot_dn($base_of_object);
-    $tmp            = array();
+    $tmp            = [];
 
     /* Fetch all objects with  gosaSnapshotDN=$dn */
     $ldap->cd($new_base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
 
@@ -345,7 +345,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -353,11 +353,11 @@ class SnapshotHandler
     /* Prepare bases */
     $new_base       = $this->snapshot_dn($base_of_object);
     /* Fetch all objects and check if they do not exist anymore */
-    $tmp  = array();
+    $tmp  = [];
     $ldap->cd($new_base);
     $ldap->search(
       '(objectClass=gosaSnapshotObject)',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
     while ($entry = $ldap->fetch()) {
@@ -394,23 +394,23 @@ class SnapshotHandler
     global $config;
     if (!$this->enabled()) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to restore snapshot');
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
 
     /* Get the snapshot */
-    $ldap->cat($dn, array('gosaSnapshotData'), '(gosaSnapshotData=*)');
+    $ldap->cat($dn, ['gosaSnapshotData'], '(gosaSnapshotData=*)');
     if ($attrs = $ldap->fetch()) {
       /* Prepare import string */
       $data = gzuncompress($attrs['gosaSnapshotData'][0]);
       if ($data === FALSE) {
         msg_dialog::display(_('Error'), _('There was a problem uncompressing snapshot data'), ERROR_DIALOG);
-        return array();
+        return [];
       }
     } else {
       msg_dialog::display(_('Error'), _('Snapshot data could not be fetched'), ERROR_DIALOG);
-      return array();
+      return [];
     }
 
     /* Import the given data */
diff --git a/include/class_acl.inc b/include/class_acl.inc
index 203b6adad..452eca871 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -31,19 +31,19 @@ class acl
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL'),
       'plDescription' => _('Manage access control lists'),
-      'plCategory'    => array(
-        'acl' => array(
+      'plCategory'    => [
+        'acl' => [
           'description'  => _('ACL').'&nbsp;&amp;&nbsp;'._('ACL roles'),
-          'objectClass'  => array('gosaAcl','gosaRole')
-        )
-      ),
-      'plObjectType'  => array(),
+          'objectClass'  => ['gosaAcl','gosaRole']
+        ]
+      ],
+      'plObjectType'  => [],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   /*!
@@ -78,10 +78,10 @@ class acl
   static function explodeRole($role)
   {
     if (!is_array($role)) {
-      $role = array($role);
+      $role = [$role];
     }
     unset($role['count']);
-    $result = array();
+    $result = [];
     foreach ($role as $aclTemplate) {
       $list = explode(':', $aclTemplate, 2);
       $result[$list[0]] = static::extractACL($list[1]);
@@ -106,17 +106,17 @@ class acl
       list($index, $type,$role,$members) = $list;
     }
 
-    $a = array( $index => array(
+    $a = [ $index => [
       'type'    => $type,
       'filter'  => $filter,
       'members' => acl::extractMembers($members),
       'acl'     => base64_decode($role),
-    ));
+    ]];
 
     /* Handle unknown types */
-    if (!in_array($type, array('subtree', 'base'))) {
+    if (!in_array($type, ['subtree', 'base'])) {
       msg_dialog::display(_("Internal error"), sprintf(_("Unkown ACL type '%s'!\nYou might need to run \"fusiondirectory-setup --migrate-acls\" to migrate your acls to the new format."), $type), ERROR_DIALOG);
-      $a = array();
+      $a = [];
     }
     return $a;
   }
@@ -131,7 +131,7 @@ class acl
   static function extractMembers($ms)
   {
     global $config;
-    $a = array();
+    $a = [];
 
     /* Seperate by ',' and place it in an array */
     $ma = explode(',', $ms);
@@ -147,7 +147,7 @@ class acl
           continue;
         }
 
-        $ldap->cat($dn, array('cn', 'objectClass', 'description', 'uid'));
+        $ldap->cat($dn, ['cn', 'objectClass', 'description', 'uid']);
 
         /* Found entry... */
         if ($ldap->count()) {
@@ -187,7 +187,7 @@ class acl
     /* Rip acl off the string, seperate by ',' and place it in an array */
     $as = preg_replace('/^[^:]+:[^:]+:[^:]*:([^:]*).*$/', '\1', $acl);
     $aa = explode(',', $as);
-    $a  = array();
+    $a  = [];
 
     /* Dis-assemble single ACLs */
     foreach ($aa as $sacl) {
@@ -203,11 +203,11 @@ class acl
         if ($idx == 0) {
           /* Create hash for this object */
           $gobject      = $object;
-          $a[$gobject]  = array();
+          $a[$gobject]  = [];
 
           /* Append ACL if set */
           if ($gacl != "") {
-            $a[$gobject] = array($gacl);
+            $a[$gobject] = [$gacl];
           }
         } else {
           /* All other entries get appended... */
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 4acac0237..6a378ce82 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -119,7 +119,7 @@ class baseSelector
   {
     global $config;
 
-    $this->pathMapping = array();
+    $this->pathMapping = [];
 
     foreach ($bases as $base => $dummy) {
       // Build path style display
diff --git a/include/class_config.inc b/include/class_config.inc
index 1585daca9..81d3777ae 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -33,7 +33,7 @@ class config
   /* XML parser */
   var $parser;
   var $config_found     = FALSE;
-  var $tags             = array();
+  var $tags             = [];
   var $level            = 0;
   var $gpc              = 0;
   var $section          = '';
@@ -42,28 +42,28 @@ class config
   /*!
    * \brief Store configuration for current location
    */
-  var $current = array();
+  var $current = [];
 
   /* Link to LDAP-server */
   var $ldap       = NULL;
-  var $referrals  = array();
+  var $referrals  = [];
 
   /*
    * \brief Configuration data
    *
    * - $data['SERVERS'] contains server informations.
    */
-  var $data = array(
-    'LOCATIONS' => array(),
-    'SERVERS'   => array(),
-    'MAIN'      => array(),
-  );
+  var $data = [
+    'LOCATIONS' => [],
+    'SERVERS'   => [],
+    'MAIN'      => [],
+  ];
   var $basedir        = '';
 
   /* Keep a copy of the current department list */
-  var $departments      = array();
-  var $idepartments     = array();
-  var $department_info  = array();
+  var $departments      = [];
+  var $idepartments     = [];
+  var $department_info  = [];
   var $filename         = '';
   var $last_modified    = 0;
 
@@ -106,7 +106,7 @@ class config
     if (($this->filename != '') && ((filemtime($this->filename) != $this->last_modified) || $force)) {
 
       $this->config_found     = FALSE;
-      $this->tags             = array();
+      $this->tags             = [];
       $this->level            = 0;
       $this->gpc              = 0;
       $this->section          = '';
@@ -137,11 +137,11 @@ class config
 
   function parse_data ($xmldata)
   {
-    $this->data = array(
-      'LOCATIONS' => array(),
-      'SERVERS'   => array(),
-      'MAIN'      => array(),
-    );
+    $this->data = [
+      'LOCATIONS' => [],
+      'SERVERS'   => [],
+      'MAIN'      => [],
+    ];
 
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
@@ -223,7 +223,7 @@ class config
 
           /* Add location elements */
           if (!isset($this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'])) {
-            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = array();
+            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = [];
           }
 
           $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'][$server] = $attrs;
@@ -271,7 +271,7 @@ class config
   {
     if (isset($_SERVER['HTTP_FDKEY'])) {
       if (!session::is_set('HTTP_FDKEY_CACHE')) {
-        session::set('HTTP_FDKEY_CACHE', array());
+        session::set('HTTP_FDKEY_CACHE', []);
       }
       $cache = session::get('HTTP_FDKEY_CACHE');
       if (!isset($cache[$creds])) {
@@ -328,7 +328,7 @@ class config
 
       /* Move referrals */
       if (!isset($this->current['REFERRAL'])) {
-        $this->ldap->referrals = array();
+        $this->ldap->referrals = [];
       } else {
         $this->ldap->referrals = $this->current['REFERRAL'];
       }
@@ -362,7 +362,7 @@ class config
 
     /* Sort referrals, if present */
     if (isset($this->current['REFERRAL'])) {
-      $servers  = array();
+      $servers  = [];
       foreach ($this->current['REFERRAL'] as $server => $ref) {
         $servers[$server] = strlen($ref['BASE']);
       }
@@ -424,12 +424,12 @@ class config
     $ldap = $this->get_ldap_link();
 
     /* Get samba servers from LDAP */
-    $this->data['SERVERS']['SAMBA'] = array();
+    $this->data['SERVERS']['SAMBA'] = [];
     if (class_available('sambaAccount')) {
       $ldap->cd($this->current['BASE']);
       $ldap->search('(objectClass=sambaDomain)');
       while ($attrs = $ldap->fetch()) {
-        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = array( 'SID' => '','RIDBASE' => '');
+        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = [ 'SID' => '','RIDBASE' => ''];
         if (isset($attrs['sambaSID'][0])) {
           $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]]['SID'] = $attrs['sambaSID'][0];
         }
@@ -441,10 +441,10 @@ class config
       /* If no samba servers are found, look for configured sid/ridbase */
       if (count($this->data['SERVERS']['SAMBA']) == 0) {
         if (isset($this->current['SAMBASID']) && isset($this->current['SAMBARIDBASE'])) {
-          $this->data['SERVERS']['SAMBA']['DEFAULT'] = array(
+          $this->data['SERVERS']['SAMBA']['DEFAULT'] = [
             'SID'     => $this->get_cfg_value('SAMBASID'),
             'RIDBASE' => $this->get_cfg_value('SAMBARIDBASE')
-          );
+          ];
         }
       }
     }
@@ -459,7 +459,7 @@ class config
 
     if (!$forceReload) {
       $ldap = $this->get_ldap_link();
-      $ldap->cat($dn, array('fusionConfigMd5'));
+      $ldap->cat($dn, ['fusionConfigMd5']);
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs['fusionConfigMd5'][0]) && ($attrs['fusionConfigMd5'][0] == md5_file(CACHE_DIR.'/'.CLASS_CACHE))) {
           return;
@@ -488,10 +488,10 @@ class config
             $mode   = strtoupper($parts[1]);
             $cmd    = $parts[2];
             if (!isset($this->data['HOOKS'][$class])) {
-              $this->data['HOOKS'][$class] = array('CLASS' => $parts[0]);
+              $this->data['HOOKS'][$class] = ['CLASS' => $parts[0]];
             }
             if (!isset($this->data['HOOKS'][$class][$mode])) {
-              $this->data['HOOKS'][$class][$mode] = array();
+              $this->data['HOOKS'][$class][$mode] = [];
             }
             $this->data['HOOKS'][$class][$mode][] = $cmd;
           }
@@ -515,7 +515,7 @@ class config
   function get_departments()
   {
     /* Initialize result hash */
-    $result = array();
+    $result = [];
 
     $result['/'] = $this->current['BASE'];
 
@@ -528,7 +528,7 @@ class config
 
     /* Create a list of attributes to fetch */
     $filter       = '';
-    $ldap_values  = array('objectClass', 'description');
+    $ldap_values  = ['objectClass', 'description'];
     foreach ($types as $type) {
       $i = objects::infos($type);
       $filter         .= $i['filter'];
@@ -559,11 +559,11 @@ class config
 
       $dn   = $attrs['dn'];
       $data = objects::infos($oc);
-      $this->department_info[$dn] = array(
+      $this->department_info[$dn] = [
         'img'         => $data['icon'],
         'description' => (isset($attrs['description'][0]) ? $attrs['description'][0] : ''),
         'name'        => $attrs[$data['mainAttr']][0]
-      );
+      ];
 
       /* Only assign non-root departments */
       if ($dn != $result['/']) {
@@ -580,9 +580,9 @@ class config
     $base   = $this->current['BASE'];
     $qbase  = preg_quote($base, '/');
 
-    $arr  = array();
+    $arr  = [];
 
-    $this->idepartments = array();
+    $this->idepartments = [];
 
     /* Create multidimensional array, with all departments. */
     foreach ($this->departments as $key => $val) {
@@ -634,7 +634,7 @@ class config
    */
   function generateDepartmentArray($arr, $depth = -1, $max_size = 256)
   {
-    $ret = array();
+    $ret = [];
     $depth++;
 
     /* Walk through array */
@@ -691,7 +691,7 @@ class config
   {
     $class = strtoupper($class);
     $value = strtoupper($value);
-    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : array());
+    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : []);
   }
 
   /*!
@@ -725,7 +725,7 @@ class config
     }
 
     if (is_array($default) && !is_array($res)) {
-      $res = array($res);
+      $res = [$res];
     }
 
     return $res;
@@ -794,14 +794,14 @@ class config
 
   function loadPlist (pluglist $plist)
   {
-    $this->data['OBJECTS']    = array();
-    $this->data['SECTIONS']   = array();
-    $this->data['CATEGORIES'] = array();
-    $this->data['MENU']       = array();
-    $this->data['TABS']       = array();
+    $this->data['OBJECTS']    = [];
+    $this->data['SECTIONS']   = [];
+    $this->data['CATEGORIES'] = [];
+    $this->data['MENU']       = [];
+    $this->data['TABS']       = [];
     foreach ($plist->info as $class => &$plInfo) {
       if (isset($plInfo['plObjectType'])) {
-        $entry = array('CLASS' => $class,'NAME' => $plInfo['plShortName']);
+        $entry = ['CLASS' => $class,'NAME' => $plInfo['plShortName']];
         if (isset($plInfo['plSubTabs'])) {
           $entry['SUBTABS'] = strtoupper($plInfo['plSubTabs']);
         }
@@ -814,7 +814,7 @@ class config
             }
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class to tab list");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = array();
+              $this->data['TABS'][$tabclass] = [];
             }
             $this->data['TABS'][$tabclass][] = $entry;
           } else {
@@ -827,7 +827,7 @@ class config
             $value['mainTab']         = $class;
             $value['templateActive']  = FALSE;
             $value['snapshotActive']  = FALSE;
-            foreach (array('ou', 'tabClass') as $i) {
+            foreach (['ou', 'tabClass'] as $i) {
               if (!isset($value[$i])) {
                 $value[$i] = NULL;
               }
@@ -854,7 +854,7 @@ class config
             $this->data['OBJECTS'][strtoupper($key)] = $value;
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class as main tab of");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = array();
+              $this->data['TABS'][$tabclass] = [];
             }
             array_unshift($this->data['TABS'][$tabclass], $entry);
           }
@@ -862,22 +862,22 @@ class config
       } elseif (class_available($class) && is_subclass_of($class, 'simpleService')) {
         @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, "Adding service");
         if (!isset($this->data['TABS']['SERVERSERVICE'])) {
-          $this->data['TABS']['SERVERSERVICE'] = array();
+          $this->data['TABS']['SERVERSERVICE'] = [];
         }
-        $this->data['TABS']['SERVERSERVICE'][] = array(
+        $this->data['TABS']['SERVERSERVICE'][] = [
           'CLASS' => $class,
           'NAME' => $plInfo['plShortName']
-        );
+        ];
       }
       /* Feed categories */
       if (isset($plInfo['plCategory'])) {
         /* Walk through supplied list and feed only translated categories */
-        $cats = array();
+        $cats = [];
         foreach ($plInfo['plCategory'] as $idx => $data) {
           $cat    = (is_numeric($idx) ? $data : $idx);
           $cats[] = $cat;
           if (!isset($this->data['CATEGORIES'][$cat])) {
-            $this->data['CATEGORIES'][$cat] = array( 'classes' => array('0') );
+            $this->data['CATEGORIES'][$cat] = [ 'classes' => ['0'] ];
           }
           if (!empty($plInfo['plProvidedAcls'])) {
             $this->data['CATEGORIES'][$cat]['classes'][] = $class;
@@ -886,7 +886,7 @@ class config
             /* Non numeric index means -> base object containing more informations */
             $this->data['CATEGORIES'][$cat]['description'] = $data['description'];
             if (!is_array($data['objectClass'])) {
-              $data['objectClass'] = array($data['objectClass']);
+              $data['objectClass'] = [$data['objectClass']];
             }
             $this->data['CATEGORIES'][$cat]['objectClass'] = $data['objectClass'];
           }
@@ -895,18 +895,18 @@ class config
       }
     }
     unset($plInfo);
-    $this->data['CATEGORIES']['all'] = array(
-      'classes'     => array('all'),
+    $this->data['CATEGORIES']['all'] = [
+      'classes'     => ['all'],
       'description' => '*&nbsp;'._('All categories'),
-      'objectClass' => array(),
-    );
+      'objectClass' => [],
+    ];
     /* Extract categories definitions from object types */
     foreach ($this->data['OBJECTS'] as $key => $infos) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['aclCategory'], "ObjectType $key category");
       if (strtoupper($infos['aclCategory']) == $key) {
         $cat = $infos['aclCategory'];
         if (!isset($this->data['CATEGORIES'][$cat])) {
-          $this->data['CATEGORIES'][$cat] = array('classes' => array('0'));
+          $this->data['CATEGORIES'][$cat] = ['classes' => ['0']];
         }
         if (!isset($this->data['CATEGORIES'][$cat]['description'])) {
           $this->data['CATEGORIES'][$cat]['description'] = $infos['name'];
@@ -917,11 +917,11 @@ class config
     }
     /* Now that OBJECTS are filled, place tabs in categories */
     foreach ($plist->info as $class => &$plInfo) {
-      $acl = array();
+      $acl = [];
       if (isset($plInfo['plCategory'])) {
         $acl = $plInfo['plCategory'];
         if (!is_array($acl)) {
-          $acl = array($acl);
+          $acl = [$acl];
         }
       }
       if (isset($plInfo['plObjectType'])) {
@@ -985,7 +985,7 @@ class config
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
         if (!is_array($acl)) {
-          $acl = array($acl);
+          $acl = [$acl];
         }
         if (!is_numeric(key($acl))) {
           $acl = array_keys($acl);
@@ -1004,9 +1004,9 @@ class config
           $this->data['SECTIONS'][$section] = array_change_key_case($plInfo['plSection'][$section], CASE_UPPER);
         }
         if (!isset($this->data['MENU'][$section])) {
-          $this->data['MENU'][$section] = array();
+          $this->data['MENU'][$section] = [];
         }
-        $attrs = array('CLASS' => $class);
+        $attrs = ['CLASS' => $class];
         if (!empty($acl)) {
           $attrs['ACL'] = $acl;
         }
@@ -1019,7 +1019,7 @@ class config
             $this->data['SECTIONS'][$section] = array_change_key_case($infos, CASE_UPPER);
           }
           if (!isset($this->data['MENU'][$section])) {
-            $this->data['MENU'][$section] = array();
+            $this->data['MENU'][$section] = [];
           }
         }
         foreach ($entries as $section => $section_entries) {
@@ -1035,15 +1035,15 @@ class config
       $infos['classes'] = array_unique($infos['classes']);
       if (!isset($infos['description'])) {
         $infos['description'] = $name;
-        $infos['objectClass'] = array();
+        $infos['objectClass'] = [];
       }
     }
     unset($infos);
-    $this->data['SECTIONS']['personal'] = array('NAME' => _('My account'), 'PRIORITY' => 40);
-    $personal = array();
+    $this->data['SECTIONS']['personal'] = ['NAME' => _('My account'), 'PRIORITY' => 40];
+    $personal = [];
     foreach ($this->data['TABS']['USERTABS'] as $tab) {
       if ($plist->info[$tab['CLASS']]['plSelfModify']) {
-        $personal[] = array('CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self');
+        $personal[] = ['CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self'];
       }
     }
     if (!isset($this->data['MENU']['personal'])) {
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 1964e81c9..1aa8908f3 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -47,7 +47,7 @@ class divSelectBox
   function __construct($id)
   {
     $this->s_summary  = '';
-    $this->a_entries  = array();
+    $this->a_entries  = [];
     $this->cols       = 0;
     $this->id         = $id;
   }
diff --git a/include/class_filter.inc b/include/class_filter.inc
index 964a390a9..ab7cc9c44 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -30,19 +30,19 @@
 class filter
 {
   var $xmlData;
-  var $elements         = array();
-  var $elementValues    = array();
-  var $alphabetElements = array();
-  var $autocompleter    = array();
+  var $elements         = [];
+  var $elementValues    = [];
+  var $alphabetElements = [];
+  var $autocompleter    = [];
   var $category         = '';
-  var $objectStorage    = array();
+  var $objectStorage    = [];
   var $base             = '';
   var $scope            = '';
   var $query;
   var $initial          = FALSE;
   var $scopeMode        = 'auto';
   var $alphabet         = NULL;
-  var $converter        = array();
+  var $converter        = [];
   var $pid;
   var $headpage;
 
@@ -79,7 +79,7 @@ class filter
 
     // Load filter
     if (!isset($this->xmlData['search']['query'][0])) {
-      $this->xmlData['search']['query'] = array($this->xmlData['search']['query']);
+      $this->xmlData['search']['query'] = [$this->xmlData['search']['query']];
     }
 
     // Move information
@@ -101,7 +101,7 @@ class filter
     // Generate formular data
     if (isset($this->xmlData['element'])) {
       if (!isset($this->xmlData['element'][0])) {
-        $this->xmlData['element'] = array($this->xmlData['element']);
+        $this->xmlData['element'] = [$this->xmlData['element']];
       }
       foreach ($this->xmlData['element'] as $element) {
         // Ignore elements without type
@@ -113,7 +113,7 @@ class filter
 
         // Fix arrays
         if (isset($element['value']) && !isset($element['value'][0])) {
-          $element['value'] = array($element['value']);
+          $element['value'] = [$element['value']];
         }
 
         // Store element for quick access
@@ -266,9 +266,9 @@ class filter
   function setComboBoxOptions($tag, $options)
   {
     if (isset($this->elements[$tag]) && ($this->elements[$tag]['type'] == "combobox")) {
-      $this->elements[$tag]['value'] = array();
+      $this->elements[$tag]['value'] = [];
       foreach ($options as $key => $label) {
-        $this->elements[$tag]['value'][] = array('label' => $label, 'key' => $key);
+        $this->elements[$tag]['value'][] = ['label' => $label, 'key' => $key];
       }
     }
   }
@@ -440,7 +440,7 @@ class filter
   function query()
   {
     global $class_mapping;
-    $result = array();
+    $result = [];
 
     // Return empty list if initial is not set
     if (!$this->initial) {
@@ -465,10 +465,10 @@ class filter
       $attributes = $query['attribute'];
 
       if ($attributes === '*') {
-        $attributes = array($attributes);
+        $attributes = [$attributes];
       } else {
         if (!is_array($attributes)) {
-          $attributes = array($attributes);
+          $attributes = [$attributes];
         }
         // ObjectClass is required to check permissions later.
         if (!in_array('objectClass', $attributes)) {
@@ -485,8 +485,8 @@ class filter
         // Handle converters if present
         if (isset($this->converter[$tag])) {
           preg_match('/([^:]+)::(.*)$/', $this->converter[$tag], $m);
-          $e_set    = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
-          $e_unset  = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
+          $e_set    = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
+          $e_unset  = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
         } else {
           $e_set    = (is_array($element['set']) ? '' : $element['set']);
           $e_unset  = (is_array($element['unset']) ? '' : $element['unset']);
@@ -519,7 +519,7 @@ class filter
         );
       }
       // Now call filter method and merge resulting entries.
-      $result = array_merge($result, call_user_func(array($backend, 'query'),
+      $result = array_merge($result, call_user_func([$backend, 'query'],
             $this, $this->base, $this->scope, $filter, $attributes, $this->category, $objectStorage));
     }
 
@@ -596,7 +596,7 @@ class filter
   function getCompletitionList($cfg, $tag, $value = "*")
   {
     global $class_mapping;
-    $res = array();
+    $res = [];
 
     // Is backend available?
     $backend = "filter".$cfg['backend'];
@@ -608,7 +608,7 @@ class filter
     $filter     = $cfg['filter'];
     $attributes = $cfg['attribute'];
     if (!is_array($attributes)) {
-      $attributes = array($attributes);
+      $attributes = [$attributes];
     }
 
     // ObjectClass is required to check permissions later.
@@ -619,10 +619,10 @@ class filter
     // Make filter
     $filter = preg_replace("/\\$$tag/", ldap_escape_f($value), $filter);
     if (isset($cfg['base']) && isset($cfg['scope']) && isset($cfg['category'])) {
-      $result = call_user_func(array($backend, 'query'), $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
+      $result = call_user_func([$backend, 'query'], $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
                            $cfg["category"], $cfg["objectStorage"]);
     } else {
-      $result = call_user_func(array($backend, 'query'), $this, $this->base, $this->scope, $filter, $attributes,
+      $result = call_user_func([$backend, 'query'], $this, $this->base, $this->scope, $filter, $attributes,
                            $this->category, $this->objectStorage);
     }
 
@@ -648,7 +648,7 @@ class filter
    */
   function processAutocomplete()
   {
-    $result = array();
+    $result = [];
 
     // Introduce maximum number of entries
     $max = 25;
diff --git a/include/class_filterLDAP.inc b/include/class_filterLDAP.inc
index 5e677b4bb..6e6cd13a4 100644
--- a/include/class_filterLDAP.inc
+++ b/include/class_filterLDAP.inc
@@ -48,7 +48,7 @@ class filterLDAP
    *
    * \param array $objectStorage
    */
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = array(""))
+  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = [""])
   {
     return static::get_list($parent, $base, $filter, $attributes, $category, $objectStorage, (($scope == 'sub') ? 'subtree' : 'one'), TRUE);
   }
@@ -80,11 +80,11 @@ class filterLDAP
 
     // Move to arrays for category and objectStorage
     if (!is_array($category)) {
-      $category = array($category);
+      $category = [$category];
     }
 
     // Initialize search bases
-    $bases = array();
+    $bases = [];
 
     foreach ($objectStorage as $oc) {
       $oc = preg_replace('/,$/', '', $oc);
@@ -103,7 +103,7 @@ class filterLDAP
         }
         $parts    = ldap_explode_dn($oc, 0);
         unset($parts['count']);
-        $dnFilter = array();
+        $dnFilter = [];
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -120,7 +120,7 @@ class filterLDAP
     $ldap = $config->get_ldap_link($sizelimit);
 
     // Do search for every base
-    $result = array();
+    $result = [];
     $limit_exceeded = FALSE;
     $ui->getSizeLimitHandler()->setLimitExceeded(FALSE);
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 0b18f481d..58e784ffb 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -40,13 +40,13 @@ class LDAP
   /* connection identifier */
   var $cid;
 
-  var $hasres         = array();
-  var $sr             = array();
-  var $re             = array();
+  var $hasres         = [];
+  var $sr             = [];
+  var $re             = [];
   var $basedn         = "";
 
   /* 0 if we are fetching the first entry, otherwise 1 */
-  var $start          = array();
+  var $start          = [];
 
   /* Any error messages to be returned can be put here */
   var $error          = "";
@@ -54,14 +54,14 @@ class LDAP
   var $srp            = 0;
 
   /* Information read from slapd.oc.conf */
-  var $objectClasses    = array();
+  var $objectClasses    = [];
   /* the dn for the bind */
   var $binddn           = "";
   /* the dn's password for the bind */
   var $bindpw           = "";
   var $hostname         = "";
   var $follow_referral  = FALSE;
-  var $referrals        = array();
+  var $referrals        = [];
 
   /* 0, empty or negative values will disable this check */
   var $max_ldap_query_time  = 0;
@@ -134,7 +134,7 @@ class LDAP
       @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3);
       if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) {
         @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
-        @ldap_set_rebind_proc($this->cid, array(&$this, "rebind"));
+        @ldap_set_rebind_proc($this->cid, [&$this, "rebind"]);
       }
       if (function_exists("ldap_start_tls") && $this->tls) {
         @ldap_start_tls($this->cid);
@@ -245,7 +245,7 @@ class LDAP
    *
    * \param string $scope Scope of the search: subtree/base/one
    */
-  function search($srp, $filter, $attrs = array(), $scope = 'subtree')
+  function search($srp, $filter, $attrs = [], $scope = 'subtree')
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -297,7 +297,7 @@ class LDAP
    *
    * \param array $attrs
    */
-  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = array("*"))
+  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = ["*"])
   {
     trigger_error('deprecated');
     $this->cd($basedn);
@@ -315,7 +315,7 @@ class LDAP
    *
    * \param string $filter Initialized at "(objectclass=*)"
    */
-  function cat($srp, $dn, $attrs = array("*"), $filter = "(objectclass=*)")
+  function cat($srp, $dn, $attrs = ["*"], $filter = "(objectclass=*)")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -347,7 +347,7 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $res  = @ldap_read($this->cid, $dn, $filter, array("objectClass"));
+      $res  = @ldap_read($this->cid, $dn, $filter, ["objectClass"]);
       $rv   = @ldap_count_entries($this->cid, $res);
       return $rv;
     } else {
@@ -381,7 +381,7 @@ class LDAP
    */
   function fetch($srp)
   {
-    $att = array();
+    $att = [];
     if ($this->hascon) {
       if ($this->hasres[$srp]) {
         if ($this->start[$srp] == 0) {
@@ -389,7 +389,7 @@ class LDAP
             $this->start[$srp]  = 1;
             $this->re[$srp]     = @ldap_first_entry($this->cid, $this->sr[$srp]);
           } else {
-            return array();
+            return [];
           }
         } else {
           $this->re[$srp] = @ldap_next_entry($this->cid, $this->re[$srp]);
@@ -400,7 +400,7 @@ class LDAP
         }
         $this->error = @ldap_error($this->cid);
         if (!isset($att)) {
-          $att = array();
+          $att = [];
         }
         return $att;
       } else {
@@ -621,11 +621,11 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $delarray = array();
+      $delarray = [];
 
       /* Get sorted list of dn's to delete */
       $this->cd($deletedn);
-      $this->search($srp, '(objectClass=*)', array('dn'));
+      $this->search($srp, '(objectClass=*)', ['dn']);
       while ($attrs = $this->fetch($srp)) {
         $delarray[$attrs['dn']] = strlen($attrs['dn']);
       }
@@ -658,7 +658,7 @@ class LDAP
       if (isset($attrs['objectClass'])) {
         $ocs = $attrs['objectClass'];
         if (!is_array($ocs)) {
-          $ocs = array($ocs);
+          $ocs = [$ocs];
         }
         if (isset($ocs[$m[1]])) {
           $str .= " - <b>objectClass: ".$ocs[$m[1]]."</b>";
@@ -733,7 +733,7 @@ class LDAP
     $real_path = substr($target, 0, strlen($target) - strlen($this->basedn) - 1);
 
     if ($target == $this->basedn) {
-      $l = array('dummy');
+      $l = ['dummy'];
     } else {
       $l = array_reverse(ldap_explode_dn($real_path, 0));
     }
@@ -767,29 +767,29 @@ class LDAP
 
       $type   = preg_replace('/^([^=]+)=.*$/', '\\1', $cdn);
       $param  = preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn);
-      $param  = preg_replace(array('/\\\\,/','/\\\\"/'), array(',','"'), $param);
+      $param  = preg_replace(['/\\\\,/','/\\\\"/'], [',','"'], $param);
 
-      $attrs = array($type => $param);
+      $attrs = [$type => $param];
 
       /* Hardcoded classes */
       switch ($type) {
         case 'ou':
-          $attrs['objectClass']  = array('organizationalUnit');
+          $attrs['objectClass']  = ['organizationalUnit'];
           break;
         case 'd':
-          $attrs['objectClass']  = array('domain');
+          $attrs['objectClass']  = ['domain'];
           break;
         case 'dc':
-          $attrs['objectClass']  = array('dcObject');
+          $attrs['objectClass']  = ['dcObject'];
           break;
         case 'o':
-          $attrs['objectClass']  = array('organization');
+          $attrs['objectClass']  = ['organization'];
           break;
         case 'l':
-          $attrs['objectClass']  = array('locality');
+          $attrs['objectClass']  = ['locality'];
           break;
         case 'c':
-          $attrs['objectClass']  = array('country');
+          $attrs['objectClass']  = ['country'];
           break;
         default:
           /* Fallback to autodetection of objectClass */
@@ -798,22 +798,22 @@ class LDAP
             exit();
           }
           /* Get name of first matching objectClass */
-          $attrs['objectClass']  = array();
+          $attrs['objectClass']  = [];
           foreach ($classes as $class) {
             if (isset($class['MUST']) && in_array($type, $class['MUST'])) {
               /* Look for first class that is structural... */
               if (isset($class['STRUCTURAL'])) {
-                $attrs['objectClass'] = array($class['NAME']);
+                $attrs['objectClass'] = [$class['NAME']];
                 break;
               }
 
               /* Look for class that is auxiliary... */
               if (empty($attrs['objectClass']) && isset($class['AUXILIARY'])) {
-                $attrs['objectClass'] = array($class['NAME']);
+                $attrs['objectClass'] = [$class['NAME']];
               }
             } elseif (empty($attrs['objectClass']) && isset($class['MAY']) && in_array($type, $class['MAY'])) {
               /* Better than nothing */
-              $attrs['objectClass'] = array($class['NAME']);
+              $attrs['objectClass'] = [$class['NAME']];
             }
           }
 
@@ -929,7 +929,7 @@ class LDAP
 
   function get_credentials($url, $referrals = NULL)
   {
-    $ret    = array();
+    $ret    = [];
     $url    = preg_replace('!\?\?.*$!', '', $url);
     $server = preg_replace('!^([^:]+://[^/]+)/.*$!', '\\1', $url);
 
@@ -970,7 +970,7 @@ class LDAP
 
     // Check scope values
     $scope = trim($scope);
-    if (!empty($scope) && !in_array($scope, array('base', 'one', 'sub', 'children'))) {
+    if (!empty($scope) && !in_array($scope, ['base', 'one', 'sub', 'children'])) {
         trigger_error(sprintf("Invalid parameter for scope '%s', please use 'base', 'one', 'sub' or 'children'."), $scope);
         return NULL;
     }
@@ -986,11 +986,11 @@ class LDAP
     $cmd = 'ldapsearch'.($this->tls ? ' -ZZ' : '')." -x -LLLL -D {$admin} {$filter} {$limit} {$scope} -H {$host} -b {$dn} -w {$pwd} ";
 
     // Create list of process pipes
-    $descriptorspec = array(
-      0 => array("pipe", "r"),  // stdin
-      1 => array("pipe", "w"),  // stdout
-      2 => array("pipe", "w")   // stderr
-    );
+    $descriptorspec = [
+      0 => ["pipe", "r"],  // stdin
+      1 => ["pipe", "w"],  // stdout
+      2 => ["pipe", "w"]   // stderr
+    ];
 
     // Try to open the process
     $process = proc_open($cmd, $descriptorspec, $pipes);
@@ -1017,7 +1017,7 @@ class LDAP
 
   function dn_exists($dn)
   {
-    return @ldap_read($this->cid, $dn, "(objectClass=*)", array("objectClass"));
+    return @ldap_read($this->cid, $dn, "(objectClass=*)", ["objectClass"]);
   }
 
   /*!
@@ -1049,8 +1049,8 @@ class LDAP
 
     /* Joining lines */
     $line       = NULL;
-    $entry      = array();
-    $entries    = array();
+    $entry      = [];
+    $entries    = [];
     $entryStart = -1;
     foreach ($fileLines as $lineNumber => $fileLine) {
       if (preg_match('/^ /', $fileLine)) {
@@ -1088,7 +1088,7 @@ class LDAP
               throw new LDIFImportException(sprintf(_('Error line %s, an entry bloc should start with the dn'), $lineNumber));
             } else {
               if (!isset($entry[$key])) {
-                $entry[$key] = array();
+                $entry[$key] = [];
               }
               $entry[$key][] = $value;
             }
@@ -1102,7 +1102,7 @@ class LDAP
             $entries[$entryStart] = $entry;
           }
           /* Start a new entry */
-          $entry      = array();
+          $entry      = [];
           $entryStart = -1;
           $line       = NULL;
         }
@@ -1184,11 +1184,11 @@ class LDAP
           $attrs = $this->fetch($srp);
           foreach (array_keys($attrs) as $name) {
             if (!is_numeric($name)) {
-              if (in_array($name, array('dn','count'))) {
+              if (in_array($name, ['dn','count'])) {
                 continue;
               }
               if (!isset($data[$name])) {
-                $data[$name] = array();
+                $data[$name] = [];
               }
             }
           }
@@ -1217,7 +1217,7 @@ class LDAP
    */
   function get_objectclasses($force_reload = FALSE)
   {
-    $objectclasses = array();
+    $objectclasses = [];
 
     /* Return the cached results. */
     if (class_available('session') && session::is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
@@ -1226,19 +1226,19 @@ class LDAP
     }
 
     // Get base to look for schema
-    $sr   = @ldap_read($this->cid, '', 'objectClass=*', array('subschemaSubentry'));
+    $sr   = @ldap_read($this->cid, '', 'objectClass=*', ['subschemaSubentry']);
     $attr = @ldap_get_entries($this->cid, $sr);
     if (!isset($attr[0]['subschemasubentry'][0])) {
-      return array();
+      return [];
     }
 
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
-    $objectclasses = array();
-    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', array('objectclasses'));
+    $objectclasses = [];
+    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
-      return array();
+      return [];
     }
     foreach ($attrs[0]['objectclasses'] as $val) {
       if (preg_match('/^[0-9]+$/', $val)) {
@@ -1247,7 +1247,7 @@ class LDAP
       $name = "OID";
       $pattern = explode(' ', $val);
       $ocname = preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val);
-      $objectclasses[$ocname] = array();
+      $objectclasses[$ocname] = [];
 
       foreach ($pattern as $chunk) {
         switch ($chunk) {
@@ -1259,8 +1259,8 @@ class LDAP
           case ')':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, array('MUST', 'MAY')) && !is_array($v)) {
-                $v = array($v);
+              if (in_array($name, ['MUST', 'MAY']) && !is_array($v)) {
+                $v = [$v];
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1278,8 +1278,8 @@ class LDAP
           case 'MAY':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, array('MUST','MAY')) && !is_array($v)) {
-                $v = array($v);
+              if (in_array($name, ['MUST','MAY']) && !is_array($v)) {
+                $v = [$v];
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1367,7 +1367,7 @@ class LDAP
     ldap_bind ($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read ($ds, '', 'objectClass=*', array('namingContexts'));
+    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index b9921b855..2d3bc3c1b 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -36,7 +36,7 @@
   */
 class ldapFilter
 {
-  static $operators = array('!', '&', '|');
+  static $operators = ['!', '&', '|'];
 
   protected $operator;
   protected $subparts;
@@ -82,7 +82,7 @@ class ldapFilter
     return $this->subparts;
   }
 
-  function listUsedAttributes(&$result = array())
+  function listUsedAttributes(&$result = [])
   {
     foreach ($this->subparts as $subpart) {
       $subpart->listUsedAttributes($result);
@@ -93,10 +93,10 @@ class ldapFilter
   static function parse($filter)
   {
     // Remove starting and ending parenthesis
-    $filter = preg_replace(array('/^\\s*\\(/', '/\\)\\s*$/'), '', $filter);
+    $filter = preg_replace(['/^\\s*\\(/', '/\\)\\s*$/'], '', $filter);
 
     if (in_array($filter[0], ldapFilter::$operators)) {
-      $subfilters = array();
+      $subfilters = [];
       /* We need an ending parenthesis in order to catch last subpart correctly */
       $filter .= ')';
       $offset = 0;
@@ -116,7 +116,7 @@ class ldapFilter
           }
         }
       }
-      if (in_array($filter[0], array('&', '|')) && (count($subfilters) == 1)) {
+      if (in_array($filter[0], ['&', '|']) && (count($subfilters) == 1)) {
         /* Avoid empty levels */
         return $subfilters[0];
       } else {
@@ -135,7 +135,7 @@ class ldapFilter
  */
 class ldapFilterLeaf extends ldapFilter
 {
-  static $operators = array('=','~=','>=','<=');
+  static $operators = ['=','~=','>=','<='];
 
   protected $pattern;
   protected $dnFilter = FALSE;
@@ -146,7 +146,7 @@ class ldapFilterLeaf extends ldapFilter
       $this->dnFilter = TRUE;
       $left = substr($left, 0, -4);
     }
-    parent::__construct($operator, array($left, $right));
+    parent::__construct($operator, [$left, $right]);
     if (($this->operator == '=') || ($this->operator == '~=')) {
       $prefix = '';
       $suffix = '';
@@ -156,7 +156,7 @@ class ldapFilterLeaf extends ldapFilter
       if (preg_match('/\\*$/', $this->subparts[1])) {
         $suffix = '.*';
       }
-      $search = preg_replace(array('/^\\*/','/\\*$/'), '', $this->subparts[1]);
+      $search = preg_replace(['/^\\*/','/\\*$/'], '', $this->subparts[1]);
       if ($this->dnFilter) {
         $this->pattern = '/'.$left.'='.$prefix.preg_quote($search, '/').$suffix.',/';
       } elseif ($this->subparts[1] == '*') {
@@ -192,7 +192,7 @@ class ldapFilterLeaf extends ldapFilter
     if (isset($array[$this->subparts[0]])) {
       $values = $array[$this->subparts[0]];
       if (!is_array($values)) {
-        $values = array($values);
+        $values = [$values];
       }
       foreach ($values as $value) {
         switch ($this->operator) {
@@ -221,7 +221,7 @@ class ldapFilterLeaf extends ldapFilter
     return FALSE;
   }
 
-  function listUsedAttributes(&$result = array())
+  function listUsedAttributes(&$result = [])
   {
     if ($this->dnFilter) {
       $result['dn'] = 'dn';
diff --git a/include/class_ldapMultiplexer.inc b/include/class_ldapMultiplexer.inc
index 5563720a8..03f1f0cda 100644
--- a/include/class_ldapMultiplexer.inc
+++ b/include/class_ldapMultiplexer.inc
@@ -60,11 +60,11 @@ class ldapMultiplexer {
   public function __call($methodName, $parameters)
   {
     /* Add resource pointer if the mentioned methods are used */
-    if (in_array($methodName, array('search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'))) {
+    if (in_array($methodName, ['search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'])) {
       array_unshift($parameters, $this->sr);
     }
 
-    return call_user_func_array(array($this->object, $methodName), $parameters);
+    return call_user_func_array([$this->object, $methodName], $parameters);
   }
 
   /*
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 2bd3d5178..4d1d6e890 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -32,7 +32,7 @@ class listing
 {
   var $xmlData;
   var $entries;
-  var $departments            = array();
+  var $departments            = [];
   var $departmentBrowser      = FALSE;
   var $departmentRootVisible  = FALSE;
   var $multiSelect            = FALSE;
@@ -45,24 +45,24 @@ class listing
   var $sortType;
   var $numColumns;
   var $baseMode = FALSE;
-  var $bases    = array();
-  var $header   = array();
-  var $colprops = array();
-  var $filters  = array();
+  var $bases    = [];
+  var $header   = [];
+  var $colprops = [];
+  var $filters  = [];
   var $filter   = NULL;
   var $pid;
-  protected $departmentTypes  = array();
-  var $objectTypes      = array();
-  var $objectTypeCount  = array();
-  protected $objectDnMapping  = array();
+  protected $departmentTypes  = [];
+  var $objectTypes      = [];
+  var $objectTypeCount  = [];
+  protected $objectDnMapping  = [];
   protected $copyPasteHandler = NULL;
   protected $snapshotHandler  = NULL;
-  var $exporter       = array();
-  var $exportColumns  = array();
+  var $exporter       = [];
+  var $exportColumns  = [];
   var $height         = 0;
   var $scrollPosition = 0;
   var $baseSelector;
-  protected $filterCache = array();
+  protected $filterCache = [];
 
   /*!
    * \brief Create a listing
@@ -110,7 +110,7 @@ class listing
     // Load exporters
     foreach (array_keys($class_mapping) as $class) {
       if (preg_match('/Exporter$/', $class)) {
-        $info = call_user_func(array($class, "getInfo"));
+        $info = call_user_func([$class, "getInfo"]);
         if ($info != NULL) {
           $this->exporter = array_merge($this->exporter, $info);
         }
@@ -207,7 +207,7 @@ class listing
       $this->xmlData = xml::xml2array($contents, 1);
     }
 
-    $this->filterCache = array();
+    $this->filterCache = [];
 
     if (!isset($this->xmlData['list'])) {
       return FALSE;
@@ -216,7 +216,7 @@ class listing
     $this->xmlData = $this->xmlData["list"];
 
     // Load some definition values
-    foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode") as $token) {
+    foreach (["departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode"] as $token) {
       if (isset($this->xmlData['definition'][$token]) &&
           $this->xmlData['definition'][$token] == "true") {
         $this->$token = TRUE;
@@ -227,19 +227,19 @@ class listing
     $types = departmentManagement::getDepartmentTypes();
     foreach ($types as $type) {
       $i = objects::infos($type);
-      $this->departmentTypes[strtoupper($type)] = array(
+      $this->departmentTypes[strtoupper($type)] = [
         'label'       => $i['name'],
         'image'       => $i['icon'],
         'category'    => $i['aclCategory'],
         'class'       => $i['mainTab'],
         'filter'      => objects::getFilterObject($type),
         'nameAttr'    => $i['nameAttr'],
-      );
+      ];
     }
-    $this->categories = array();
+    $this->categories = [];
     if (isset($this->xmlData['definition']['objectType'])) {
       if (isset($this->xmlData['definition']['objectType']['label'])) {
-        $this->xmlData['definition']['objectType'] = array($this->xmlData['definition']['objectType']);
+        $this->xmlData['definition']['objectType'] = [$this->xmlData['definition']['objectType']];
       }
       foreach ($this->xmlData['definition']['objectType'] as $index => $otype) {
         $this->objectTypes[$otype['objectClass']] = $otype;
@@ -259,7 +259,7 @@ class listing
     // Assign headline/Categories
     $this->headline = _($this->xmlData['definition']['label']);
     if (!is_array($this->categories)) {
-      $this->categories = array($this->categories);
+      $this->categories = [$this->categories];
     }
 
     // Evaluate columns to be exported
@@ -272,7 +272,7 @@ class listing
     }
 
     if (isset($this->xmlData['actiontriggers']['action']['type'])) {
-      $this->xmlData['actiontriggers']['action'] = array($this->xmlData['actiontriggers']['action']);
+      $this->xmlData['actiontriggers']['action'] = [$this->xmlData['actiontriggers']['action']];
     }
 
     return TRUE;
@@ -281,8 +281,8 @@ class listing
 
   function renderHeader()
   {
-    $this->header = array();
-    $this->plainHeader = array();
+    $this->header = [];
+    $this->plainHeader = [];
 
     // Initialize sort?
     $sortInit = FALSE;
@@ -293,7 +293,7 @@ class listing
       } else {
         $this->sortAttribute = "";
       }
-      $this->sortDirection = array();
+      $this->sortDirection = [];
       $sortInit = TRUE;
     }
 
@@ -540,8 +540,8 @@ class listing
     }
 
     // Reset object counter / DN mapping
-    $this->objectTypeCount = array();
-    $this->objectDnMapping = array();
+    $this->objectTypeCount = [];
+    $this->objectDnMapping = [];
 
     // Do not do anything if this is not our PID
     if ($refresh || !(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) {
@@ -566,12 +566,12 @@ class listing
           $exporter = $this->exporter[$_POST['act']];
           $userinfo = ", "._("created by")." ".$ui->cn." - ".strftime('%A, %d. %B %Y, %H:%M:%S');
           $entryIterator = new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType);
-          $sortedEntries = array();
+          $sortedEntries = [];
           foreach ($entryIterator as $entry) {
             $sortedEntries[] = $entry;
           }
           $instance = new $exporter['class']($this->headline.$userinfo, $this->plainHeader, $sortedEntries, $this->exportColumns);
-          $type = call_user_func(array($exporter['class'], "getInfo"));
+          $type = call_user_func([$exporter['class'], "getInfo"]);
           $type = $type[$_POST['act']];
           send_binary_content($instance->query(), $type['filename'], $type = $type['mime']);
         }
@@ -628,10 +628,10 @@ class listing
 
     // Fix filter if querie returns NULL
     if ($this->entries == NULL) {
-      $this->entries = array();
+      $this->entries = [];
     }
 
-    $this->dnToRow = array();
+    $this->dnToRow = [];
     foreach ($this->entries as $row => $entry) {
       $this->dnToRow[$entry['dn']] = $row;
     }
@@ -682,7 +682,7 @@ class listing
    */
   function parseLayout($layout)
   {
-    $result = array();
+    $result = [];
     $layout = preg_replace("/^\|/", "", $layout);
     $layout = preg_replace("/\|$/", "", $layout);
     $cols   = explode("|", $layout);
@@ -778,7 +778,7 @@ class listing
     } else {
       preg_match_all('/%{filter:([^(]+)\((.*)\)}/', $data, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
 
-      $filters = array();
+      $filters = [];
       foreach ($matches as $match) {
         $cl     = '';
         $method = '';
@@ -794,7 +794,7 @@ class listing
         // Prepare params for function call
         preg_match_all('/"[^"]+"|[^,]+/', $match[2][0], $parts);
 
-        $filters[$match[0][0]] = array($cl, $method, $parts[0], $match[0][1]);
+        $filters[$match[0][0]] = [$cl, $method, $parts[0], $match[0][1]];
       }
 
       $this->filterCache[$type.$index] = $filters;
@@ -802,7 +802,7 @@ class listing
 
     foreach ($filters as $filterstring => $filter) {
       list ($cl, $method, $parts, $offset) = $filter;
-      $params = array();
+      $params = [];
       foreach ($parts as $param) {
         switch ($param) {
           case 'row':
@@ -844,10 +844,10 @@ class listing
       // Replace information
       if ($cl == 'listing') {
         // Non static call
-        $data = substr_replace($data, call_user_func_array(array($this, $method), $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array([$this, $method], $params), $offset, strlen($filterstring));
       } else {
         // Static call
-        $data = substr_replace($data, call_user_func_array(array($cl, $method), $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array([$cl, $method], $params), $offset, strlen($filterstring));
       }
     }
 
@@ -897,7 +897,7 @@ class listing
       }
       $ocs = $objectType['objectClass'];
       if (!is_array($ocs)) {
-        $ocs = array($ocs);
+        $ocs = [$ocs];
       }
 
       $found = TRUE;
@@ -1114,7 +1114,7 @@ class listing
     $row    = func_get_arg(0);
     $pid    = $this->pid;
     $dn     = func_get_arg(1);
-    $params = array(func_get_arg(2));
+    $params = [func_get_arg(2)];
 
     // Collect sprintf params
     for ($i = 3;$i < func_num_args();$i++) {
@@ -1123,7 +1123,7 @@ class listing
         continue;
       }
       if (!is_array($val)) {
-        $val = array($val);
+        $val = [$val];
       }
       $val = array_map(
         function ($v)
@@ -1149,7 +1149,7 @@ class listing
 
   function renderNavigation()
   {
-    $result = array();
+    $result = [];
     $enableBack = TRUE;
     $enableRoot = TRUE;
     $enableHome = TRUE;
@@ -1217,7 +1217,7 @@ class listing
       $this->scrollPosition = $_POST['position_'.$this->pid];
     }
 
-    $result = array("targets" => array(), "action" => "");
+    $result = ["targets" => [], "action" => ""];
 
     // Filter GET with "act" attributes
     if (isset($_GET['act'])) {
@@ -1293,7 +1293,7 @@ class listing
         $target = preg_replace('/^listing_[a-zA-Z_]+_([0-9]+)(|_x)$/', '$1', $key);
         if (isset($this->entries[$target]['dn'])) {
           $result['action']   = preg_replace('/^listing_([a-zA-Z_]+)_[0-9]+(|_x)$/', '$1', $key);
-          $result['targets']  = array($this->entries[$target]['dn']);
+          $result['targets']  = [$this->entries[$target]['dn']];
         }
         break;
       }
@@ -1333,7 +1333,7 @@ class listing
 
     // Make sure we got an array of actions
     if (isset($this->xmlData['actionmenu']['action']['type'])) {
-      $this->xmlData['actionmenu']['action'] = array($this->xmlData['actionmenu']['action']);
+      $this->xmlData['actionmenu']['action'] = [$this->xmlData['actionmenu']['action']];
     }
 
     // Load shortcut
@@ -1374,7 +1374,7 @@ class listing
 
       // Skip entry if there're missing dependencies
       if (isset($action['depends'])) {
-        $deps = is_array($action['depends']) ? $action['depends'] : array($action['depends']);
+        $deps = is_array($action['depends']) ? $action['depends'] : [$action['depends']];
         foreach ($deps as $clazz) {
           if (!isset($class_mapping[$clazz])) {
             continue 2;
@@ -1400,7 +1400,7 @@ class listing
 
         // Ensure we've an array of actions, this enables sub menus with only one action.
         if (isset($action['action']['type'])) {
-          $action['action'] = array($action['action']);
+          $action['action'] = [$action['action']];
         }
 
         $result .= $this->recurseActions($action['action'])."</li>";
@@ -1469,14 +1469,14 @@ class listing
         }
         $acls = $action['acl'];
         if (!is_array($acls)) {
-          $acls = array($acls);
+          $acls = [$acls];
         }
-        $aclInfos = array();
+        $aclInfos = [];
 
         // Every ACL has to pass
         foreach ($acls as $acl) {
           $module   = $this->categories;
-          $aclList  = array();
+          $aclList  = [];
 
           // Replace %acl if available
           if ($otype) {
@@ -1486,12 +1486,12 @@ class listing
           // Split for category and plugins if needed
           if (preg_match('/^\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "[rw]" style entries
-            $aclList = array($match[1]);
+            $aclList = [$match[1]];
           } elseif (preg_match('/^([a-zA-Z0-9]+\/?[a-zA-Z0-9]+)\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "user[rw]" style entries
             // match for "user/user[rw]" style entries
             $module   = $match[1];
-            $aclList  = array($match[2]);
+            $aclList  = [$match[2]];
           } elseif (preg_match('/^([a-zA-Z0-9]+\/[a-zA-Z0-9]+)\[([a-zA-Z0-9]+:[rwcdm]+(,[a-zA-Z0-9]+:[rwcdm]+)*)\]$/', $acl, $match)) {
             // match "user/user[userPassword:rw(,...)*]" style entries
             $module   = $match[1];
@@ -1500,10 +1500,10 @@ class listing
 
           $modules = $module;
           if (!is_array($modules)) {
-            $modules = array($modules);
+            $modules = [$modules];
           }
 
-          $aclInfos[] = array($aclList, $modules);
+          $aclInfos[] = [$aclList, $modules];
         }
         $action['aclInfos'] = $aclInfos;
       }
@@ -1552,7 +1552,7 @@ class listing
     $ui = get_userinfo();
 
     // Fill internal bases list
-    $this->bases = array();
+    $this->bases = [];
     $deps = $ui->get_module_departments($this->categories);
     foreach ($config->idepartments as $key => $dep) {
       if (in_array_ics($key, $deps)) {
@@ -1575,7 +1575,7 @@ class listing
   /*! \brief Get the departments */
   function getDepartments()
   {
-    $departments = array();
+    $departments = [];
     $ui = get_userinfo();
 
     // Get list of supported department types
@@ -1589,12 +1589,12 @@ class listing
       $i    = objects::infos($type);
       $deps = objects::ls(
         $type,
-        array(
+        [
           'dn'            => 'raw',
           'objectClass'   => 'raw',
           'description'   => 'raw',
           $i['mainAttr']  => 'raw'
-        ),
+        ],
         $this->base,
         '',
         FALSE,
diff --git a/include/class_logging.inc b/include/class_logging.inc
index fb9ebb402..dbb91c114 100644
--- a/include/class_logging.inc
+++ b/include/class_logging.inc
@@ -34,7 +34,7 @@
  * \date    11.04.2007
  */
 class logging {
-  static $validActions = array('modify','create','remove','copy','snapshot','view','security','debug');
+  static $validActions = ['modify','create','remove','copy','snapshot','view','security','debug'];
 
   /*!
    * \brief logging method
@@ -49,7 +49,7 @@ class logging {
    *
    * \param $result         A status message, containing errors or success messages
    */
-  static function log ($action, $objecttype, $object, array $changes_array = array(), $result = '')
+  static function log ($action, $objecttype, $object, array $changes_array = [], $result = '')
   {
     global $config, $ui;
 
@@ -59,14 +59,14 @@ class logging {
     }
 
     /* Create data object */
-    $entry = array(
+    $entry = [
       'timestamp'   => microtime(TRUE),
       'action'      => $action,
       'objecttype'  => $objecttype,
       'object'      => $object,
       'changes'     => $changes_array,
       'result'      => $result
-    );
+    ];
     if (isset($ui->dn) && !empty($ui->dn)) {
       $entry['user']  = $ui->dn;
     } else {
@@ -83,7 +83,7 @@ class logging {
     } else {
       if (is_object($config) && preg_match('/true/i', $config->get_cfg_value('logging', ''))) {
         static::log_into_syslog($entry);
-        if (in_array($action, $config->get_cfg_value('auditActions', array()))) {
+        if (in_array($action, $config->get_cfg_value('auditActions', []))) {
           static::log_into_ldap($entry);
         }
       }
@@ -95,9 +95,9 @@ class logging {
    *
    * \param Array $entry to be checked
    */
-  static protected function check($entry = array())
+  static protected function check($entry = [])
   {
-    $msgs = array();
+    $msgs = [];
 
     if (!isset($entry['action']) || !in_array($entry['action'], static::$validActions)) {
       $msgs[] = sprintf(_('Invalid option "%s" specified!'), $entry['action']);
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index 5cd99f74a..a4284e99d 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -598,7 +598,7 @@ class msgPool {
    *
    * \param array $conflicts Tabs this tab conflicts with
    */
-  public static function featuresDisabled($name, array $depends = array(), array $conflicts = array())
+  public static function featuresDisabled($name, array $depends = [], array $conflicts = [])
   {
     if (empty($depends) && empty($conflicts)) {
       return sprintf(_('This account has %s settings disabled. You can enable them by clicking below.'), $name);
@@ -643,9 +643,9 @@ class msgPool {
    */
   public static function months()
   {
-    return array(_("January"), _("February"), _("March"), _("April"),
+    return [_("January"), _("February"), _("March"), _("April"),
         _("May"), _("June"), _("July"), _("August"), _("September"),
-        _("October"), _("November"), _("December"));
+        _("October"), _("November"), _("December")];
   }
 
   /*!
@@ -654,7 +654,7 @@ class msgPool {
    */
   public static function weekdays()
   {
-    return array( _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"));
+    return [ _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")];
   }
 
   /*!
@@ -671,8 +671,8 @@ class msgPool {
   public static function ldaperror($error, $dn = '', $type = 0, $plugin = '')
   {
     /* Assign headline depending on type */
-    $typemap = array(1 => _('read operation'), _('add operation'), _('modify operation'),
-        _('delete operation'), _('search operation'), _('authentication'));
+    $typemap = [1 => _('read operation'), _('add operation'), _('modify operation'),
+        _('delete operation'), _('search operation'), _('authentication')];
 
     if (isset($typemap[$type])) {
       $msg = sprintf(_('LDAP %s failed!'), $typemap[$type]);
@@ -724,7 +724,7 @@ class msgPool {
    *
    * \param array $objects
    */
-  public static function stillInUse($type, $objects = array())
+  public static function stillInUse($type, $objects = [])
   {
     if (!is_array($objects)) {
       return sprintf(_("This '%s' is still in use by this object: %s"), $type, "<br><br>".$objects);
diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index 800a3c28a..dcae37de2 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -41,7 +41,7 @@ class msg_dialog
   private $s_Message  = 'Undefined';
   private $i_Type     = INFO_DIALOG;
   private $i_ID       = 0;
-  private $a_Trace    = array();
+  private $a_Trace    = [];
 
   /*!
    * \brief Message dialog constructor
@@ -54,7 +54,7 @@ class msg_dialog
    */
   public function __construct($s_title, $s_message, $i_type)
   {
-    if (!in_array($i_type, array(INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG))) {
+    if (!in_array($i_type, [INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG])) {
       trigger_error('Invalid msg_dialog type.');
       $i_type = INFO_DIALOG;
     }
@@ -74,7 +74,7 @@ class msg_dialog
     }
 
     if ((!session::is_set('errorsAlreadyPosted')) || !is_array(session::get('errorsAlreadyPosted'))) {
-      session::set('errorsAlreadyPosted', array());
+      session::set('errorsAlreadyPosted', []);
     }
 
     $errorsAlreadyPosted = session::get('errorsAlreadyPosted');
@@ -103,7 +103,7 @@ class msg_dialog
       if (session::is_set('msg_dialogs')) {
         $msg_dialogs = session::get('msg_dialogs');
       } else {
-        $msg_dialogs = array();
+        $msg_dialogs = [];
       }
       $msg_dialogs[] = $this;
       session::set('msg_dialogs', $msg_dialogs);
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 4f6716d26..2c795c046 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -51,7 +51,7 @@ class objects
     }
 
     if (!is_array($types)) {
-      $types = array($types);
+      $types = [$types];
     }
 
     if ($checkAcl) {
@@ -62,9 +62,9 @@ class objects
       $acl = $infos['aclCategory'].'/'.$infos['mainTab'];
     }
 
-    $attrsAcls = array();
+    $attrsAcls = [];
     if ($attrs === NULL) {
-      $attrs = array();
+      $attrs = [];
       foreach ($types as $type) {
         $infos = static::infos($type);
         if ($infos['mainAttr']) {
@@ -75,13 +75,13 @@ class objects
       if (count($attrs) == 1) {
         $attrs = $attrs[0];
       } elseif (count($attrs) == 0) {
-        $attrs = array('dn' => 'raw');
+        $attrs = ['dn' => 'raw'];
       }
     } elseif ($checkAcl) {
       if (is_array($attrs)) {
         $search_attrs = array_keys($attrs);
       } else {
-        $search_attrs = array($attrs);
+        $search_attrs = [$attrs];
       }
       foreach ($search_attrs as $search_attr) {
         $category = $ui->getAttributeCategory($types[0], $search_attr);
@@ -92,7 +92,7 @@ class objects
           continue;
         }
         if (strpos($ui->get_permissions($ou, $category, $search_attr), 'r') === FALSE) {
-          $attrsAcls[$search_attr] = array($category, $search_attr);
+          $attrsAcls[$search_attr] = [$category, $search_attr];
         }
       }
     }
@@ -100,15 +100,15 @@ class objects
     if (is_array($attrs)) {
       $search_attrs = array_keys($attrs);
     } else {
-      $search_attrs = array($attrs);
+      $search_attrs = [$attrs];
     }
 
     try {
       $ldap = static::search($types, $search_attrs, $ou, $filter, $checkAcl, $scope, FALSE, $partialFilterAcls);
     } catch (NonExistingBranchException $e) {
-      return array();
+      return [];
     }
-    $result = array();
+    $result = [];
     while ($fetched_attrs = $ldap->fetch()) {
       $key = $fetched_attrs['dn'];
       if ($checkAcl) {
@@ -122,7 +122,7 @@ class objects
         }
       }
       if (is_array($attrs)) {
-        $result[$key] = array();
+        $result[$key] = [];
         foreach ($attrs as $attr => $mode) {
           if (isset($fetched_attrs[$attr])) {
             if (isset($attrsAcls[$attr]) &&
@@ -168,7 +168,7 @@ class objects
   static function count ($types, $ou = NULL, $filter = '', $checkAcl = FALSE)
   {
     try {
-      $ldap = static::search($types, array('dn'), $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
+      $ldap = static::search($types, ['dn'], $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
       if (!empty($partialFilterAcls)) {
         throw new FusionDirectoryException('Not enough rights to use "'.$partialFilterAcls[0][1].'" in filter');
       }
@@ -180,21 +180,21 @@ class objects
     return $ldap->count();
   }
 
-  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = array())
+  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = [])
   {
     global $config, $ui;
 
-    $partialFilterAcls = array();
+    $partialFilterAcls = [];
 
     if (!is_array($types)) {
-      $types = array($types);
+      $types = [$types];
     }
 
     if ($ou === NULL) {
       $ou = $config->current['BASE'];
     }
 
-    $typeFilters = array();
+    $typeFilters = [];
     foreach ($types as $type) {
       $infos = static::infos($type);
 
@@ -236,7 +236,7 @@ class objects
             continue;
           }
           if (strpos($ui->get_permissions($ou, $category, $acl), 'r') === FALSE) {
-            $partialFilterAcls[] = array($category, $acl);
+            $partialFilterAcls[] = [$category, $acl];
           }
         }
       }
@@ -248,10 +248,10 @@ class objects
     if ($templateSearch) {
       $templateFilterObject = new ldapFilter(
         '&',
-        array(
+        [
           new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
           fdTemplateFilter(ldapFilter::parse($filter)),
-        )
+        ]
       );
       $filter = "$templateFilterObject";
     }
@@ -301,7 +301,7 @@ class objects
 
     if ($text === NULL) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($dn, array($infos['nameAttr']));
+      $ldap->cat($dn, [$infos['nameAttr']]);
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs[$infos['nameAttr']][0])) {
           $text = $attrs[$infos['nameAttr']][0];
@@ -343,7 +343,7 @@ class objects
       } else {
         $parts = ldap_explode_dn(preg_replace('/,$/', '', $infos['ou']), 0);
         unset($parts['count']);
-        $dnFilter = array();
+        $dnFilter = [];
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -396,11 +396,11 @@ class objects
 
     $infos = static::infos($type);
 
-    $templates = array();
+    $templates = [];
     foreach ($config->departments as $key => $value) {
       // Search all templates from the current dn.
       try {
-        $ldap = static::search($type, array('cn'), $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
+        $ldap = static::search($type, ['cn'], $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
       } catch (NonExistingBranchException $e) {
         continue;
       }
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index efadea480..499dde5aa 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -40,23 +40,23 @@ class pluglist {
    * \brief The plInfo result for all plugin, using class as key.
    * Contains the plugin index in 'INDEX' and the path in 'PATH'
    */
-  var $info             = array();
+  var $info             = [];
 
   /*!
    * \brief Foreign references on DNs
    */
-  var $dnForeignRefs = array();
+  var $dnForeignRefs = [];
 
   /*!
    * \brief Using the plugin index as a key, the class of the plugin.
    */
-  var $dirlist          = array();
+  var $dirlist          = [];
 
   /*!
    * \brief List plugin indexes of all plugin that the user have acl for
    */
-  var $allowed_plugins  = array();
-  var $silly_cache      = array();
+  var $allowed_plugins  = [];
+  var $silly_cache      = [];
 
   /*!
    * \brief List the plugins
@@ -71,13 +71,13 @@ class pluglist {
     sort($classes);
 
     $index = 0;
-    $depends_infos    = array();
-    $conflicts_infos  = array();
-    $foreign_refs     = array();
+    $depends_infos    = [];
+    $conflicts_infos  = [];
+    $foreign_refs     = [];
     foreach ($classes as $cname) {
       $cmethods = get_class_methods($cname);
       if (in_array_ics('plInfo', $cmethods)) {
-        $infos = call_user_func(array($cname, 'plInfo'));
+        $infos = call_user_func([$cname, 'plInfo']);
         if (empty($infos)) {
           continue;
         }
@@ -85,7 +85,7 @@ class pluglist {
           $infos['plSelfModify']  = FALSE;
           /* services are not part of any objectType */
           unset($infos['plObjectType']);
-          $infos['plCategory']    = array('server');
+          $infos['plCategory']    = ['server'];
         } else {
           if (!isset($infos['plSelfModify'])) {
             $infos['plSelfModify'] = FALSE;
@@ -103,10 +103,10 @@ class pluglist {
         if (isset($infos['plForeignKeys'])) {
           foreach ($infos['plForeignKeys'] as $ofield => &$pfks) {
             if (!is_array($pfks)) {
-              $pfks = array($pfks);
+              $pfks = [$pfks];
             }
             if (!is_array($pfks[0])) {
-              $pfks = array($pfks);
+              $pfks = [$pfks];
             }
             foreach ($pfks as &$pfk) {
               $class = $pfk[0];
@@ -125,32 +125,32 @@ class pluglist {
               }
               $pfk[2] = $filter;
               if (!isset($foreign_refs[$class])) {
-                $foreign_refs[$class] = array();
+                $foreign_refs[$class] = [];
               }
               if (!isset($foreign_refs[$class][$field])) {
-                $foreign_refs[$class][$field] = array();
+                $foreign_refs[$class][$field] = [];
               }
-              $foreign_refs[$class][$field][] = array($cname, $ofield, $filter);
+              $foreign_refs[$class][$field][] = [$cname, $ofield, $filter];
               if ($field == 'dn') {
-                $this->dnForeignRefs[] = array($cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%"));
+                $this->dnForeignRefs[] = [$cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%")];
               }
             }
             unset($pfk);
           }
           unset($pfks);
         } else {
-          $infos['plForeignKeys'] = array();
+          $infos['plForeignKeys'] = [];
         }
         if (!isset($infos['plProvidedAcls'])) {
-          $infos['plProvidedAcls'] = array();
+          $infos['plProvidedAcls'] = [];
         }
         if (!isset($infos['plCategory'])) {
-          $infos['plCategory'] = array();
+          $infos['plCategory'] = [];
         }
         if (!isset($infos['plTitle']) && isset($infos['plShortName'])) {
           $infos['plTitle'] = $infos['plShortName'];
         }
-        $infos['plForeignRefs']         = array();
+        $infos['plForeignRefs']         = [];
         $infos['INDEX']                 = $index;
         $this->info[$cname]             = $infos;
         $this->dirlist[$index++]        = $cname;
@@ -163,7 +163,7 @@ class pluglist {
           if (isset($this->info[$depend]['plDepending'])) {
             $this->info[$depend]['plDepending'][] = $cname;
           } else {
-            $this->info[$depend]['plDepending'] = array($cname);
+            $this->info[$depend]['plDepending'] = [$cname];
           }
         } else {
           trigger_error("$cname depends of the inexisting plugin $depend");
@@ -178,7 +178,7 @@ class pluglist {
               $this->info[$conflict]['plConflicts'][] = $cname;
             }
           } else {
-            $this->info[$conflict]['plConflicts'] = array($cname);
+            $this->info[$conflict]['plConflicts'] = [$cname];
           }
         }
       }
@@ -190,9 +190,9 @@ class pluglist {
     }
 
     /* Provide field for 'all' */
-    $this->info['all'] = array();
+    $this->info['all'] = [];
 
-    $this->info['all']['plProvidedAcls']  = array();
+    $this->info['all']['plProvidedAcls']  = [];
     $this->info['all']['plDescription']   = _("All objects in this category");
     $this->info['all']['plSelfModify']    = FALSE;
 
@@ -248,11 +248,11 @@ class pluglist {
     /* Split given acl string into an array.
       e.g. "user,systems" => array("user","systems");
          */
-    $acls_to_check = array();
+    $acls_to_check = [];
     if (preg_match("/,/", $aclname)) {
       $acls_to_check = explode(",", $aclname);
     } else {
-      $acls_to_check = array($aclname);
+      $acls_to_check = [$aclname];
     }
 
     foreach ($acls_to_check as $acl_to_check) {
@@ -309,7 +309,7 @@ class pluglist {
         $plDescription = $this->info[$cname]['plDescription'];
       }
       if ($plHeadline && $plIcon && $plDescription) {
-        return array($plHeadline,$plDescription,$href,$plIcon);
+        return [$plHeadline,$plDescription,$href,$plIcon];
       }
     }
     $vars = get_class_vars($cname);
@@ -329,7 +329,7 @@ class pluglist {
     if (!$plIcon) {
       $plIcon = "icon.png";
     }
-    return array($plHeadline,$plDescription,$href,$plIcon);
+    return [$plHeadline,$plDescription,$href,$plIcon];
   }
 
   /*!
diff --git a/include/class_template.inc b/include/class_template.inc
index 3dab9c506..62ca74cbe 100644
--- a/include/class_template.inc
+++ b/include/class_template.inc
@@ -35,25 +35,25 @@ class template
 
   protected $applied = FALSE;
 
-  static protected $uiSpecialAttributes = array('dn','cn','uid','sn','givenName');
+  static protected $uiSpecialAttributes = ['dn','cn','uid','sn','givenName'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Template'),
       'plDescription' => _('Object template, used to create several objects with similar values'),
       /* Categories for templates are computed in config class */
-      'plCategory'    => array(),
+      'plCategory'    => [],
 
-      'plProvidedAcls' => array(
+      'plProvidedAcls' => [
         'template_cn' => _('Template name')
-      )
-    );
+      ]
+    ];
   }
 
   static function getTemplatedTypes()
   {
-    $result = array();
+    $result = [];
     $types  = objects::types();
     foreach ($types as $type) {
       if (in_array($type, departmentManagement::getDepartmentTypes())) {
@@ -82,11 +82,11 @@ class template
       $this->tabObject  = objects::open($this->dn, $this->type);
     }
     $tempTabObject    = objects::open($this->dn, $this->type); /* Used to know which tab is activated */
-    $this->attributes = array();
+    $this->attributes = [];
     $tempTabObject->setActiveTabs($this->tabObject);
     foreach ($this->tabObject->by_object as $class => $tab) {
       if ($tab->is_account || $tab->ignore_account) {
-        $this->attributes[$class] = array();
+        $this->attributes[$class] = [];
         $attrs = array_unique(array_merge($tab->getRequiredAttributes(), $this->needed));
         foreach (array_keys($tab->attributesAccess) as $attr) {
           if (!$tab->showInTemplate($attr, $this->attrs)) {
@@ -140,12 +140,12 @@ class template
 
   function serialize()
   {
-    $attributes = array();
+    $attributes = [];
     foreach ($this->tabObject->by_object as $class => $plugin) {
       if (!isset($this->attributes[$class])) {
         continue;
       }
-      $attributes[$class] = array('name' => $this->tabObject->by_name[$class], 'attrs' => array());
+      $attributes[$class] = ['name' => $this->tabObject->by_name[$class], 'attrs' => []];
       foreach ($this->attributes[$class] as $attr) {
         $plugin->attributesAccess[$attr]->serializeAttribute($attributes[$class]['attrs'], FALSE);
       }
@@ -181,8 +181,8 @@ class template
   function execute()
   {
     $smarty   = get_smarty();
-    $sections = array();
-    $posted   = array();
+    $sections = [];
+    $posted   = [];
     $smarty->assign('baseACL', 'rw');
     foreach ($this->tabObject->by_object as $class => &$plugin) {
       if (!isset($this->attributes[$class])) {
@@ -197,7 +197,7 @@ class template
           return $dialogResult;
         }
       }
-      $attributes = array();
+      $attributes = [];
       foreach ($this->attributes[$class] as $attr) {
         if ($plugin->attributesAccess[$attr]->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -262,7 +262,7 @@ class template
     unset($plugin);
     foreach ($this->attrs as &$array) {
       if (!is_array($array)) {
-        $array = array($array);
+        $array = [$array];
       }
       if (!isset($array['count'])) {
         $array['count'] = count($array);
@@ -271,7 +271,7 @@ class template
     unset($array);
 
     $ui           = get_userinfo();
-    $specialAttrs = array();
+    $specialAttrs = [];
     foreach (static::$uiSpecialAttributes as $attr) {
       $specialAttrs['caller'.strtoupper($attr)] = $ui->$attr;
     }
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 2b56786c2..ae4059eea 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -39,7 +39,7 @@ class templateHandling
     list($depends, $errors) = static::attributesDependencies($attrs);
     msg_dialog::displayChecks($errors);
     $attrs    = static::sortAttributes($attrs, $depends);
-    return array($attrs, $depends);
+    return [$attrs, $depends];
   }
 
   /*! \brief Translate template attrs into $attrs as if taken from LDAP */
@@ -47,14 +47,14 @@ class templateHandling
   {
     unset($template_attrs['fdTemplateField']['count']);
     sort($template_attrs['fdTemplateField']);
-    $attrs = array();
+    $attrs = [];
     foreach ($template_attrs['fdTemplateField'] as $field) {
       preg_match('/^([^:]+):(.*)$/s', $field, $m);
       if (isset($attrs[$m[1]])) {
         $attrs[$m[1]][] = $m[2];
         $attrs[$m[1]]['count']++;
       } else {
-        $attrs[$m[1]]           = array($m[2]);
+        $attrs[$m[1]]           = [$m[2]];
         $attrs[$m[1]]['count']  = 1;
       }
     }
@@ -119,16 +119,16 @@ class templateHandling
   public static function parseMask($mask, array $attrs)
   {
     if ($mask == '|') {
-      return array('%');
+      return ['%'];
     }
     $modifiers = '';
     if (preg_match('/^([^|]+)\|/', $mask, $m)) {
       $modifiers = $m[1];
       $mask = substr($mask, strlen($m[0]));
     }
-    $result = array('');
+    $result = [''];
     if (isset($attrs[$mask])) {
-      $result = array($attrs[$mask]);
+      $result = [$attrs[$mask]];
       if (is_array($result[0])) {
         unset($result[0]['count']);
       }
@@ -137,14 +137,14 @@ class templateHandling
     }
     $len    = strlen($modifiers);
     for ($i = 0; $i < $len; ++$i) {
-      $args     = array();
+      $args     = [];
       $modifier = $modifiers[$i];
       if (preg_match('/^\[([^\]]+)\].*$/', substr($modifiers, $i + 1), $m)) {
         /* get modifier args */
         $args = explode(',', $m[1]);
         $i += strlen($m[1]) + 2;
       }
-      $result_tmp = array();
+      $result_tmp = [];
       foreach ($result as $r) {
         $result_tmp = array_merge($result_tmp, static::applyModifier($modifier, $args, $r));
       }
@@ -166,7 +166,7 @@ class templateHandling
    */
   public static function neededAttrs(array &$attrs, array $flatdepends)
   {
-    $needed = array();
+    $needed = [];
     foreach ($flatdepends as $attr => $depends) {
       if ((isset($depends[0])) && ($depends[0] == 'askme')) {
         $needed[] = $attr;
@@ -233,7 +233,7 @@ class templateHandling
    */
   public static function listFields($string)
   {
-    $fields = array();
+    $fields = [];
     $offset = 0;
     while (preg_match('/%([^%]+)%/', $string, $m, PREG_OFFSET_CAPTURE, $offset)) {
       $mask   = $m[1][0];
@@ -257,15 +257,15 @@ class templateHandling
     // handle ligatures
     $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
     // delete unhandled characters
-    return array(preg_replace('#&[^;]+;#', '', $str));
+    return [preg_replace('#&[^;]+;#', '', $str)];
   }
 
   private static function modifierTranslit(array $args, $str)
   {
     $localesaved = setlocale(LC_CTYPE, 0);
-    $ret = array();
+    $ret = [];
     foreach ($args as $arg) {
-      setlocale(LC_CTYPE, array($arg,"$arg.UTF8"));
+      setlocale(LC_CTYPE, [$arg,"$arg.UTF8"]);
       $ret[] = iconv('UTF8', 'ASCII//TRANSLIT', $str);
     }
     setlocale(LC_CTYPE, $localesaved);
@@ -283,7 +283,7 @@ class templateHandling
       }
     }
 
-    return array(preg_replace($pattern.'u', $replace, $str));
+    return [preg_replace($pattern.'u', $replace, $str)];
   }
 
   private static function modifierSubString(array $args, $str)
@@ -295,13 +295,13 @@ class templateHandling
       array_unshift($args, 0);
     }
     if (preg_match('/^(\d+)-(\d+)$/', $args[1], $m)) {
-      $res = array();
+      $res = [];
       for ($i = $m[1];$i < $m[2]; ++$i) {
         $res[] = mb_substr($str, $args[0], $i);
       }
       return array_unique($res);
     } else {
-      return array(mb_substr($str, $args[0], $args[1]));
+      return [mb_substr($str, $args[0], $args[1])];
     }
   }
 
@@ -366,9 +366,9 @@ class templateHandling
     $dateObject = new DateTime($args[0], new DateTimeZone('UTC'));
     if ($args[1] == 'epoch') {
       /* Special handling for shadowExpire: days since epoch */
-      return array(floor($dateObject->format('U') / 86400));
+      return [floor($dateObject->format('U') / 86400)];
     }
-    return array($dateObject->format($args[1]));
+    return [$dateObject->format($args[1])];
   }
 
   /*! \brief Apply a modifier
@@ -387,27 +387,27 @@ class templateHandling
       /* $str is an array and $m is lowercase, so it's a string modifier */
       $str = reset($str);
     }
-    $result = array($str);
+    $result = [$str];
     switch ($m) {
       case 'F':
         // First
-        $result = array(reset($str));
+        $result = [reset($str)];
         break;
       case 'L':
         // Last
-        $result = array(end($str));
+        $result = [end($str)];
         break;
       case 'J':
         // Join
         if (isset($args[0])) {
-          $result = array(join($args[0], $str));
+          $result = [join($args[0], $str)];
         } else {
-          $result = array(join($str));
+          $result = [join($str)];
         }
         break;
       case 'C':
         // Count
-        $result = array(count($str));
+        $result = [count($str)];
         break;
       case 'M':
         // Match
@@ -415,40 +415,40 @@ class templateHandling
           trigger_error('Missing "M" match modifier parameter');
           $args[] = '/.*/';
         }
-        $result = array(array_filter(
+        $result = [array_filter(
           $str,
           function ($s) use ($args)
           {
             return preg_match($args[0], $s);
           }
-        ));
+        )];
         break;
       case '4':
         // IPv4
-        $result = array(array_filter($str, 'tests::is_ipv4'));
+        $result = [array_filter($str, 'tests::is_ipv4')];
         break;
       case '6':
         // IPv6
-        $result = array(array_filter($str, 'tests::is_ipv6'));
+        $result = [array_filter($str, 'tests::is_ipv6')];
         break;
       case 'c':
         // comment
-        $result = array('');
+        $result = [''];
         break;
       case 'b':
         // base64
         if (isset($args[0]) && ($args[0] == 'd')) {
-          $result = array(base64_decode($str));
+          $result = [base64_decode($str)];
         }
-        $result = array(base64_encode($str));
+        $result = [base64_encode($str)];
         break;
       case 'u':
         // uppercase
-        $result = array(mb_strtoupper($str, 'UTF-8'));
+        $result = [mb_strtoupper($str, 'UTF-8')];
         break;
       case 'l':
         // lowercase
-        $result = array(mb_strtolower($str, 'UTF-8'));
+        $result = [mb_strtolower($str, 'UTF-8')];
         break;
       case 'a':
         // remove accent
@@ -468,22 +468,22 @@ class templateHandling
         break;
       case 'r':
         // random string
-        $result = array(static::modifierRandomString($args));
+        $result = [static::modifierRandomString($args)];
         break;
       case 'd':
         // date
-        $result = array(static::modifierDate($args));
+        $result = [static::modifierDate($args)];
         break;
       default:
         trigger_error("Unkown modifier '$m'");
-        $result = array($str);
+        $result = [$str];
         break;
     }
     return $result;
   }
 
   /*! \brief Flattens dependencies (if a depends of b which depends of c then a depends of c) */
-  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = array())
+  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = [])
   {
     if (isset($cache[$key])) {
       return $cache[$key];
@@ -501,7 +501,7 @@ class templateHandling
               $key,
               $a
             );
-            return array();
+            return [];
           }
           $deps = static::flatDepends ($cache, $errors, $depends, $a, $forbidden);
           if (($askmeKey = array_search('askme', $deps)) !== FALSE) {
@@ -521,11 +521,11 @@ class templateHandling
   protected static function attributesDependencies(array $attrs)
   {
     /* Compute dependencies of each attr */
-    $depends = array();
+    $depends = [];
     foreach ($attrs as $key => $values) {
-      $depends[$key] = array();
+      $depends[$key] = [];
       if (!is_array($values))  {
-        $values = array($values);
+        $values = [$values];
       }
       unset ($values['count']);
       foreach ($values as $value) {
@@ -535,19 +535,19 @@ class templateHandling
           $depends[$key][] = $m[2][0];
           if (!isset($attrs[$m[2][0]])) {
             /* Dependency which has no value might be missing */
-            $attrs[$m[2][0]]    = array();
-            $depends[$m[2][0]]  = array();
+            $attrs[$m[2][0]]    = [];
+            $depends[$m[2][0]]  = [];
           }
         }
       }
     }
     /* Flattens dependencies */
-    $flatdepends  = array();
-    $errors       = array();
+    $flatdepends  = [];
+    $errors       = [];
     foreach ($depends as $key => $value) {
       static::flatDepends($flatdepends, $errors, $depends, $key);
     }
-    return array($flatdepends, $errors);
+    return [$flatdepends, $errors];
   }
 
   /*! \brief Sort attrs depending of dependencies */
diff --git a/include/class_tests.inc b/include/class_tests.inc
index 80d61e696..a74a0e8d8 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -179,7 +179,7 @@ class tests
   public static function is_ip_with_subnetmask($ip)
   {
     /* Generate list of valid submasks */
-    $res = array();
+    $res = [];
     for ($e = 0; $e <= 32; $e++) {
       $res[$e] = $e;
     }
@@ -291,7 +291,7 @@ class tests
   public static function is_department_name_reserved($name)
   {
     global $config;
-    $reservedNames = array();
+    $reservedNames = [];
     foreach ($config->data['OBJECTS'] as $infos) {
       if (isset($infos['ou'])) {
         if ($infos['ou'] != '') {
diff --git a/include/class_timezone.inc b/include/class_timezone.inc
index 315b1b5ca..2b8991aaf 100644
--- a/include/class_timezone.inc
+++ b/include/class_timezone.inc
@@ -77,9 +77,9 @@ class timezone
       $tz       = $config->get_cfg_value('timezone');
       $tz_delta = date('Z', $stamp);
       $tz_delta = $tz_delta / 3600;
-      return array('name' => $tz, 'value' => $tz_delta);
+      return ['name' => $tz, 'value' => $tz_delta];
     } else {
-      return array('name' => 'unconfigured', 'value' => 0);
+      return ['name' => 'unconfigured', 'value' => 0];
     }
   }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 430e8c000..55a0eac87 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -39,15 +39,15 @@ class userinfo
   var $givenName    = '';
   var $gidNumber    = -1;
   var $language     = "";
-  var $subtreeACL   = array();
-  var $ACL          = array();
-  var $groups       = array();
-  var $roles        = array();
-  var $result_cache = array();
+  var $subtreeACL   = [];
+  var $ACL          = [];
+  var $groups       = [];
+  var $roles        = [];
+  var $result_cache = [];
   var $ignoreACL    = FALSE;
 
-  var $ACLperPath             = array();
-  var $ACLperPath_usesFilter  = array();
+  var $ACLperPath             = [];
+  var $ACLperPath_usesFilter  = [];
 
   /*! \brief LDAP size limit handler */
   protected $sizeLimitHandler;
@@ -73,7 +73,7 @@ class userinfo
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, array('cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage'));
+    $ldap->cat($this->dn, ['cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage']);
     $attrs = $ldap->fetch();
 
     $this->uid = $attrs['uid'][0];
@@ -107,7 +107,7 @@ class userinfo
   public function reset_acl_cache()
   {
     /* Initialize ACL_CACHE */
-    session::set('ACL_CACHE', array());
+    session::set('ACL_CACHE', []);
   }
 
   /*!
@@ -116,42 +116,42 @@ class userinfo
   function loadACL()
   {
     global $config;
-    $this->ACL          = array();
-    $this->groups       = array();
-    $this->roles        = array();
-    $this->result_cache = array();
+    $this->ACL          = [];
+    $this->groups       = [];
+    $this->roles        = [];
+    $this->result_cache = [];
     $this->reset_acl_cache();
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
 
     /* Get member groups... */
-    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', array('dn'));
+    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member POSIX groups... */
-    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', array('dn'));
+    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member roles... */
-    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', array('dn'));
+    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->roles[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Crawl through ACLs and move relevant to the tree */
-    $ldap->search("(objectClass=gosaACL)", array('dn', 'gosaAclEntry'));
-    $aclp = array();
-    $aclc = array();
+    $ldap->search("(objectClass=gosaACL)", ['dn', 'gosaAclEntry']);
+    $aclp = [];
+    $aclc = [];
     while ($attrs = $ldap->fetch()) {
 
       /* Insert links in ACL array */
       $aclp[$attrs['dn']] = substr_count($attrs['dn'], ',');
-      $aclc[$attrs['dn']] = array();
-      $ol = array();
+      $aclc[$attrs['dn']] = [];
+      $ol = [];
       for ($i = 0; $i < $attrs['gosaAclEntry']['count']; $i++) {
         $ol = array_merge($ol, acl::explodeAcl($attrs['gosaAclEntry'][$i]));
       }
@@ -163,18 +163,18 @@ class userinfo
       foreach ($data as $prio => $aclc_value) {
         unset($aclc[$dn][$prio]);
 
-        $ldap->cat($aclc_value['acl'], array("gosaAclTemplate"));
+        $ldap->cat($aclc_value['acl'], ["gosaAclTemplate"]);
         $attrs = $ldap->fetch();
 
         if (isset($attrs['gosaAclTemplate'])) {
           $roleAcls = acl::explodeRole($attrs['gosaAclTemplate']);
           foreach ($roleAcls as $roleAcl) {
-            $aclc[$dn][]  = array(
+            $aclc[$dn][]  = [
               'acl'     => $roleAcl,
               'type'    => $aclc_value['type'],
               'members' => $aclc_value['members'],
               'filter'  => $aclc_value['filter']
-            );
+            ];
           }
         }
       }
@@ -219,7 +219,7 @@ class userinfo
 
         if ($interresting) {
           if (!isset($this->ACL[$dn])) {
-            $this->ACL[$dn] = array();
+            $this->ACL[$dn] = [];
           }
           $this->ACL[$dn][$idx] = $type;
         }
@@ -240,7 +240,7 @@ class userinfo
       For object located in 'ou=dep1,ou=base' we have to both ACLs,
        for objects in 'ou=base' we only have to apply on ACL.
      */
-    $without_self_acl = $all_acl = array();
+    $without_self_acl = $all_acl = [];
     foreach ($this->ACL as $dn => $acl) {
       $sdn = $dn;
       do {
@@ -403,11 +403,11 @@ class userinfo
   function get_snapshot_permissions($dn, $categories)
   {
     if (!is_array($categories)) {
-      $categories = array($categories);
+      $categories = [$categories];
     }
     /* Possible permissions for snapshots */
-    $objectPermissions    = array('r', 'c', 'd');
-    $attributePermissions = array('restore_over', 'restore_deleted');
+    $objectPermissions    = ['r', 'c', 'd'];
+    $attributePermissions = ['restore_over', 'restore_deleted'];
     foreach ($categories as $category) {
       $acl = $this->get_permissions($dn, $category.'/SnapshotHandler');
       foreach ($objectPermissions as $i => $perm) {
@@ -455,7 +455,7 @@ class userinfo
     if (isset($ACL_CACHE["$dn+$object+$attribute"])) {
       $ret = $ACL_CACHE["$dn+$object+$attribute"];
       if ($skip_write) {
-        $ret = str_replace(array('w','c','d','m'), '', $ret);
+        $ret = str_replace(['w','c','d','m'], '', $ret);
       }
       return $ret;
     }
@@ -485,7 +485,7 @@ class userinfo
           $ACL_CACHE["$orig_dn+$object+$attribute"] = $ret;
         }
         if ($skip_write) {
-          $ret = str_replace(array('w','c','d','m'), '', $ret);
+          $ret = str_replace(['w','c','d','m'], '', $ret);
         }
         return $ret;
       }
@@ -494,7 +494,7 @@ class userinfo
     /* Get ldap object, for later filter checks */
     $ldap = $config->get_ldap_link();
 
-    $acl = array('r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => '');
+    $acl = ['r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => ''];
 
     /* Build dn array */
     $path = explode(',', $dn);
@@ -630,7 +630,7 @@ class userinfo
 
     /* Remove write if needed */
     if ($skip_write) {
-      $ret = str_replace(array('w','c','d','m'), '', $ret);
+      $ret = str_replace(['w','c','d','m'], '', $ret);
     }
     return $ret;
   }
@@ -661,17 +661,17 @@ class userinfo
     $ACL_CACHE = &session::get_ref('ACL_CACHE');
 
     if (!is_array($module)) {
-      $module = array($module);
+      $module = [$module];
     }
 
-    $res = array();
+    $res = [];
     foreach ($module as $mod) {
       if (isset($ACL_CACHE['MODULE_DEPARTMENTS'][$mod])) {
         $res = array_merge($res, $ACL_CACHE['MODULE_DEPARTMENTS'][$mod]);
         continue;
       }
 
-      $deps = array();
+      $deps = [];
 
       /* Search for per object ACLs */
       foreach ($this->ACL as $dn => $infos) {
@@ -733,7 +733,7 @@ class userinfo
    */
   function mergeACL($acl, $type, $newACL)
   {
-    $at = array("subtree" => "s", "one" => "1");
+    $at = ["subtree" => "s", "one" => "1"];
 
     if ((strpos($newACL, 'w') !== FALSE) && (strpos($newACL, 'r') === FALSE)) {
       $newACL .= "r";
@@ -897,8 +897,8 @@ class userinfo
     $current  = floor(date("U") / 60 / 60 / 24);
 
     // Fetch required attributes
-    foreach (array('shadowExpire','shadowLastChange','shadowMax','shadowMin',
-                'shadowInactive','shadowWarning','sambaKickoffTime') as $attr) {
+    foreach (['shadowExpire','shadowLastChange','shadowMax','shadowMin',
+                'shadowInactive','shadowWarning','sambaKickoffTime'] as $attr) {
       $$attr = (isset($attrs[$attr][0]) ? $attrs[$attr][0] : NULL);
     }
 
@@ -1002,7 +1002,7 @@ class userinfo
   function isBlacklisted($plugin)
   {
     global $config;
-    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', array());
+    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', []);
     foreach ($blacklist as $item) {
       list ($group, $p) = explode('|', $item, 2);
       if ($plugin == $p) {
@@ -1023,7 +1023,7 @@ class userinfo
   {
     global $config;
 
-    if (in_array_ics($attribute, array('objectClass', 'dn'))) {
+    if (in_array_ics($attribute, ['objectClass', 'dn'])) {
       return TRUE;
     }
 
diff --git a/include/class_xml.inc b/include/class_xml.inc
index aeec46690..93b549ee3 100644
--- a/include/class_xml.inc
+++ b/include/class_xml.inc
@@ -41,12 +41,12 @@ class xml {
   static function xml2array($contents, $get_attributes = 1, $priority = 'tag')
   {
     if (!$contents) {
-      return array();
+      return [];
     }
 
     if (!function_exists('xml_parser_create')) {
       trigger_error('xml_parser_create function does not exists');
-      return array();
+      return [];
     }
 
     //Get the XML parser of PHP - PHP must have this module for the parser to work
@@ -62,12 +62,12 @@ class xml {
     }
 
     //Initializations
-    $xml_array    = array();
+    $xml_array    = [];
 
     $current = &$xml_array; //Refference
 
     //Go through the tags.
-    $repeated_tag_index = array();//Multiple tags with same name will be turned into an array
+    $repeated_tag_index = [];//Multiple tags with same name will be turned into an array
     foreach ($xml_values as $data) {
       unset($attributes, $value);//Remove existing values, or there will be trouble
 
@@ -75,8 +75,8 @@ class xml {
       // tag(string), type(string), level(int), attributes(array).
       extract($data);//We could use the array by itself, but this cooler.
 
-      $result = array();
-      $attributes_data = array();
+      $result = [];
+      $attributes_data = [];
 
       if (isset($value)) {
         if ($priority == 'tag') {
@@ -117,7 +117,7 @@ class xml {
             $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
             $repeated_tag_index[$tag.'_'.$level]++;
           } else {//This section will make the value an array if multiple tags with the same name appear together
-            $current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array
+            $current[$tag] = [$current[$tag],$result];//This will combine the existing item and the new item together to make an array
             $repeated_tag_index[$tag.'_'.$level] = 2;
 
             if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
@@ -148,7 +148,7 @@ class xml {
             $repeated_tag_index[$tag.'_'.$level]++;
 
           } else { //If it is not an array...
-            $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
+            $current[$tag] = [$current[$tag],$result]; //...Make it an array using using the existing value and the new value
             $repeated_tag_index[$tag.'_'.$level] = 1;
             if ($priority == 'tag' and $get_attributes) {
               if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
diff --git a/include/exporter/class_cvsExporter.inc b/include/exporter/class_cvsExporter.inc
index 10f011720..284fa361b 100644
--- a/include/exporter/class_cvsExporter.inc
+++ b/include/exporter/class_cvsExporter.inc
@@ -43,7 +43,7 @@ class csvExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = array())
+  function __construct($headline, $header, $entries, $columns = [])
   {
     // If no preset, render all columns
     if (!count($columns)) {
@@ -90,7 +90,7 @@ class csvExporter
    */
   static function getInfo()
   {
-    return array("exportCSV" => array( "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ));
+    return ["exportCSV" => [ "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ]];
   }
 
 }
diff --git a/include/exporter/class_pdfExporter.inc b/include/exporter/class_pdfExporter.inc
index 75d3c396f..56cd04ce8 100644
--- a/include/exporter/class_pdfExporter.inc
+++ b/include/exporter/class_pdfExporter.inc
@@ -51,7 +51,7 @@ class pdfExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = array())
+  function __construct($headline, $header, $entries, $columns = [])
   {
     // Bail out if no FPDF available
     if (!class_exists('FPDF')) {
@@ -141,7 +141,7 @@ class pdfExporter
    */
   function calcWidth($header, $entries, $columns)
   {
-    $width = array();
+    $width = [];
 
     // Locate longest value for each column
     foreach ($columns as $index) {
@@ -193,7 +193,7 @@ class pdfExporter
     // Check if class defined
     $classes = get_declared_classes();
     if (in_array('FPDF', $classes)) {
-      return array("exportPDF" => array( "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ));
+      return ["exportPDF" => [ "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ]];
     } else {
       return NULL;
     }
diff --git a/include/functions.inc b/include/functions.inc
index 1a9bd6138..fb4e41a80 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -53,7 +53,7 @@ define ('POSIX_DISALLOW_PASSWORD_CHANGE', 8);
 
 /* Rewrite german 'umlauts' and spanish 'accents'
    to get better results */
-$REWRITE = array( "ä" => "ae",
+$REWRITE = [ "ä" => "ae",
     "ö" => "oe",
     "ü" => "ue",
     "Ä" => "Ae",
@@ -71,7 +71,7 @@ $REWRITE = array( "ä" => "ae",
     "Ó" => "O",
     "Ú" => "U",
     "ñ" => "ny",
-    "Ñ" => "Ny" );
+    "Ñ" => "Ny" ];
 
 
 /*!
@@ -274,14 +274,14 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
     } else {
       $nf = preg_replace('!^'.$BASE_DIR.'/!', '', $path);
     }
-    $paths = array(
+    $paths = [
       "$BASE_DIR/ihtml/themes/$theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/$default_theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/default/$nf/$filename",
       $path."/$filename"
-    );
+    ];
   } else {
-    $paths = array(
+    $paths = [
       "themes/$theme/$filename",
       "$BASE_DIR/ihtml/themes/$theme/$filename",
       "themes/$default_theme/$filename",
@@ -289,7 +289,7 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
       "themes/default/$filename",
       "$BASE_DIR/ihtml/themes/default/$filename",
       $filename
-    );
+    ];
   }
 
   foreach ($paths as $path) {
@@ -441,8 +441,8 @@ function ldap_get_user ($username)
     exit();
   }
 
-  $allowed_attributes = array('uid','mail');
-  $verify_attr = array();
+  $allowed_attributes = ['uid','mail'];
+  $verify_attr = [];
   $tmp = explode(',', $config->get_cfg_value('loginAttribute'));
   foreach ($tmp as $attr) {
     if (in_array($attr, $allowed_attributes)) {
@@ -451,7 +451,7 @@ function ldap_get_user ($username)
   }
 
   if (count($verify_attr) == 0) {
-    $verify_attr = array('uid');
+    $verify_attr = ['uid'];
   }
   $tmp    = $verify_attr;
   $tmp[]  = 'uid';
@@ -526,7 +526,7 @@ function ldap_login_user ($username, $password)
   }
   if (class_available('ppolicyAccount')) {
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=*)', array(), 'one');
+    $ldap->search('(objectClass=*)', [], 'one');
     if (!$ldap->success()) {
       msg_dialog::display(
         _('Authentication error'),
@@ -561,7 +561,7 @@ function add_lock($object, $user)
       don't need to remove any locks for them later.
    */
   if (!session::is_set('LOCK_CACHE')) {
-    session::set('LOCK_CACHE', array(''));
+    session::set('LOCK_CACHE', ['']);
   }
   if (is_array($object)) {
     foreach ($object as $obj) {
@@ -589,7 +589,7 @@ function add_lock($object, $user)
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
   $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($user).')(fdObjectDn='.base64_encode($object).'))',
-      array('fdUserDn'));
+      ['fdUserDn']);
   if (!$ldap->success()) {
     msg_dialog::display(_('Configuration error'), sprintf(_('Cannot create locking information in LDAP tree. Please contact your administrator!').'<br><br>'._('LDAP server returned: %s'), '<br><br><i>'.$ldap->get_error().'</i>'), ERROR_DIALOG);
     return;
@@ -597,16 +597,16 @@ function add_lock($object, $user)
 
   /* Add lock if none present */
   if ($ldap->count() == 0) {
-    $attrs  = array();
+    $attrs  = [];
     $name   = md5($object);
     $ldap->cd('cn='.$name.','.get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-    $attrs = array(
+    $attrs = [
       'objectClass'     => 'fdLockEntry',
       'fdUserDn'        => $user,
       'fdObjectDn'      => base64_encode($object),
       'cn'              => $name,
       'fdLockTimestamp' => LdapGeneralizedTime::toString(new DateTime('now')),
-    );
+    ];
     $ldap->add($attrs);
     if (!$ldap->success()) {
       msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), "cn=$name,".get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], 0), LDAP_ERROR);
@@ -653,7 +653,7 @@ function del_lock ($object)
   /* Check for existance and remove the entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', array('fdObjectDn'));
+  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', ['fdObjectDn']);
   $attrs = $ldap->fetch();
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), $ldap->getDN(), LDAP_DEL, ERROR_DIALOG));
@@ -681,7 +681,7 @@ function del_user_locks($userdn)
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
 
   /* Remove all objects of this user, drop errors silently in this case. */
-  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', array('fdUserDn'));
+  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', ['fdUserDn']);
   while ($attrs = $ldap->fetch()) {
     $ldap->rmdir($attrs['dn']);
   }
@@ -754,7 +754,7 @@ function get_locks($objects, $allow_readonly = FALSE)
   } else {
     if ($allow_readonly && isset($_POST['open_readonly'])) {
       /* If readonly is allowed and asked and there is only one object, bypass lock detection */
-      return array();
+      return [];
     }
     $filter = '(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($objects).'))';
   }
@@ -762,20 +762,20 @@ function get_locks($objects, $allow_readonly = FALSE)
   /* Get LDAP link, check for presence of the lock entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search($filter, array('fdUserDn','fdObjectDn', 'fdLockTimestamp'));
+  $ldap->search($filter, ['fdUserDn','fdObjectDn', 'fdLockTimestamp']);
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), '', LDAP_SEARCH), LDAP_ERROR);
     return FALSE;
   }
 
-  $locks = array();
+  $locks = [];
   while ($attrs = $ldap->fetch()) {
-    $locks[] = array(
+    $locks[] = [
       'dn'        => $attrs['dn'],
       'object'    => base64_decode($attrs['fdObjectDn'][0]),
       'user'      => $attrs['fdUserDn'][0],
       'timestamp' => LdapGeneralizedTime::fromString($attrs['fdLockTimestamp'][0]),
-    );
+    ];
   }
 
   if (!is_array($objects) && (count($locks) > 1)) {
@@ -881,7 +881,7 @@ function get_ou($name)
 {
   global $config;
 
-  $map = array(
+  $map = [
     'fusiondirectoryRDN'      => 'ou=fusiondirectory,',
     'lockRDN'                 => 'ou=locks,',
     'recoveryTokenRDN'        => 'ou=recovery,',
@@ -931,7 +931,7 @@ function get_ou($name)
     'dsaRDN'    => 'ou=dsa,',
 
     'mimetypeRDN' => 'ou=mime,'
-  );
+  ];
 
   /* Preset ou... */
   if ($config->get_cfg_value($name, '_not_set_') != '_not_set_') {
@@ -1054,9 +1054,9 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
   /* Save variables from LOCK_VARS_TO_USE in session - for further editing */
   if ( session::is_set('LOCK_VARS_TO_USE') && count(session::get('LOCK_VARS_TO_USE'))) {
 
-    $LOCK_VARS_USED_GET       = array();
-    $LOCK_VARS_USED_POST      = array();
-    $LOCK_VARS_USED_REQUEST   = array();
+    $LOCK_VARS_USED_GET       = [];
+    $LOCK_VARS_USED_POST      = [];
+    $LOCK_VARS_USED_REQUEST   = [];
     $LOCK_VARS_TO_USE         = session::get('LOCK_VARS_TO_USE');
 
     foreach ($LOCK_VARS_TO_USE as $name) {
@@ -1083,7 +1083,7 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
         }
       }
     }
-    session::set('LOCK_VARS_TO_USE',        array());
+    session::set('LOCK_VARS_TO_USE',        []);
     session::set('LOCK_VARS_USED_GET',      $LOCK_VARS_USED_GET);
     session::set('LOCK_VARS_USED_POST',     $LOCK_VARS_USED_POST);
     session::set('LOCK_VARS_USED_REQUEST',  $LOCK_VARS_USED_REQUEST);
@@ -1335,10 +1335,10 @@ function netmask_to_bits($netmask)
  */
 function _recurse_gen_uids($rule, array $variables)
 {
-  $result = array();
+  $result = [];
 
   if (!count($variables)) {
-    return array($rule);
+    return [$rule];
   }
 
   reset($variables);
@@ -1373,13 +1373,13 @@ function gen_uids($rule, $attributes)
 
   // Attributes should be arrays
   foreach ($attributes as $name => $value) {
-      $attributes[$name] = array($value);
+      $attributes[$name] = [$value];
   }
 
   /* Search for keys and fill the variables array with all
      possible values for that key. */
   $stripped   = $rule;
-  $variables  = array();
+  $variables  = [];
 
   for ($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
     $variables[$pos]  = templateHandling::parseMask($m[1][0], $attributes);
@@ -1396,7 +1396,7 @@ function gen_uids($rule, $attributes)
   $ldap->cd($config->current['BASE']);
 
   /* Remove used uids and watch out for id tags */
-  $ret = array();
+  $ret = [];
   foreach ($proposed as $uid) {
     /* Check for id tag and modify uid if needed */
     if (preg_match('/\{id(:|!)(\d+)}/', $uid, $m)) {
@@ -1411,7 +1411,7 @@ function gen_uids($rule, $attributes)
         }
         $res = preg_replace('/{id(:|!)\d+}/', $number, $uid);
 
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1428,7 +1428,7 @@ function gen_uids($rule, $attributes)
       while (TRUE) {
         $number = sprintf("%0".$size."d", random_int(0, pow(10, $size) - 1));
         $res    = preg_replace('/{id#(\d+)}/', $number, $uid);
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1440,7 +1440,7 @@ function gen_uids($rule, $attributes)
     }
 
     /* Don't assign used ones */
-    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', array('dn'));
+    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', ['dn']);
     if ($ldap->count() == 0) {
       /* Add uid, but remove {} first. These are invalid anyway. */
       $uid = preg_replace('/[{}]/', '', $uid);
@@ -1501,7 +1501,7 @@ function to_byte($value)
  */
 function humanReadableSize ($bytes, $precision = 2)
 {
-  $format = array(
+  $format = [
     _('%sB'),
     _('%sKiB'),
     _('%sMiB'),
@@ -1511,7 +1511,7 @@ function humanReadableSize ($bytes, $precision = 2)
     _('%sEiB'),
     _('%sZiB'),
     _('%sYiB')
-  );
+  ];
   if ($bytes == 0) {
     return sprintf($format[0], '0');
   }
@@ -1632,7 +1632,7 @@ function scan_directory($path, $sort_desc = FALSE)
     if (is_readable($path)) {
 
       /* Get contents and write it into an array */
-      $ret = array();
+      $ret = [];
 
       $dir = opendir($path);
 
@@ -1857,7 +1857,7 @@ function normalizeLdap($input)
  */
 function check_schema($cfg)
 {
-  $checks = array();
+  $checks = [];
 
   /* Get objectclasses */
   $ldapObj = new LDAP($cfg['admin'], $cfg['password'], $cfg['connection'], FALSE, $cfg['tls']);
@@ -1871,14 +1871,14 @@ function check_schema($cfg)
   /* This is the default block used for each entry.
    *  to avoid unset indexes.
    */
-  $def_check = array(
+  $def_check = [
     'SCHEMA_FILE'       => '',
-    'CLASSES_REQUIRED'  => array(),
+    'CLASSES_REQUIRED'  => [],
     'STATUS'            => FALSE,
     'IS_MUST_HAVE'      => FALSE,
     'MSG'               => '',
     'INFO'              => ''
-  );
+  ];
 
   /* FusionDirectory core schemas */
 
@@ -1886,7 +1886,7 @@ function check_schema($cfg)
   $checks['core-fd'] = $def_check;
 
   $checks['core-fd']['SCHEMA_FILE']       = 'core-fd.schema';
-  $checks['core-fd']['CLASSES_REQUIRED']  = array('fdLockEntry');
+  $checks['core-fd']['CLASSES_REQUIRED']  = ['fdLockEntry'];
   $checks['core-fd']['IS_MUST_HAVE']      = TRUE;
   $checks['core-fd']['INFO']              = _('Main FusionDirectory schema');
 
@@ -1894,7 +1894,7 @@ function check_schema($cfg)
   $checks['core-fd-conf'] = $def_check;
 
   $checks['core-fd-conf']['SCHEMA_FILE']      = 'core-fd-conf.schema';
-  $checks['core-fd-conf']['CLASSES_REQUIRED'] = array('fusionDirectoryConf');
+  $checks['core-fd-conf']['CLASSES_REQUIRED'] = ['fusionDirectoryConf'];
   $checks['core-fd-conf']['IS_MUST_HAVE']     = TRUE;
   $checks['core-fd-conf']['INFO']             = _('Schema used to store FusionDirectory configuration');
 
@@ -1902,7 +1902,7 @@ function check_schema($cfg)
   $checks['ldapns'] = $def_check;
 
   $checks['ldapns']['SCHEMA_FILE']      = 'ldapns.schema';
-  $checks['ldapns']['CLASSES_REQUIRED'] = array('hostObject');
+  $checks['ldapns']['CLASSES_REQUIRED'] = ['hostObject'];
   $checks['ldapns']['IS_MUST_HAVE']     = FALSE;
   $checks['ldapns']['INFO']             = _('Used to store trust mode information in users or groups.');
 
@@ -1910,7 +1910,7 @@ function check_schema($cfg)
   $checks['template-fd'] = $def_check;
 
   $checks['template-fd']['SCHEMA_FILE']      = 'template-fd.schema';
-  $checks['template-fd']['CLASSES_REQUIRED'] = array('fdTemplate');
+  $checks['template-fd']['CLASSES_REQUIRED'] = ['fdTemplate'];
   $checks['template-fd']['IS_MUST_HAVE']     = FALSE;
   $checks['template-fd']['INFO']             = _('Used to store templates.');
 
@@ -1919,7 +1919,7 @@ function check_schema($cfg)
     $checks['nis'] = $def_check;
 
     $checks['nis']['SCHEMA_FILE']       = 'nis.schema';
-    $checks['nis']['CLASSES_REQUIRED']  = array('posixAccount');
+    $checks['nis']['CLASSES_REQUIRED']  = ['posixAccount'];
     $checks['nis']['IS_MUST_HAVE']      = FALSE;
     $checks['nis']['INFO']              = _('Used to store POSIX information.');
   }
@@ -1943,7 +1943,7 @@ function check_schema($cfg)
   $checks['posixGroup'] = $def_check;
 
   $checks['posixGroup']['SCHEMA_FILE']      = 'nis.schema';
-  $checks['posixGroup']['CLASSES_REQUIRED'] = array('posixGroup');
+  $checks['posixGroup']['CLASSES_REQUIRED'] = ['posixGroup'];
   $checks['posixGroup']['STATUS']           = TRUE;
   $checks['posixGroup']['MSG']              = '';
   $checks['posixGroup']['INFO']             = '';
@@ -2022,13 +2022,13 @@ function change_password ($dn, $password, $hash = "")
 {
   $userTabs = objects::open($dn, 'user');
   $userTab  = $userTabs->getBaseObject();
-  $userTab->userPassword = array(
+  $userTab->userPassword = [
     $hash,
     $password,
     $password,
     $userTab->userPassword,
     $userTab->attributesAccess['userPassword']->isLocked()
-  );
+  ];
   $userTabs->save_object();
   $error = $userTabs->save();
   if (!empty($error)) {
@@ -2043,13 +2043,13 @@ function lock_samba_account($mode, array $attrs)
 {
   global $config;
   if (!isset($attrs['sambaNTPassword'][0])) {
-    return array();
+    return [];
   }
-  $modify = array('sambaNTPassword' => $attrs['sambaNTPassword'][0]);
+  $modify = ['sambaNTPassword' => $attrs['sambaNTPassword'][0]];
   if ($config->get_cfg_value("sambaGenLMPassword", "FALSE") == "TRUE") {
     $modify['sambaLMPassword'] = $attrs['sambaLMPassword'][0];
   } else {
-    $modify['sambaLMPassword'] = array();
+    $modify['sambaLMPassword'] = [];
   }
   foreach ($modify as &$pwd) {
     if (is_array($pwd)) {
@@ -2075,7 +2075,7 @@ function lock_ssh_account($mode, array $attrs, &$modify)
   if (!isset($attrs['sshPublicKey'])) {
     return;
   }
-  $modify['sshPublicKey'] = array();
+  $modify['sshPublicKey'] = [];
   for ($i = 0; $i < $attrs['sshPublicKey']['count']; ++$i) {
     if ($mode == 'LOCK') {
       $modify['sshPublicKey'][] = preg_replace('/^/', 'disabled-', $attrs['sshPublicKey'][$i]);
@@ -2109,7 +2109,7 @@ function getEntryCSN($dn)
   $attr = $config->get_cfg_value('modificationDetectionAttribute');
   if ($attr != '') {
     $ldap = $config->get_ldap_link();
-    $ldap->cat($dn, array($attr));
+    $ldap->cat($dn, [$attr]);
     $csn = $ldap->fetch();
     if (isset($csn[$attr][0])) {
       return $csn[$attr][0];
@@ -2293,7 +2293,7 @@ function mark($needle, $haystack)
 function reset_errors()
 {
   session::set('errors', '');
-  session::set('errorsAlreadyPosted', array());
+  session::set('errorsAlreadyPosted', []);
   session::set('LastError', '');
 }
 
@@ -2324,14 +2324,14 @@ if (!function_exists('ldap_escape')) {
   /* PHP version of ldap_escape for PHP<5.6 */
   function ldap_escape($subject, $ignore = '', $flags = 0)
   {
-    static $charMaps = array(
-      LDAP_ESCAPE_FILTER => array('\\', '*', '(', ')', "\x00"),
-      LDAP_ESCAPE_DN     => array('\\', ',', '=', '+', '<', '>', ';', '"', '#'),
-    );
+    static $charMaps = [
+      LDAP_ESCAPE_FILTER => ['\\', '*', '(', ')', "\x00"],
+      LDAP_ESCAPE_DN     => ['\\', ',', '=', '+', '<', '>', ';', '"', '#'],
+    ];
 
     // Pre-process the char maps on first call
     if (!isset($charMaps[0])) {
-      $charMaps[0] = array();
+      $charMaps[0] = [];
       for ($i = 0; $i < 256; $i++) {
         $charMaps[0][chr($i)] = sprintf('\\%02x', $i);
       }
@@ -2351,7 +2351,7 @@ if (!function_exists('ldap_escape')) {
 
     // Create the base char map to escape
     $flags = (int)$flags;
-    $charMap = array();
+    $charMap = [];
     if ($flags & LDAP_ESCAPE_FILTER) {
       $charMap += $charMaps[LDAP_ESCAPE_FILTER];
     }
@@ -2467,7 +2467,7 @@ function mail_utf8($to, $from_user, $from_email, $subject, $message, $replyto_us
 function fopenWithErrorHandling()
 {
   $args   = func_get_args();
-  $errors = array();
+  $errors = [];
   set_error_handler(
     function ($errno, $errstr, $errfile, $errline, $errcontext) use (&$errors)
     {
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index e0a29422d..73d2761d0 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -154,8 +154,8 @@ class printAClass {
 
         case 'string':
           if ($this->look_for_leading_tabs && preg_match('/^\t/m', $value)) {
-            $search       = array('/\t/', "/\n/");
-            $replace      = array('&nbsp;&nbsp;&nbsp;','<br />');
+            $search       = ['/\t/', "/\n/"];
+            $replace      = ['&nbsp;&nbsp;&nbsp;','<br />'];
             $value        = preg_replace( $search, $replace, htmlspecialchars($value));
             $value_style  = 'color:black;border:1px gray dotted;';
           } else {
diff --git a/include/password-methods/class_password-methods-crypt.inc b/include/password-methods/class_password-methods-crypt.inc
index 935ae1f7d..ac7c99793 100644
--- a/include/password-methods/class_password-methods-crypt.inc
+++ b/include/password-methods/class_password-methods-crypt.inc
@@ -116,7 +116,7 @@ class passwordMethodCrypt extends passwordMethod
    */
   static function get_hash_name()
   {
-    $hashes = array();
+    $hashes = [];
     if (CRYPT_STD_DES == 1) {
       $hashes[] = "crypt/standard-des";
     }
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index 3f3f5ef2f..e84c20362 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -57,7 +57,7 @@ class passwordMethodsasl extends passwordMethod
     } else {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->cat($dn, array($attr));
+      $ldap->cat($dn, [$attr]);
       if ($ldap->count() == 1) {
         $attrs = $ldap->fetch();
         $this->uid = $attrs[$attr][0];
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index 713f7adc1..acc7541e9 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -29,7 +29,7 @@
  */
 class passwordMethod
 {
-  var $attrs    = array();
+  var $attrs    = [];
   var $display  = FALSE;
   var $hash     = '';
 
@@ -170,7 +170,7 @@ class passwordMethod
 
       // Call pre hooks
       $userClass = new user($dn);
-      $errors = $userClass->callHook('PRE'.$mode, array(), $ret);
+      $errors = $userClass->callHook('PRE'.$mode, [], $ret);
       if (!empty($errors)) {
         msg_dialog::displayChecks($errors);
         return FALSE;
@@ -191,7 +191,7 @@ class passwordMethod
       // Call the password post-lock hook, if defined.
       if ($ldap->success()) {
         $userClass = new user($dn);
-        $errors = $userClass->callHook('POST'.$mode, array(), $ret);
+        $errors = $userClass->callHook('POST'.$mode, [], $ret);
         if (!empty($errors)) {
           msg_dialog::displayChecks($errors);
         }
@@ -221,7 +221,7 @@ class passwordMethod
           if ($test->is_available()) {
             $plugs = $test->get_hash_name();
             if (!is_array($plugs)) {
-              $plugs = array($plugs);
+              $plugs = [$plugs];
             }
 
             foreach ($plugs as $plugname) {
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 2bc9c961e..52531b460 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -44,15 +44,15 @@ function htmlunescape ($html)
 
 function html_trace($errstr = "")
 {
-  static $hideArgs = array(
-    'ldap_init'         => array(3),
-    'ldap_login_user'   => array(1),
-    'change_password'   => array(1),
-    'cred_decrypt'      => array(0,1),
-    'LDAP/__construct'  => array(1),
-  );
+  static $hideArgs = [
+    'ldap_init'         => [3],
+    'ldap_login_user'   => [1],
+    'change_password'   => [1],
+    'cred_decrypt'      => [0,1],
+    'LDAP/__construct'  => [1],
+  ];
   if (!function_exists('debug_backtrace')) {
-    return array ('', '');
+    return  ['', ''];
   }
   $trace = array_slice(debug_backtrace(), 1);
 
@@ -104,7 +104,7 @@ function html_trace($errstr = "")
       if (isset($hideArgs[$func])) {
         $hideArgsIndexes = $hideArgs[$func];
       } else {
-        $hideArgsIndexes = array();
+        $hideArgsIndexes = [];
       }
       $f = function ($index, $arg) use(&$f, $hideArgsIndexes) {
         static $i = 0;
@@ -161,7 +161,7 @@ function html_trace($errstr = "")
   $return_html    .= "</table>";
   $return_mailto  .= rawurlencode("=== /Trace ===");
 
-  return array($return_html, $return_mailto);
+  return [$return_html, $return_mailto];
 }
 
 /*!
@@ -207,7 +207,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
     /* Write to syslog */
     if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-      logging::log('view', 'error', '', array(), "PHP error: $errstr ($errfile, line $errline)");
+      logging::log('view', 'error', '', [], "PHP error: $errstr ($errfile, line $errline)");
     }
 
     set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
@@ -216,7 +216,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
   /* Send all errors to logging class, except "Ldap : No such object" messages*/
   if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-    logging::log('debug', 'all', $errfile, array(), 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
+    logging::log('debug', 'all', $errfile, [], 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
   }
 
   /* Create header as needed */
@@ -358,8 +358,8 @@ $smarty = new Smarty;
 
 $smarty->template_dir = $BASE_DIR.'/ihtml/';
 $smarty->caching      = FALSE;
-$smarty->assign('css_files', array());
-$smarty->assign('js_files', array());
+$smarty->assign('css_files', []);
+$smarty->assign('js_files', []);
 
 $smarty->php_handling = Smarty::PHP_REMOVE;
 
diff --git a/include/select/class_filterLDAPBlacklist.inc b/include/select/class_filterLDAPBlacklist.inc
index 6f533ebf7..4603e41b5 100644
--- a/include/select/class_filterLDAPBlacklist.inc
+++ b/include/select/class_filterLDAPBlacklist.inc
@@ -57,7 +57,7 @@ class filterLDAPBlacklist {
             if (isset($entry[$attr_name])) {
               $test = $entry[$attr_name];
               if (!is_array($test)) {
-                $test = array($test);
+                $test = [$test];
               }
               if (in_array($match, $test)) {
                 unset($entries[$id]);
diff --git a/include/select/groupSelect/class_groupSelect.inc b/include/select/groupSelect/class_groupSelect.inc
index d1bc7a529..5234796a0 100644
--- a/include/select/groupSelect/class_groupSelect.inc
+++ b/include/select/groupSelect/class_groupSelect.inc
@@ -23,7 +23,7 @@
  */
 class groupSelect extends simpleSelectManagement
 {
-  protected $objectTypes  = array('group');
+  protected $objectTypes  = ['group'];
   protected $autoFilter   = FALSE;
 
   function __construct()
diff --git a/include/select/objectSelect/class_objectSelect.inc b/include/select/objectSelect/class_objectSelect.inc
index f76215238..4c805485f 100644
--- a/include/select/objectSelect/class_objectSelect.inc
+++ b/include/select/objectSelect/class_objectSelect.inc
@@ -23,12 +23,12 @@
  */
 class objectSelect extends userSelect
 {
-  protected $objectTypes = array(
+  protected $objectTypes = [
     'user', 'ogroup',
     'application',
     'terminal', 'workstation', 'server', 'printer', 'phone',
     'simpleSecurityObject'
-  );
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  ];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 }
 ?>
diff --git a/include/select/systemSelect/class_systemSelect.inc b/include/select/systemSelect/class_systemSelect.inc
index 0ba3bf30e..3c65d2264 100644
--- a/include/select/systemSelect/class_systemSelect.inc
+++ b/include/select/systemSelect/class_systemSelect.inc
@@ -23,9 +23,9 @@
  */
 class systemSelect extends simpleSelectManagement
 {
-  protected $autoFilterAttributes = array('dn', 'cn', 'ipHostNumber', 'macAddress');
-  protected $objectTypes = array(
+  protected $autoFilterAttributes = ['dn', 'cn', 'ipHostNumber', 'macAddress'];
+  protected $objectTypes = [
     'terminal', 'workstation', 'server'
-  );
+  ];
 }
 ?>
diff --git a/include/select/userGroupSelect/class_userGroupSelect.inc b/include/select/userGroupSelect/class_userGroupSelect.inc
index 70667205b..4052d7a5e 100644
--- a/include/select/userGroupSelect/class_userGroupSelect.inc
+++ b/include/select/userGroupSelect/class_userGroupSelect.inc
@@ -23,13 +23,13 @@
  */
 class userGroupSelect extends userSelect
 {
-  protected $objectTypes = array('user', 'group');
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  protected $objectTypes = ['user', 'group'];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 
   function __construct()
   {
     if (class_available('mixedGroup')) {
-      $this->objectTypes = array('user', 'ogroup');
+      $this->objectTypes = ['user', 'ogroup'];
     }
     parent::__construct();
   }
@@ -40,6 +40,6 @@ class userGroupSelect extends userSelect
  */
 class userGroupRoleSelect extends userGroupSelect
 {
-  protected $objectTypes = array('user', 'group', 'role', 'ogroup');
+  protected $objectTypes = ['user', 'group', 'role', 'ogroup'];
 }
 ?>
diff --git a/include/select/userSelect/class_userSelect.inc b/include/select/userSelect/class_userSelect.inc
index 536f9adb7..2d9640afa 100644
--- a/include/select/userSelect/class_userSelect.inc
+++ b/include/select/userSelect/class_userSelect.inc
@@ -23,22 +23,22 @@
  */
 class userSelect extends simpleSelectManagement
 {
-  protected $objectTypes          = array('user');
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  protected $objectTypes          = ['user'];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c||||';
-    $columns = array (
-      array (
+    $columns = [
+       [
         'label'         => _('Login'),
         'sortAttribute' => 'uid',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,uid)}',
         'export'        => 'true',
-      ),
-    );
+       ],
+    ];
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index 668edb68c..2ee2c567d 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -155,9 +155,9 @@ class BaseSelectorAttribute extends Attribute
     if ($this->disabled) {
       $display = $this->renderInputField(
         'text', '',
-        array(
+        [
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        )
+        ]
       );
     } else {
       $display = '{literal}'.$this->baseSelector->render().'{/literal}';
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index 4930296bb..e9a8f6f6c 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -93,7 +93,7 @@ class BooleanAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = ($this->value ? array('checked' => 'checked') : array());
+    $attributes = ($this->value ? ['checked' => 'checked'] : []);
     if ($this->submitForm) {
       $js       = 'document.mainform.submit();';
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -174,7 +174,7 @@ class ObjectClassBooleanAttribute extends BooleanAttribute
     if (is_array($objectclasses)) {
       $this->objectclasses = $objectclasses;
     } else {
-      $this->objectclasses = array($objectclasses);
+      $this->objectclasses = [$objectclasses];
     }
     parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->setInLdap(FALSE);
diff --git a/include/simpleplugin/attributes/class_CompositeAttribute.inc b/include/simpleplugin/attributes/class_CompositeAttribute.inc
index b21936fba..d24033911 100644
--- a/include/simpleplugin/attributes/class_CompositeAttribute.inc
+++ b/include/simpleplugin/attributes/class_CompositeAttribute.inc
@@ -95,7 +95,7 @@ class CompositeAttribute extends Attribute
     $res = preg_match($this->readFormat, $value, $m);
     if ($res === 1) {
       $m = array_slice($m, 1);
-      $values = array();
+      $values = [];
       foreach (array_keys($this->attributes) as $name) {
         if (isset($m[$name])) {
           $values[] = $m[$name];
@@ -250,7 +250,7 @@ class CompositeAttribute extends Attribute
       }
     } else {
       parent::serializeAttribute($attributes, $form);
-      $subattributes = array();
+      $subattributes = [];
       foreach ($this->attributes as &$attribute) {
         $attribute->setDisabled($this->disabled);
         $attribute->serializeAttribute($subattributes, $form);
@@ -276,7 +276,7 @@ class CompositeAttribute extends Attribute
 
   public function htmlIds()
   {
-    $ret = array();
+    $ret = [];
     foreach ($this->attributes as &$attribute) {
       $ret = array_merge($ret, $attribute->htmlIds());
     }
diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 3f573223f..5e104bcf6 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -143,10 +143,10 @@ class DateAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      array(
+      [
         'value' => '{literal}'.$this->getValue().'{/literal}',
         'class' => 'date'
-      )
+      ]
     );
     $display  .= '{if $'.$this->getAcl().'ACL|regex_replace:"/[cdmr]/":"" == "w"}'.
         '<script type="text/javascript">
@@ -195,7 +195,7 @@ class TimeHisAttribute extends CompositeAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = array(
+    $attributes = [
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -211,7 +211,7 @@ class TimeHisAttribute extends CompositeAttribute
         $ldapName.'_seconds', TRUE,
         0, 59, 0
       )
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)(\d\d)$/', '%02d%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -269,7 +269,7 @@ class TimeHiAttribute extends TimeHisAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = array(
+    $attributes = [
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -280,7 +280,7 @@ class TimeHiAttribute extends TimeHisAttribute
         $ldapName.'_minutes', TRUE,
         0, 59, 0
       )
-    );
+    ];
     CompositeAttribute::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)$/', '%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -293,7 +293,7 @@ class DateTimeAttribute extends CompositeAttribute
 {
   function __construct($label, $description, $ldapName, $required, $acl = '')
   {
-    $attributes = array(
+    $attributes = [
       new DateAttribute(
         _('Date'), '',
         $ldapName.'_date', $required,
@@ -305,7 +305,7 @@ class DateTimeAttribute extends CompositeAttribute
         $ldapName.'_time', $required,
         FALSE
       )
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, '/^(\d{8})(\d{6})$/', '%s%s', $acl, $label);
   }
 }
diff --git a/include/simpleplugin/attributes/class_FileAttribute.inc b/include/simpleplugin/attributes/class_FileAttribute.inc
index a9475f781..54ff0aa08 100644
--- a/include/simpleplugin/attributes/class_FileAttribute.inc
+++ b/include/simpleplugin/attributes/class_FileAttribute.inc
@@ -162,17 +162,17 @@ class FileDownloadAttribute extends FileAttribute
     $display = '';
     if ($this->upload) {
       $display  .= $this->renderInputField('file', $id);
-      $display  .= $this->renderInputField('submit', 'upload'.$id, array('value' => _('Upload')));
+      $display  .= $this->renderInputField('submit', 'upload'.$id, ['value' => _('Upload')]);
     }
     if ($this->download) {
       $display  .= $this->renderInputField(
         'image', 'download'.$id,
-        array(
+        [
           'title' => _('Download'),
           'alt'   => _('Download'),
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-save&amp;size=16',
-        )
+        ]
       );
     }
     return $this->renderAcl($display);
@@ -181,7 +181,7 @@ class FileDownloadAttribute extends FileAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array();
+    $ids  = [];
     if ($this->download) {
       $ids[] = 'download'.$id;
     }
@@ -250,7 +250,7 @@ class FileTextAreaAttribute extends FileDownloadAttribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars */
-    return str_replace(array("\r\n", "\r"), "\n", $value);
+    return str_replace(["\r\n", "\r"], "\n", $value);
   }
 
   function renderFormInput ()
@@ -412,22 +412,22 @@ class ImageAttribute extends FileAttribute
     $display  .= $this->renderInputField('file', $id);
     $display .= $this->renderInputField(
       'image', $id.'_upload',
-      array(
+      [
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=upload&amp;size=16',
         'title' => _('Upload'),
         'alt'   => _('Upload')
-      )
+      ]
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        )
+        ]
       );
     }
     if (($this->getValue() == '') && ($this->placeholder != '')) {
@@ -442,7 +442,7 @@ class ImageAttribute extends FileAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array($id.'_img',$id,'upload'.$id);
+    return [$id.'_img',$id,'upload'.$id];
   }
 
   /*! \brief Fill LDAP value in the attrs array
@@ -458,7 +458,7 @@ class ImageAttribute extends FileAttribute
         }
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = array();
+        $attrs[$this->getLdapName()] = [];
       }
     }
   }
diff --git a/include/simpleplugin/attributes/class_IntAttribute.inc b/include/simpleplugin/attributes/class_IntAttribute.inc
index fe851ad2a..9ab048fca 100644
--- a/include/simpleplugin/attributes/class_IntAttribute.inc
+++ b/include/simpleplugin/attributes/class_IntAttribute.inc
@@ -92,9 +92,9 @@ class IntAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = array(
+    $attributes = [
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    );
+    ];
     if ($this->min !== FALSE) {
       $attributes['min'] = $this->min;
     }
@@ -117,9 +117,9 @@ class IntAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      array(
+      [
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-      )
+      ]
     );
     return $this->renderAcl($display);
   }
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index 8b63d683c..c08350d28 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -24,23 +24,23 @@
 class phoneSelect extends simpleSelectManagement
 {
   protected $multiSelect          = FALSE;
-  protected $autoFilterAttributes = array('dn','cn','ipHostNumber','macAddress','telephoneNumber');
-  protected $objectTypes          = array('phone');
+  protected $autoFilterAttributes = ['dn','cn','ipHostNumber','macAddress','telephoneNumber'];
+  protected $objectTypes          = ['phone'];
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     /* Add column for phone number */
     $data['list']['table']['layout'] .= '|';
-    $columns = array (
-      array (
+    $columns = [
+       [
         'label'         => _('Number'),
         'sortAttribute' => 'telephoneNumber',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,telephoneNumber)}',
         'export'        => 'true',
-      ),
-    );
+       ],
+    ];
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
@@ -58,7 +58,7 @@ class phoneSelect extends simpleSelectManagement
  */
 class mobilePhoneSelect extends phoneSelect
 {
-  protected $objectTypes = array('mobilePhone');
+  protected $objectTypes = ['mobilePhone'];
 }
 
 /*!
@@ -66,7 +66,7 @@ class mobilePhoneSelect extends phoneSelect
  */
 class anyPhoneSelect extends phoneSelect
 {
-  protected $objectTypes = array('phone','mobilePhone');
+  protected $objectTypes = ['phone','mobilePhone'];
 }
 
 /*!
@@ -138,12 +138,12 @@ class PhoneNumberButtonAttribute extends PhoneNumberAttribute
     if ($this->type !== FALSE) {
       $display .= $this->renderAcl($this->renderInputField(
         'image', $id.'_edit',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit')
-        )
+        ]
       ));
     }
     return $display;
diff --git a/include/simpleplugin/attributes/class_SelectAttribute.inc b/include/simpleplugin/attributes/class_SelectAttribute.inc
index 58eeb1f00..b3ac11de3 100644
--- a/include/simpleplugin/attributes/class_SelectAttribute.inc
+++ b/include/simpleplugin/attributes/class_SelectAttribute.inc
@@ -43,7 +43,7 @@ class SelectAttribute extends Attribute
    *  \param array $outputs The labels corresponding to the choices, leave to NULL if you want to display the choices themselves
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = array(), $defaultValue = "", $outputs = NULL, $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = [], $defaultValue = "", $outputs = NULL, $acl = "")
   {
     if (!in_array($defaultValue, $choices, TRUE) && isset($choices[0])) {
       $defaultValue = $choices[0];
@@ -90,7 +90,7 @@ class SelectAttribute extends Attribute
    */
   function setDisplayChoices ($values)
   {
-    $this->outputs = array();
+    $this->outputs = [];
     $values = array_values($values);
     $i = 0;
     foreach ($this->choices as $choice) {
@@ -234,7 +234,7 @@ class ObjectSelectAttribute extends SelectAttribute
 
   function __construct ($label, $description, $ldapName, $required, $objectType, $objectAttrs = NULL, $objectFilter = '', $acl = "")
   {
-    parent::__construct($label, $description, $ldapName, $required, array(), "", NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, [], "", NULL, $acl);
     $this->objectType   = $objectType;
     $this->objectAttrs  = $objectAttrs;
     $this->objectFilter = $objectFilter;
diff --git a/include/simpleplugin/attributes/class_SetAttribute.inc b/include/simpleplugin/attributes/class_SetAttribute.inc
index 0101290fc..d206b8d1c 100644
--- a/include/simpleplugin/attributes/class_SetAttribute.inc
+++ b/include/simpleplugin/attributes/class_SetAttribute.inc
@@ -35,7 +35,7 @@ class SetAttribute extends Attribute
    *  \param array $values The default values
    *  \param boolean $valueUnicity Should the value unicity be checked
    */
-  function __construct ($attribute, $values = array(), $valueUnicity = TRUE)
+  function __construct ($attribute, $values = [], $valueUnicity = TRUE)
   {
     parent::__construct(
       $attribute->getLabel(),     $attribute->getDescription(),
@@ -60,7 +60,7 @@ class SetAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -222,20 +222,20 @@ class SetAttribute extends Attribute
       if ($this->linearRendering || $readOnly) {
         parent::renderAttribute($attributes, $readOnly);
       } else {
-        $attributes[$this->getLdapName()] = array(
+        $attributes[$this->getLdapName()] = [
           'htmlid'      => $this->getForHtmlId(),
           'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
           'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
           'input'       => $this->renderAcl($this->renderOnlyFormInput()),
-        );
+        ];
         $this->handleEditingValue();
         $this->attribute->renderAttribute($attributes, $readOnly);
-        $attributes[$this->getLdapName().'_buttons'] = array(
+        $attributes[$this->getLdapName().'_buttons'] = [
           'htmlid'      => 'add'.$this->getHtmlId(),
           'label'       => '',
           'description' => '',
           'input'       => $this->renderAcl($this->renderButtons()),
-        );
+        ];
       }
     }
   }
@@ -249,7 +249,7 @@ class SetAttribute extends Attribute
     if ($form) {
       return;
     } else {
-      $subattributes = array();
+      $subattributes = [];
       $this->attribute->setDisabled($this->disabled);
       $this->attribute->serializeAttribute($subattributes, $form);
       $attributes[$this->getLdapName()]['attributes']       = $subattributes;
@@ -270,8 +270,8 @@ class SetAttribute extends Attribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons  = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
-    $buttons .= $this->renderInputField('submit', 'del'.$id, array('value' => '{msgPool type=delButton}'));
+    $buttons  = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
+    $buttons .= $this->renderInputField('submit', 'del'.$id, ['value' => '{msgPool type=delButton}']);
     return $buttons;
   }
 
@@ -283,7 +283,7 @@ class SetAttribute extends Attribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array_merge(array('add'.$id,'del'.$id,'row'.$id), $this->attribute->htmlIds());
+    return array_merge(['add'.$id,'del'.$id,'row'.$id], $this->attribute->htmlIds());
   }
 
   /*! \brief Set the parent plugin for this attribute
@@ -300,10 +300,10 @@ class SetAttribute extends Attribute
 
   function getArrayValues()
   {
-    $result = array();
+    $result = [];
     foreach ($this->value as $value) {
       $this->attribute->setValue($value);
-      $row = array();
+      $row = [];
       foreach ($this->attribute->getArrayValue() as $val) {
         $row[] = $val;
       }
@@ -371,7 +371,7 @@ class OrderedArrayAttribute extends SetAttribute
    *  \param array $values The default values
    *  \param boolean $edit_enabled Can the values be edited
    */
-  function __construct ($attribute, $order = TRUE, $values = array(), $edit_enabled = FALSE)
+  function __construct ($attribute, $order = TRUE, $values = [], $edit_enabled = FALSE)
   {
     parent::__construct($attribute, $values);
     $this->order        = $order;
@@ -408,7 +408,7 @@ class OrderedArrayAttribute extends SetAttribute
 
   function computeLdapValue ()
   {
-    $ldapValue = array();
+    $ldapValue = [];
     foreach ($this->value as $key => $value) {
       $ldapValue[] = $this->writeValue($key, $value);
     }
@@ -418,7 +418,7 @@ class OrderedArrayAttribute extends SetAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $value = $this->readValue($attrs[$this->getLdapName()][$i]);
         if (is_array($value)) {
@@ -441,12 +441,12 @@ class OrderedArrayAttribute extends SetAttribute
     $div->SetHeight($this->height);
     $div->SetHeaders($this->headers);
     foreach ($this->value as $key => $value) {
-      $fields = array();
+      $fields = [];
       foreach ($this->getAttributeArrayValue($key, $value) as $field) {
         if (is_array($field)) {
           $fields[] = $field;
         } else {
-          $fields[] = array('string' => $field);
+          $fields[] = ['string' => $field];
         }
       }
       if (empty($fields)) {
@@ -455,7 +455,7 @@ class OrderedArrayAttribute extends SetAttribute
 
       list ($img, $nbicons) = $this->genRowIcons($key, $value);
 
-      $fields[] = array("html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"');
+      $fields[] = ["html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"'];
       $div->AddEntry($fields);
     }
     $smarty->assign("div_$id", $div->DrawList());
@@ -474,12 +474,12 @@ class OrderedArrayAttribute extends SetAttribute
       if ($key != 0) {
         $img .= $this->renderInputField(
           'image', $id.'_up_'.$key,
-          array(
+          [
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-descending&amp;size=16',
             'title' => _('Sort up'),
             'alt'   => _('Sort up'),
             'class' => 'center'
-          )
+          ]
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -487,12 +487,12 @@ class OrderedArrayAttribute extends SetAttribute
       if (($key + 1) < count($this->value)) {
         $img .= $this->renderInputField(
           'image', $id.'_down_'.$key,
-          array(
+          [
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-ascending&amp;size=16',
             'title' => _('Sort down'),
             'alt'   => _('Sort down'),
             'class' => 'center'
-          )
+          ]
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -502,25 +502,25 @@ class OrderedArrayAttribute extends SetAttribute
       $nbicons++;
       $img .= $this->renderInputField(
         'image', $id.'_edit_'.$key,
-        array(
+        [
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit'),
           'class' => 'center'
-        )
+        ]
       );
     }
     $img .= $this->renderInputField(
       'image', $id.'_del_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=edit-delete&amp;size=16',
         'title' => _('Delete'),
         'alt'   => _('Delete'),
         'class' => 'center'
-      )
+      ]
     );
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
   protected function getAttributeArrayValue($key, $value)
@@ -627,7 +627,7 @@ class OrderedArrayAttribute extends SetAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array('add'.$id);
+    $ids  = ['add'.$id];
     if ($this->attribute !== FALSE) {
       $ids  = array_merge($ids, $this->attribute->htmlIds());
     }
@@ -649,7 +649,7 @@ class OrderedArrayAttribute extends SetAttribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
+    $buttons = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
     return $buttons;
   }
 }
@@ -662,9 +662,9 @@ class SubNodesAttribute extends OrderedArrayAttribute
   protected $objectClass;
   protected $objectClasses;
 
-  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = array(), $edit_enabled = FALSE, $acl = "")
+  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = [], $edit_enabled = FALSE, $acl = "")
   {
-    $attributes_keys = array();
+    $attributes_keys = [];
     foreach ($attributes as $attribute) {
       $attributes_keys[$attribute->getLdapName()] = $attribute;
       $attributes_keys[$attribute->getLdapName()]->htmlid_prefix = $ldapName.'_';
@@ -681,7 +681,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
       $this->objectClasses  = $objectClass;
     } else {
       $this->objectClass    = $objectClass;
-      $this->objectClasses  = array($objectClass);
+      $this->objectClasses  = [$objectClass];
     }
   }
 
@@ -692,8 +692,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
     if (isset($attrs['dn'])) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search('objectClass='.$this->objectClass, array('*'), 'one');
-      $this->value = array();
+      $ldap->search('objectClass='.$this->objectClass, ['*'], 'one');
+      $this->value = [];
       while ($subattrs = $ldap->fetch()) {
         $this->attribute->resetToDefault();
         foreach ($this->attribute->attributes as &$attribute) {
@@ -715,8 +715,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search('objectClass='.$this->objectClass, array('dn'), 'one');
-    $delete = array();
+    $ldap->search('objectClass='.$this->objectClass, ['dn'], 'one');
+    $delete = [];
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -725,7 +725,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
     }
     /* Then add our values */
     foreach ($this->value as $val) {
-      $attrs = array('objectClass' => $this->objectClasses);
+      $attrs = ['objectClass' => $this->objectClasses];
       $this->attribute->setValue($val);
       foreach ($this->attribute->attributes as &$attribute) {
         $attribute->fillLdapValue($attrs);
diff --git a/include/simpleplugin/attributes/class_StringAttribute.inc b/include/simpleplugin/attributes/class_StringAttribute.inc
index 19906142b..452239369 100644
--- a/include/simpleplugin/attributes/class_StringAttribute.inc
+++ b/include/simpleplugin/attributes/class_StringAttribute.inc
@@ -59,9 +59,9 @@ class StringAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = array(
+    $attributes = [
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    );
+    ];
     if (!empty($this->managedAttributes)) {
       $js       = $this->managedAttributesJS();
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -76,7 +76,7 @@ class StringAttribute extends Attribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars in multiline values (mainly useful for textarea) */
-    return str_replace(array("\r\n", "\r"), "\n", $value);
+    return str_replace(["\r\n", "\r"], "\n", $value);
   }
 
   function check ()
@@ -160,10 +160,10 @@ class PasswordAttribute extends StringAttribute
     $id = $this->getHtmlId();
     $display  = $this->renderInputField(
       'password', $id,
-      array(
+      [
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}',
         'autocomplete' => ($this->autocomplete ? 'on' : 'off'),
-      )
+      ]
     );
     if ($this->autocomplete === FALSE) {
       $display = '{literal}<input autocomplete="off" value="foolautocompleteworkaround" type="text" style="display:none;"/>{/literal}'.$display;
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index 45c49ad0f..be4b7a959 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -75,12 +75,12 @@ class Attribute
   protected $plugin;
   /* \brief Array of attributes to manage (prefix => value => attribute)
    * Prefix should be 'erase' or 'disable' */
-  protected $managedAttributes = array();
+  protected $managedAttributes = [];
   /* \brief Array of multiple values groups for managed attributes */
-  protected $managedAttributesMultipleValues = array();
+  protected $managedAttributesMultipleValues = [];
 
   /* \bried Array of booleans telling for each managing attributes if he's disabling us */
-  protected $managingAttributesOrders = array();
+  protected $managingAttributesOrders = [];
 
   /*! \brief The constructor of Attribute
    *
@@ -201,7 +201,7 @@ class Attribute
   /* Return the value as an array of values to be displayed in a table columns */
   function getArrayValue ()
   {
-    return array($this->displayValue($this->getValue()));
+    return [$this->displayValue($this->getValue())];
   }
 
   function getLdapName ()
@@ -352,7 +352,7 @@ class Attribute
       $this->managedAttributesMultipleValues = $mAttributes['multiplevalues'];
       unset($mAttributes['multiplevalues']);
     } else {
-      $this->managedAttributesMultipleValues = array();
+      $this->managedAttributesMultipleValues = [];
     }
     $this->managedAttributes = $mAttributes;
     $this->manageAttributes($this->getValue());
@@ -420,7 +420,7 @@ class Attribute
       if ($value !== '') {
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = array();
+        $attrs[$this->getLdapName()] = [];
       }
     }
   }
@@ -440,7 +440,7 @@ class Attribute
           continue;
         }
         foreach ($attributes as $attribute) {
-          $attrs[$attribute] = array();
+          $attrs[$attribute] = [];
         }
       }
     }
@@ -452,11 +452,11 @@ class Attribute
   {
     global $config;
     $value = $this->getValue();
-    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === array()))) {
+    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === []))) {
       return msgPool::required($this->getLabel());
     } elseif (($this->unique !== FALSE) && !$this->disabled) {
       $value = $this->computeLdapValue();
-      if (($value === "") || ($value === array())) {
+      if (($value === "") || ($value === [])) {
         return;
       }
       $ldap = $config->get_ldap_link();
@@ -497,10 +497,10 @@ class Attribute
           $filters[] = $pluginFilter;
         }
       } else {
-        $filters = array($this->uniqueFilter);
+        $filters = [$this->uniqueFilter];
       }
       $filter = '(&'.$filter.implode($filters).')';
-      $ldap->search($filter, array($this->getLdapName()));
+      $ldap->search($filter, [$this->getLdapName()]);
       $branches = array_filter(
         array_map(
           function ($key, $ot)
@@ -588,12 +588,12 @@ class Attribute
       } else {
         $input = $this->renderFormInput();
       }
-      $attributes[$this->getLdapName()] = array(
+      $attributes[$this->getLdapName()] = [
         'htmlid'      => $this->getForHtmlId(),
         'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
         'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
         'input'       => $input,
-      );
+      ];
     }
   }
 
@@ -612,7 +612,7 @@ class Attribute
       }
       /* Avoid empty array */
       $type[] = 'Attribute';
-      $infos = array(
+      $infos = [
         'htmlid'      => $this->getHtmlId(),
         'label'       => $this->getLabel(),
         'required'    => $this->isRequired(),
@@ -621,7 +621,7 @@ class Attribute
         'value'       => $this->getValue(),
         'default'     => $this->defaultValue,
         'type'        => $type,
-      );
+      ];
       if (!$form) {
         $infos['inldap']   = $this->isInLdap();
         $infos['visible']  = $this->visible;
@@ -657,10 +657,10 @@ class Attribute
   function getAclInfo ()
   {
     if (empty($this->acl)) {
-      return array(
+      return [
         'name' => $this->getHtmlId(),
         'desc' => $this->getDescription()
-      );
+      ];
     } else {
       /* If acl is not empty, we use an acl that is not ours, we have no acl to create */
       return FALSE;
@@ -679,7 +679,7 @@ class Attribute
 
   public function htmlIds()
   {
-    return array($this->getHtmlId());
+    return [$this->getHtmlId()];
   }
 
   protected function managedAttributesJS ()
@@ -728,7 +728,7 @@ class Attribute
     return ($this->getValue() == $value);
   }
 
-  protected function renderInputField($type, $name, $attributes = array())
+  protected function renderInputField($type, $name, $attributes = [])
   {
     $input  = '<input type="'.$type.'" '.
               'name="'.$name.'" id="'.$name.'"'.
@@ -773,7 +773,7 @@ class HiddenArrayAttribute extends HiddenAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -853,7 +853,7 @@ class DisplayLDAPArrayAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index 9188182b8..6f0dadf7a 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -176,7 +176,7 @@ class DialogAttribute extends SetAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->attribute = FALSE;
@@ -217,7 +217,7 @@ class DialogAttribute extends SetAttribute
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 
   function loadPostValue ()
@@ -245,21 +245,21 @@ class DialogAttribute extends SetAttribute
     if ($this->isTemplate()) {
       $buttons  .= $this->renderInputField(
         'text', $id,
-        array('value' => $this->editingValue)
+        ['value' => $this->editingValue]
       );
       $buttons  .= $this->renderInputField(
         'submit', 'add'.$id,
-        array('value' => '{msgPool type=addButton}')
+        ['value' => '{msgPool type=addButton}']
       );
       $dialogButtonValue = _('Add (dialog)');
     }
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => $dialogButtonValue)
+      ['value' => $dialogButtonValue]
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      array('value' => '{msgPool type=delButton}')
+      ['value' => '{msgPool type=delButton}']
     );
     return $buttons;
   }
@@ -267,7 +267,7 @@ class DialogAttribute extends SetAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    $ids = array('add'.$id.'_dialog','del'.$id,'row'.$id);
+    $ids = ['add'.$id.'_dialog','del'.$id,'row'.$id];
     if ($this->isTemplate()) {
       $ids[] = $id;
       $ids[] = 'add'.$id;
@@ -283,7 +283,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 {
   protected $dialogClass;
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = TRUE;
@@ -297,7 +297,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 
   function loadPostValue ()
@@ -333,7 +333,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
     $id = $this->getHtmlId();
     return $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => '{msgPool type=addButton}')
+      ['value' => '{msgPool type=addButton}']
     );
   }
 
@@ -356,11 +356,11 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
  */
 class GenericDialogAttribute extends DialogAttribute
 {
-  protected $displays     = array();
+  protected $displays     = [];
   protected $store_attr   = 'dn';
   protected $display_attr = 'cn';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $store_attr = 'dn', $display_attr = 'cn', $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $store_attr = 'dn', $display_attr = 'cn', $acl = '')
   {
     $this->store_attr   = $store_attr;
     $this->display_attr = $display_attr;
@@ -369,7 +369,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return array($this->store_attr => $this->getValue());
+    return [$this->store_attr => $this->getValue()];
   }
 
   function addValue ($dn, $attrs)
@@ -432,7 +432,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return array($this->display_attr);
+    return [$this->display_attr];
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -503,7 +503,7 @@ class UsersGroupsAttribute extends GenericDialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return array('cn', 'uid', 'objectClass');
+    return ['cn', 'uid', 'objectClass'];
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -546,7 +546,7 @@ class GroupsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass = 'GroupSelectDialog';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
     parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', 'cn', $acl);
   }
@@ -583,14 +583,14 @@ class MailsAttribute extends DialogAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     SetAttribute::__construct(new MailAttribute($label, $description, $ldapName, $required, "", $acl), $defaultValue);
   }
 
   function getFilterBlackList ()
   {
-    return array('mail' => $this->getValue());
+    return ['mail' => $this->getValue()];
   }
 
   function addValue ($dn, $attrs)
@@ -606,15 +606,15 @@ class MailsAttribute extends DialogAttribute
     $id = $this->getHtmlId();
     $buttons  = $this->renderInputField(
       'submit', 'add'.$id,
-      array('value' => '{msgPool type=addButton}')
+      ['value' => '{msgPool type=addButton}']
     );
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => '{msgPool type=addButton} (from list)')
+      ['value' => '{msgPool type=addButton} (from list)']
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      array('value' => '{msgPool type=delButton}')
+      ['value' => '{msgPool type=delButton}']
     );
     return $buttons;
   }
@@ -622,7 +622,7 @@ class MailsAttribute extends DialogAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array('add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id);
+    return ['add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id];
   }
 }
 
@@ -643,7 +643,7 @@ class SystemsAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return array('cn' => $this->getValue());
+    return ['cn' => $this->getValue()];
   }
 }
 
@@ -670,7 +670,7 @@ class ButtonAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'submit', $id,
-      array('value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}')
+      ['value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}']
     );
     return $this->renderAcl($display);
   }
@@ -716,12 +716,12 @@ class DialogButtonAttribute extends ButtonAttribute
 
   function getFilterBlackList ()
   {
-    return array();
+    return [];
   }
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 }
 
@@ -748,9 +748,9 @@ class UserAttribute extends DialogButtonAttribute
     if ($this->isTemplate()) {
       $display = $this->renderInputField(
         'text', $id,
-        array(
+        [
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        )
+        ]
       );
     } else {
       $display  = '<img src="geticon.php?context=types&amp;icon=user&amp;size=16" alt="user icon" class="center"/>';
@@ -764,22 +764,22 @@ class UserAttribute extends DialogButtonAttribute
     }
     $display .= $this->renderInputField(
       'image', $id.'_dialog',
-      array(
+      [
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
         'title' => _('Edit'),
         'alt'   => _('Edit')
-      )
+      ]
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        )
+        ]
       );
     }
     return $this->renderAcl($display);
@@ -833,7 +833,7 @@ class UserAttribute extends DialogButtonAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array($id.'_dialog');
+    $ids  = [$id.'_dialog'];
     if ($this->isTemplate()) {
       $ids[] = $id;
     }
@@ -851,7 +851,7 @@ class GenericSimplePluginDialog extends GenericDialog
 {
   protected $initialDialogValue = NULL;
 
-  function __construct($simplePlugin, $attribute, $value = array())
+  function __construct($simplePlugin, $attribute, $value = [])
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass('new');
@@ -895,7 +895,7 @@ class GenericSimplePluginDialog extends GenericDialog
       return $this->dialog->execute().$this->buttons();
     }
 
-    $value = array();
+    $value = [];
     foreach ($this->dialog->attributes as $attr) {
       $value[$attr] = $this->dialog->$attr;
     }
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index 01170c186..987ab3850 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -182,9 +182,9 @@ class CommaListAttribute extends CompositeAttribute
   {
     parent::__construct(
       $attribute->getDescription(), $ldapName,
-      array(
+      [
         $attribute
-      ), '', ''
+      ], '', ''
     );
     $this->sep = $sep;
   }
@@ -192,9 +192,9 @@ class CommaListAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value == '') {
-      return array(array());
+      return [[]];
     } else {
-      return array(explode($this->sep, $value));
+      return [explode($this->sep, $value)];
     }
   }
 
@@ -213,10 +213,10 @@ class UnitIntAttribute extends CompositeAttribute
   function __construct ($label, $description, $ldapName, $required, $units, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
     parent::__construct($description, $ldapName,
-      array(
+      [
         new IntAttribute('', '', $ldapName.'_int', $required, $min, $max, $defaultValue),
         new SelectAttribute('', '', $ldapName.'_select', TRUE, array_keys($units), '', array_values($units)),
-      ), '', '',
+      ], '', '',
       $acl, $label
     );
     $this->setLinearRendering(TRUE);
@@ -226,12 +226,12 @@ class UnitIntAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value === '') {
-      return array('', 0);
+      return ['', 0];
     }
     $choices = $this->attributes[1]->getChoices();
     sort($choices);
     if ($value == 0) {
-      return array($value, $choices[0]);
+      return [$value, $choices[0]];
     }
     /* Find the appropriate unit */
     for (
@@ -239,7 +239,7 @@ class UnitIntAttribute extends CompositeAttribute
       ($value % $choices[$i] != 0) && ($i > 0);
       $i--
     );
-    return array($value / $choices[$i], $choices[$i]);
+    return [$value / $choices[$i], $choices[$i]];
   }
 
   function writeValues($values)
@@ -264,13 +264,13 @@ class BytesSizeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = array(
+    $units = [
       1             => _('B'),
       pow(1024, 1)  => _('KiB'),
       pow(1024, 2)  => _('MiB'),
       pow(1024, 3)  => _('GiB'),
       pow(1024, 4)  => _('TiB'),
-    );
+    ];
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
@@ -282,12 +282,12 @@ class TimeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = array(
+    $units = [
       1     => _('seconds'),
       60    => _('minutes'),
       3600  => _('hours'),
       86400 => _('days'),
-    );
+    ];
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index b6787011f..dc3d03d4e 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -26,15 +26,15 @@
 class multiPlugin extends simplePlugin
 {
   /* attribute list for save action */
-  var $objectclasses  = array();
+  var $objectclasses  = [];
   var $ignore_account = TRUE;
-  var $plugin         = array();
+  var $plugin         = [];
 
   var $tabClass = '';
 
   static function getAttributesInfo ()
   {
-    return array();
+    return [];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL)
@@ -156,7 +156,7 @@ class multiPlugin extends simplePlugin
   /* Save to LDAP */
   function save()
   {
-    $errors = array();
+    $errors = [];
     /* Save objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -175,7 +175,7 @@ class multiPlugin extends simplePlugin
 
   function remove($fulldelete = FALSE)
   {
-    $errors = array();
+    $errors = [];
     /* Remove objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -188,7 +188,7 @@ class multiPlugin extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     /* Adapt objects */
     foreach ($this->plugin as &$plug) {
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index b372dbfe3..a25077180 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -132,14 +132,14 @@ class simpleManagement
   // The currently used object(s) (e.g. in edit, removal)
   // $dn is public due to some compatibility problems with class plugin..
   public $dn      = '';
-  protected $dns  = array();
+  protected $dns  = [];
 
   // The last used object(s).
   protected $last_dn  = '';
-  protected $last_dns = array();
+  protected $last_dns = [];
 
   // The common places the displayed objects are stored in. (e.g. array("ou=groups,",".."))
-  protected $storagePoints = array();
+  protected $storagePoints = [];
 
   // The opened object.
   protected $tabObject    = NULL;
@@ -172,14 +172,14 @@ class simpleManagement
   protected $filter   = NULL;
 
   // A list of configured actions/events
-  protected $actions = array();
+  protected $actions = [];
 
   // Some management classes are used in tab groups and needs this
   public $is_template = FALSE;
-  public $attributes  = array();
+  public $attributes  = [];
 
   /* Attributes that child classes should override */
-  protected $objectTypes  = array();
+  protected $objectTypes  = [];
 
   /* Attributes that child classes can override */
   protected $departmentBrowser      = TRUE;
@@ -193,7 +193,7 @@ class simpleManagement
   protected $autoActions      = TRUE;
   protected $skipCpHandler    = FALSE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description'];
 
   protected $headpageClass = "listing";
 
@@ -216,7 +216,7 @@ class simpleManagement
     }
     unset($object);
 
-    $this->storagePoints = array();
+    $this->storagePoints = [];
     foreach ($this->objectTypes as $key => $object) {
       try {
         $i = objects::infos($object);
@@ -286,22 +286,22 @@ class simpleManagement
   {
     if ($this->autoActions) {
       if (static::$skipTemplates) {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array();
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [];
       } else {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array(
-          array(
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [
+          [
             'type'    => 'sub',
             'image'   => 'geticon.php?context=devices&icon=template&size=16',
             'label'   => _('Template'),
-            'action'  => array(),
-          ),
-          array(
+            'action'  => [],
+          ],
+          [
             'type'    => 'sub',
             'image'   => 'geticon.php?context=actions&icon=document-new&size=16',
             'label'   => _('From template'),
-            'action'  => array(),
-          ),
-        );
+            'action'  => [],
+          ],
+        ];
       }
     }
     $this->configureHeadline();
@@ -315,17 +315,17 @@ class simpleManagement
 
       $filterObject = objects::getFilterObject($object);
       $this->headpage->objectTypes[$object] =
-        array(
+        [
           'label'       => $i['name'],
           'category'    => $i['aclCategory'],
           'class'       => $i['mainTab'],
           'image'       => $i['icon'],
           'filter'      => $filterObject,
           'nameAttr'    => $i['nameAttr'],
-        );
+        ];
       if (!static::$skipTemplates) {
         $this->headpage->objectTypes['template_'.$object] =
-          array(
+          [
             'label'       => sprintf(_('%s template'), $i['name']),
             'category'    => $i['aclCategory'],
             'class'       => 'template',
@@ -333,13 +333,13 @@ class simpleManagement
             'filter'      =>
               new ldapFilter(
                 '&',
-                array(
+                [
                   new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
                   fdTemplateFilter($filterObject),
-                )
+                ]
               ),
             'nameAttr'    => $i['nameAttr'],
-          );
+          ];
       }
       $this->headpage->categories[] = $i['aclCategory'];
       if ($this->autoActions) {
@@ -353,30 +353,30 @@ class simpleManagement
             $icon = $infos['plIcon'];
           }
         }
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = [
           'name'  => 'new_'.$object,
           'type'  => 'entry',
           'image' => $icon,
           'label' => $i['name'],
           'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-        );
+        ];
         if (!static::$skipTemplates) {
           $this->registerAction('new_template_'.$object, 'newEntryTemplate');
           $this->registerAction('template_apply_'.$object, 'newEntryFromTemplate');
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = array(
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = [
             'name'  => 'new_template_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/template[c]',
-          );
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = array(
+          ];
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = [
             'name'  => 'template_apply_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-          );
+          ];
         }
       }
     }
@@ -426,13 +426,13 @@ class simpleManagement
         $tag    = 'FILTER'.$object;
         $filter .= '$'.$tag;
         $i      = objects::infos($object);
-        $this->filter->elements[$tag] = array(
+        $this->filter->elements[$tag] = [
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => array(),
+          'unset'   => [],
           'set'     => preg_replace('/\$/', '\\\$', $i['filter'])
-        );
+        ];
         $this->filter->elementValues[$tag] = TRUE;
 
         if ($i['mainAttr']) {
@@ -445,13 +445,13 @@ class simpleManagement
       if (!static::$skipTemplates) {
         $tag    = 'FILTERTEMPLATE';
         $filter .= '$'.$tag;
-        $this->filter->elements[$tag] = array(
+        $this->filter->elements[$tag] = [
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => array(),
+          'unset'   => [],
           'set'     => '(objectClass=fdTemplate)'
-        );
+        ];
         $this->filter->elementValues[$tag] = TRUE;
 
         $attributes[] = 'fdTemplateField';
@@ -472,7 +472,7 @@ class simpleManagement
   {
     $contents = file_get_contents($file);
     $data     = xml::xml2array($contents, 1);
-    foreach (array('departmentBrowser','departmentRootVisible','baseMode','multiSelect') as $var) {
+    foreach (['departmentBrowser','departmentRootVisible','baseMode','multiSelect'] as $var) {
       $data['list']['definition']["$var"] = ($this->$var ? 'true' : 'false');
     }
     return $data;
@@ -519,18 +519,18 @@ class simpleManagement
   {
     global $config;
     $smarty = get_smarty();
-    $filters = array();
+    $filters = [];
     foreach ($this->objectTypes as $object) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTER'.$object,
         'label' => sprintf(_('Show %s'), $config->data['OBJECTS'][$object]['name'])
-      );
+      ];
     }
     if (!static::$skipTemplates) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      );
+      ];
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
@@ -545,7 +545,7 @@ class simpleManagement
   function execute()
   {
     // Ensure that html posts and gets are kept even if we see a 'Entry islocked' dialog.
-    $vars = array('/^act$/','/^listing/','/^PID$/');
+    $vars = ['/^act$/','/^listing/','/^PID$/'];
     session::set('LOCK_VARS_TO_USE', $vars);
 
     /* Display the copy & paste dialog, if it is currently open */
@@ -593,7 +593,7 @@ class simpleManagement
 
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = array();
+      $bases = [];
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -757,7 +757,7 @@ class simpleManagement
       return;
     }
     if ($cancel) {
-      $msgs = array();
+      $msgs = [];
     } else {
       $msgs = $this->tabObject->save();
     }
@@ -910,7 +910,7 @@ class simpleManagement
   {
     if (!is_object($this->headpage)) {
       trigger_error("No valid headpage given....!");
-      return array();
+      return [];
     }
     $action = $this->headpage->getAction();
     if (isset($_POST['edit_cancel'])) {
@@ -941,7 +941,7 @@ class simpleManagement
     if (isset($this->actions[$action['action']])) {
       $func = $this->actions[$action['action']];
       if (!isset($action['targets'])) {
-        $action['targets'] = array();
+        $action['targets'] = [];
       }
       return $this->$func($action['action'], $action['targets'], $action);
     }
@@ -977,7 +977,7 @@ class simpleManagement
     $this->last_dn  = $this->dn;
     $this->dn       = "";
     $this->last_dns = $this->dns;
-    $this->dns      = array();
+    $this->dns      = [];
 
     $this->last_tabObject     = $this->tabObject;
     $this->tabObject          = NULL;
@@ -1015,8 +1015,8 @@ class simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $ui;
-    $disallowed = array();
-    $this->dns  = array();
+    $disallowed = [];
+    $this->dns  = [];
 
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal requested!");
 
@@ -1051,7 +1051,7 @@ class simpleManagement
       }
 
       // Add locks
-      $objects = array();
+      $objects = [];
       foreach ($this->dns as $dn) {
         $type   = $this->getType($dn);
         if (preg_match('/^template_/', $type) && !static::$skipTemplates) {
@@ -1062,12 +1062,12 @@ class simpleManagement
           $info = objects::infos($type);
         }
         $entry  = $this->getHeadpage()->getEntry($dn);
-        $objects[] = array(
+        $objects[] = [
           'name'  => $entry[$info['mainAttr']][0],
           'dn'    => $dn,
           'icon'  => $info['icon'],
           'type'  => $info['name']
-        );
+        ];
       }
       add_lock ($this->dns, $ui->dn);
 
@@ -1105,7 +1105,7 @@ class simpleManagement
         del_lock($this->dn);
       } else {
         msg_dialog::display(_('Permission error'), msgPool::permDelete($dn), ERROR_DIALOG);
-        logging::log('security', 'simpleManagement/'.get_class($this), $dn, array(), 'Tried to trick deletion.');
+        logging::log('security', 'simpleManagement/'.get_class($this), $dn, [], 'Tried to trick deletion.');
       }
     }
 
@@ -1155,7 +1155,7 @@ class simpleManagement
     global $config, $ui;
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = array();
+      $bases = [];
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -1196,7 +1196,7 @@ class simpleManagement
    *  @param  array   $target  A list of object dns, which should be affected by this method.
    *  @param  array   $all     A combination of both 'action' and 'target'.
    */
-  function copyPasteHandler($action = '', array $target = array(), array $all = array())
+  function copyPasteHandler($action = '', array $target = [], array $all = [])
   {
     global $ui;
     // Return without any actions while copy&paste handler is disabled.
@@ -1293,7 +1293,7 @@ class simpleManagement
    */
   function getAllDeletedSnapshots()
   {
-    $tmp = array();
+    $tmp = [];
     $snapshotBases = $this->snapHandler->getSnapshotBases();
     if (is_array($snapshotBases)) {
       foreach ($snapshotBases as $base) {
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 40aba6b15..19d85044c 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -35,7 +35,7 @@ class simplePlugin
    *
    * associative array that stores attributeLdapName => reference on object
    */
-  public $attributesAccess = array();
+  public $attributesAccess = [];
 
   /*!
     \brief Mark plugin as account
@@ -87,13 +87,13 @@ class simplePlugin
 
     This should only be used internally.
    */
-  public $attrs = array();
+  public $attrs = [];
 
   /*! \brief The objectClasses set by this tab */
-  protected $objectclasses = array();
+  protected $objectclasses = [];
 
   /*! \brief The state of the attributes when we opened the object */
-  protected $saved_attributes = array();
+  protected $saved_attributes = [];
 
   /*! \brief Do we want a header allowing to able/disable this plugin */
   protected $displayHeader = FALSE;
@@ -112,14 +112,14 @@ class simplePlugin
   protected $needEditMode = FALSE;
 
   /*! \brief Attributes that needs to be initialized before the others */
-  protected $preInitAttributes = array();
+  protected $preInitAttributes = [];
 
   /*! \brief FALSE to disable inheritance. Array like array ('objectClass' => 'attribute') to specify oc of the groups it might be inherited from
    */
   protected $inheritance      = FALSE;
   protected $member_of_group  = FALSE;
   protected $editing_group    = NULL;
-  protected $group_attrs      = array();
+  protected $group_attrs      = [];
 
   /*! \brief Used when the entry is opened as "readonly" due to locks */
   protected $read_only = FALSE;
@@ -163,9 +163,9 @@ class simplePlugin
       $this->ignore_account = TRUE;
     }
 
-    $this->attributesInfo = array();
+    $this->attributesInfo = [];
     foreach ($attributesInfo as $section => $sectionInfo) {
-      $attrs = array();
+      $attrs = [];
       foreach ($sectionInfo['attrs'] as $attr) {
         $name = $attr->getLdapName();
         if (isset($attrs[$name])) {
@@ -339,24 +339,24 @@ class simplePlugin
     if ($this->is_template && $this->mainTab) {
       /* Unshift special section for template infos */
       $this->attributesInfo = array_merge(
-        array(
-          '_template' => array(
-            'class' => array('fullwidth'),
+        [
+          '_template' => [
+            'class' => ['fullwidth'],
             'name'  => _('Template settings'),
-            'attrs' => array(
+            'attrs' => [
               '_template_cn' => new StringAttribute(
                 _('Template name'), _('This is the name of the template'),
                 '_template_cn', TRUE,
                 '', 'template_cn'
               )
-            )
-          ),
-          '_template_dummy' => array(
-            'class' => array('invisible'),
+            ]
+          ],
+          '_template_dummy' => [
+            'class' => ['invisible'],
             'name'  => '_template_dummy',
-            'attrs' => array()
-          )
-        ),
+            'attrs' => []
+          ]
+        ],
         $this->attributesInfo
       );
       $this->attributesAccess['_template_cn'] =& $this->attributesInfo['_template']['attrs']['_template_cn'];
@@ -385,10 +385,10 @@ class simplePlugin
       if (!$this->mainTab) {
         trigger_error('It seems main tab has not been saved.');
       }
-      $template_attrs = array(
-        'objectClass'     => array('fdTemplate'),
-        'fdTemplateField' => array()
-      );
+      $template_attrs = [
+        'objectClass'     => ['fdTemplate'],
+        'fdTemplateField' => []
+      ];
     }
     $template_attrs = templateHandling::fieldsToLDAP($template_attrs, $this->attrs);
     if ($this->mainTab) {
@@ -532,7 +532,7 @@ class simplePlugin
   function get_allowed_bases()
   {
     global $config;
-    $deps = array();
+    $deps = [];
 
     /* Is this a new object ? Or just an edited existing object */
     foreach ($config->idepartments as $dn => $name) {
@@ -596,7 +596,7 @@ class simplePlugin
     $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn));
     if (!$ldap->rename_dn($src_dn, $dst_dn)) {
       logging::log('debug', 'Ldap Protocol v3 implementation error, ldap_rename failed.',
-        "FROM: $src_dn  -- TO: $dst_dn", array(), $ldap->get_error());
+        "FROM: $src_dn  -- TO: $dst_dn", [], $ldap->get_error());
       @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, "Rename failed FROM: $src_dn  -- TO:  $dst_dn",
         'Ldap Protocol v3 implementation error. Error:'.$ldap->get_error());
       return $ldap->get_error();
@@ -605,13 +605,13 @@ class simplePlugin
     /* Update userinfo if necessary */
     if (preg_match('/'.preg_quote($src_dn, '/').'$/i', $ui->dn)) {
       $ui_dn = preg_replace('/'.preg_quote($src_dn, '/').'$/i', $dst_dn, $ui->dn);
-      logging::log('view', 'acl/'.get_class($this), $this->dn, array(), 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
+      logging::log('view', 'acl/'.get_class($this), $this->dn, [], 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
       $ui->dn = $ui_dn;
     }
 
     /* Check if departments were moved. If so, force the reload of config->departments */
     $ldap->cd($dst_dn);
-    $ldap->search('(objectClass=gosaDepartment)', array('dn'));
+    $ldap->search('(objectClass=gosaDepartment)', ['dn']);
     if ($ldap->count()) {
       $config->get_departments();
       $config->make_idepartments();
@@ -624,7 +624,7 @@ class simplePlugin
 
   function getRequiredAttributes()
   {
-    $tmp = array();
+    $tmp = [];
     foreach ($this->attributesAccess as $attr) {
       if ($attr->isRequired()) {
         $tmp[] = $attr->getLdapName();
@@ -658,10 +658,10 @@ class simplePlugin
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "execute");
 
     /* Reset Lock message POST/GET check array, to prevent preg_match errors */
-    session::set('LOCK_VARS_TO_USE', array());
-    session::set('LOCK_VARS_USED_GET', array());
-    session::set('LOCK_VARS_USED_POST', array());
-    session::set('LOCK_VARS_USED_REQUEST', array());
+    session::set('LOCK_VARS_TO_USE', []);
+    session::set('LOCK_VARS_USED_GET', []);
+    session::set('LOCK_VARS_USED_POST', []);
+    session::set('LOCK_VARS_USED_REQUEST', []);
 
     $this->displayPlugin  = TRUE;
     $this->header         = "";
@@ -721,7 +721,7 @@ class simplePlugin
     $plInfo   = pluglist::pluginInfos(get_class($this));
     $disabled = $this->acl_skip_write();
     if ($this->is_account) {
-      $depends = array();
+      $depends = [];
       if (isset($plInfo['plDepending'])) {
         foreach ($plInfo['plDepending'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -735,8 +735,8 @@ class simplePlugin
       $buttonText = msgPool::removeFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresEnabled($plInfo['plShortName'], $depends);
     } else {
-      $depends    = array();
-      $conflicts  = array();
+      $depends    = [];
+      $conflicts  = [];
       if (isset($plInfo['plDepends'])) {
         foreach ($plInfo['plDepends'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -760,7 +760,7 @@ class simplePlugin
       $buttonText = msgPool::addFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresDisabled($plInfo['plShortName'], $depends, $conflicts);
     }
-    return array($disabled,$buttonText,$text);
+    return [$disabled,$buttonText,$text];
   }
 
   /*!
@@ -826,7 +826,7 @@ class simplePlugin
       }
     }
 
-    $sections = array();
+    $sections = [];
     foreach ($this->attributesInfo as $section => $sectionInfo) {
       $legend = $sectionInfo['name'];
       if (isset($sectionInfo['icon'])) {
@@ -842,7 +842,7 @@ class simplePlugin
       } else {
         $smarty->assign("sectionClasses", '');
       }
-      $attributes = array();
+      $attributes = [];
       foreach ($sectionInfo['attrs'] as $attr) {
         if ($attr->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -970,18 +970,18 @@ class simplePlugin
   function remove($fulldelete = FALSE)
   {
     if (!$this->initially_was_account) {
-      return array();
+      return [];
     }
 
     if (!$fulldelete && !$this->acl_is_removeable()) {
       trigger_error('remove was called on a tab without enough ACL rights');
-      return array();
+      return [];
     }
 
     $this->prepare_remove();
     if ($this->is_template && (!defined('_OLD_TEMPLATES_') || !_OLD_TEMPLATES_)) {
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = array();
+      $this->saved_attributes = [];
     }
     /* Pre hooks */
     $errors = $this->pre_remove();
@@ -993,14 +993,14 @@ class simplePlugin
       return $errors;
     }
     $this->post_remove();
-    return array();
+    return [];
   }
 
   /* Remove FusionDirectory attributes */
   protected function prepare_remove ()
   {
     global $config;
-    $this->attrs = array();
+    $this->attrs = [];
 
     if (!$this->mainTab) {
       /* include global link_info */
@@ -1009,7 +1009,7 @@ class simplePlugin
       /* Get current objectClasses in order to add the required ones */
       $ldap->cat($this->dn);
       $tmp  = $ldap->fetch ();
-      $oc   = array();
+      $oc   = [];
       if ($this->is_template) {
         if (isset($tmp['fdTemplateField'])) {
           foreach ($tmp['fdTemplateField'] as $tpl_field) {
@@ -1030,7 +1030,7 @@ class simplePlugin
 
       /* Unset attributes from entry */
       foreach ($this->attributes as $val) {
-        $this->attrs["$val"] = array();
+        $this->attrs["$val"] = [];
       }
     }
   }
@@ -1056,9 +1056,9 @@ class simplePlugin
     $this->ldap_error = $ldap->get_error();
 
     if ($ldap->success()) {
-      return array();
+      return [];
     } else {
-      return array(msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class()));
+      return [msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class())];
     }
   }
 
@@ -1211,11 +1211,11 @@ class simplePlugin
         return $errors;
       }
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = array();
+      $this->saved_attributes = [];
     }
     $this->cleanup();
     if (!$this->shouldSave()) {
-      return array(); /* Nothing to do here */
+      return []; /* Nothing to do here */
     }
     /* Pre hooks */
     $errors = $this->pre_save();
@@ -1230,7 +1230,7 @@ class simplePlugin
     $this->prepareNextCleanup();
     /* Post hooks and logging */
     $this->post_save();
-    return array();
+    return [];
   }
 
   protected function shouldSave()
@@ -1256,13 +1256,13 @@ class simplePlugin
     $this->entryCSN = '';
 
     /* Start with empty array */
-    $this->attrs = array();
+    $this->attrs = [];
 
     /* Get current objectClasses in order to add the required ones */
-    $ldap->cat($this->dn, array('fdTemplateField', 'objectClass'));
+    $ldap->cat($this->dn, ['fdTemplateField', 'objectClass']);
 
     $tmp  = $ldap->fetch();
-    $oc   = array();
+    $oc   = [];
 
     if ($this->is_template) {
       if (isset($tmp['fdTemplateField'])) {
@@ -1294,7 +1294,7 @@ class simplePlugin
       }
     }
 
-    return array();
+    return [];
   }
 
   protected function pre_save ()
@@ -1313,17 +1313,17 @@ class simplePlugin
 
     /* Check if this is a new entry ... add/modify */
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, array("objectClass"));
+    $ldap->cat($this->dn, ["objectClass"]);
     if ($this->mainTab && !$this->initially_was_account) {
       if ($ldap->count()) {
-        return array(sprintf(_('There is already an entry with the same dn : %s'), $this->dn));
+        return [sprintf(_('There is already an entry with the same dn : %s'), $this->dn)];
       }
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
       $action = "add";
     } else {
       if (!$ldap->count()) {
-        return array(sprintf(_('The entry %s is not existing'), $this->dn));
+        return [sprintf(_('The entry %s is not existing'), $this->dn)];
       }
       $action = "modify";
     }
@@ -1334,9 +1334,9 @@ class simplePlugin
 
     /* Check for errors */
     if (!$ldap->success()) {
-      return array(msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class()));
+      return [msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class())];
     }
-    return array();
+    return [];
   }
 
   /*! \brief This function is called after LDAP save to do some post operations and logging
@@ -1367,7 +1367,7 @@ class simplePlugin
    *
    * \param  array  $addAttrs
    */
-  protected function handle_hooks($when, $mode, array $addAttrs = array())
+  protected function handle_hooks($when, $mode, array $addAttrs = [])
   {
     switch ($mode) {
       case 'add':
@@ -1388,7 +1388,7 @@ class simplePlugin
   /*! \brief Forward command execution requests
    *         to the post hook execution method.
    */
-  function handle_post_events($mode, array $addAttrs = array())
+  function handle_post_events($mode, array $addAttrs = [])
   {
     /* Update foreign keys */
     if ($mode == 'remove') {
@@ -1403,7 +1403,7 @@ class simplePlugin
    *  \brief Forward command execution requests
    *         to the pre hook execution method.
    */
-  function handle_pre_events($mode, array $addAttrs = array())
+  function handle_pre_events($mode, array $addAttrs = [])
   {
     global $config;
 
@@ -1412,7 +1412,7 @@ class simplePlugin
       /* Store information if there was subobjects before deletion */
       $ldap = $config->get_ldap_link();
       $ldap->cd($this->dn);
-      $ldap->search('(objectClass=*)', array('dn'), 'one');
+      $ldap->search('(objectClass=*)', ['dn'], 'one');
       $this->hadSubobjects = ($ldap->count() > 0);
     }
     return $this->handle_hooks('PRE', $mode, $addAttrs);
@@ -1423,15 +1423,15 @@ class simplePlugin
    *           Replaces placeholder by class values of this plugin instance.
    *       Allows to a add special replacements.
    */
-  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
+  function callHook($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     if ($this->is_template) {
-      return array();
+      return [];
     }
     global $config;
 
     $commands = $config->searchHooks(get_class($this), $cmd);
-    $messages = array();
+    $messages = [];
 
     foreach ($commands as $command) {
       // Walk trough attributes list and add the plugins attributes.
@@ -1494,7 +1494,7 @@ class simplePlugin
   function check ()
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'check');
-    $messages = array();
+    $messages = [];
 
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
@@ -1509,7 +1509,7 @@ class simplePlugin
       }
     }
 
-    $error = $this->callHook('CHECK', array('nbCheckErrors' => count($messages)), $returnOutput);
+    $error = $this->callHook('CHECK', ['nbCheckErrors' => count($messages)], $returnOutput);
     if (!empty($error)) {
       $messages = array_merge($messages, $error);
     }
@@ -1552,14 +1552,14 @@ class simplePlugin
     if (preg_match('/^handle_/', $mode)) {
       $olddn    = $param1;
       $newdn    = $param2;
-      $classes  = array(get_class($this));
+      $classes  = [get_class($this)];
       if (($olddn != $newdn) && $this->mainTab) {
         if ($newdn === NULL) {
           $subobjects = $this->hadSubobjects;
         } else {
           $ldap = $config->get_ldap_link();
           $ldap->cd($newdn);
-          $ldap->search('(objectClass=*)', array('dn'), 'one');
+          $ldap->search('(objectClass=*)', ['dn'], 'one');
           $subobjects = ($ldap->count() > 0);
         }
       }
@@ -1567,7 +1567,7 @@ class simplePlugin
       $classes = array_keys($this->parent->by_object);
     }
     // We group by objectType concerned
-    $foreignRefs = array();
+    $foreignRefs = [];
     if ($subobjects) {
       $field = 'dn';
       /* Special treatment for foreign keys on DN when moving an object
@@ -1586,11 +1586,11 @@ class simplePlugin
         }
         if ($class == 'aclAssignment') {
           /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-          $objectTypes = array('ACLASSIGNMENT');
+          $objectTypes = ['ACLASSIGNMENT'];
         } elseif (is_subclass_of($class, 'simpleService')) {
-          $objectTypes = array('SERVER');
+          $objectTypes = ['SERVER'];
         } else {
-          $objectTypes = array();
+          $objectTypes = [];
           $cinfos = pluglist::pluginInfos($class);
           foreach ($cinfos['plObjectType'] as $key => $objectType) {
             if (!is_numeric($key)) {
@@ -1608,13 +1608,13 @@ class simplePlugin
           $newvalue = $newdn;
 
           $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-            array(
+            [
               'tab'       => $classes[0],
               'field'     => $field,
               'oldvalue'  => $oldvalue,
               'newvalue'  => $newvalue,
-            );
-          $filter = templateHandling::parseString($filtersub, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
+            ];
+          $filter = templateHandling::parseString($filtersub, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
           if (!preg_match('/^\(.*\)$/', $filter)) {
             $filter = '('.$filter.')';
           }
@@ -1642,11 +1642,11 @@ class simplePlugin
           $cinfos = pluglist::pluginInfos($class);
           if ($class == 'aclAssignment') {
             /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-            $objectTypes = array('ACLASSIGNMENT');
+            $objectTypes = ['ACLASSIGNMENT'];
           } elseif (is_subclass_of($class, 'simpleService')) {
-            $objectTypes = array('SERVER');
+            $objectTypes = ['SERVER'];
           } else {
-            $objectTypes = array();
+            $objectTypes = [];
             foreach ($cinfos['plObjectType'] as $key => $objectType) {
               if (!is_numeric($key)) {
                 $objectType = $key;
@@ -1671,24 +1671,24 @@ class simplePlugin
                 $newvalue = $this->attributeValue($field);
               }
               $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-                array(
+                [
                   'tab'       => $tabclass,
                   'field'     => $field,
                   'oldvalue'  => $oldvalue,
                   'newvalue'  => $newvalue,
-                );
-              $filter = templateHandling::parseString($filter, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
+                ];
+              $filter = templateHandling::parseString($filter, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
             } elseif ($mode == 'references') {
               $foreignRefs[$objectType]['refs'][$class]['name'] = $cinfos['plShortName'];
 
               $foreignRefs[$objectType]['refs'][$class]['fields'][$ofield][$field] =
-                array(
+                [
                   'tab'     => $tabclass,
                   'field'   => $field,
                   'tabname' => $this->parent->by_name[$tabclass],
                   'value'   => $this->parent->by_object[$tabclass]->$field,
-                );
-              $filter = templateHandling::parseString($filter, array('oldvalue' => $this->parent->by_object[$tabclass]->$field), 'ldap_escape_f');
+                ];
+              $filter = templateHandling::parseString($filter, ['oldvalue' => $this->parent->by_object[$tabclass]->$field], 'ldap_escape_f');
             }
             if (!preg_match('/^\(.*\)$/', $filter)) {
               $filter = '('.$filter.')';
@@ -1701,7 +1701,7 @@ class simplePlugin
 
     /* Back up POST content */
     $SAVED_POST = $_POST;
-    $refs = array();
+    $refs = [];
     // For each concerned objectType
     foreach ($foreignRefs as $objectType => $tabRefs) {
       // Compute filter
@@ -1709,7 +1709,7 @@ class simplePlugin
       $filter = '(|'.join($filters).')';
       // Search objects
       try {
-        $objects = objects::ls($objectType, array('dn' => 'raw'), NULL, $filter);
+        $objects = objects::ls($objectType, ['dn' => 'raw'], NULL, $filter);
       } catch (NonExistingObjectTypeException $e) {
         continue;
       } catch (EmptyFilterException $e) {
@@ -1718,7 +1718,7 @@ class simplePlugin
       // For each object of this type
       foreach (array_keys($objects) as $dn) {
         /* Avoid sending POST to opened objects */
-        $_POST = array();
+        $_POST = [];
         // Build the object
         $tabobject = objects::open($dn, $objectType);
         if (preg_match('/^handle_/', $mode)) {
@@ -1735,12 +1735,12 @@ class simplePlugin
                     $ofield,
                     $field['oldvalue'],
                     $field['newvalue'],
-                    array(
+                    [
                       'CLASS' => $field['tab'],
                       'FIELD' => $field['field'],
                       'MODE'  => preg_replace('/^handle_/', '', $mode),
                       'DN'    => $this->dn,
-                    )
+                    ]
                   );
                 }
               }
@@ -1761,17 +1761,17 @@ class simplePlugin
                   if ($pluginobject->foreignKeyCheck(
                         $ofield,
                         $field['value'],
-                        array(
+                        [
                           'CLASS' => $field['tab'],
                           'FIELD' => $field['field'],
                           'DN'    => $this->dn,
-                        )
+                        ]
                       )) {
                     if (!isset($refs[$dn])) {
-                      $refs[$dn] = array(
+                      $refs[$dn] = [
                         'link'  => '',
-                        'tabs'  => array(),
-                      );
+                        'tabs'  => [],
+                      ];
                       try {
                         $refs[$dn]['link'] = objects::link($dn, $objectType);
                       } catch (FusionDirectoryException $e) {
@@ -1780,10 +1780,10 @@ class simplePlugin
                       }
                     }
                     if (!isset($refs[$dn]['tabs'][$tab])) {
-                      $refs[$dn]['tabs'][$tab] = array(
+                      $refs[$dn]['tabs'][$tab] = [
                         'link'    => '',
-                        'fields'  => array(),
-                      );
+                        'fields'  => [],
+                      ];
                       try {
                         if (is_subclass_of($tab, 'simpleService')) {
                           $refs[$dn]['tabs'][$tab]['link'] = objects::link($dn, $objectType, "service_$tab", sprintf(_('Service "%s"'), $tab_infos['name']));
@@ -1831,7 +1831,7 @@ class simplePlugin
     }
 
     /* Build DN with multiple attributes */
-    $usableAttributes = array();
+    $usableAttributes = [];
     foreach ($this->attributes as $attr) {
       if (($attr != $attribute) && is_scalar($this->$attr) && ($this->$attr != '')) {
         $usableAttributes[] = (string)$attr;
@@ -1861,7 +1861,7 @@ class simplePlugin
    *
    * \param array $skip A new array
    */
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     $this->attrs = $attrs;
 
@@ -1888,7 +1888,7 @@ class simplePlugin
     $this->dn       = 'new';
     $this->orig_dn  = $this->dn;
 
-    $this->saved_attributes       = array();
+    $this->saved_attributes       = [];
     $this->initially_was_account  = FALSE;
   }
 
@@ -1970,7 +1970,7 @@ class simplePlugin
    */
   static function plInfo()
   {
-    return array();
+    return [];
   }
 
   /*! \brief This function generate the needed ACLs for a given attribtues array
@@ -1979,7 +1979,7 @@ class simplePlugin
    */
   static function generatePlProvidedAcls ($attributesInfo)
   {
-    $plProvidedAcls = array();
+    $plProvidedAcls = [];
     foreach ($attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
         $aclInfo = $attr->getAclInfo();
@@ -2019,7 +2019,7 @@ class simplePlugin
       }
       $objectType = $key;
     }
-    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : array('user'));
+    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : ['user']);
     $key = key($plCategory);
     if (is_numeric($key)) {
       $plCategory = $plCategory[$key];
@@ -2081,7 +2081,7 @@ class simplePlugin
           /* Check locking */
           if ($locks = get_locks($entry_dn)) {
             session::set('back_plugin', $plug);
-            session::set('LOCK_VARS_TO_USE', array("/^edit$/", "/^plug$/"));
+            session::set('LOCK_VARS_TO_USE', ["/^edit$/", "/^plug$/"]);
             $lock_msg = gen_locked_message($locks, $entry_dn);
           } else {
             /* Lock the current entry */
diff --git a/include/simpleplugin/class_simpleService.inc b/include/simpleplugin/class_simpleService.inc
index 580492891..65d06ac7f 100644
--- a/include/simpleplugin/class_simpleService.inc
+++ b/include/simpleplugin/class_simpleService.inc
@@ -27,7 +27,7 @@ class simpleService extends simplePlugin
 
   protected $status = '';
 
-  public $conflicts   = array();
+  public $conflicts   = [];
   public $DisplayName = '';
 
   /*! \brief constructor
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index edc6049a3..57ccbb831 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -35,13 +35,13 @@ class simpleTabs
 
   public $objectType      = FALSE;
   protected $specialTabs  = TRUE;
-  protected $plNotify     = array();
+  protected $plNotify     = [];
 
   var $last       = "";
   var $current    = "";
   var $disabled   = "";
-  var $by_name    = array();
-  var $by_object  = array();
+  var $by_name    = [];
+  var $by_object  = [];
   var $acl_category;
 
   /* A parent object if available, e.g. a management class. */
@@ -69,7 +69,7 @@ class simpleTabs
     $this->dn           = $dn;
 
     if (!count($data)) {
-      $data[] = array('CLASS' => 'plugin','NAME' => 'Error');
+      $data[] = ['CLASS' => 'plugin','NAME' => 'Error'];
       msg_dialog::display(_('Error'),
         sprintf(_('No plugin definitions found to initialize "%s", please check your configuration file.'), get_class($this)),
         ERROR_DIALOG);
@@ -124,7 +124,7 @@ class simpleTabs
     $baseobject = NULL;
     foreach ($this->by_object as $name => $object) {
       $class = get_class($object);
-      if (in_array($class, array("reference","acl"))) {
+      if (in_array($class, ["reference","acl"])) {
         continue;
       }
       if ($baseobject === NULL) {
@@ -251,7 +251,7 @@ class simpleTabs
     }
     $display  .= '<table class="tabs-header"><tbody><tr>';
     $index    = 0;
-    $style    = array('tab-left', 'tab-active', 'tab-right');
+    $style    = ['tab-left', 'tab-active', 'tab-right'];
     foreach ($this->by_name as $class => $name) {
 
       /* Activate right tabs with style "tab-right" */
@@ -334,13 +334,13 @@ class simpleTabs
   protected function check()
   {
     global $config;
-    $messages = array();
+    $messages = [];
 
     if ($this->getBaseObject()->is_template) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
       $filter = '(&(objectClass=fdTemplate)(cn='.ldap_escape_f($this->getBaseObject()->_template_cn).'))';
-      $ldap->search($filter, array('dn'));
+      $ldap->search($filter, ['dn']);
       while ($attrs = $ldap->fetch()) {
         if ($attrs['dn'] != $this->getBaseObject()->dn) {
           $messages[] = msgPool::duplicated($this->getBaseObject()->attributesAccess['_template_cn']->getLabel(), $attrs['dn']);
@@ -392,12 +392,12 @@ class simpleTabs
       $new_dn     = $baseobject->compute_dn();
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $new_dn, 'Saving');
     } catch (FusionDirectoryException $e) {
-      return array(
+      return [
         sprintf(_('Failed to compute DN for object: %s'), $e->getMessage())
-      );
+      ];
     }
 
-    $errors   = array();
+    $errors   = [];
     $creation = ($this->dn == 'new');
 
     /* Move ? */
@@ -467,7 +467,7 @@ class simpleTabs
    * \param array $attrs an LDAP-like values array
    * \param array $skip Attributes to skip
    */
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     foreach ($this->by_object as $key => &$obj) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index 4ba70276f..cef03948f 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -23,36 +23,36 @@ class dashboard extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Dashboard'),
       'plTitle'       => _('Dashboard'),
       'plDescription' => _('Statistics and various information'),
       'plIcon'        => 'geticon.php?context=applications&icon=utilities-system-monitor&size=48',
-      'plObjectType'  => array(
-        'dashboard' => array(
+      'plObjectType'  => [
+        'dashboard' => [
           'name'      => _('Dashboard'),
           'tabClass'  => 'tabs_dashboard',
           'mainAttr'  => FALSE
-        )
-      ),
-      'plSection'     => array('reporting' => array('name' => _('Reporting'), 'priority' => 30)),
+        ]
+      ],
+      'plSection'     => ['reporting' => ['name' => _('Reporting'), 'priority' => 30]],
       'plPriority'    => 0,
 
-      'plProvidedAcls'  => array(
+      'plProvidedAcls'  => [
         'dashboard' => _('See dashboard')
-      )
-    );
+      ]
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'stats' => array(
+    return [
+      'stats' => [
         'name'  => _('Statistics'),
-        'attrs' => array(new FakeAttribute('stats')),
+        'attrs' => [new FakeAttribute('stats')],
         'template' => get_template_path('main_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -66,7 +66,7 @@ class dashboard extends simplePlugin
   function overview_stats()
   {
     global $config;
-    $stats = array();
+    $stats = [];
     foreach ($config->data['OBJECTS'] as $type => $infos) {
       try {
         $nb = count(objects::ls($type, NULL, NULL, '', TRUE));
@@ -83,10 +83,10 @@ class dashboard extends simplePlugin
       if ($nb == 0) {
         continue;
       }
-      $node = array(
+      $node = [
         'name'  => $infos['name'],
         'nb'    => $nb
-      );
+      ];
       if (isset($infos['icon'])) {
         $node['img'] = $infos['icon'];
       } else {
diff --git a/plugins/addons/dashboard/class_dashBoardPasswords.inc b/plugins/addons/dashboard/class_dashBoardPasswords.inc
index fe43bf1b0..229a61beb 100644
--- a/plugins/addons/dashboard/class_dashBoardPasswords.inc
+++ b/plugins/addons/dashboard/class_dashBoardPasswords.inc
@@ -22,25 +22,25 @@ class dashboardPassword extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Passwords'),
       'plDescription' => _('Statistics about passwords'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 12,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'pwds' => array(
+    return [
+      'pwds' => [
         'name'  => _('Passwords statistics'),
-        'attrs' => array(new FakeAttribute('pwds_stats')),
+        'attrs' => [new FakeAttribute('pwds_stats')],
         'template' => get_template_path('pwd_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -64,11 +64,11 @@ class dashboardPassword extends simplePlugin
         sprintf(_('Password statistics could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     }
     $nb_accounts = count($users);
     $nb_locked_accounts = 0;
-    $methods_stats = array();
+    $methods_stats = [];
     foreach ($users as $userPassword) {
       if (!empty($userPassword)) {
         if (preg_match("/^\{[^\}]+\}!/", $userPassword)) {
@@ -77,10 +77,10 @@ class dashboardPassword extends simplePlugin
         $method = passwordMethod::get_method($userPassword);
         $methodClass = get_class($method);
         if (!isset($methods_stats[$methodClass])) {
-          $methods_stats[$methodClass] = array(
+          $methods_stats[$methodClass] = [
             'nb' => 0,
             'name' => $method->get_hash()
-          );
+          ];
           if ($method->get_hash() == $defaultMethod) {
             $methods_stats[$methodClass]['style'] = 'default';
           } elseif ($method->get_hash() == 'clear') {
@@ -95,15 +95,15 @@ class dashboardPassword extends simplePlugin
       }
     }
 
-    return array(
+    return [
       'methods'         => $methods_stats,
       'nb'              => $nb_accounts,
       'img'             => 'geticon.php?context=types&icon=user&size=16',
-      'locked_accounts' => array(
+      'locked_accounts' => [
         'nb'  => $nb_locked_accounts,
         'img' => 'geticon.php?context=status&icon=object-locked&size=16'
-      ),
-    );
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/addons/dashboard/class_dashBoardUsers.inc b/plugins/addons/dashboard/class_dashBoardUsers.inc
index e3d72351f..0a80119a2 100644
--- a/plugins/addons/dashboard/class_dashBoardUsers.inc
+++ b/plugins/addons/dashboard/class_dashBoardUsers.inc
@@ -23,54 +23,54 @@ class dashboardUsers extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Users'),
       'plDescription' => _('Statistics about users'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 10,
 
-      'plProvidedAcls'    => array()
-    );
+      'plProvidedAcls'    => []
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'userstats' => array(
+    return [
+      'userstats' => [
         'name'  => _('Users statistics'),
-        'attrs' => array(new FakeAttribute('users_stats')),
+        'attrs' => [new FakeAttribute('users_stats')],
         'template' => get_template_path('users_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'groupstats' => array(
+      ],
+      'groupstats' => [
         'name'  => _('Groups statistics'),
-        'attrs' => array(new FakeAttribute('groups_stats')),
+        'attrs' => [new FakeAttribute('groups_stats')],
         'template' => get_template_path('groups_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'expired_accounts' => array(
+      ],
+      'expired_accounts' => [
         'name'  => _('Expired accounts'),
-        'attrs' => array(new FakeAttribute('expired')),
+        'attrs' => [new FakeAttribute('expired')],
         'template' => get_template_path('users_accounts.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $this->expiredAccountsColumns = array(
-      'user' => array(
+    $this->expiredAccountsColumns = [
+      'user' => [
         'uid'             => _('Login'),
         'cn'              => _('Name'),
         'telephoneNumber' => _('Phone number'),
         'expirationDate'  => _('Expiration date'),
-      ),
-      'manager' => array(
+      ],
+      'manager' => [
         'manager_cn'      => _('Name'),
         'manager_mail'    => _('Email'),
         'manager_phone'   => _('Phone number'),
-      )
-    );
+      ]
+    ];
     $this->users_stats  = $this->computeUsersStats();
     $this->groups_stats = $this->computeGroupsStats();
     $this->expired      = $this->expired_accounts_info();
@@ -97,15 +97,15 @@ class dashboardUsers extends simplePlugin
       $nb_samba_accounts  = 0;
     }
 
-    return array(
-      'accounts' => array(
-        array('name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
-        array('name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'),
-        array('name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
-      ),
+    return [
+      'accounts' => [
+        ['name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
+        ['name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'],
+        ['name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
+      ],
       'nb'  => $nb_accounts,
       'img' => 'geticon.php?context=types&icon=user&size=16',
-    );
+    ];
   }
 
   function computeGroupsStats ()
@@ -132,14 +132,14 @@ class dashboardUsers extends simplePlugin
       $nb_samba_groups  = 0;
     }
 
-    return array(
-      'groups' => array(
-        array('name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
-        array('name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
-      ),
+    return [
+      'groups' => [
+        ['name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
+        ['name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
+      ],
       'nb'  => $nb_groups,
       'img' => 'geticon.php?context=types&icon=user-group&size=16',
-    );
+    ];
   }
 
   function expired_accounts_info ()
@@ -158,24 +158,24 @@ class dashboardUsers extends simplePlugin
 
     if (!class_available('posixAccount')) {
       /* if shadowExpire is not available no way to check expiration */
-      return array(
+      return [
         'columns'             => $this->expiredAccountsColumns,
-        'accounts'            => array(),
-        'accounts_next_days'  => array(),
+        'accounts'            => [],
+        'accounts_next_days'  => [],
         'next_days'           => $next_expired_days,
-      );
+      ];
     }
 
     /* search all account with all date, mail, telephone */
     try {
-      $attributes = array(
+      $attributes = [
         'dn'                    => 'raw',
         'uid'                   => '*',
         'cn'                    => '*',
         'telephoneNumber'       => '*',
         'manager'               => '*',
         'shadowExpire'          => '*',
-      );
+      ];
       if (class_available('mailAccount')) {
         $attributes['mail'] = 'raw';
       }
@@ -186,18 +186,18 @@ class dashboardUsers extends simplePlugin
         sprintf(_('Expired user information could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     } catch (FusionDirectoryException $e) {
       msg_dialog::display(
         _('Error'),
         sprintf(_('Expired user information could not be computed because of the following error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     }
 
-    $expired_accounts       = array();
-    $next_expired_accounts  = array();
+    $expired_accounts       = [];
+    $next_expired_accounts  = [];
     foreach ($users as $user) {
       // Test if account is expired now
       if ($user['shadowExpire'][0] <= $today) {
@@ -207,15 +207,15 @@ class dashboardUsers extends simplePlugin
       }
     }
 
-    uasort($expired_accounts,       array('dashboardUsers','compareUsers'));
-    uasort($next_expired_accounts,  array('dashboardUsers','compareUsers'));
+    uasort($expired_accounts,       ['dashboardUsers','compareUsers']);
+    uasort($next_expired_accounts,  ['dashboardUsers','compareUsers']);
 
-    return array(
+    return [
       'columns'             => $this->expiredAccountsColumns,
       'accounts'            => $expired_accounts,
       'accounts_next_days'  => $next_expired_accounts,
       'next_days'           => $next_expired_days,
-    );
+    ];
   }
 
   static function get_user_infos($attrs)
@@ -224,7 +224,7 @@ class dashboardUsers extends simplePlugin
 
     if (isset($attrs['manager'][0])) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($attrs['manager'][0], array('cn', 'mail', 'telephoneNumber'));
+      $ldap->cat($attrs['manager'][0], ['cn', 'mail', 'telephoneNumber']);
       if ($manager_attrs = $ldap->fetch()) {
         $manager_cn     = (isset($manager_attrs['cn'][0]) ? $manager_attrs['cn'][0] : '');
         $manager_mail   = (isset($manager_attrs['mail'][0]) ? $manager_attrs['mail'][0] : '');
@@ -247,7 +247,7 @@ class dashboardUsers extends simplePlugin
       $human_shadowExpire = '';
     }
 
-    return array(
+    return [
       'uid'             => $attrs['uid'][0],
       'cn'              => $attrs['cn'][0],
       'telephoneNumber' => (isset($attrs['telephoneNumber'][0]) ? $attrs['telephoneNumber'][0] : ''),
@@ -256,7 +256,7 @@ class dashboardUsers extends simplePlugin
       'manager_mail'    => $manager_mail,
       'manager_phone'   => $manager_phone,
       'expirationDate'  => $human_shadowExpire,
-    );
+    ];
   }
 
   static function compareUsers ($a, $b)
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index a28f52420..1c6655f81 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -22,31 +22,31 @@ class aclAssignmentDialogWindow extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL Assignment Dialog'),
       'plDescription' => _('Access control roles assignment dialog'),
-      'plCategory'    => array('acl'),
+      'plCategory'    => ['acl'],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'properties' => array(
+    return [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Mode'), _('Is this applying on complete subtree or only the base?'),
             'aclMode', TRUE,
-            array('subtree',    'base'), 'base',
-            array(_('Subtree'), _('Base only'))
+            ['subtree',    'base'], 'base',
+            [_('Subtree'), _('Base only')]
           ),
           new SelectAttribute(
             _('Role'), _('Role to apply'),
             'aclRole', TRUE,
-            array()
+            []
           ),
           new BooleanAttribute(
             _('For all users'), _('Apply this ACL for all LDAP users'),
@@ -56,9 +56,9 @@ class aclAssignmentDialogWindow extends simplePlugin
             _('Members'), _('Users or groups to assign this role to.'),
             'aclMembers', TRUE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($value, $isContainer = FALSE)
@@ -75,11 +75,11 @@ class aclAssignmentDialogWindow extends simplePlugin
     $this->attributesAccess['aclRole']->setChoices(array_keys($roles), array_values($roles));
     $this->attributesAccess['allUsers']->setInLdap(FALSE);
     $this->attributesAccess['allUsers']->setManagedAttributes(
-      array(
-        'disable' => array(
-          TRUE => array('aclMembers')
-        )
-      )
+      [
+        'disable' => [
+          TRUE => ['aclMembers']
+        ]
+      ]
     );
 
     if ($value !== NULL) {
@@ -109,13 +109,13 @@ class aclAssignmentDialogWindow extends simplePlugin
 
   function getAclEntry()
   {
-    $entry = array(
+    $entry = [
       'scope'   => $this->aclMode,
       'role'    => $this->aclRole,
       'members' => $this->aclMembers,
-    );
+    ];
     if ($this->allUsers) {
-      $entry['members'] = array('*');
+      $entry['members'] = ['*'];
     }
     return $entry;
   }
@@ -134,7 +134,7 @@ class ACLsAssignmentDialog extends GenericDialog
     if (isset($simplePlugin->attrs['objectClass'])) {
       if (count(array_intersect(
                   $simplePlugin->attrs['objectClass'],
-                  array('organizationalUnit', 'organization', 'domain', 'country', 'locality'))
+                  ['organizationalUnit', 'organization', 'domain', 'country', 'locality'])
                 )) {
         $isContainer = TRUE;
       }
@@ -196,11 +196,11 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
   function readValue($value)
   {
     $acl = explode(':', $value);
-    return array($acl[0], array(
+    return [$acl[0], [
       'scope'   => $acl[1],
       'role'    => base64_decode($acl[2]),
       'members' => array_map('base64_decode', explode(',', $acl[3])),
-    ));
+    ]];
   }
 
   function writeValue($key, $value)
@@ -248,9 +248,9 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     foreach ($this->value as $value) {
       if (($source['CLASS'] == 'aclRole') && ($value['role'] == $oldvalue)) {
         return TRUE;
-      } elseif (in_array($source['CLASS'], array('user','posixGroup','roleGeneric')) && in_array($oldvalue, $value['members'])) {
+      } elseif (in_array($source['CLASS'], ['user','posixGroup','roleGeneric']) && in_array($oldvalue, $value['members'])) {
         return TRUE;
-      } elseif (!in_array($source['CLASS'], array('aclRole','user','posixGroup','roleGeneric'))) {
+      } elseif (!in_array($source['CLASS'], ['aclRole','user','posixGroup','roleGeneric'])) {
         trigger_error('unknown source '.$source['CLASS']);
       }
     }
@@ -259,13 +259,13 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
 
 class aclAssignment extends simplePlugin
 {
-  var $objectclasses  = array('gosaAcl');
+  var $objectclasses  = ['gosaAcl'];
 
   static function plInfo()
   {
     global $config;
-    $oc = array(
-      'aclAssignment' => array(
+    $oc = [
+      'aclAssignment' => [
         'aclCategory' => 'acl',
         'name'        => _('ACL assignment'),
         'filter'      => 'objectClass=gosaAcl',
@@ -273,44 +273,44 @@ class aclAssignment extends simplePlugin
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
         'tabClass'    => 'simpleTabs_noSpecial',
         'mainAttr'    => FALSE
-      ),
-    );
+      ],
+    ];
     if ($config->get_cfg_value('aclTabOnObjects') == 'TRUE') {
       $oc[] = 'special';
     } else {
       $oc = array_merge($oc, departmentManagement::getDepartmentTypes());
     }
-    return array(
+    return [
       'plShortName'   => _('ACL Assignment'),
       'plDescription' => _('Access control roles assignment'),
       'plObjectType'  => $oc,
-      'plForeignKeys'  => array(
-        'gosaAclEntry' => array(
-          array('aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'),
-          array('user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-          array('posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-          array('roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-        )
-      ),
+      'plForeignKeys'  => [
+        'gosaAclEntry' => [
+          ['aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'],
+          ['user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+          ['posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+          ['roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Assignments'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new ACLsAssignmentAttribute(
             '', _('ACL role assignments for this base'),
             'gosaAclEntry', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index dea452766..3e949b9a2 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -27,24 +27,24 @@ class aclAssignmentCreationDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL assignment creation'),
       'plShortName'   => _('ACL assignment creation'),
       'plDescription' => _('Create an ACL assignment on an arbitrary dn'),
-      'plCategory'    => array('acl'),
+      'plCategory'    => ['acl'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('ACL assignment creation'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new StringAttribute (
             _('Dn'), _('DN you wish to add assignments for'),
             'baseDn', TRUE,
@@ -52,9 +52,9 @@ class aclAssignmentCreationDialog extends simplePlugin
             '/^([^=,]+=[^=,]+,)+'.preg_quote($config->current['BASE'], '/').'$/',
             'ou=people,'.$config->current['BASE']
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($parent)
@@ -107,7 +107,7 @@ class aclAssignmentCreationDialog extends simplePlugin
     try {
       $this->simpleManagement->newEntryConfirmed($this->baseDn);
     } catch (NonExistingLdapNodeException $e) {
-      msg_dialog::displayChecks(array(_('The dn you entered could not be found in the LDAP')));
+      msg_dialog::displayChecks([_('The dn you entered could not be found in the LDAP')]);
       return TRUE;
     }
     return FALSE;
@@ -122,9 +122,9 @@ class aclAssignmentCreationDialog extends simplePlugin
 
 class aclManagement extends simpleManagement
 {
-  protected $objectTypes  = array('aclAssignment');
+  protected $objectTypes  = ['aclAssignment'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'ou', 'dc');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'ou', 'dc'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
@@ -136,17 +136,17 @@ class aclManagement extends simpleManagement
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL assignments'),
       'plTitle'       => _('ACL assignments management'),
       'plDescription' => _('Manage ACL roles assignments to users'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 28,
-      'plManages'     => array('aclAssignment'),
+      'plManages'     => ['aclAssignment'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureFilter()
@@ -168,7 +168,7 @@ class aclManagement extends simpleManagement
   function configureHeadpage ()
   {
     /* Remove department types so that we don't mistake assignments with them */
-    $this->headpage->objectTypes = array();
+    $this->headpage->objectTypes = [];
     $this->headpage->registerElementFilter('filterLabel', 'aclManagement::filterLabel');
     parent::configureHeadpage();
   }
@@ -213,7 +213,7 @@ class aclManagement extends simpleManagement
           continue;
         }
         if (!is_array($val)) {
-          $val = array($val);
+          $val = [$val];
         }
         $ou = htmlentities(reset($val), ENT_COMPAT, 'UTF-8');
       }
diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc
index 9f7801390..b4c579236 100644
--- a/plugins/admin/aclrole/class_aclEditionDialog.inc
+++ b/plugins/admin/aclrole/class_aclEditionDialog.inc
@@ -25,8 +25,8 @@ class ACLEditionDialog extends GenericDialog
   protected $initialAclValue;
   protected $dialogState      = 'create';
   protected $aclObject        = '';
-  protected $aclContents      = array();
-  protected $savedAclContents = array();
+  protected $aclContents      = [];
+  protected $savedAclContents = [];
 
   function __construct($simplePlugin, $attribute, $acl = NULL)
   {
@@ -35,7 +35,7 @@ class ACLEditionDialog extends GenericDialog
 
     /* New entry gets presets... */
     if ($acl === NULL) {
-      $this->aclContents  = array();
+      $this->aclContents  = [];
     } else {
       $this->aclContents  = $acl;
     }
@@ -59,7 +59,7 @@ class ACLEditionDialog extends GenericDialog
   {
     global $config;
 
-    $new_acl = array();
+    $new_acl = [];
 
     foreach ($_POST as $name => $post) {
       /* Actions... */
@@ -98,7 +98,7 @@ class ACLEditionDialog extends GenericDialog
 
         /* Ordinary ACL */
         if (!isset($new_acl[$object])) {
-          $new_acl[$object] = array();
+          $new_acl[$object] = [];
         }
         if (isset($new_acl[$object][$attribute])) {
           $new_acl[$object][$attribute] .= $value;
@@ -164,7 +164,7 @@ class ACLEditionDialog extends GenericDialog
           /* Hide empty categories */
           continue;
         }
-        $summary = array();
+        $summary = [];
         foreach ($infos['classes'] as $oc) {
           if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) &&
               $this->aclContents[$oc][0] != '') {
@@ -193,17 +193,17 @@ class ACLEditionDialog extends GenericDialog
                   '<input class="center" type="image" src="geticon.php?context=actions&amp;icon=edit-delete&amp;size=16"
                     alt="'._('Delete').'" name="cat_del_'.$section.'" title="'._('Reset category ACL').'"/>';
 
-        $field1 = array('html' => $infos['description'], 'attach' => 'style="width:140px"');
-        $field2 = array('html' => $summary);
-        $field3 = array('html' => $action, 'attach' => 'style="border-right:0px;width:40px"');
-        $aclList->AddEntry(array($field1, $field2, $field3));
+        $field1 = ['html' => $infos['description'], 'attach' => 'style="width:140px"'];
+        $field2 = ['html' => $summary];
+        $field3 = ['html' => $action, 'attach' => 'style="border-right:0px;width:40px"'];
+        $aclList->AddEntry([$field1, $field2, $field3]);
       }
 
       $smarty->assign('headline', _('List of available ACL categories'));
       $smarty->assign('aclEdition', $aclList->DrawList());
     } elseif ($this->dialogState == 'edit') {
       /* Collect objects for selected category */
-      $aclObjects = array();
+      $aclObjects = [];
       foreach ($config->data['CATEGORIES'][$this->aclObject]['classes'] as $idx => $class) {
         if ($idx == 0) {
           continue;
@@ -310,7 +310,7 @@ class ACLEditionDialog extends GenericDialog
     foreach ($list as $key => $name) {
       /* Create sub acl if it does not exist */
       if (!isset($this->aclContents[$key])) {
-        $this->aclContents[$key] = array();
+        $this->aclContents[$key] = [];
       }
       if (!isset($this->aclContents[$key][0])) {
         $this->aclContents[$key][0] = '';
diff --git a/plugins/admin/aclrole/class_aclRole.inc b/plugins/admin/aclrole/class_aclRole.inc
index a435a5099..1856c7e77 100644
--- a/plugins/admin/aclrole/class_aclRole.inc
+++ b/plugins/admin/aclrole/class_aclRole.inc
@@ -36,13 +36,13 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
       }
     }
     $summary = sprintf(_('Contains settings for these objects: %s'), preg_replace('/, $/', '', $summary));
-    return array($summary);
+    return [$summary];
   }
 
   function readValue($value)
   {
     $acl = explode(':', $value, 2);
-    return array($acl[0], acl::extractACL($acl[1]));
+    return [$acl[0], acl::extractACL($acl[1])];
   }
 
   function writeValue($key, $value)
@@ -69,31 +69,31 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
 
 class aclRole extends simplePlugin
 {
-  var $objectclasses  = array('top','gosaRole');
+  var $objectclasses  = ['top','gosaRole'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Role'),
       'plDescription' => _('Access control roles'),
-      'plObjectType'  => array('aclRole' => array(
+      'plObjectType'  => ['aclRole' => [
         'aclCategory' => 'acl',
         'name'        => _('ACL role'),
         'filter'      => 'objectClass=gosaRole',
         'ou'          => get_ou('aclRoleRDN'),
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'properties' => array(
+    return [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('aclRoleRDN')),
           new HostNameAttribute(
             _('Name'), _('A name for this role'),
@@ -103,19 +103,19 @@ class aclRole extends simplePlugin
             _('Description'), _('Short description of this role'),
             'description', FALSE
           ),
-        )
-      ),
-      'acls' => array(
+        ]
+      ],
+      'acls' => [
         'name'  => _('ACLs'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new ACLsAttribute(
             '', _('ACLs which are part of this group'),
             'gosaAclTemplate', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/admin/aclrole/class_aclRoleManagement.inc b/plugins/admin/aclrole/class_aclRoleManagement.inc
index ca6ccda6b..3d135fe2b 100644
--- a/plugins/admin/aclrole/class_aclRoleManagement.inc
+++ b/plugins/admin/aclrole/class_aclRoleManagement.inc
@@ -21,7 +21,7 @@
 class aclRoleManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('aclRole');
+  protected $objectTypes  = ['aclRole'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
@@ -30,18 +30,18 @@ class aclRoleManagement extends simpleManagement
   /* Return plugin informations for acl handling  */
   public static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL roles'),
       'plTitle'       => _('ACL roles management'),
       'plDescription' => _('Manage ACL roles'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 27,
-      'plCategory'    => array('acl'),
-      'plManages'     => array('aclRole'),
+      'plCategory'    => ['acl'],
+      'plManages'     => ['aclRole'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_country.inc b/plugins/admin/departments/class_country.inc
index f9ed6aa35..8ce3ee17e 100644
--- a/plugins/admin/departments/class_country.inc
+++ b/plugins/admin/departments/class_country.inc
@@ -21,14 +21,14 @@
 class country extends department
 {
   static $namingAttr  = "c";
-  var $structuralOC   = array("country");
+  var $structuralOC   = ["country"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Country'),
       'plDescription' => _('Country'),
-      'plObjectType'  => array('country' => array(
+      'plObjectType'  => ['country' => [
         'aclCategory' => 'department',
         'name'        => _('Country'),
         'filter'      => '(&(objectClass=country)(objectClass=gosaDepartment))',
@@ -36,13 +36,13 @@ class country extends department
         'icon'        => 'geticon.php?context=types&icon=country&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_dcObject.inc b/plugins/admin/departments/class_dcObject.inc
index 63f5e0248..e73bd6f6e 100644
--- a/plugins/admin/departments/class_dcObject.inc
+++ b/plugins/admin/departments/class_dcObject.inc
@@ -21,15 +21,15 @@
 class dcObject extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = array("top", "dcObject", "gosaDepartment");
-  var $structuralOC   = array("locality");
+  var $objectclasses  = ["top", "dcObject", "gosaDepartment"];
+  var $structuralOC   = ["locality"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Domain Component'),
       'plDescription' => _('Domain Component'),
-      'plObjectType'  => array('dcObject' => array(
+      'plObjectType'  => ['dcObject' => [
         'aclCategory' => 'department',
         'name'        => _('Domain Component'),
         'filter'      => '(&(objectClass=dcObject)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class dcObject extends department
         'icon'        => 'geticon.php?context=types&icon=dc&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc
index c907951a3..1a23f53d3 100644
--- a/plugins/admin/departments/class_department.inc
+++ b/plugins/admin/departments/class_department.inc
@@ -24,32 +24,32 @@ class department extends simplePlugin
   static $namingAttr = 'ou';
 
   /* Do not append the structural object classes here, they are added dynamically in the constructor */
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("organizationalUnit");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["organizationalUnit"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Department'),
       'plDescription' => _('Departments'),
-      'plCategory'    => array('department' => array('objectClass' => 'gosaDepartment', 'description' => _('Departments'))),
+      'plCategory'    => ['department' => ['objectClass' => 'gosaDepartment', 'description' => _('Departments')]],
       'plObjectType'  =>
-        array(
-          'department' => array(
+        [
+          'department' => [
             'name'      => _('Department'),
             'filter'    => '(&(objectClass=organizationalUnit)(objectClass=gosaDepartment))',
             'ou'        => '',
             'icon'      => 'geticon.php?context=places&icon=folder&size=16',
             'tabClass'  => 'deptabs',
             'mainAttr'  => static::$namingAttr,
-          )
-        ),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+          ]
+        ],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
@@ -58,10 +58,10 @@ class department extends simplePlugin
   }
   static function getDepartmentAttributesInfo($name)
   {
-    $attributesInfo = array(
-      'properties' => array(
+    $attributesInfo = [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(''),
           new StringAttribute(
             sprintf(_('Name of %s'), $name), sprintf(_('A name for this %s'), $name),
@@ -84,11 +84,11 @@ class department extends simplePlugin
             _('Manager'), sprintf(_('Manager of this %s'), $name),
             'manager', FALSE
           )
-        )
-      ),
-      'location' => array(
+        ]
+      ],
+      'location' => [
         'name'  => _('Location'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('State'), _('State'), 'st', FALSE
           ),
@@ -112,9 +112,9 @@ class department extends simplePlugin
             _('Fax'), _('Facsimile telephone number'),
             'facsimileTelephoneNumber', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
     if (static::$namingAttr != 'ou') {
       $attributesInfo['properties']['attrs'][] = new HiddenAttribute('ou');
     }
@@ -130,7 +130,7 @@ class department extends simplePlugin
     if ($dn == "" || $dn == "new" || !$ldap->dn_exists($dn)) {
       $this->objectclasses = array_merge($this->structuralOC, $this->objectclasses);
     } else {
-      $ldap->cat($dn, array("structuralObjectClass"));
+      $ldap->cat($dn, ["structuralObjectClass"]);
       $attrs = $ldap->fetch();
       if (isset($attrs['structuralObjectClass']['count'])) {
         for ($i = 0; $i < $attrs['structuralObjectClass']['count']; $i++) {
@@ -146,7 +146,7 @@ class department extends simplePlugin
 
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $categoriesList = $config->get_cfg_value('DepartmentCategories', array());
+    $categoriesList = $config->get_cfg_value('DepartmentCategories', []);
 
     /* Insert current value to possibilities */
     if (isset($this->attributesAccess['businessCategory'])) {
diff --git a/plugins/admin/departments/class_departmentManagement.inc b/plugins/admin/departments/class_departmentManagement.inc
index e5e349f03..6d81d0155 100644
--- a/plugins/admin/departments/class_departmentManagement.inc
+++ b/plugins/admin/departments/class_departmentManagement.inc
@@ -29,17 +29,17 @@ class departmentManagement extends simpleManagement
   /* Return plugin information for acl handling */
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Departments'),
       'plTitle'       => _('Manage departments'),
       'plDescription' => _('Manage departments, countries, domain components, domains, localities and organization nodes,'),
       'plIcon'        => 'geticon.php?context=places&icon=folder&size=48',
-      'plSection'     => array('accounts' => array('name' => _('Users and groups'), 'priority' => 0)),
+      'plSection'     => ['accounts' => ['name' => _('Users and groups'), 'priority' => 0]],
       'plPriority'    => 0,
       'plManages'     => static::getDepartmentTypes(),
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function __construct()
@@ -83,7 +83,7 @@ class departmentManagement extends simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $config;
-    $target = array_remove_entries(array($config->current['BASE']), $target);
+    $target = array_remove_entries([$config->current['BASE']], $target);
     return parent::removeEntryRequested($action, $target, $all);
   }
 
@@ -106,7 +106,7 @@ class departmentManagement extends simpleManagement
 
   static function getDepartmentTypes()
   {
-    return array('DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION');
+    return ['DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION'];
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_domain.inc b/plugins/admin/departments/class_domain.inc
index 8cf7d844b..abc4eae16 100644
--- a/plugins/admin/departments/class_domain.inc
+++ b/plugins/admin/departments/class_domain.inc
@@ -21,15 +21,15 @@
 class domain extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = array("top", "domain", "gosaDepartment");
-  var $structuralOC   = array("domain");
+  var $objectclasses  = ["top", "domain", "gosaDepartment"];
+  var $structuralOC   = ["domain"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Domain'),
       'plDescription' => _('Domain'),
-      'plObjectType'  => array('domain' => array(
+      'plObjectType'  => ['domain' => [
         'aclCategory' => 'department',
         'name'        => _('Domain'),
         'filter'      => '(&(objectClass=domain)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class domain extends department
         'icon'        => 'geticon.php?context=types&icon=domain&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_locality.inc b/plugins/admin/departments/class_locality.inc
index af8873e27..db2b137f8 100644
--- a/plugins/admin/departments/class_locality.inc
+++ b/plugins/admin/departments/class_locality.inc
@@ -21,15 +21,15 @@
 class locality extends department
 {
   static $namingAttr  = "l";
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("locality");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["locality"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Locality'),
       'plDescription' => _('Locality'),
-      'plObjectType'  => array('locality' => array(
+      'plObjectType'  => ['locality' => [
         'aclCategory' => 'department',
         'name'        => _('Locality'),
         'filter'      => '(&(!(objectClass=dcObject))(objectClass=locality)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class locality extends department
         'icon'        => 'geticon.php?context=types&icon=locality&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_organization.inc b/plugins/admin/departments/class_organization.inc
index 93e82ff29..960cf5f6b 100644
--- a/plugins/admin/departments/class_organization.inc
+++ b/plugins/admin/departments/class_organization.inc
@@ -21,15 +21,15 @@
 class organization extends department
 {
   static $namingAttr  = "o";
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("organization");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["organization"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Organization'),
       'plDescription' => _('Organization'),
-      'plObjectType'  => array('organization' => array(
+      'plObjectType'  => ['organization' => [
         'aclCategory' => 'department',
         'name'        => _('Organization'),
         'filter'      => '(&(objectClass=organization)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class organization extends department
         'icon'        => 'geticon.php?context=types&icon=organization&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 75155b3c0..9f4a7f464 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -21,7 +21,7 @@
 
 class groupManagement extends simpleManagement
 {
-  protected $objectTypes  = array('ogroup', 'role', 'group');
+  protected $objectTypes  = ['ogroup', 'role', 'group'];
 
   protected $autoFilter = FALSE;
 
@@ -31,17 +31,17 @@ class groupManagement extends simpleManagement
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Groups and roles'),
       'plTitle'       => _('Manage groups and roles'),
       'plDescription' => _('Allows you to manage object groups, POSIX groups and roles'),
       'plIcon'        => 'geticon.php?context=types&icon=resource-group&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => array('ogroup', 'group', 'role'),
+      'plManages'     => ['ogroup', 'group', 'role'],
       'plPriority'    => 20,
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function __construct()
@@ -89,24 +89,24 @@ class groupManagement extends simpleManagement
 
     // Register Daemon Events
     if ($this->siActive) {
-      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = array();
-      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = array();
+      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = [];
+      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = [];
       $events = argonautEventTypes::get_event_types();
       foreach ($events as $name => $data) {
         $this->registerAction('T_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = [
         'name' => 'T_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
         $this->registerAction('S_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = [
         'name' => 'S_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
       }
     } else {
       unset($this->headpage->xmlData['actionmenu']['action'][3]);
@@ -139,7 +139,7 @@ class groupManagement extends simpleManagement
     $event = preg_replace('/^[TS]_/', '', $action);
 
     // Now send FAI/Argonaut events here.
-    $mac = array();
+    $mac = [];
 
     // Collect target mac addresses
     $ldap = $config->get_ldap_link();
@@ -170,12 +170,12 @@ class groupManagement extends simpleManagement
     /* Skip installation or update trigerred events,
      *  if this entry is currently processing.
      */
-    if ($triggered && in_array($event, array('reinstall','update'))) {
+    if ($triggered && in_array($event, ['reinstall','update'])) {
       foreach ($mac as $key => $mac_address) {
         if ($o_queue->is_currently_installing($mac_address)) {
           msg_dialog::display(_('Action canceled'), sprintf(_('System %s is currently installing'), $dn), ERROR_DIALOG);
           unset($mac[$key]);
-          logging::log('security', 'systems/'.get_class($this), '', array(), 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
+          logging::log('security', 'systems/'.get_class($this), '', [], 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
         }
       }
     }
@@ -246,7 +246,7 @@ class groupManagement extends simpleManagement
   static function filterProperties($row, $dn, $objectType, $attrs, $gosaGroupObjects = NULL)
   {
     global $config;
-    static $grouptabs = array();
+    static $grouptabs = [];
 
     // Load information if needed
     $result = '&nbsp;';
@@ -318,42 +318,42 @@ class groupManagement extends simpleManagement
   function renderList()
   {
     $smarty = get_smarty();
-    $filters = array(
-      array('id'  => 'USER',        'label'  => _('Show user groups')),
-      array('id'  => 'ROLE',        'label'  => _('Show organizational roles')),
-      array('id'  => 'APPLICATION', 'label'  => _('Show application groups')),
-      array('id'  => 'GROUP',       'label'  => _('Show groups of groups')),
-      array('id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')),
-    );
+    $filters = [
+      ['id'  => 'USER',        'label'  => _('Show user groups')],
+      ['id'  => 'ROLE',        'label'  => _('Show organizational roles')],
+      ['id'  => 'APPLICATION', 'label'  => _('Show application groups')],
+      ['id'  => 'GROUP',       'label'  => _('Show groups of groups')],
+      ['id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')],
+    ];
     if (class_available('posixGroup')) {
-      $filters[] = array('id'  => 'PRIMARY',  'label'  => _('Show primary groups'));
+      $filters[] = ['id'  => 'PRIMARY',  'label'  => _('Show primary groups')];
       if (class_available('mailAccount')) {
-        $filters[] = array('id'  => 'MAIL',  'label'  => _('Show mail groups'));
+        $filters[] = ['id'  => 'MAIL',  'label'  => _('Show mail groups')];
       }
       if (class_available('sambaAccount')) {
-        $filters[] = array('id'  => 'SAMBA', 'label'  => _('Show samba groups'));
+        $filters[] = ['id'  => 'SAMBA', 'label'  => _('Show samba groups')];
       }
     }
     if (class_available('simpleSecurityObject')) {
-      $filters[] = array('id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries'));
+      $filters[] = ['id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries')];
     }
     if (class_available('systemManagement')) {
       $filters = array_merge(
         $filters,
-        array(
-          array('id'  => 'SERVER',      'label'  => _('Show server groups')),
-          array('id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')),
-          array('id'  => 'TERMINAL',    'label'  => _('Show terminal groups')),
-          array('id'  => 'PRINTER',     'label'  => _('Show printer groups')),
-          array('id'  => 'PHONE',       'label'  => _('Show phone groups')),
-        )
+        [
+          ['id'  => 'SERVER',      'label'  => _('Show server groups')],
+          ['id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')],
+          ['id'  => 'TERMINAL',    'label'  => _('Show terminal groups')],
+          ['id'  => 'PRINTER',     'label'  => _('Show printer groups')],
+          ['id'  => 'PHONE',       'label'  => _('Show phone groups')],
+        ]
       );
     }
     if (!static::$skipTemplates) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      );
+      ];
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc
index c1e277151..55f8fab2b 100644
--- a/plugins/admin/groups/class_roleGeneric.inc
+++ b/plugins/admin/groups/class_roleGeneric.inc
@@ -28,48 +28,48 @@ class RoleMembersAttribute extends UsersAttribute
     if ($config->get_cfg_value('RestrictRoleMembers') == 'TRUE') {
       if ($this->whitelistDns === NULL) {
         /* Computes a list of members of all groups within our branch */
-        $groups = objects::ls('ogroup', array('member' => '*'), $this->plugin->base);
+        $groups = objects::ls('ogroup', ['member' => '*'], $this->plugin->base);
         if (empty($groups)) {
-          $this->whitelistDns = array();
+          $this->whitelistDns = [];
         } else {
           $this->whitelistDns = call_user_func_array('array_merge_recursive', $groups)['member'];
         }
       }
-      return array(
-        'branches'  => array($this->plugin->base),
+      return [
+        'branches'  => [$this->plugin->base],
         'dn'        => $this->whitelistDns,
-      );
+      ];
     } else {
-      return array();
+      return [];
     }
   }
 }
 
 class roleGeneric extends simplePlugin
 {
-  var $objectclasses = array('organizationalRole');
+  var $objectclasses = ['organizationalRole'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Role'),
       'plDescription' => _('Role information'),
-      'plObjectType'  => array('role' =>
-        array(
+      'plObjectType'  => ['role' =>
+        [
           'name'        => _('Role'),
           'description' => _('Organizational role'),
           'ou'          => get_ou('roleRDN'),
           'filter'      => '(&(objectClass=organizationalRole)(!(objectClass=simpleSecurityObject)))',
           'icon'        => 'geticon.php?context=types&icon=role&size=16',
           'mainAttr'    => 'cn',
-        )
-      ),
-      'plForeignKeys'  => array(
-        'roleOccupant' => array('user','dn','roleOccupant=%oldvalue%','*')
-      ),
+        ]
+      ],
+      'plForeignKeys'  => [
+        'roleOccupant' => ['user','dn','roleOccupant=%oldvalue%','*']
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
    /*!
@@ -77,10 +77,10 @@ class roleGeneric extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute (get_ou('roleRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
@@ -99,25 +99,25 @@ class roleGeneric extends simplePlugin
             _('Fax number'), _('Fax number'),
             'facsimileTelephoneNumber'
           )
-        )
-      ),
-      'members' => array(
+        ]
+      ],
+      'members' => [
         'name'  => _('Role members'),
-        'attrs' => array(
+        'attrs' => [
           new RoleMembersAttribute (
             '', _('Add users for the role'),
             'roleOccupant', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function ldap_save()
   {
     global $ui;
 
-    $errors = array();
+    $errors = [];
 
     if (isset($this->attrs['roleOccupant'])) {
       $savedOccupants     = $this->attributesAccess['roleOccupant']->getInitialValue();
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 5c26b4389..55bec8e42 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -21,16 +21,16 @@
 class ogrouptabs extends simpleTabs_noSpecial
 {
   protected $groupObjects = NULL;
-  protected $removed_tabs = array();
+  protected $removed_tabs = [];
 
-  function __construct($type, $dn, $copied_object = NULL)
+  function __construct ($type, $dn, $copied_object = NULL)
   {
     parent::__construct($type, $dn, $copied_object);
 
     $this->loadtabs($this->getBaseObject()->gosaGroupObjects);
   }
 
-  function loadtabs($gosaGroupObjects)
+  function loadtabs ($gosaGroupObjects)
   {
     global $config;
     if ($this->groupObjects == $gosaGroupObjects) {
@@ -39,21 +39,21 @@ class ogrouptabs extends simpleTabs_noSpecial
     $this->groupObjects = $gosaGroupObjects;
     $objects = preg_replace('/[\[\]]/', '', $gosaGroupObjects);
 
-    $tabs = array();
+    $tabs = [];
     if (strlen($objects)) {
       if (isset($config->data['TABS']['OGROUP-DYNAMICTABS'])) {
         $dtabs  = $config->data['TABS']['OGROUP-DYNAMICTABS'];
       } else {
-        $dtabs  = array();
+        $dtabs  = [];
       }
       $tabs   = FALSE;
       for ($i = 0; $i < strlen($objects); $i++) {
-        if (in_array($objects[$i], array('I','G'))) {
+        if (in_array($objects[$i], ['I','G'])) {
           /* Ignore unknown objects and groups */
           continue;
         }
         $otype = ogroup::$objectTypes[$objects[$i]];
-        $otabs = array();
+        $otabs = [];
         if (isset($config->data['TABS'][strtoupper($otype).'TABS'])) {
           $otabs = array_uintersect(
             $dtabs,
@@ -129,7 +129,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     unset($this->plNotify["$class"]);
   }
 
-  function gen_tabs($disabled = FALSE)
+  function gen_tabs ($disabled = FALSE)
   {
     $this->loadtabs($this->getBaseObject()->getGroupObjectTypes());
     return parent::gen_tabs($disabled);
@@ -138,7 +138,7 @@ class ogrouptabs extends simpleTabs_noSpecial
   /*!
    * \brief Sets the active tabs from this instance to an other one. Used by templates
    */
-  function setActiveTabs(&$tabObject)
+  function setActiveTabs (&$tabObject)
   {
     $tabObject->loadtabs($this->groupObjects);
     foreach ($this->by_object as $class => $plugin) {
@@ -148,12 +148,12 @@ class ogrouptabs extends simpleTabs_noSpecial
     }
   }
 
-  function check($ignore_account = FALSE)
+  function check ($ignore_account = FALSE)
   {
     return parent::check(FALSE);
   }
 
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
@@ -174,7 +174,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     return $errors;
   }
 
-  function save_object($save_current = FALSE)
+  function save_object ($save_current = FALSE)
   {
     parent::save_object($save_current);
 
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 3424dc787..fe034506e 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -22,7 +22,7 @@
 
 class userManagement extends simpleManagement
 {
-  protected $objectTypes  = array('user');
+  protected $objectTypes  = ['user'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
@@ -36,22 +36,22 @@ class userManagement extends simpleManagement
 
   public static $skipTemplates = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Users'),
       'plTitle'       => _('Manage users'),
       'plDescription' => _('Manage user accounts and their properties'),
       'plIcon'        => 'geticon.php?context=types&icon=user&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => array('user'),
+      'plManages'     => ['user'],
       'plPriority'    => 10,
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath  = get_template_path('user-filter.xml',  TRUE, dirname(__FILE__));
     $this->listXMLPath    = get_template_path('user-list.xml',    TRUE, dirname(__FILE__));
@@ -80,7 +80,7 @@ class userManagement extends simpleManagement
   {
     parent::configureFilter();
 
-    $classes = array();
+    $classes = [];
     if (class_available('posixAccount')) {
       $classes[] = 'posixAccount';
     } else {
@@ -121,7 +121,7 @@ class userManagement extends simpleManagement
 
   /* !\brief  Lock/unlock multiple users.
    */
-  function lockUsers($action, array $target, array $all)
+  function lockUsers ($action, array $target, array $all)
   {
     if (!count($target)) {
       return;
@@ -136,12 +136,12 @@ class userManagement extends simpleManagement
 
   /* !\brief  Locks/unlocks the given user(s).
    */
-  function lockEntry($action, $entry, $all, $type = 'toggle')
+  function lockEntry ($action, $entry, $all, $type = 'toggle')
   {
     global $config, $ui;
     // Filter out entries we are not allowed to modify
-    $disallowed = array();
-    $allowed    = array();
+    $disallowed = [];
+    $allowed    = [];
     foreach ($entry as $dn) {
       if (!preg_match('/w/', $ui->get_permissions($dn, 'user/user', 'userLock'))) {
         $disallowed[] = $dn;
@@ -156,7 +156,7 @@ class userManagement extends simpleManagement
     // Try to lock/unlock the rest of the entries.
     $ldap = $config->get_ldap_link();
     foreach ($allowed as $dn) {
-      $ldap->cat($dn, array('userPassword'));
+      $ldap->cat($dn, ['userPassword']);
       if ($ldap->count() == 1) {
 
         // We can't lock empty passwords.
@@ -207,7 +207,7 @@ class userManagement extends simpleManagement
     }
   }
 
-  static function filterLockImage($userPassword)
+  static function filterLockImage ($userPassword)
   {
     $image = 'images/empty.png';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -220,7 +220,7 @@ class userManagement extends simpleManagement
     return $image;
   }
 
-  static function filterLockLabel($userPassword)
+  static function filterLockLabel ($userPassword)
   {
     $label = '';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -233,10 +233,10 @@ class userManagement extends simpleManagement
     return $label;
   }
 
-  static function filterProperties($row, $dn, $attrs)
+  static function filterProperties ($row, $dn, $attrs)
   {
     global $config;
-    static $usertabs = array();
+    static $usertabs = [];
     if (empty($usertabs)) {
       foreach ($config->data['TABS']['USERTABS'] as $plug) {
         if ($plug['CLASS'] == 'user') {
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index c8e193537..a309d0f17 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -25,7 +25,7 @@ class DebugLevelAttribute extends SetAttribute
   {
     if (isset($attrs[$this->getLdapName()])) {
       $value = $attrs[$this->getLdapName()][0];
-      $this->value = array();
+      $this->value = [];
       foreach ($this->attribute->getChoices() as $choice) {
         if ($value & $choice) {
           $this->value[] = $choice;
@@ -36,7 +36,7 @@ class DebugLevelAttribute extends SetAttribute
     }
   }
 
-  function computeLdapValue()
+  function computeLdapValue ()
   {
     $value = 0;
     foreach ($this->value as $v) {
@@ -48,49 +48,49 @@ class DebugLevelAttribute extends SetAttribute
 
 class configInLdap extends simplePlugin
 {
-  var $objectclasses  = array("fusionDirectoryConf");
+  var $objectclasses  = ["fusionDirectoryConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Configuration'),
       'plTitle'         => _('FusionDirectory configuration'),
       'plDescription'   => _('Configuration screen of FusionDirectory'),
       'plIcon'          => 'geticon.php?context=categories&icon=settings&size=48',
-      'plObjectType'    => array(
-        'configuration' => array(
+      'plObjectType'    => [
+        'configuration' => [
           'name'      => _('FusionDirectory configuration'),
           'filter'    => 'objectClass=fusionDirectoryConf',
           'tabClass'  => 'tabs_configInLdap',
           'icon'      => 'geticon.php?context=categories&icon=settings&size=16',
           'mainAttr'  => FALSE,
           'ou'        => preg_replace('/^[^,]+,/', '', CONFIGRDN)
-        )
-      ),
-      'plSection'       => array('conf' => array('name' => _('Configuration'), 'priority' => 20)),
-      'plManages'       => array('configuration'),
+        ]
+      ],
+      'plSection'       => ['conf' => ['name' => _('Configuration'), 'priority' => 20]],
+      'plManages'       => ['configuration'],
       'plPriority'      => 0,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    $plugins = array();
+    $plugins = [];
     if (session::is_set('plist')) {
       $plugins = array_keys(session::get('plist')->info);
     }
     sort($plugins);
-    return array(
-      'look_n_feel' => array(
+    return [
+      'look_n_feel' => [
         'name'  => _('Look and feel'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Language'), _('Language of the application. If \'automatic\' or not available, the one asked by the browser will be used. This setting can be overriden per user.'),
             'fdLanguage', FALSE,
-            array('')
+            ['']
           ),
           new SelectAttribute (
             _('Theme'), _('Theme to be used'),
@@ -101,14 +101,14 @@ class configInLdap extends simplePlugin
           new SelectAttribute (
             _('Timezone'), _('Timezone to be used'),
             'fdTimezone', TRUE,
-            array('America/New_York')
+            ['America/New_York']
           ),
           new HiddenAttribute ('fusionConfigMd5'),
-        )
-      ),
-      'core_settings' => array(
+        ]
+      ],
+      'core_settings' => [
         'name'  => _('Core settings'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('LDAP size limit'), _('Defines the number of entries to get from LDAP by default.'),
             'fdLdapSizeLimit', FALSE,
@@ -118,7 +118,7 @@ class configInLdap extends simplePlugin
             _('Edit locking'),
             _('Check if a entry currently being edited has been modified outside of FusionDirectory in the meantime.'),
             'fdModificationDetectionAttribute', FALSE,
-            array('', 'entryCSN', 'contextCSN'), 'entryCSN'
+            ['', 'entryCSN', 'contextCSN'], 'entryCSN'
           ),
           new BooleanAttribute (
             _('Enable logging'),
@@ -147,15 +147,15 @@ class configInLdap extends simplePlugin
             'fdWildcardForeignKeys', FALSE,
             TRUE
           ),
-        )
-      ),
-      'password' => array(
+        ]
+      ],
+      'password' => [
         'name'  => _('Password settings'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Password default hash'), _('Default hash to be used'),
             'fdPasswordDefaultHash', TRUE,
-            array('ssha')
+            ['ssha']
           ),
           new BooleanAttribute (
             _('Force default hash'), _('Force the use of the default password hash'),
@@ -184,17 +184,17 @@ class configInLdap extends simplePlugin
             _('SASL Exop'), _('Attribute to be stored in the userPassword attribute'),
             'fdSaslExop'
           ),
-        )
-      ),
-      'login' => array(
+        ]
+      ],
+      'login' => [
         'name'  => _('Login and session'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Login attribute'),
             _('Which LDAP attribute should be used as the login name during login.'),
             'fdLoginAttribute', TRUE,
-            array('uid', 'mail', 'uid,mail'), 'uid',
-            array('uid', 'mail', 'both')
+            ['uid', 'mail', 'uid,mail'], 'uid',
+            ['uid', 'mail', 'both']
           ),
           new BooleanAttribute (
             _('Enforce encrypted connections'),
@@ -227,11 +227,11 @@ class configInLdap extends simplePlugin
             'fdHttpHeaderAuthHeaderName', FALSE,
             'AUTH_USER'
           ),
-        )
-      ),
-      'ssl' => array(
+        ]
+      ],
+      'ssl' => [
         'name'  => _('SSL'),
-        'attrs' => array(
+        'attrs' => [
           new TrimmedStringAttribute (
             _('Key path'), _('Path to FusionDirectory private key. Unused for now.'),
             'fdSslKeyPath', FALSE,
@@ -247,11 +247,11 @@ class configInLdap extends simplePlugin
             'fdSslCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-        )
-      ),
-      'cas' => array(
+        ]
+      ],
+      'cas' => [
         'name'  => _('CAS'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Enable CAS'), _('CAS login will be used instead of LDAP bind'),
             'fdCasActivated', FALSE,
@@ -277,16 +277,16 @@ class configInLdap extends simplePlugin
             'fdCasContext', FALSE,
             '/cas'
           ),
-        )
-      ),
-      'people_and_group' => array(
+        ]
+      ],
+      'people_and_group' => [
         'name'  => _('People and group storage'),
-        'class' => array('critical'),
-        'attrs' => array(
+        'class' => ['critical'],
+        'attrs' => [
           new SelectAttribute (
             _('People DN attribute'), _('Attribute to use at the beginning of users dn'),
             'fdAccountPrimaryAttribute', TRUE,
-            array('uid', 'cn')
+            ['uid', 'cn']
           ),
           new StringAttribute (
             _('CN pattern'), _('The pattern to use to build the common name field'),
@@ -321,11 +321,11 @@ class configInLdap extends simplePlugin
             _('Postal address pattern'), _('When using separate address fields, you can use a pattern to fill postalAddress field.'),
             'fdPostalAddressPattern'
           ),
-        )
-      ),
-      'debug' => array(
+        ]
+      ],
+      'debug' => [
         'name'  => _('Debugging'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Display errors'),
             _('Shows PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some passwords in it.'),
@@ -346,18 +346,18 @@ class configInLdap extends simplePlugin
               _('Debug level'),
               _('Display certain information on each page load.'),
               'fdDebugLevel', FALSE,
-              array(DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
-                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL),
+              [DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
+                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL],
                     DEBUG_TRACE,
-              array('Trace',      'LDAP',     'Database', 'Shell',      'POST',
-                    'SESSION',      'ACL',      'SI',     'Mail')
+              ['Trace',      'LDAP',     'Database', 'Shell',      'POST',
+                    'SESSION',      'ACL',      'SI',     'Mail']
             )
           ),
-        )
-      ),
-      'miscellaneous' => array(
+        ]
+      ],
+      'miscellaneous' => [
         'name'  => _('Miscellaneous'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Display summary in listings'),
             _('Determines whether a status bar will be shown on the bottom of lists, displaying a short summary of type and number of elements in the list.'),
@@ -374,42 +374,42 @@ class configInLdap extends simplePlugin
               _('Available department categories'), _('Available categories in the departments dropdown'),
               'fdDepartmentCategories', FALSE
             ),
-            array()
+            []
           ),
           new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Use this to hide some menu entry to specific groups of users'),
               'fdPluginsMenuBlacklist',
-              array(
+              [
                 new SelectAttribute(
                   '', _('Group or role'),
                   'blacklistGroup', TRUE,
-                  array()
+                  []
                 ),
                 new SelectAttribute(
                   '', _('Plugin to blacklist'),
                   'blacklistPlugin', TRUE,
-                  array()
+                  []
                 ),
-              ),
+              ],
               '',
               _('Plugin menu blacklist')
             ),
             // no order
             FALSE,
-            array()
+            []
           )
-        )
-      ),
-      'hooks' => array(
+        ]
+      ],
+      'hooks' => [
         'name'  => _('Hooks'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new OrderedArrayAttribute (
             new CompositeAttribute (
               _('Hooks that are called when specific actions happens'),
               'fdTabHook',
-              array(
+              [
                 new SelectAttribute(
                   _('Tab'), _('The tab that this hook concerns'),
                   'hookTab', TRUE,
@@ -418,22 +418,22 @@ class configInLdap extends simplePlugin
                 new SelectAttribute(
                   _('Mode'), _('When to call this command'),
                   'hookMode', TRUE,
-                  array('postcreate', 'postremove', 'postmodify',
+                  ['postcreate', 'postremove', 'postmodify',
                         'precreate', 'preremove', 'premodify', 'check',
-                        'prelock', 'postlock', 'preunlock', 'postunlock')
+                        'prelock', 'postlock', 'preunlock', 'postunlock']
                 ),
                 new TextAreaAttribute(
                   _('Command'), _('The command that will be called'),
                   'hookCmd', TRUE
                 )
-              ),
+              ],
               '/^([^\\|]+)\\|([^\\|]+)\\|(.*)$/',
               '%s|%s|%s',
               '', // acl
               _('Hooks')
             ),
             FALSE, // non-ordered
-            array(),
+            [],
             TRUE // edition
           ),
           new BooleanAttribute (
@@ -441,9 +441,9 @@ class configInLdap extends simplePlugin
             _('When enabled successful hook execution output is displayed to the user using a dialog.'),
             'fdDisplayHookOutput'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -453,7 +453,7 @@ class configInLdap extends simplePlugin
     /* Languages */
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array("" => _("Automatic")), $languages);
+    $languages = array_merge(["" => _("Automatic")], $languages);
     $attributesInfo['look_n_feel']['attrs'][0]->setChoices(array_keys($languages), array_values($languages));
     /* Timezones */
     $attributesInfo['look_n_feel']['attrs'][2]->setChoices(timezone::_get_tz_zones());
@@ -485,7 +485,7 @@ class configInLdap extends simplePlugin
       array_keys($groupsAndRoles),
       array_values($groupsAndRoles)
     );
-    $menuPlugins = array();
+    $menuPlugins = [];
     $plist = session::get('plist');
     foreach ($config->data['SECTIONS'] as $section => $section_infos) {
       foreach ($config->data['MENU'][$section] as $info) {
@@ -511,73 +511,73 @@ class configInLdap extends simplePlugin
     $this->fusionConfigMd5 = md5_file(CACHE_DIR."/".CLASS_CACHE);
 
     $this->attributesAccess['fdHttpAuthActivated']->setManagedAttributes(
-      array(
-        'erase' => array (
-          TRUE => array (
+      [
+        'erase' => [
+          TRUE => [
             'fdCasActivated',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdEnableSnapshots']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdSnapshotBase',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
 
     $this->attributesAccess['fdTabHook']->setLinearRendering(FALSE);
 
     $this->attributesAccess['fdForceSSL']->setManagedAttributes(
-      array(
-        'disable' => array (
-          TRUE => array (
+      [
+        'disable' => [
+          TRUE => [
             'fdWarnSSL',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdCasActivated']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdCasServerCaCertPath',
             'fdCasHost',
             'fdCasPort',
             'fdCasContext',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdHttpHeaderAuthActivated']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdHttpHeaderAuthHeaderName',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdSplitPostalAddress']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdPostalAddressPattern',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return $this->dn;
   }
 
-  function check()
+  function check ()
   {
     $messages = parent::check();
     if (($this->fdPasswordDefaultHash == 'sasl') && ($this->fdSaslRealm == '') && ($this->fdSaslExop == '')) {
@@ -586,7 +586,7 @@ class configInLdap extends simplePlugin
     return $messages;
   }
 
-  static function get_themes()
+  static function get_themes ()
   {
     $themesdir  = '../ihtml/themes/';
     $themes     = array_keys(session::get(IconTheme::$session_var));
diff --git a/plugins/config/class_dashBoardConfig.inc b/plugins/config/class_dashBoardConfig.inc
index 38b094ad8..09993901b 100644
--- a/plugins/config/class_dashBoardConfig.inc
+++ b/plugins/config/class_dashBoardConfig.inc
@@ -20,27 +20,27 @@
 
 class dashboardConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdDashboardPluginConf');
+  var $objectclasses  = ['fdDashboardPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Dashboard configuration'),
       'plDescription'   => _('FusionDirectory dashboard plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'systems' => array(
+    return [
+      'systems' => [
         'name'  => _('Dashboard name schema'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('Number of digits'), _('Number of digits to use after prefix'),
             'fdDashboardNumberOfDigit', FALSE,
@@ -51,21 +51,21 @@ class dashboardConfig extends simplePlugin
               _('Prefixes'), _('Prefixes to be used for computer ids'),
               'fdDashboardPrefix', TRUE
             ),
-            array("PC")
+            ["PC"]
           )
-        )
-      ),
-      'users' => array(
+        ]
+      ],
+      'users' => [
         'name'  => _('Dashboard expired users'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('Number of days'), _('Number of days before expiration needed for an account to show in the dashboard next expired accounts list'),
             'fdDashboardExpiredAccountsDays', FALSE,
             1, FALSE, 15
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/config/class_mainPluginsConfig.inc b/plugins/config/class_mainPluginsConfig.inc
index a00e598f0..dec365b7e 100644
--- a/plugins/config/class_mainPluginsConfig.inc
+++ b/plugins/config/class_mainPluginsConfig.inc
@@ -20,45 +20,45 @@
 
 class mainPluginsConfig extends simplePlugin
 {
-  var $objectclasses  = array("fusionDirectoryPluginsConf");
+  var $objectclasses  = ["fusionDirectoryPluginsConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Plugins configuration"),
       "plDescription"   => _("FusionDirectory plugins configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'ogroups' => array(
+    return [
+      'ogroups' => [
         'name'  => _('Object groups'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Groups RDN'), _('Branch in which object groups will be stored'),
             'fdOGroupRDN', TRUE,
             'ou=groups'
           ),
-        )
-      ),
-      'sasl' => array(
+        ]
+      ],
+      'sasl' => [
         'name'  => _('SASL'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Force to ask for password'), _('Useful if you add a hook using password value when SASL user passwords are edited'),
             'fdForceSaslPasswordAsk', TRUE,
             FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc
index 676fa318d..daea9f313 100644
--- a/plugins/config/class_pluginsConfigInLdap.inc
+++ b/plugins/config/class_pluginsConfigInLdap.inc
@@ -22,16 +22,16 @@ class pluginsConfigInLdap extends multiPlugin
 {
   var $tabClass = 'SMALLCONFIGTABS';
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Plugins'),
       'plDescription' => _('Configuration for plugins'),
       'plPriority'    => 20,
-      'plObjectType'  => array('configuration'),
+      'plObjectType'  => ['configuration'],
       'plSubTabs'     => 'SMALLCONFIGTABS',
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 }
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index ff252c0de..799ea261a 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -20,27 +20,27 @@
 
 class recoveryConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdPasswordRecoveryConf');
+  var $objectclasses  = ['fdPasswordRecoveryConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Password recovery'),
       'plDescription'   => _('Settings for the password recovery feature'),
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-      'settings' => array (
+    return  [
+      'settings' => [
         'name'      => _('Password recovery settings'),
-        'class'     => array ('alone'),
+        'class'     => ['alone'],
         'template'  => get_template_path('simpleplugin_section_alone.tpl'),
-        'attrs'     => array (
+        'attrs'     => [
           new BooleanAttribute (
             _('Activate password recovery'),
             _('Whether to activate or not password recovery feature'),
@@ -79,11 +79,11 @@ class recoveryConfig extends simplePlugin
             'fdPasswordRecoveryLoginAttribute', TRUE,
             'uid'
           ),
-        )
-      ),
-      'first_email' => array (
+        ]
+      ],
+      'first_email' => [
         'name' => _('First email'),
-        'attrs' => array (
+        'attrs' => [
           new StringAttribute (
             _('Subject'),
             _('Subject of the first email'),
@@ -98,11 +98,11 @@ class recoveryConfig extends simplePlugin
             TRUE,
             _("Hello,\n\nHere is your information: \n - Login : %s\n - Link : %s\n\nThis link is only valid for 10 minutes.")
           )
-        )
-      ),
-      'second_email' => array (
+        ]
+      ],
+      'second_email' => [
         'name' => _('Second email'),
-        'attrs' => array (
+        'attrs' => [
           new StringAttribute (
             _('Subject'),
             _('Subject of the second email'),
@@ -117,9 +117,9 @@ class recoveryConfig extends simplePlugin
             TRUE,
            _("Hello,\n\nYour password has been changed.\nYour login is still %s.")
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -128,7 +128,7 @@ class recoveryConfig extends simplePlugin
     // Check if token branch is here
     $ldap = $config->get_ldap_link();
     $tokenBranch = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($tokenBranch, array('dn'));
+    $ldap->cat($tokenBranch, ['dn']);
     if (!$ldap->count()) {
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($tokenBranch);
@@ -145,15 +145,15 @@ class recoveryConfig extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
 
     $this->attributesAccess['fdPasswordRecoveryActivated']->setManagedAttributes(
-      array(
-        'disable' => array(
-          FALSE => array(
+      [
+        'disable' => [
+          FALSE => [
             'fdPasswordRecoveryEmail','fdPasswordRecoveryValidity','fdPasswordRecoverySalt',
             'fdPasswordRecoveryMailSubject','fdPasswordRecoveryMailBody',
             'fdPasswordRecoveryMail2Subject','fdPasswordRecoveryMail2Body'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 }
diff --git a/plugins/generic/references/class_reference.inc b/plugins/generic/references/class_reference.inc
index c67a5a8f2..b398f82cf 100644
--- a/plugins/generic/references/class_reference.inc
+++ b/plugins/generic/references/class_reference.inc
@@ -20,35 +20,35 @@
 
 class reference extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('References'),
       'plDescription' => _('References'),
-      'plCategory'    => array('acl'),
-      'plObjectType'  => array(
-        'special' => array(
+      'plCategory'    => ['acl'],
+      'plObjectType'  => [
+        'special' => [
           'name' => 'special'
-        )
-      ),
+        ]
+      ],
       'plPriority'    => 10,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'      => _('References'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new FakeAttribute('refs')
-        ),
+        ],
         'template'  => get_template_path('contents.tpl', TRUE, dirname(__FILE__))
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -58,7 +58,7 @@ class reference extends simplePlugin
     $this->refs = NULL;
   }
 
-  function execute()
+  function execute ()
   {
     if ($this->refs === NULL) {
       $this->fillRefs();
@@ -68,7 +68,7 @@ class reference extends simplePlugin
     return parent::execute();
   }
 
-  function fillRefs()
+  function fillRefs ()
   {
     if (!isset($this->parent)) {
       $this->refs = NULL;
@@ -77,18 +77,18 @@ class reference extends simplePlugin
     $this->refs = $this->browseForeignKeys('references');
   }
 
-  function check()
+  function check ()
   {
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 7ce7c6681..1c7cdccff 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -29,8 +29,8 @@ class UserPasswordAttribute extends CompositeAttribute
     $temp = passwordMethod::get_available_methods();
 
     /* Create password methods array */
-    $pwd_methods = array();
-    $this->needPassword = array();
+    $pwd_methods = [];
+    $this->needPassword = [];
     foreach ($temp['name'] as $id => $name) {
       $this->needPassword[$name] = $temp[$id]['object']->need_password();
       $pwd_methods[$name] = $name;
@@ -41,7 +41,7 @@ class UserPasswordAttribute extends CompositeAttribute
 
     parent::__construct (
       $description, $ldapName,
-      array(
+      [
         new SelectAttribute(
           _('Password method'), _('Password hash method to use'),
           $ldapName.'_pwstorage', TRUE,
@@ -62,13 +62,13 @@ class UserPasswordAttribute extends CompositeAttribute
           $ldapName.'_locked', FALSE,
           FALSE
         )
-      ),
+      ],
       '', '', $acl, $label
     );
     $this->attributes[0]->setSubmitForm(TRUE);
   }
 
-  public function setParent(&$plugin)
+  public function setParent (&$plugin)
   {
     global $config;
     parent::setParent($plugin);
@@ -84,7 +84,7 @@ class UserPasswordAttribute extends CompositeAttribute
   }
 
   /* We need to handle method select disabling manually */
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     global $config;
     if ($this->visible) {
@@ -143,7 +143,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->checkIfMethodNeedsPassword();
   }
 
-  function checkIfMethodNeedsPassword()
+  function checkIfMethodNeedsPassword ()
   {
     $method = $this->attributes[0]->getValue();
     if ($method != $this->previousMethod) {
@@ -160,7 +160,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->previousMethod = $method;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     global $config;
     $pw_storage = $config->get_cfg_value('passwordDefaultHash', 'ssha');
@@ -183,10 +183,10 @@ class UserPasswordAttribute extends CompositeAttribute
         $pw_storage = 'clear';
       }
     }
-    return array($pw_storage, $password, $password, $value, $locked);
+    return [$pw_storage, $password, $password, $value, $locked];
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($this->needPassword[$values[0]] && ($values[1] == '')) {
       if ($this->plugin->is_template) {
@@ -209,7 +209,7 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function check()
+  function check ()
   {
     $method = $this->attributes[0]->getValue();
     if (!$this->needPassword[$method]) {
@@ -225,17 +225,17 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function getMethod()
+  function getMethod ()
   {
     return $this->attributes[0]->getValue();
   }
 
-  function getClear()
+  function getClear ()
   {
     return $this->attributes[1]->getValue();
   }
 
-  function isLocked()
+  function isLocked ()
   {
     return $this->attributes[4]->getValue();
   }
@@ -246,8 +246,8 @@ class PostalAddressAttribute extends TextAreaAttribute
   function inputValue ($ldapValue)
   {
     return str_replace(
-      array('$',  '\24','\5C'),
-      array("\n", '$',  '\\'),
+      ['$',  '\24','\5C'],
+      ["\n", '$',  '\\'],
       $ldapValue
     );
   }
@@ -255,11 +255,11 @@ class PostalAddressAttribute extends TextAreaAttribute
   function computeLdapValue ()
   {
     return str_replace(
-      array("\r\n", "\n", "\r"),
+      ["\r\n", "\n", "\r"],
       '$',
       str_replace(
-        array('\\', '$'),
-        array('\5C','\24'),
+        ['\\', '$'],
+        ['\5C','\24'],
         $this->getValue()
       )
     );
@@ -268,19 +268,19 @@ class PostalAddressAttribute extends TextAreaAttribute
 
 class user extends simplePlugin
 {
-  var $objectclasses  = array('inetOrgPerson','organizationalPerson','person');
+  var $objectclasses  = ['inetOrgPerson','organizationalPerson','person'];
 
   private $was_locked;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('User'),
       'plDescription' => _('User account information'),
       'plIcon'        => 'geticon.php?context=applications&icon=user-info&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=user-info&size=16',
       'plSelfModify'  => TRUE,
-      'plObjectType'  => array('user' => array(
+      'plObjectType'  => ['user' => [
         'name'        => _('User'),
         'description' => _('User account'),
         'filter'      => '(objectClass=inetOrgPerson)',
@@ -288,16 +288,16 @@ class user extends simplePlugin
         'nameAttr'    => 'cn',
         'icon'        => 'geticon.php?context=types&icon=user&size=16',
         'ou'          => get_ou('userRDN'),
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => array_merge(
         parent::generatePlProvidedAcls(static::getAttributesInfo()),
-        array('userLock' => _('User lock status'))
+        ['userLock' => _('User lock status')]
       )
-    );
+    ];
   }
 
   // The main function : information about attributes
@@ -306,12 +306,12 @@ class user extends simplePlugin
     global $config;
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array('' => ''), $languages);
-    $attributesInfo = array(
-      'perso' => array(
+    $languages = array_merge(['' => ''], $languages);
+    $attributesInfo = [
+      'perso' => [
         'name'  => _('Personal information'),
         'icon'  => 'geticon.php?context=types&icon=user&size=16',
-        'attrs' => array(
+        'attrs' => [
           new HiddenAttribute('cn'),
           new StringAttribute (
             _('Last name'), _('Last name of this user'),
@@ -332,12 +332,12 @@ class user extends simplePlugin
             'jpegPhoto', FALSE,
             150, 200, 'jpeg'
           ),
-        )
-      ),
-      'contact' => array(
+        ]
+      ],
+      'contact' => [
         'name'  => _('Organizational contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Location'), _('Location'),
             'l', FALSE
@@ -378,12 +378,12 @@ class user extends simplePlugin
             _('Homepage'), _('Personal homepage'),
             'labeledURI', FALSE
           ),
-        )
-      ),
-      'account' => array(
+        ]
+      ],
+      'account' => [
         'name'  => _('Account information'),
         'icon'  => 'geticon.php?context=applications&icon=ldap&size=16',
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute (get_ou("userRDN")),
           new UidAttribute (
             _('Login'), _('Login of this user'),
@@ -398,12 +398,12 @@ class user extends simplePlugin
             _('Password'), _('Password of the user'),
             'userPassword', FALSE
           ),
-        )
-      ),
-      'homecontact' => array(
+        ]
+      ],
+      'homecontact' => [
         'name'  => _('Personal contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Display name'), _('Name this user should appear as. Used by Exchange.'),
             'displayName', FALSE
@@ -416,12 +416,12 @@ class user extends simplePlugin
             _('Private phone'), _('Home phone number'),
             'homePhone', FALSE
           ),
-        )
-      ),
-      'organization' => array(
+        ]
+      ],
+      'organization' => [
         'name'  => _('Organizational information'),
         'icon'  => 'geticon.php?context=places&icon=folder&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute (
             new StringAttribute (
               _('Title'), _('Title of a person in their organizational context. Each title is one value of this multi-valued attribute'),
@@ -452,12 +452,12 @@ class user extends simplePlugin
             _('Manager'), _('Manager'),
             'manager', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
     if ($config->get_cfg_value('SplitPostalAddress') == 'TRUE') {
       $attributesInfo['contact']['attrs'][2]->setVisible(FALSE);
-      array_splice($attributesInfo['contact']['attrs'], 3, 0, array(
+      array_splice($attributesInfo['contact']['attrs'], 3, 0, [
         new StringAttribute (
           _('Street'), _('Street part of the address'),
           'street', FALSE
@@ -471,7 +471,7 @@ class user extends simplePlugin
           'postalCode', FALSE,
           0, FALSE
         ),
-      ));
+      ]);
     }
     return $attributesInfo;
   }
@@ -491,13 +491,13 @@ class user extends simplePlugin
     $this->was_locked = $this->attributesAccess['userPassword']->isLocked();
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* Only inetOrgPerson is needed, it has the two others as SUP classes */
     return (isset($attrs['objectClass']) && in_array_ics('inetOrgPerson', $attrs['objectClass']));
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
     $this->attributesAccess['uid']->setDisabled($this->initially_was_account && !$this->is_template);
@@ -513,7 +513,7 @@ class user extends simplePlugin
   private function applyPattern ($pattern)
   {
     $fields   = templateHandling::listFields($pattern);
-    $attrs    = array();
+    $attrs    = [];
     foreach ($fields as $field) {
       if (in_array($field, $this->attributes)) {
         $attrs[$field] = $this->$field;
@@ -534,7 +534,7 @@ class user extends simplePlugin
     return templateHandling::parseString($pattern, $attrs);
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     global $config;
     if ($this->is_template) {
@@ -548,14 +548,14 @@ class user extends simplePlugin
     return $this->create_unique_dn($attribute, get_ou('userRDN').$this->base);
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->append('css_files', 'plugins/users/style/user_tab.css');
     return parent::execute();
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if ($this->attributesAccess['userPassword']->getClear() != '') {
       /* There may be hooks using this even if LDAP object is not modified */
@@ -577,7 +577,7 @@ class user extends simplePlugin
     return parent::prepare_save();
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -594,7 +594,7 @@ class user extends simplePlugin
     return $errors;
   }
 
-  function post_save()
+  function post_save ()
   {
     global $ui;
 
@@ -608,7 +608,7 @@ class user extends simplePlugin
     return parent::post_save();
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     if ($this->uid != '') {
       $skip[] = 'uid';
@@ -622,17 +622,17 @@ class user extends simplePlugin
           $hash = $tmp->generate_hash($password);
         }
       }
-      $this->userPassword = array(
+      $this->userPassword = [
         '',
         $password,
         $password,
         $hash,
         $this->attributesAccess['userPassword']->isLocked()
-      );
+      ];
     }
   }
 
-  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
+  function callHook ($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     $addAttrs['passwordMethod'] = $this->attributesAccess['userPassword']->getMethod();
     $addAttrs['userLocked']     = $this->attributesAccess['userPassword']->isLocked();
@@ -656,7 +656,7 @@ class user extends simplePlugin
     $length       = $config->get_cfg_value('passwordMinLength', 0);
 
     $ldap = $config->get_ldap_link();
-    $ldap->cat($user, array('pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword'));
+    $ldap->cat($user, ['pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword']);
     $attrs = $ldap->fetch();
     $ppolicydn = '';
     if (isset($attrs['pwdPolicySubentry'][0])) {
@@ -668,7 +668,7 @@ class user extends simplePlugin
       }
     }
     if (!empty($ppolicydn)) {
-      $ldap->cat($ppolicydn, array('pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify'));
+      $ldap->cat($ppolicydn, ['pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify']);
       $policy = $ldap->fetch();
       if (!$policy) {
         return sprintf(_('Ppolicy "%s" could not be found in the LDAP!'), $ppolicydn);
diff --git a/plugins/personal/roles/class_userRoles.inc b/plugins/personal/roles/class_userRoles.inc
index 95be4ba93..db3078c9a 100644
--- a/plugins/personal/roles/class_userRoles.inc
+++ b/plugins/personal/roles/class_userRoles.inc
@@ -20,54 +20,54 @@
 
 class userRoles extends simplePlugin
 {
-  var $objectclasses = array();
+  var $objectclasses = [];
 
-  protected $savedGroupsMembership  = array();
-  protected $savedRolesMembership   = array();
-  protected $templateGroups         = array();
-  protected $templateRoles          = array();
+  protected $savedGroupsMembership  = [];
+  protected $savedRolesMembership   = [];
+  protected $templateGroups         = [];
+  protected $templateRoles          = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Groups and roles'),
       'plDescription'   => _('Edit user\'s groups and roles'),
       'plIcon'          => 'geticon.php?context=types&icon=role&size=48',
       'plSmallIcon'     => 'geticon.php?context=types&icon=role&size=16',
       'plSelfModify'    => FALSE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plPriority'      => 5,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'groups' => array(
+    return [
+      'groups' => [
         'name'  => _('Groups membership'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               '', _('Groups membership'),
               'groupsMembership', FALSE
             )
           )
-        )
-      ),
-      'roles' => array(
+        ]
+      ],
+      'roles' => [
         'name'  => _('Roles membership'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               '', _('Roles membership'),
               'rolesMembership', FALSE
             )
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -76,8 +76,8 @@ class userRoles extends simplePlugin
     $this->ignore_account = FALSE;
 
     /* Groups handling */
-    $groups      = array();
-    $groupsattrs = objects::ls('ogroup', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
+    $groups      = [];
+    $groupsattrs = objects::ls('ogroup', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
     foreach ($groupsattrs as $dn => $groupattr) {
       $groupDisplay = $groupattr['cn'];
       if (isset($groupattr['description'])) {
@@ -94,7 +94,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userGroups']['count']);
         $myGroups = array_combine($this->attrs['userGroups'], $this->attrs['userGroups']);
       } else {
-        $myGroups = array();
+        $myGroups = [];
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -103,7 +103,7 @@ class userRoles extends simplePlugin
           '(member='.$this->dn.')'
         );
       } else {
-        $myGroups = array();
+        $myGroups = [];
       }
       $this->savedGroupsMembership = array_keys($myGroups);
     }
@@ -113,8 +113,8 @@ class userRoles extends simplePlugin
     $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
 
     /* Roles handling */
-    $roles        = array();
-    $rolesattrs  = objects::ls('role', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
+    $roles        = [];
+    $rolesattrs  = objects::ls('role', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
     foreach ($rolesattrs as $dn => $roleattr) {
       $roleDisplay = $roleattr['cn'];
       if (isset($roleattr['description'])) {
@@ -131,7 +131,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userRoles']['count']);
         $myRoles = array_combine($this->attrs['userRoles'], $this->attrs['userRoles']);
       } else {
-        $myRoles = array();
+        $myRoles = [];
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -140,7 +140,7 @@ class userRoles extends simplePlugin
           '(roleOccupant='.$this->dn.')'
         );
       } else {
-        $myRoles = array();
+        $myRoles = [];
       }
       $this->savedRolesMembership = array_keys($myRoles);
     }
@@ -153,7 +153,7 @@ class userRoles extends simplePlugin
     $this->initially_was_account = $this->is_account;
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     if (!isset($attrs['dn'])) {
       if (isset($attrs['userGroups'])) { /* Template groups field */
@@ -167,7 +167,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  protected function ldap_remove()
+  protected function ldap_remove ()
   {
     if ($this->is_template) {
       return parent::ldap_remove();
@@ -191,16 +191,16 @@ class userRoles extends simplePlugin
         }
       }
     }
-    return array();
+    return [];
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if (parent::shouldSave()) {
       return TRUE;
@@ -214,7 +214,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     $errors = parent::prepare_save();
     if ($this->is_template) {
@@ -224,16 +224,16 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function prepare_remove()
+  function prepare_remove ()
   {
     parent::prepare_remove();
     if ($this->is_template) {
-      $this->attrs['userGroups']  = array();
-      $this->attrs['userRoles']   = array();
+      $this->attrs['userGroups']  = [];
+      $this->attrs['userRoles']   = [];
     }
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -243,12 +243,12 @@ class userRoles extends simplePlugin
 
     if (!$this->is_template) {
       /* We need to give an array which looks like an ldap fetch and match user filter */
-      $fake_attrs = array(
-        'objectClass' => array('inetOrgPerson','organizationalPerson','person'),
-        'cn'          => array($this->dn),
-        'uid'         => array($this->dn),
+      $fake_attrs = [
+        'objectClass' => ['inetOrgPerson','organizationalPerson','person'],
+        'cn'          => [$this->dn],
+        'uid'         => [$this->dn],
         'dn'          => $this->dn
-      );
+      ];
 
       /* Take care about groupsMembership values: add to groups */
       $groupsMembership = $this->attributesAccess['groupsMembership']->getValue();
@@ -344,7 +344,7 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
 
@@ -358,7 +358,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
       $this->templateGroups = array_keys($myGroups);
     } else {
-      $this->templateGroups = array();
+      $this->templateGroups = [];
     }
 
     $this->savedRolesMembership = $this->rolesMembership;
@@ -371,7 +371,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['rolesMembership']->setValue(array_keys($myRoles));
       $this->templateRoles = array_keys($myRoles);
     } else {
-      $this->templateRoles = array();
+      $this->templateRoles = [];
     }
 
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index 6d90d8a69..a1b881127 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -23,7 +23,7 @@ require_once("class_setupStep.inc");
 
 class fake_userinfo extends userinfo
 {
-  function __construct()
+  function __construct ()
   {
     $this->cn   = 'fake_cn';
     $this->dn   = 'fake_dn';
@@ -50,12 +50,12 @@ class setup
   var $i_previous       = 0;
 
   var $i_config         = 4;
-  var $o_steps          = array();
-  var $captured_values  = array();
+  var $o_steps          = [];
+  var $captured_values  = [];
 
-  function __construct()
+  function __construct ()
   {
-    $this->o_steps = array(
+    $this->o_steps = [
       new setupStepWelcome($this),
       new setupStepLanguage($this),
       new setupStepChecks($this),
@@ -63,7 +63,7 @@ class setup
       new setupStepConfig_before_init($this),
       new setupStepMigrate($this),
       new setupStepFinish($this),
-    );
+    ];
 
     $this->i_steps = count($this->o_steps);
 
@@ -75,7 +75,7 @@ class setup
     }
   }
 
-  function execute()
+  function execute ()
   {
     /* Display phpinfo() dialog when $_GET['info'] is set,
      *  but only do this, if user is allowed to use the setup.
@@ -96,7 +96,7 @@ class setup
 
 
   /* Save posted attributes  */
-  function save_object()
+  function save_object ()
   {
     /* Call save_object for current setup step */
     $this->o_steps[$this->i_current]->save_object();
@@ -167,7 +167,7 @@ class setup
   }
 
 
-  function disable_steps_from($start)
+  function disable_steps_from ($start)
   {
     for ($i = $start; $i < $this->i_steps; $i++) {
       $this->o_steps[$i]->set_enabled(FALSE);
@@ -177,7 +177,7 @@ class setup
 
 
   /* Create navigation menu */
-  function get_navigation_html()
+  function get_navigation_html ()
   {
     $str = '<ul class="menu"><li><a>FusionDirectory Setup</a><ul>';
     foreach ($this->o_steps as $key => $step) {
@@ -219,7 +219,7 @@ class setup
   }
 
 
-  function get_bottom_html()
+  function get_bottom_html ()
   {
     /* Skip adding forward/backward button,
      *  if the currently opened step is a sub dialog
@@ -241,20 +241,20 @@ class setup
   }
 
   /* Create header entry */
-  function get_header_text()
+  function get_header_text ()
   {
     return $this->o_steps[$this->i_current]->get_title();
   }
 
   /* Create header entry */
-  function get_header_image()
+  function get_header_image ()
   {
     return $this->o_steps[$this->i_current]->header_image;
   }
 
 
   /* Check if the given step id is valid and selectable */
-  function selectable_step($id)
+  function selectable_step ($id)
   {
     if (isset($this->o_steps[$id]) && $this->o_steps[$id]->is_enabled()) {
       return TRUE;
@@ -262,7 +262,7 @@ class setup
     return FALSE;
   }
 
-  function step_name_to_id($name)
+  function step_name_to_id ($name)
   {
     foreach ($this->o_steps as $id => $class) {
       if (get_class($class) == $name) {
@@ -273,7 +273,7 @@ class setup
   }
 
   /* Called when LDAP is configured */
-  function read_ldap_config()
+  function read_ldap_config ()
   {
     global $config;
     /* Get attributes from current ldap step */
diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc
index 2554fd386..1d9017b95 100644
--- a/setup/class_setupStep.inc
+++ b/setup/class_setupStep.inc
@@ -31,63 +31,63 @@ class setupStep extends simplePlugin
 
   var $header_image = '';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array();
+    return [];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct(NULL, NULL, $parent);
     $this->update_strings();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     die('abstract method');
   }
 
-  function get_short_name()
+  function get_short_name ()
   {
     return $this->s_short_name;
   }
 
-  function get_title()
+  function get_title ()
   {
     return $this->s_title;
   }
 
-  function get_description()
+  function get_description ()
   {
     return $this->s_description;
   }
 
-  function is_active()
+  function is_active ()
   {
     return $this->is_active;
   }
 
-  function is_enabled()
+  function is_enabled ()
   {
     return $this->is_enabled;
   }
 
-  function is_completed()
+  function is_completed ()
   {
     return $this->is_completed;
   }
 
-  function set_active($value = TRUE)
+  function set_active ($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled($value = TRUE)
+  function set_enabled ($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed($value = TRUE)
+  function set_completed ($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
@@ -95,7 +95,7 @@ class setupStep extends simplePlugin
   /* Return attributes handled by this setup step */
   public function get_attributes ()
   {
-    $tmp = array();
+    $tmp = [];
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
@@ -103,7 +103,7 @@ class setupStep extends simplePlugin
   }
 
   /* bypass LDAP loading */
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
diff --git a/setup/class_setupStepChecks.inc b/setup/class_setupStepChecks.inc
index 081645f53..f901d9e32 100644
--- a/setup/class_setupStepChecks.inc
+++ b/setup/class_setupStepChecks.inc
@@ -23,27 +23,27 @@ class setupStepChecks extends setupStep
 {
   var $header_image = 'geticon.php?context=categories&icon=checks&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'modules' => array(
+    return [
+      'modules' => [
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('basic_checks')
-        )
-      ),
-      'setup' => array(
+        ]
+      ],
+      'setup' => [
         'name'      => _('PHP setup configuration'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('config_checks')
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Installation check');
     $this->s_title        = _('Installation check');
@@ -51,17 +51,17 @@ class setupStepChecks extends setupStep
   }
 
   /* Execute and display template */
-  function execute()
+  function execute ()
   {
     $this->run_checks();
     return parent::execute();
   }
 
   /* Execute all checks */
-  function run_checks()
+  function run_checks ()
   {
-    $basic_checks   = array();
-    $config_checks  = array();
+    $basic_checks   = [];
+    $config_checks  = [];
 
     /* PHP version check */
     $N = _('Checking PHP version');
@@ -69,7 +69,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to a supported version.');
     $R = version_compare(phpversion(), PHP_MIN_VERSION, '>=');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for LDAP extension */
     $N = msgPool::checkingFor("LDAP");
@@ -77,7 +77,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("LDAP");
     $R = is_callable("ldap_bind");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for gettext support */
     $N = msgPool::checkingFor("gettext");
@@ -85,7 +85,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("gettext");
     $R = is_callable("bindtextdomain");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for curl support */
     $N = msgPool::checkingFor('curl');
@@ -93,7 +93,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('curl');
     $R = is_callable('curl_init');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Pseudo-random check */
     $N = _('Checking cryptographically secure pseudo-random integers');
@@ -101,7 +101,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to PHP7 or activate openssl module.');
     $R = (is_callable('random_int') || is_callable('openssl_random_pseudo_bytes'));
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for json support */
     $N = msgPool::checkingFor('json');
@@ -109,7 +109,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('json');
     $R = is_callable('json_encode');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for filter support */
     $N = msgPool::checkingFor('filter');
@@ -117,7 +117,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('filter');
     $R = is_callable('filter_var');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for iconv */
     $N = msgPool::checkingFor("iconv");
@@ -125,7 +125,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("iconv");
     $R = is_callable("iconv");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for installed mhash module */
     $N = msgPool::checkingFor("hash method");
@@ -133,7 +133,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mhash/sha1");
     $R = is_callable('mhash') || is_callable('sha1');
     $M = FALSE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if imap module is available */
     $N = msgPool::checkingFor("IMAP");
@@ -141,7 +141,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("IMAP");
     $R = is_callable("imap_open");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if mbstring module is available */
     $N = msgPool::checkingFor(_("mbstring"));
@@ -149,21 +149,21 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mbstring");
     $R = is_callable("mb_strlen");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     $N = msgPool::checkingFor(_('imagick'));
     $D = _('FusionDirectory requires this extension to handle images.');
     $S = msgPool::installPhpModule('imagick');
     $R = class_exists('Imagick', FALSE);
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     $N = msgPool::checkingFor(_("compression module"));
     $D = _("FusionDirectory requires this extension to handle snapshots.");
     $S = msgPool::installPhpModule("compile with --with-zlib");
     $R = is_callable("gzcompress");
     $M = FALSE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* PHP Configuration checks */
 
@@ -174,7 +174,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or higher.");
     $R = ini_get("session.gc_maxlifetime") >= 86400;
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Session auto start must be turned off */
     $session_auto_start = ini_get('session.auto_start');
@@ -183,7 +183,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.auto_start' in your php.ini and set it to 'Off'.");
     $R = !$session_auto_start;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if memory limit is set to 128 or > */
     $N = "memory_limit &gt;= <b>128</b>";
@@ -191,7 +191,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'memory_limit' in your php.ini and set it to '128M' or higher.");
     $R = ini_get('memory_limit') >= 128;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Implicit Flush disabled can increase performance */
     $N = "implicit_flush = <b>"._("Off")."</b>";
@@ -199,7 +199,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'implicit_flush' in your php.ini and set it to 'Off'.");
     $R = !ini_get('implicit_flush');
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if execution time is set to 30 */
     $N = "max_execution_time &gt;= <b>30</b>";
@@ -207,7 +207,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'max_execution_time' in your php.ini and set it to '30' or higher.");
     $R = ini_get("max_execution_time") >= 30;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Expose php should be set to off */
     $N = "expose_php = <b>"._("Off")."</b>";
@@ -215,19 +215,19 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'expose_php' in your php.ini and set if to 'Off'.");
     $R = !ini_get("expose_php");
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     $this->basic_checks   = $basic_checks;
     $this->config_checks  = $config_checks;
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
      /* If everything is fine, set this step to completed
      *  and allow switching to next setup step */
     $failed = FALSE;
-    foreach (array('basic_checks','config_checks') as $type) {
+    foreach (['basic_checks','config_checks'] as $type) {
       foreach ($this->$type as $obj) {
         if ($obj['MUST'] && !$obj['RESULT']) {
           $failed = TRUE;
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index a62e80c6e..d83c73764 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -21,7 +21,7 @@
 
 class setupStepConfig_before_init extends setupStep
 {
-  function update_strings()
+  function update_strings ()
   {
     global $config;
     if (!isset($config->current['BASE'])) {
@@ -42,57 +42,57 @@ class setupStepConfig extends configInLdap
   var $is_completed = FALSE;
   var $header_image;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array();
+    return [];
   }
 
-  function __construct($parent, $cv)
+  function __construct ($parent, $cv)
   {
     global $config;
     parent::__construct(CONFIGRDN.$config->current['BASE'], NULL, $parent, TRUE);
 
-    $this->attributesInfo['miscellaneous']['class'] = array('invisible');
-    $this->attributesInfo['debug']['class'] = array('invisible');
+    $this->attributesInfo['miscellaneous']['class'] = ['invisible'];
+    $this->attributesInfo['debug']['class'] = ['invisible'];
 
     $this->fdLanguage     = $cv['lang_selected'];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $infos = parent::plInfo();
     $this->header_image = $infos['plIcon'];
   }
 
-  function get_short_name()
+  function get_short_name ()
   {
     $infos = parent::plInfo();
     return $infos['plTitle'];
   }
 
-  function get_title()
+  function get_title ()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
-  function get_description()
+  function get_description ()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
   /* Return attributes handled by this setup step */
-  function get_attributes()
+  function get_attributes ()
   {
-    $tmp = array();
+    $tmp = [];
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
     return $tmp;
   }
 
-  function save_object()
+  function save_object ()
   {
     global $config;
     parent::save_object();
@@ -126,58 +126,58 @@ class setupStepConfig extends configInLdap
     }
   }
 
-  function is_active()
+  function is_active ()
   {
     return $this->is_active;
   }
 
-  function is_enabled()
+  function is_enabled ()
   {
     return $this->is_enabled;
   }
 
-  function is_completed()
+  function is_completed ()
   {
     return $this->is_completed;
   }
 
-  function set_active($value = TRUE)
+  function set_active ($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled($value = TRUE)
+  function set_enabled ($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed($value = TRUE)
+  function set_completed ($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
 
   /* bypass acl system as there is no user login */
-  function acl_is_writeable($attribute, $skip_write = FALSE)
+  function acl_is_writeable ($attribute, $skip_write = FALSE)
   {
     return TRUE;
   }
-  function acl_is_readable($attribute)
+  function acl_is_readable ($attribute)
   {
     return TRUE;
   }
-  function acl_is_createable($base = "")
+  function acl_is_createable ($base = "")
   {
     return TRUE;
   }
-  function acl_is_removeable($base = "")
+  function acl_is_removeable ($base = "")
   {
     return TRUE;
   }
-  function acl_is_moveable($base = "")
+  function acl_is_moveable ($base = "")
   {
     return TRUE;
   }
-  function aclGetPermissions($attribute = '0', $base = NULL, $skipWrite = FALSE)
+  function aclGetPermissions ($attribute = '0', $base = NULL, $skipWrite = FALSE)
   {
     return 'cmdrw';
   }
diff --git a/setup/class_setupStepFinish.inc b/setup/class_setupStepFinish.inc
index 0e2fe373b..ab93fab18 100644
--- a/setup/class_setupStepFinish.inc
+++ b/setup/class_setupStepFinish.inc
@@ -23,26 +23,26 @@ class setupStepFinish extends setupStep
 {
   var $header_image = 'geticon.php?context=devices&icon=server&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'welcome' => array(
+    return [
+      'welcome' => [
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_finish.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
-        )
-      )
-    );
+        'attrs'     => [
+        ]
+      ]
+    ];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Finish');
     $this->s_title        = _('Finish - write the configuration file');
     $this->s_description  = _('Write configuration file');
   }
 
-  function get_conf_data()
+  function get_conf_data ()
   {
     $smarty           = get_smarty();
     $cv               = $this->parent->captured_values;
@@ -52,7 +52,7 @@ class setupStepFinish extends setupStep
     return $smarty->fetch(CONFIG_TEMPLATE_DIR.CONFIG_FILE);
   }
 
-  function insertConfigDefaults()
+  function insertConfigDefaults ()
   {
     /* Insert default config values, even for installed plugin */
     global $config, $ui, $plist, $BASE_DIR;
@@ -79,7 +79,7 @@ class setupStepFinish extends setupStep
     $config->checkLdapConfig(TRUE);
   }
 
-  function execute()
+  function execute ()
   {
     /* Check if there is currently an active fusiondirectory.conf */
     $exists   = file_exists(CONFIG_DIR."/".CONFIG_FILE);
@@ -98,7 +98,7 @@ class setupStepFinish extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $exists = file_exists(CONFIG_DIR.'/'.CONFIG_FILE);
@@ -121,7 +121,7 @@ class setupStepFinish extends setupStep
   }
 
   /* check if given file is world readable */
-  function is_world_readable($file)
+  function is_world_readable ($file)
   {
     clearstatcache();
     $p = fileperms($file);
diff --git a/setup/class_setupStepLanguage.inc b/setup/class_setupStepLanguage.inc
index 767f11930..de0fc6093 100644
--- a/setup/class_setupStepLanguage.inc
+++ b/setup/class_setupStepLanguage.inc
@@ -23,13 +23,13 @@ class setupStepLanguage extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-language&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'lang' => array(
+    return [
+      'lang' => [
         'name'      => _('Preferred language'),
-        'class'     => array('fullwidth', 'setup-language'),
-        'attrs'     => array(
+        'class'     => ['fullwidth', 'setup-language'],
+        'attrs'     => [
           new DisplayAttribute(
             '', '',
             'msg', FALSE
@@ -42,19 +42,19 @@ class setupStepLanguage extends setupStep
             'lang', FALSE,
             'en_EN'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->lang = Language::detect();
     $this->attributesAccess['lang_selected']->setSize(20);
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Language setup');
     $this->s_title        = _('Language setup');
@@ -62,16 +62,16 @@ class setupStepLanguage extends setupStep
     $this->msg            = _('At this point, you can select the site wide default language. Choosing "automatic" will use the language requested by the browser. This setting can be overriden per user.');
   }
 
-  function execute()
+  function execute ()
   {
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array("" => _("Automatic")), $languages);
+    $languages = array_merge(["" => _("Automatic")], $languages);
     $this->attributesAccess['lang_selected']->setChoices(array_keys($languages), array_values($languages));
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->is_completed   = TRUE;
diff --git a/setup/class_setupStepLdap.inc b/setup/class_setupStepLdap.inc
index f08c07acc..f931da121 100644
--- a/setup/class_setupStepLdap.inc
+++ b/setup/class_setupStepLdap.inc
@@ -31,10 +31,10 @@ class setupStepLdap extends setupStep
 
   static function getAttributesInfo ()
   {
-    return array(
-      'connection' => array(
+    return [
+      'connection' => [
         'name'      => _('LDAP connection'),
-        'attrs'     => array(
+        'attrs'     => [
           new StringAttribute(
             _('Location name'), _('Name of this connexion to show in the LDAP server list'),
             'location', TRUE,
@@ -53,15 +53,15 @@ class setupStepLdap extends setupStep
             _('Base'), _('The LDAP directory base'),
             'base', TRUE
           )
-        )
-      ),
-      'auth' => array(
+        ]
+      ],
+      'auth' => [
         'name'      => _('Authentication'),
-        'attrs'     => array(
+        'attrs'     => [
           new CompositeAttribute(
             _('DN of the admin account to use for binding to the LDAP. Base is automatically appended.'),
             'admin',
-            array(
+            [
               new StringAttribute(
                 '', '',
                 'admin_given', TRUE,
@@ -70,7 +70,7 @@ class setupStepLdap extends setupStep
               new DisplayAttribute(
                 '', '', 'base_append'
               )
-            ),
+            ],
             '^(.+)(.*)$',
             '%s%s',
             '',
@@ -80,21 +80,21 @@ class setupStepLdap extends setupStep
             _('Admin password'), _('Password for the admin account to use for binding to the LDAP'),
             'password', TRUE
           ),
-        )
-      ),
-      'status' => array(
+        ]
+      ],
+      'status' => [
         'name'      => _('Status'),
-        'attrs'     => array(
+        'attrs'     => [
           new DisplayAttribute(
             _('Current status'), _('Result of last attempt at checking LDAP binding and basic schemas'),
             'status', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->update_strings();
@@ -105,14 +105,14 @@ class setupStepLdap extends setupStep
     $this->status = $this->get_connection_status();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('LDAP setup');
     $this->s_title        = _('LDAP connection setup');
     $this->s_description  = _('This dialog performs the basic configuration of the LDAP connectivity for FusionDirectory.');
   }
 
-  function update_base_choices()
+  function update_base_choices ()
   {
     $attr = @LDAP::get_naming_contexts($this->connection);
     unset($attr['count']);
@@ -135,7 +135,7 @@ class setupStepLdap extends setupStep
     $this->lastBase       = $this->base;
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->connection = preg_replace('/\/$/', '', $this->connection);
@@ -158,7 +158,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function get_connection_status()
+  function get_connection_status ()
   {
     $this->connect_id = FALSE;
     $this->bind_id    = FALSE;
@@ -199,7 +199,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function check()
+  function check ()
   {
     $error = parent::check();
     if (!empty($error)) {
@@ -207,7 +207,7 @@ class setupStepLdap extends setupStep
       return $error;
     } elseif ($this->is_completed) {
       $checked  = check_schema($this->parent->captured_values);
-      $error    = array();
+      $error    = [];
       foreach ($checked as $check) {
         if (!$check['STATUS']) {
           if ($check['IS_MUST_HAVE']) {
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index cfda33456..f99ada78c 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -48,13 +48,13 @@ class CheckFailedException extends FusionDirectoryException
 {
   private $error;
 
-  public function __construct($msg, $error)
+  public function __construct ($msg, $error)
   {
     parent::__construct($msg);
     $this->error = $error;
   }
 
-  public function getError()
+  public function getError ()
   {
     return $this->error;
   }
@@ -69,7 +69,7 @@ class StepMigrateDialog extends GenericDialog
   private $tplfile;
   private $check;
 
-  public function __construct(&$check, $tpl, $infos)
+  public function __construct (&$check, $tpl, $infos)
   {
     $this->attribute  = NULL;
     $this->dialog     = NULL;
@@ -78,7 +78,7 @@ class StepMigrateDialog extends GenericDialog
     $this->check      = $check;
   }
 
-  public function dialog_execute()
+  public function dialog_execute ()
   {
     if (
       isset($_POST['dialog_showchanges']) ||
@@ -121,7 +121,7 @@ class StepMigrateCheck
   public $fnc;
   private $step;
 
-  public function __construct($step, $name, $title)
+  public function __construct ($step, $name, $title)
   {
     $this->name   = $name;
     $this->title  = $title;
@@ -129,7 +129,7 @@ class StepMigrateCheck
     $this->step   = $step;
   }
 
-  public function run($fnc = NULL)
+  public function run ($fnc = NULL)
   {
     if ($fnc === NULL) {
       $fnc          = $this->fnc;
@@ -145,7 +145,7 @@ class StepMigrateCheck
     }
   }
 
-  public function save_object()
+  public function save_object ()
   {
     if (isset($_POST[$this->name.'_create'])) {
       $fnc = $this->fnc.'_create';
@@ -164,7 +164,7 @@ class StepMigrateCheck
     return '<input type="submit" name="'.$this->name.'_'.$id.'" value="'.$value.'"/>';
   }
 
-  public function migrate_confirm()
+  public function migrate_confirm ()
   {
     $fnc = $this->fnc.'_migrate'.'_confirm';
     $res = $this->step->$fnc($this);
@@ -174,7 +174,7 @@ class StepMigrateCheck
     return $res;
   }
 
-  public function dialog_refresh()
+  public function dialog_refresh ()
   {
     $fnc = $this->fnc.'_migrate'.'_refresh';
     return $this->step->$fnc($this);
@@ -186,80 +186,80 @@ class setupStepMigrate extends setupStep
   var $header_image   = "geticon.php?context=applications&icon=utilities-system-monitor&size=48";
 
   /* Root object classes */
-  var $rootOC_details = array();
+  var $rootOC_details = [];
 
   /* Entries needing migration */
-  var $orgUnits_toMigrate       = array();
-  var $accounts_toMigrate       = array();
-  var $outsideUsers_toMigrate   = array();
-  var $outsideGroups_toMigrate  = array();
+  var $orgUnits_toMigrate       = [];
+  var $accounts_toMigrate       = [];
+  var $outsideUsers_toMigrate   = [];
+  var $outsideGroups_toMigrate  = [];
 
   /* check for multiple use of same uidNumber */
-  var $check_uidNumbers = array();
+  var $check_uidNumbers = [];
 
   /* check for multiple use of same gidNumber */
-  var $check_gidNumbers = array();
+  var $check_gidNumbers = [];
 
   /* Defaults ACL roles */
   var $defaultRoles;
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'checks' => array(
-        'class'     => array('fullwidth'),
+    return [
+      'checks' => [
+        'class'     => ['fullwidth'],
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_migrate.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('checks')
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->fill_defaultRoles();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('LDAP inspection');
     $this->s_title        = _('LDAP inspection');
     $this->s_description  = _('Analyze your current LDAP for FusionDirectory compatibility');
   }
 
-  function fill_defaultRoles()
+  function fill_defaultRoles ()
   {
-    $this->defaultRoles = array(
-      array(
+    $this->defaultRoles = [
+      [
         'cn'              => 'manager',
         'description'     => _('Give all rights on users in the given branch'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;cmdrw,user/posixAccount;cmdrw'
-      ),
-      array(
+      ],
+      [
         'cn'              => 'editowninfos',
         'description'     => _('Allow users to edit their own information (main tab and posix use only on base)'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;srw,user/posixAccount;srw'
-      ),
-      array(
+      ],
+      [
         'cn'              => 'editownpwd',
         'description'     => _('Allow users to edit their own password (use only on base)'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;s#userPassword;rw'
-      ),
-    );
+      ],
+    ];
   }
 
-  function initialize_checks()
+  function initialize_checks ()
   {
     global $config;
     $config->get_departments();
 
-    $checks = array(
+    $checks = [
       'baseOC'        => new StepMigrateCheck($this, 'baseOC',        _('Inspecting object classes in root object')),
       'permissions'   => new StepMigrateCheck($this, 'permissions',   _('Checking permission for LDAP database')),
       'accounts'      => new StepMigrateCheck($this, 'accounts',      _('Checking for invisible users')),
@@ -270,13 +270,13 @@ class setupStepMigrate extends setupStep
       'orgUnits'      => new StepMigrateCheck($this, 'orgUnits',      _('Checking for invisible departments')),
       'uidNumber'     => new StepMigrateCheck($this, 'uidNumber',     _('Checking for duplicated UID numbers')),
       'gidNumber'     => new StepMigrateCheck($this, 'gidNumber',     _('Checking for duplicated GID numbers')),
-    );
+    ];
 
     $this->checks = $checks;
   }
 
   /* Return ldif information for a given attribute array */
-  function array_to_ldif($attrs)
+  function array_to_ldif ($attrs)
   {
     $ret = '';
     unset($attrs['count']);
@@ -297,7 +297,7 @@ class setupStepMigrate extends setupStep
     return preg_replace("/\n$/", '', $ret);
   }
 
-  function execute()
+  function execute ()
   {
     if (empty($this->checks) || isset($_POST['reload'])) {
       $this->initialize_checks();
@@ -308,7 +308,7 @@ class setupStepMigrate extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     $this->is_completed = TRUE;
     parent::save_object();
@@ -321,7 +321,7 @@ class setupStepMigrate extends setupStep
    * If the parameter just_check is TRUE, then just check for the OCs.
    * If the Parameter is FALSE, try to add the required object classes.
    */
-  function check_baseOC(&$checkobj)
+  function check_baseOC (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -340,8 +340,8 @@ class setupStepMigrate extends setupStep
 
     /* Root object doesn't exists */
     if (!in_array("gosaDepartment", $attrs['objectClass'])) {
-      $this->rootOC_details = array();
-      $mods = array();
+      $this->rootOC_details = [];
+      $mods = [];
 
       /* Get list of possible container objects, to be able to detect naming
        *  attributes and missing attribute types.
@@ -472,7 +472,7 @@ class setupStepMigrate extends setupStep
    * Create and remove a dummy object,
    *  to ensure that we have the necessary permissions
    */
-  function check_permissions(&$checkobj)
+  function check_permissions (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -480,7 +480,7 @@ class setupStepMigrate extends setupStep
     /* Create dummy entry */
     $name       = 'GOsa_setup_text_entry_'.session_id().random_int(0, 999999);
     $dn         = 'ou='.$name.','.$config->current['BASE'];
-    $testEntry  = array();
+    $testEntry  = [];
 
     $testEntry['objectClass'][] = 'top';
     $testEntry['objectClass'][] = 'organizationalUnit';
@@ -498,11 +498,11 @@ class setupStepMigrate extends setupStep
     }
 
     /* Try to create dummy object */
-    $ldap->cd ($dn);
+    $ldap->cd($dn);
     $res = $ldap->add($testEntry);
     $ldap->cat($dn);
     if (!$ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your LDAP database.'), $config->current['ADMINDN'])
@@ -513,7 +513,7 @@ class setupStepMigrate extends setupStep
     $res = $ldap->rmDir($dn);
     $ldap->cat($dn);
     if ($ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your ldap database.'), $config->current['ADMINDN'])
@@ -527,7 +527,7 @@ class setupStepMigrate extends setupStep
   /* Check if there are users which will
    *  be invisible for FusionDirectory
    */
-  function check_accounts(&$checkobj)
+  function check_accounts (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -536,7 +536,7 @@ class setupStepMigrate extends setupStep
      *  the 'html checked' status for the checkboxes again
      */
     $old    = $this->accounts_toMigrate;
-    $this->accounts_toMigrate = array();
+    $this->accounts_toMigrate = [];
 
     /* Get all invisible users */
     $ldap->cd($config->current['BASE']);
@@ -550,7 +550,7 @@ class setupStepMigrate extends setupStep
         '(!(objectClass=inetOrgPerson))'.
         '(uid=*)'.
       ')',
-      array('sn','givenName','cn','uid')
+      ['sn','givenName','cn','uid']
     );
 
     while ($attrs = $ldap->fetch()) {
@@ -590,10 +590,10 @@ class setupStepMigrate extends setupStep
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'   => _('User migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
@@ -601,19 +601,19 @@ class setupStepMigrate extends setupStep
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'   => _('User migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_accounts_migrate_confirm(&$checkobj, $only_ldif = FALSE)
+  function check_accounts_migrate_confirm (&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      array('inetOrgPerson','organizationalPerson','person'),
-      array(),
+      ['inetOrgPerson','organizationalPerson','person'],
+      [],
       $only_ldif
     );
   }
@@ -649,7 +649,7 @@ class setupStepMigrate extends setupStep
     return $infos;
   }
 
-  function check_multipleGeneric_migrate_confirm(&$checkobj, $oc, $mandatory, $only_ldif)
+  function check_multipleGeneric_migrate_confirm (&$checkobj, $oc, $mandatory, $only_ldif)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -660,11 +660,11 @@ class setupStepMigrate extends setupStep
       $entry['checked'] = isset($_POST['migrate_'.$key]);
       if ($entry['checked']) {
         /* Get old objectClasses */
-        $ldap->cat($entry['dn'], array_merge(array('objectClass'), array_keys($mandatory)));
+        $ldap->cat($entry['dn'], array_merge(['objectClass'], array_keys($mandatory)));
         $attrs = $ldap->fetch();
 
         /* Create new objectClass array */
-        $new_attrs  = array();
+        $new_attrs  = [];
         $new_attrs['objectClass'] = $oc;
         for ($i = 0; $i < $attrs['objectClass']['count']; $i++) {
           if (!in_array_ics($attrs['objectClass'][$i], $new_attrs['objectClass'])) {
@@ -706,7 +706,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check Acls if there is at least one object with acls defined */
-  function check_adminAccount(&$checkobj)
+  function check_adminAccount (&$checkobj)
   {
     global $config;
 
@@ -726,8 +726,8 @@ class setupStepMigrate extends setupStep
       $attrs = $ldap->fetch();
 
       /* Collect a list of available FusionDirectory users and groups */
-      $users = array();
-      $ldap->search('(objectClass=inetOrgPerson)', array('uid','dn'));
+      $users = [];
+      $ldap->search('(objectClass=inetOrgPerson)', ['uid','dn']);
       while ($user_attrs = $ldap->fetch()) {
         if (isset($user_attrs['uid'][0])) {
           $users[$user_attrs['dn']]       = $user_attrs['uid'][0];
@@ -736,13 +736,13 @@ class setupStepMigrate extends setupStep
           $users[$user_attrs['dn']] = $user_attrs['dn'];
         }
       }
-      $groups = array();
-      $ldap->search('(objectClass=posixGroup)', array('cn','dn'));
+      $groups = [];
+      $ldap->search('(objectClass=posixGroup)', ['cn','dn']);
       while ($group_attrs = $ldap->fetch()) {
         $groups[$group_attrs['dn']] = $group_attrs['cn'][0];
       }
-      $roles = array();
-      $ldap->search('(objectClass=organizationalRole)', array('cn','dn'));
+      $roles = [];
+      $ldap->search('(objectClass=organizationalRole)', ['cn','dn']);
       while ($role_attrs = $ldap->fetch()) {
         $roles[$role_attrs['dn']] = $role_attrs['cn'][0];
       }
@@ -761,7 +761,7 @@ class setupStepMigrate extends setupStep
 
           if ($tmp[1] == 'subtree') {
             /* Check if acl owner is a valid FusionDirectory user account */
-            $ldap->cat(base64_decode($tmp[2]), array('gosaAclTemplate'), '(gosaAclTemplate=*:all;cmdrw)');
+            $ldap->cat(base64_decode($tmp[2]), ['gosaAclTemplate'], '(gosaAclTemplate=*:all;cmdrw)');
             if ($ldap->count()) {
               $members = explode(',', $tmp[3]);
               foreach ($members as $member) {
@@ -836,17 +836,17 @@ class setupStepMigrate extends setupStep
     return '';
   }
 
-  function check_adminAccount_create(&$checkobj)
+  function check_adminAccount_create (&$checkobj)
   {
-    $infos = array(
+    $infos = [
       'uid'       => 'fd-admin',
       'password'  => '',
       'password2' => '',
-    );
+    ];
     $this->openDialog(new StepMigrateDialog($checkobj, 'setup_migrate_adminAccount.tpl', $infos));
   }
 
-  function check_adminAccount_migrate_confirm(&$checkobj)
+  function check_adminAccount_migrate_confirm (&$checkobj)
   {
     global $config;
     session::set('CurrentMainBase', $config->current['BASE']);
@@ -855,7 +855,7 @@ class setupStepMigrate extends setupStep
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', array('dn'));
+    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', ['dn']);
     if ($attrs = $ldap->fetch()) {
       $roledn = $attrs['dn'];
     } else {
@@ -864,7 +864,7 @@ class setupStepMigrate extends setupStep
 
       $baseObject->cn               = 'admin';
       $baseObject->description      = _('Gives all rights on all objects');
-      $baseObject->gosaAclTemplate  = array(array('all' => array('0' => 'cmdrw')));
+      $baseObject->gosaAclTemplate  = [['all' => ['0' => 'cmdrw']]];
 
       $tabObject->save();
       $roledn = $tabObject->dn;
@@ -891,11 +891,11 @@ class setupStepMigrate extends setupStep
     $assignments = $baseObject->gosaAclEntry;
     array_unshift(
       $assignments,
-      array(
+      [
         'scope'   => 'subtree',
         'role'    => $roledn,
-        'members' => array($admindn),
-      )
+        'members' => [$admindn],
+      ]
     );
     $baseObject->gosaAclEntry = $assignments;
     $tabObject->save();
@@ -903,17 +903,17 @@ class setupStepMigrate extends setupStep
     return TRUE;
   }
 
-  function check_adminAccount_migrate_refresh(&$checkobj)
+  function check_adminAccount_migrate_refresh (&$checkobj)
   {
-    return array(
+    return [
       'uid'       => $_POST['uid'],
       'password'  => $_POST['userPassword_password'],
       'password2' => $_POST['userPassword_password2'],
-    );
+    ];
   }
 
   /* Check if default roles and groupes have been inserted */
-  function check_defaultACLs(&$checkobj)
+  function check_defaultACLs (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -930,7 +930,7 @@ class setupStepMigrate extends setupStep
     $existings = 0;
     foreach ($this->defaultRoles as $role) {
       $dn = 'cn='.$role['cn'].','.get_ou('aclRoleRDN').$config->current['BASE'];
-      $ldap->cat($dn, array('dn'));
+      $ldap->cat($dn, ['dn']);
       if ($ldap->count() > 0) {
         $existings++;
       }
@@ -953,7 +953,7 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_defaultACLs_migrate(&$checkobj)
+  function check_defaultACLs_migrate (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -985,7 +985,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for users outside the people ou */
-  function check_outsideUsers(&$checkobj)
+  function check_outsideUsers (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -995,7 +995,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Search for all users
      ***********/
-    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', array('dn'));
+    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', ['dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1006,7 +1006,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Check if returned users are within a valid department. (peopleou,gosaDepartment,base)
      ***********/
-    $this->outsideUsers_toMigrate = array();
+    $this->outsideUsers_toMigrate = [];
     $people_ou = trim(get_ou('userRDN'));
 
     while ($attrs = $ldap->fetch()) {
@@ -1034,35 +1034,35 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideUsers_migrate(&$checkobj)
+  function check_outsideUsers_migrate (&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideUsers_migrate_refresh(&$checkobj)
+  function check_outsideUsers_migrate_refresh (&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideUsers_migrate_confirm(&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
+  function check_outsideUsers_migrate_confirm (&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1087,7 +1087,7 @@ class setupStepMigrate extends setupStep
           $entry['ldif'] = _('Entry will be moved from').":<br/>\t".($ldap->fix($dn)).'<br/>'._('to').":<br/>\t".($ldap->fix($d_dn));
 
           /* Check if there are references to this object */
-          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', array('dn'));
+          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', ['dn']);
           $refs = '';
           while ($attrs = $ldap->fetch()) {
             $ref_dn = $attrs['dn'];
@@ -1107,7 +1107,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for groups outside the group ou */
-  function check_outsideGroups(&$checkobj)
+  function check_outsideGroups (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1118,7 +1118,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Get all groups
      ***********/
-    $res = $ldap->search('(objectClass=posixGroup)', array('dn'));
+    $res = $ldap->search('(objectClass=posixGroup)', ['dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1126,7 +1126,7 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->outsideGroups_toMigrate = array();
+    $this->outsideGroups_toMigrate = [];
     while ($attrs = $ldap->fetch()) {
       $group_db_base = preg_replace('/^[^,]+,'.preg_quote($group_ou, '/').'/i', '', $attrs['dn']);
 
@@ -1153,55 +1153,55 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideGroups_migrate(&$checkobj)
+  function check_outsideGroups_migrate (&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideGroups_migrate_refresh(&$checkobj)
+  function check_outsideGroups_migrate_refresh (&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideGroups_migrate_confirm(&$checkobj, $only_ldif = FALSE)
+  function check_outsideGroups_migrate_confirm (&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_outsideUsers_migrate_confirm($checkobj, $only_ldif, 'groupRDN');
   }
 
   /* Check if there are invisible organizational Units */
-  function check_orgUnits(&$checkobj)
+  function check_orgUnits (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $old                      = $this->orgUnits_toMigrate;
-    $this->orgUnits_toMigrate = array();
+    $this->orgUnits_toMigrate = [];
 
     /* Skip FusionDirectory internal departments */
-    $skip_dns = array(
+    $skip_dns = [
       '/ou=fusiondirectory,'.preg_quote($config->current['BASE']).'$/',
       '/dc=addressbook,/',
       '/ou=systems,'.preg_quote($config->current['BASE']).'$/',
       '/ou=snapshots,/'
-    );
+    ];
     foreach (objects::types() as $type) {
       $infos = objects::infos($type);
       if (isset($infos['ou']) && ($infos['ou'] != '')) {
@@ -1211,7 +1211,7 @@ class setupStepMigrate extends setupStep
 
     /* Get all invisible departments */
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', array('ou','description','dn'));
+    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', ['ou','description','dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1262,46 +1262,46 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_orgUnits_migrate(&$checkobj)
+  function check_orgUnits_migrate (&$checkobj)
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_orgUnits_migrate_refresh(&$checkobj)
+  function check_orgUnits_migrate_refresh (&$checkobj)
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_orgUnits_migrate_confirm(&$checkobj, $only_ldif)
+  function check_orgUnits_migrate_confirm (&$checkobj, $only_ldif)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      array('gosaDepartment'),
-      array('description' => 'FusionDirectory department'),
+      ['gosaDepartment'],
+      ['description' => 'FusionDirectory department'],
       $only_ldif
     );
   }
 
   /* Check if there are uidNumbers which are used more than once */
-  function check_uidNumber(&$checkobj)
+  function check_uidNumber (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", array("dn","uidNumber"));
+    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", ["dn","uidNumber"]);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1309,8 +1309,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_uidNumbers = array();
-    $tmp = array();
+    $this->check_uidNumbers = [];
+    $tmp = [];
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['uidNumber'][0]][] = $attrs;
     }
@@ -1339,13 +1339,13 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check if there are duplicated gidNumbers present in ldap */
-  function check_gidNumber(&$checkobj)
+  function check_gidNumber (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", array("dn","gidNumber"));
+    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", ["dn","gidNumber"]);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1353,8 +1353,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_gidNumbers = array();
-    $tmp = array();
+    $this->check_gidNumbers = [];
+    $tmp = [];
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['gidNumber'][0]][] = $attrs;
     }
diff --git a/setup/class_setupStepWelcome.inc b/setup/class_setupStepWelcome.inc
index d8f87295b..d73e23a46 100644
--- a/setup/class_setupStepWelcome.inc
+++ b/setup/class_setupStepWelcome.inc
@@ -23,19 +23,19 @@ class setupStepWelcome extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-welcome&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'welcome' => array(
+    return [
+      'welcome' => [
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_welcome.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
-        )
-      )
-    );
+        'attrs'     => [
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
 
@@ -45,14 +45,14 @@ class setupStepWelcome extends setupStep
   }
 
   /* We need to init them with a method to be able to use _() */
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Welcome');
     $this->s_title        = _('Welcome to FusionDirectory setup wizard');
     $this->s_description  = _('The welcome message');
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->assign('auth_id', session_id());
@@ -61,7 +61,7 @@ class setupStepWelcome extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $id = "";
-- 
GitLab


From ad97b61a9c5f45bf9f00827d898967885f0f48c2 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Thu, 14 Jul 2022 10:42:40 +0100
Subject: [PATCH 096/117] Revert ":ambulance: Fix(1.3-fixes) - Codestyle"

This reverts commit 46b03343f23f09147dcf21c640321df690389fa5.
---
 contrib/smarty/plugins/block.render.php       |   8 +-
 contrib/smarty/plugins/function.msgPool.php   |   4 +-
 html/autocomplete.php                         |   4 +-
 html/class_passwordRecovery.inc               |  28 +-
 html/getbin.php                               |   4 +-
 html/geticon.php                              |   4 +-
 html/index.php                                |  30 +-
 html/main.php                                 |  16 +-
 html/progress.php                             |   2 +-
 html/setup.php                                |   2 +-
 include/accept-to-gettext.inc                 |   8 +-
 include/class_Combinations.inc                |   2 +-
 include/class_CopyPasteHandler.inc            |  30 +-
 include/class_IconTheme.inc                   | 320 +++++++++---------
 include/class_Language.inc                    |  12 +-
 include/class_SnapshotDialogs.inc             |  72 ++--
 include/class_SnapshotHandler.inc             |  52 +--
 include/class_acl.inc                         |  40 +--
 include/class_baseSelector.inc                |   2 +-
 include/class_config.inc                      | 134 ++++----
 include/class_divSelectBox.inc                |   2 +-
 include/class_filter.inc                      |  44 +--
 include/class_filterLDAP.inc                  |  10 +-
 include/class_ldap.inc                        | 112 +++---
 include/class_ldapFilter.inc                  |  20 +-
 include/class_ldapMultiplexer.inc             |   4 +-
 include/class_listing.inc                     | 112 +++---
 include/class_logging.inc                     |  14 +-
 include/class_msgPool.inc                     |  14 +-
 include/class_msg_dialog.inc                  |   8 +-
 include/class_objects.inc                     |  44 +--
 include/class_pluglist.inc                    |  56 +--
 include/class_template.inc                    |  32 +-
 include/class_templateHandling.inc            |  92 ++---
 include/class_tests.inc                       |   4 +-
 include/class_timezone.inc                    |   4 +-
 include/class_userinfo.inc                    |  82 ++---
 include/class_xml.inc                         |  16 +-
 include/exporter/class_cvsExporter.inc        |   4 +-
 include/exporter/class_pdfExporter.inc        |   6 +-
 include/functions.inc                         | 128 +++----
 include/functions_debug.inc                   |   4 +-
 .../class_password-methods-crypt.inc          |   2 +-
 .../class_password-methods-sasl.inc           |   2 +-
 .../class_password-methods.inc                |   8 +-
 include/php_setup.inc                         |  28 +-
 include/select/class_filterLDAPBlacklist.inc  |   2 +-
 .../select/groupSelect/class_groupSelect.inc  |   2 +-
 .../objectSelect/class_objectSelect.inc       |   6 +-
 .../systemSelect/class_systemSelect.inc       |   6 +-
 .../userGroupSelect/class_userGroupSelect.inc |   8 +-
 .../select/userSelect/class_userSelect.inc    |  12 +-
 .../class_BaseSelectorAttribute.inc           |   4 +-
 .../attributes/class_BooleanAttribute.inc     |   4 +-
 .../attributes/class_CompositeAttribute.inc   |   6 +-
 .../attributes/class_DateAttribute.inc        |  16 +-
 .../attributes/class_FileAttribute.inc        |  22 +-
 .../attributes/class_IntAttribute.inc         |   8 +-
 .../attributes/class_PhoneNumberAttribute.inc |  20 +-
 .../attributes/class_SelectAttribute.inc      |   6 +-
 .../attributes/class_SetAttribute.inc         |  74 ++--
 .../attributes/class_StringAttribute.inc      |  10 +-
 include/simpleplugin/class_Attribute.inc      |  42 +--
 .../simpleplugin/class_dialogAttributes.inc   |  70 ++--
 .../simpleplugin/class_helpersAttribute.inc   |  26 +-
 include/simpleplugin/class_multiPlugin.inc    |  12 +-
 .../simpleplugin/class_simpleManagement.inc   | 112 +++---
 include/simpleplugin/class_simplePlugin.inc   | 212 ++++++------
 include/simpleplugin/class_simpleService.inc  |   2 +-
 include/simpleplugin/class_simpleTabs.inc     |  24 +-
 plugins/addons/dashboard/class_dashBoard.inc  |  34 +-
 .../dashboard/class_dashBoardPasswords.inc    |  34 +-
 .../addons/dashboard/class_dashBoardUsers.inc | 102 +++---
 plugins/admin/acl/class_aclAssignment.inc     |  94 ++---
 plugins/admin/acl/class_aclManagement.inc     |  40 +--
 .../admin/aclrole/class_aclEditionDialog.inc  |  24 +-
 plugins/admin/aclrole/class_aclRole.inc       |  36 +-
 .../admin/aclrole/class_aclRoleManagement.inc |  12 +-
 plugins/admin/departments/class_country.inc   |  16 +-
 plugins/admin/departments/class_dcObject.inc  |  18 +-
 .../admin/departments/class_department.inc    |  48 +--
 .../class_departmentManagement.inc            |  12 +-
 plugins/admin/departments/class_domain.inc    |  18 +-
 plugins/admin/departments/class_locality.inc  |  18 +-
 .../admin/departments/class_organization.inc  |  18 +-
 .../admin/groups/class_groupManagement.inc    |  70 ++--
 plugins/admin/groups/class_roleGeneric.inc    |  54 +--
 plugins/admin/groups/tabs_ogroups.inc         |  24 +-
 plugins/admin/users/class_userManagement.inc  |  34 +-
 plugins/config/class_configInLdap.inc         | 240 ++++++-------
 plugins/config/class_dashBoardConfig.inc      |  34 +-
 plugins/config/class_mainPluginsConfig.inc    |  32 +-
 plugins/config/class_pluginsConfigInLdap.inc  |  10 +-
 plugins/config/class_recoveryConfig.inc       |  54 +--
 .../generic/references/class_reference.inc    |  46 +--
 plugins/personal/generic/class_user.inc       | 136 ++++----
 plugins/personal/roles/class_userRoles.inc    |  90 ++---
 setup/class_setup.inc                         |  32 +-
 setup/class_setupStep.inc                     |  30 +-
 setup/class_setupStepChecks.inc               |  74 ++--
 setup/class_setupStepConfig.inc               |  50 +--
 setup/class_setupStepFinish.inc               |  26 +-
 setup/class_setupStepLanguage.inc             |  26 +-
 setup/class_setupStepLdap.inc                 |  46 +--
 setup/class_setupStepMigrate.inc              | 262 +++++++-------
 setup/class_setupStepWelcome.inc              |  22 +-
 106 files changed, 2124 insertions(+), 2124 deletions(-)

diff --git a/contrib/smarty/plugins/block.render.php b/contrib/smarty/plugins/block.render.php
index 90770bcb7..0727cc211 100644
--- a/contrib/smarty/plugins/block.render.php
+++ b/contrib/smarty/plugins/block.render.php
@@ -62,17 +62,17 @@ function smarty_block_render($params, $text, &$smarty)
   }
 
   /* Remove select options */
-  $from = [
+  $from = array(
     "#<option.*<\/option>#is",
     "/(<textarea.*>).*(<\/textarea>)/is",
     "/^(.*<input.*)checked(.*>.*)$/isD"
-  ];
+  );
 
-  $to = [
+  $to = array(
     " ",
     "\\1\\2",
     "\\1 \\2"
-  ];
+  );
 
   $text = preg_replace($from, $to, $text);
 
diff --git a/contrib/smarty/plugins/function.msgPool.php b/contrib/smarty/plugins/function.msgPool.php
index ae72af0ca..c63fc95f4 100644
--- a/contrib/smarty/plugins/function.msgPool.php
+++ b/contrib/smarty/plugins/function.msgPool.php
@@ -21,14 +21,14 @@
 function smarty_function_msgPool($params, &$smarty)
 {
   if (class_available('msgPool') && isset($params['type'])) {
-    $parameter = [];
+    $parameter = array();
     foreach ($params as $para => $value) {
       if (!preg_match('/^type$/i', $para)) {
         $parameter[$para] = $value;
       }
     }
     if (is_callable('msgPool::'.$params['type'])) {
-      echo call_user_func_array(['msgPool',$params['type']], $parameter);
+      echo call_user_func_array(array('msgPool',$params['type']), $parameter);
     } else {
       trigger_error('Unknown msgPool function '.$params['type']);
     }
diff --git a/html/autocomplete.php b/html/autocomplete.php
index 0b0bce54d..c8f5437b2 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -26,11 +26,11 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', []);
+session::set('errorsAlreadyPosted', array());
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', [], 'Error: autocomplete.php called without session');
+  logging::log('security', 'unknown', '', array(), 'Error: autocomplete.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index e8a91ee66..825525d38 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -59,7 +59,7 @@ class standAlonePage {
       $smarty = get_smarty();
 
       /* Generate server list */
-      $servers = [];
+      $servers = array();
       foreach ($config->data['LOCATIONS'] as $key => $ignored) {
         $servers[$key] = $key;
       }
@@ -248,7 +248,7 @@ class standAlonePage {
 class passwordRecovery extends standAlonePage {
   protected $loginAttribute;
   protected $login;
-  var $message = [];
+  var $message = array();
   var $email_address;
 
   var $step = 1;
@@ -401,7 +401,7 @@ class passwordRecovery extends standAlonePage {
 
     // Check if token branch is here
     $token = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($token, ['dn']);
+    $ldap->cat($token, array('dn'));
     if (!$ldap->count()) {
       /* It's not, let's create it */
       $ldap->cd ($config->current['BASE']);
@@ -414,15 +414,15 @@ class passwordRecovery extends standAlonePage {
     }
 
     $dn = 'ou='.$this->login.','.$token;
-    $ldap->cat($dn, ['dn']);
+    $ldap->cat($dn, array('dn'));
     $add = ($ldap->count() == 0);
     /* We store the token and its validity due date */
-    $attrs = [
-      'objectClass'   => ['organizationalUnit'],
+    $attrs = array(
+      'objectClass'   => array('organizationalUnit'),
       'ou'            => $this->login,
       'userPassword'  => $sha1_temp_password,
       'description'   => time() + $this->delay_allowed * 60,
-    ];
+    );
     $ldap->cd($dn);
     if ($add) {
       $ldap->add($attrs);
@@ -466,7 +466,7 @@ class passwordRecovery extends standAlonePage {
     /* Retrieve dn from the ldap */
     $ldap = $config->get_ldap_link();
 
-    $objectClasses = ['gosaMailAccount'];
+    $objectClasses = array('gosaMailAccount');
     if (class_available('personalInfo') && ($config->get_cfg_value('privateEmailPasswordRecovery', 'FALSE') == 'TRUE')) {
       $objectClasses[] = 'fdPersonalInfo';
     }
@@ -475,7 +475,7 @@ class passwordRecovery extends standAlonePage {
     }
     $filter = '(&(|(objectClass='.join(')(objectClass=', $objectClasses).'))('.$this->loginAttribute.'='.ldap_escape_f($this->login).'))';
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, ['dn']);
+    $ldap->search($filter, array('dn'));
 
     if ($ldap->count() < 1) {
       $this->message[] = sprintf(_('Did not find an account with login "%s"'), htmlentities($this->login, ENT_COMPAT, 'UTF-8'));
@@ -510,7 +510,7 @@ class passwordRecovery extends standAlonePage {
     }
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, ['dn', 'userPassword', $this->loginAttribute]);
+    $ldap->search($filter, array('dn', 'userPassword', $this->loginAttribute));
 
     /* Only one ldap node should be found */
     if ($ldap->count() < 1) {
@@ -536,7 +536,7 @@ class passwordRecovery extends standAlonePage {
 
       $smarty->assign('login', $this->login);
       $smarty->assign('email_address', $this->email_address);
-      $params = $this->encodeParams(['login', 'directory', 'email_address']);
+      $params = $this->encodeParams(array('login', 'directory', 'email_address'));
       $smarty->assign('params', $params);
     }
 
@@ -603,7 +603,7 @@ class passwordRecovery extends standAlonePage {
     $this->uniq = $uniq_id_from_mail;
     $this->step = 4;
     $smarty->assign('login', $this->login);
-    $params = $this->encodeParams(['login', 'directory', 'email_address', 'uniq']);
+    $params = $this->encodeParams(array('login', 'directory', 'email_address', 'uniq'));
     $smarty->assign('params', $params);
 
     if (isset($_POST['change'])) {
@@ -620,13 +620,13 @@ class passwordRecovery extends standAlonePage {
 
     $userTabs = objects::open($dn, 'user');
     $userTab  = $userTabs->getBaseObject();
-    $userTab->userPassword = [
+    $userTab->userPassword = array(
       '',
       $new_password,
       $new_password_repeated,
       $userTab->userPassword,
       $userTab->attributesAccess['userPassword']->isLocked()
-    ];
+    );
 
     /* Is there any problem with entered passwords? */
     $userTabs->save_object();
diff --git a/html/getbin.php b/html/getbin.php
index a41a60e74..0598ea917 100644
--- a/html/getbin.php
+++ b/html/getbin.php
@@ -27,11 +27,11 @@
 error_reporting (0);
 session_cache_limiter('private');
 session::start();
-session::set('errorsAlreadyPosted', []);
+session::set('errorsAlreadyPosted', array());
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', [], 'Error: getbin.php called without session');
+  logging::log('security', 'unknown', '', array(), 'Error: getbin.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/geticon.php b/html/geticon.php
index 0e2fc5ae2..2e338e288 100644
--- a/html/geticon.php
+++ b/html/geticon.php
@@ -25,7 +25,7 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', []);
+session::set('errorsAlreadyPosted', array());
 
 $theme = '';
 if (session::is_set('config')) {
@@ -34,7 +34,7 @@ if (session::is_set('config')) {
 } else {
   header("cache-control: no-cache");
 }
-IconTheme::$extensions    = ['png'];
+IconTheme::$extensions    = array('png');
 if (!isset($_GET['context']) || !isset($_GET['icon']) || !isset($_GET['size'])) {
   trigger_error('Missing information in query string: '.$_SERVER['QUERY_STRING']);
   exit;
diff --git a/html/index.php b/html/index.php
index a444fc69b..a72e361f9 100644
--- a/html/index.php
+++ b/html/index.php
@@ -70,7 +70,7 @@ function displayLogin()
   }
 
   /* Generate server list */
-  $servers = [];
+  $servers = array();
   if (isset($_POST['server'])) {
     $selected = $_POST['server'];
   } else {
@@ -246,7 +246,7 @@ class Index {
     if ($config->get_cfg_value('schemaCheck') != 'TRUE') {
       return TRUE;
     }
-    $cfg = [];
+    $cfg = array();
     $cfg['admin']       = $config->current['ADMINDN'];
     $cfg['password']    = $config->current['ADMINPASSWORD'];
     $cfg['connection']  = $config->current['SERVER'];
@@ -269,7 +269,7 @@ class Index {
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], ['dn']);
+    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], array('dn'));
     $attrs = $ldap->fetch();
     if (!count($attrs)) {
       $ldap->cd($config->current['BASE']);
@@ -302,9 +302,9 @@ class Index {
     $ui = ldap_login_user(static::$username, static::$password);
     if ($ui === NULL) {
       if (isset($_SERVER['REMOTE_ADDR'])) {
-        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
+        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
       } else {
-        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'"');
+        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'"');
       }
       $message = _('Please check the username/password combination.');
       $smarty->assign ('focusfield', 'password');
@@ -340,7 +340,7 @@ class Index {
       $expired = $ui->expired_status();
 
       if ($expired == POSIX_ACCOUNT_EXPIRED) {
-        logging::log('security', 'login', '', [], 'Account for user "'.static::$username.'" has expired');
+        logging::log('security', 'login', '', array(), 'Account for user "'.static::$username.'" has expired');
         $message = _('Account locked. Please contact your system administrator!');
         $smarty->assign ('focusfield', 'username');
         return FALSE;
@@ -354,7 +354,7 @@ class Index {
   {
     global $config;
     /* Not account expired or password forced change go to main page */
-    logging::log('security', 'login', '', [], 'User "'.static::$username.'" logged in successfully.');
+    logging::log('security', 'login', '', array(), 'User "'.static::$username.'" logged in successfully.');
     session::set('connected', 1);
     session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
     header ('Location: main.php?global_check=1');
@@ -398,13 +398,13 @@ class Index {
     static::$username = $_POST['username'];
     static::$password = $_POST['password'];
 
-    $success = static::runSteps([
+    $success = static::runSteps(array(
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ]);
+    ));
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -430,13 +430,13 @@ class Index {
     static::$username = $_SERVER['PHP_AUTH_USER'];
     static::$password = $_SERVER['PHP_AUTH_PW'];
 
-    $success = static::runSteps([
+    $success = static::runSteps(array(
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ]);
+    ));
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -499,11 +499,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps([
+    $success = static::runSteps(array(
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ]);
+    ));
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -566,11 +566,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps([
+    $success = static::runSteps(array(
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ]);
+    ));
 
     if ($success) {
       /* Everything went well, redirect to main.php */
diff --git a/html/main.php b/html/main.php
index 367e90533..00a1e3100 100644
--- a/html/main.php
+++ b/html/main.php
@@ -40,8 +40,8 @@ textdomain($domain);
 
 /* Remember everything we did after the last click */
 session::start();
-session::set('errorsAlreadyPosted', []);
-session::set('runtime_cache', []);
+session::set('errorsAlreadyPosted', array());
+session::set('runtime_cache', array());
 session::set('limit_exceeded', FALSE);
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
@@ -51,7 +51,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
 /* Logged in? Simple security check */
 if (!session::is_set('connected')) {
-  logging::log('security', 'login', '', [], 'main.php called without session - logging out');
+  logging::log('security', 'login', '', array(), 'main.php called without session - logging out');
   header ('Location: index.php?message=nosession');
   exit;
 }
@@ -83,7 +83,7 @@ if (session::get('_LAST_PAGE_REQUEST') != '') {
      */
     if ($request_time > $max_life) {
       session::destroy();
-      logging::log('security', 'login', '', [], 'main.php called with expired session - logging out');
+      logging::log('security', 'login', '', array(), 'main.php called with expired session - logging out');
       header ('Location: index.php?signout=1&message=expired');
       exit;
     }
@@ -114,7 +114,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
             _("Fatal error: Register globals is on. FusionDirectory will refuse to login unless this is fixed by an administrator."),
             FATAL_ERROR_DIALOG);
 
-  logging::log('security', 'login', '', [], 'Register globals is on. For security reasons, this should be turned off.');
+  logging::log('security', 'login', '', array(), 'Register globals is on. For security reasons, this should be turned off.');
   session::destroy ();
   exit;
 }
@@ -136,7 +136,7 @@ if ($config->get_cfg_value("handleExpiredAccounts") == "TRUE") {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, 'This user account ('.$ui->uid.') is about to expire');
 
     // The users password is about to xpire soon, display a warning message.
-    logging::log('security', 'fusiondirectory', '', [], 'password for user "'.$ui->uid.'" is about to expire');
+    logging::log('security', 'fusiondirectory', '', array(), 'password for user "'.$ui->uid.'" is about to expire');
     msg_dialog::display(_('Password change'), _('Your password is about to expire, please change your password!'), INFO_DIALOG);
     session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE);
   } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE) {
@@ -166,7 +166,7 @@ if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   $plugin_dir = $plist->get_path($plug);
   session::set('plugin_dir', $plugin_dir);
   if ($plugin_dir == '') {
-    logging::log('security', 'fusiondirectory', '', [], "main.php called with invalid plug parameter \"$plug\"");
+    logging::log('security', 'fusiondirectory', '', array(), "main.php called with invalid plug parameter \"$plug\"");
     header ('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
     exit;
   }
@@ -346,4 +346,4 @@ echo $display;
 /* Save plist and config */
 session::set('plist', $plist);
 session::set('config', $config);
-session::set('errorsAlreadyPosted', []);
+session::set('errorsAlreadyPosted', array());
diff --git a/html/progress.php b/html/progress.php
index 352aaa539..782bb2759 100644
--- a/html/progress.php
+++ b/html/progress.php
@@ -58,7 +58,7 @@ if (!function_exists("imagecreate")) {
 
   $x_matches = FALSE;
   $y_matches = FALSE;
-  foreach ([7,6,5,4,3,2,1,0] as $font) {
+  foreach (array(7,6,5,4,3,2,1,0) as $font) {
     $fx = ImageFontWidth($font) * strlen("$p%");
     $fy = ImageFontHeight($font);
 
diff --git a/html/setup.php b/html/setup.php
index 4695b6ad1..48f981613 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -50,7 +50,7 @@ ini_set("session.gc_maxlifetime", 24 * 60 * 60);
 /* Start session */
 session::start();
 session::set('DEBUGLEVEL', 0);
-session::set('errorsAlreadyPosted', []);
+session::set('errorsAlreadyPosted', array());
 
 CSRFProtection::check();
 
diff --git a/include/accept-to-gettext.inc b/include/accept-to-gettext.inc
index 0995f1db7..d4f171469 100644
--- a/include/accept-to-gettext.inc
+++ b/include/accept-to-gettext.inc
@@ -74,7 +74,7 @@
  */
 function parse_scores ($str)
 {
-  $scores = [];
+  $scores = array();
   $parts = preg_split('/,/', $str);
   foreach ($parts as $part) {
     $part = trim(strtolower($part));
@@ -109,7 +109,7 @@ function max_scores ($scores, $testvals)
 function parse_gettext_lang ($str)
 {
   if (preg_match("/^([^_]*)(_([^_]*))?\.(.*)$/", $str, $m)) {
-    return [strtolower($m[1]), strtolower($m[3]), strtolower($m[4])];
+    return array(strtolower($m[1]), strtolower($m[3]), strtolower($m[4]));
   } else {
     return FALSE;
   }
@@ -157,8 +157,8 @@ function al2gt($gettextlangs)
     }
     list ($lang, $country, $char) = $infos;
 
-    $lang_score = max_scores($lang_scores, [$lang,$lang.'-'.$country,'*']);
-    $char_score = max_scores($char_scores, [$char,'*']);
+    $lang_score = max_scores($lang_scores, array($lang,$lang.'-'.$country,'*'));
+    $char_score = max_scores($char_scores, array($char,'*'));
     if ($char_score == 0) {
       // exclude charsets the user refuses
       continue;
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index d2776767f..2821f6df5 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -43,7 +43,7 @@ class Combinations implements Iterator
 
   function current()
   {
-    $r = [];
+    $r = array();
     for ($i = 0; $i < $this->size; $i++) {
       $r[] = $this->input[$this->current[$i]];
     }
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index 9a8e6b6ea..15586d2de 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -34,20 +34,20 @@ class CopyPasteHandler
   /*!
    * \brief This array contains all dns of the currently copied objects
    */
-  protected $objectList = [];
+  protected $objectList = array();
   /*!
    * \brief This array contains all remaining objects to paste
    */
-  protected $queue = [];
+  protected $queue = array();
 
   /*!
    *  \brief The dn of the last edited object
    */
   var $lastdn = "";
 
-  var $disallowed_objects = [];
-  var $objects_to_fix     = [];
-  var $clean_objects      = [];
+  var $disallowed_objects = array();
+  var $objects_to_fix     = array();
+  var $clean_objects      = array();
   var $require_update     = FALSE;
 
   /*!
@@ -56,7 +56,7 @@ class CopyPasteHandler
   function __construct()
   {
     $this->current  = NULL;
-    $this->queue    = [];
+    $this->queue    = array();
   }
 
 
@@ -77,12 +77,12 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
 
-    if (!in_array($action, ['cut','copy'])) {
+    if (!in_array($action, array('cut','copy'))) {
       trigger_error(sprintf('Specified action "%s" does not exists for copy & paste.', $action));
       return FALSE;
     }
 
-    $tmp = [];
+    $tmp = array();
 
     $tmp['method']  = $action;
     $tmp['dn']      = $dn;
@@ -112,8 +112,8 @@ class CopyPasteHandler
   {
     $this->current        = FALSE;
     $this->require_update = TRUE;
-    $this->queue          = [];
-    $this->objectList     = [];
+    $this->queue          = array();
+    $this->objectList     = array();
   }
 
   /*!
@@ -141,7 +141,7 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
     if (!isset($entry['tab_class']) && !isset($entry['type'])) {
-      return [];
+      return array();
     }
 
     $entry['object'] = objects::open($entry['dn'], $entry['type']);
@@ -172,9 +172,9 @@ class CopyPasteHandler
      * Create a list of all entries that can be pasted directly.
      */
     if ($this->require_update) {
-      $this->clean_objects      = [];
-      $this->objects_to_fix     = [];
-      $this->disallowed_objects = [];
+      $this->clean_objects      = array();
+      $this->objects_to_fix     = array();
+      $this->disallowed_objects = array();
 
       /* Put each queued object in one of the above arrays */
       foreach ($this->queue as $key => $entry) {
@@ -199,7 +199,7 @@ class CopyPasteHandler
         }
       }
       if (count($this->disallowed_objects)) {
-        $dns = [];
+        $dns = array();
         foreach ($this->disallowed_objects as $entry) {
           $dns[] = $entry['dn'];
         }
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 495f88d2f..72b3618f1 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -54,7 +54,7 @@ class IconThemeDir
     $this->Size     = $infos['Size'];
     $this->MinSize  = $infos['Size'];
     $this->MaxSize  = $infos['Size'];
-    foreach (['Type', 'MaxSize', 'MinSize', 'Threshold'] as $key) {
+    foreach (array('Type', 'MaxSize', 'MinSize', 'Threshold') as $key) {
       if (isset($infos[$key])) {
         $this->$key = $infos[$key];
       }
@@ -102,7 +102,7 @@ class IconThemeDir
  */
 class IconTheme
 {
-  private $subdirs = [];
+  private $subdirs = array();
   private $path;
   private $parent;
 
@@ -200,14 +200,14 @@ class IconTheme
   }
 
   static public $default_theme  = 'breezy';
-  static public $extensions     = ['png', 'xpm', 'svg'];
+  static public $extensions     = array('png', 'xpm', 'svg');
   static public $find_closest   = FALSE;
 
   /* We store themes in the session. To do otherwise, override these methods. */
   static public $session_var    = 'IconThemes';
   static public function loadThemes($path)
   {
-    $themes = [];
+    $themes = array();
     if ($dir = opendir("$path")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (file_exists("$path/$file/index.theme") && !preg_match("/^\./", $file)) {
@@ -246,162 +246,162 @@ class IconTheme
   }
 
   /* Fallback system */
-  static public $fallbacks = [
-    'types/user-group'              => [
-      ['applications','system-users']
-    ],
-    'types/resource-group'          => [
-      ['actions','resource-group']
-    ],
-    'types/user'                    => [
-      ['places','user-identity'],
-      ['status','avatar-default'],
-    ],
-    'types/contact'                 => [
-      ['mimetypes','x-office-contact'],
-    ],
-    'types/certificate'             => [
-      ['mimetypes','stock_certificate'],
-      ['mimetypes','application-certificate'],
-      ['actions','view-certificate'],
-    ],
-    'applications/user-info'        => [
-      ['actions','user-properties'],
-      ['types','contact'],
-      ['mimetypes','x-office-contact'],
-      ['types','user'],
-      ['places','user-identity'],
-      ['status','avatar-default'],
-    ],
-    'applications/office-calendar'  => [
-      ['mimetypes','x-office-calendar'],
-    ],
-    'applications/os-linux'         => [
-      ['applications','linux'],
-    ],
-    'applications/os-windows'       => [
-      ['applications','windows'],
-    ],
-    'applications/samba'            => [
-      ['applications','os-windows'],
-      ['applications','windows'],
-    ],
-    'applications/config-language'  => [
-      ['applications','locale'],
-      ['applications','preferences-desktop-locale'],
-    ],
-    'mimetypes/text-csv'            => [
-      ['mimetypes','x-office-spreadsheet'],
-      ['mimetypes','text-x-generic'],
-    ],
-    'mimetypes/application-pdf'     => [
-      ['mimetypes','x-office-document'],
-    ],
-    'actions/application-exit'      => [
-      ['actions','system-log-out'],
-    ],
-    'actions/document-export'       => [
-      ['actions','document-send'],
-    ],
-    'actions/download'              => [
-      ['actions','document-save'],
-    ],
-    'actions/document-restore'      => [
-      ['actions','document-import'],
-      ['actions','document-open'],
-    ],
-    'actions/document-edit'         => [
-      ['actions','edit'],
-      ['applications','text-editor'],
-      ['applications','accessories-text-editor'],
-      ['actions','document-open'],
-    ],
-    'actions/snapshot'              => [
-      ['actions','document-save'],
-    ],
-    'actions/system-reboot'         => [
-      ['actions','view-refresh'],
-    ],
-    'actions/system-update'         => [
-      ['applications','system-software-update'],
-    ],
-    'actions/system-reinstall'      => [
-      ['applications','system-installer'],
-    ],
-    'actions/task-start'            => [
-      ['actions','media-playback-start'],
-    ],
-    'actions/task-stop'             => [
-      ['actions','media-playback-stop'],
-    ],
-    'actions/task-schedule'         => [
-      ['actions','chronometer'],
-      ['actions','smallclock'],
-    ],
-    'actions/up'                    => [
-      ['actions','go-up'],
-      ['actions','arrow-up'],
-    ],
-    'actions/upload'                => [
-      ['actions','document-import'],
-      ['actions','up'],
-    ],
-    'actions/down'                  => [
-      ['actions','go-down'],
-      ['actions','arrow-down'],
-    ],
-    'actions/previous'              => [
-      ['actions','go-previous'],
-      ['actions','arrow-left'],
-    ],
-    'actions/next'                  => [
-      ['actions','go-next'],
-      ['actions','arrow-right'],
-    ],
-    'actions/submit'                => [
-      ['actions','go-jump'],
-    ],
-    'categories/settings'           => [
-      ['categories','gnome-settings'],
-      ['categories','preferences-other'],
-      ['categories','preferences-system'],
-    ],
-    'categories/checks'             => [
-      ['actions','view-task'],
-      ['actions','view-calendar-tasks'],
-      ['actions','checkbox'],
-      ['status','task-complete'],
-    ],
-    'devices/server'                => [
-      ['places','server'],
-      ['places','network-server'],
-    ],
-    'devices/media-cdrom'           => [
-      ['devices','media-optical'],
-    ],
-    'devices/terminal'              => [
-      ['applications','utilities-terminal'],
-    ],
-    'devices/computer-windows'      => [
-      ['applications','os-windows'],
-      ['applications','windows'],
-    ],
-    'devices/template'              => [
-      ['actions','document-new'],
-    ],
-    'status/object-locked'          => [
-      ['status','changes-prevent'],
-    ],
-    'status/object-unlocked'        => [
-      ['status','changes-allow'],
-    ],
-    'status/task-waiting'        => [
-      ['actions','task-schedule'],
-    ],
-    'places/folder-network'        => [
-      ['places','folder-remote'],
-    ],
-  ];
+  static public $fallbacks = array(
+    'types/user-group'              => array(
+      array('applications','system-users')
+    ),
+    'types/resource-group'          => array(
+      array('actions','resource-group')
+    ),
+    'types/user'                    => array(
+      array('places','user-identity'),
+      array('status','avatar-default'),
+    ),
+    'types/contact'                 => array(
+      array('mimetypes','x-office-contact'),
+    ),
+    'types/certificate'             => array(
+      array('mimetypes','stock_certificate'),
+      array('mimetypes','application-certificate'),
+      array('actions','view-certificate'),
+    ),
+    'applications/user-info'        => array(
+      array('actions','user-properties'),
+      array('types','contact'),
+      array('mimetypes','x-office-contact'),
+      array('types','user'),
+      array('places','user-identity'),
+      array('status','avatar-default'),
+    ),
+    'applications/office-calendar'  => array(
+      array('mimetypes','x-office-calendar'),
+    ),
+    'applications/os-linux'         => array(
+      array('applications','linux'),
+    ),
+    'applications/os-windows'       => array(
+      array('applications','windows'),
+    ),
+    'applications/samba'            => array(
+      array('applications','os-windows'),
+      array('applications','windows'),
+    ),
+    'applications/config-language'  => array(
+      array('applications','locale'),
+      array('applications','preferences-desktop-locale'),
+    ),
+    'mimetypes/text-csv'            => array(
+      array('mimetypes','x-office-spreadsheet'),
+      array('mimetypes','text-x-generic'),
+    ),
+    'mimetypes/application-pdf'     => array(
+      array('mimetypes','x-office-document'),
+    ),
+    'actions/application-exit'      => array(
+      array('actions','system-log-out'),
+    ),
+    'actions/document-export'       => array(
+      array('actions','document-send'),
+    ),
+    'actions/download'              => array(
+      array('actions','document-save'),
+    ),
+    'actions/document-restore'      => array(
+      array('actions','document-import'),
+      array('actions','document-open'),
+    ),
+    'actions/document-edit'         => array(
+      array('actions','edit'),
+      array('applications','text-editor'),
+      array('applications','accessories-text-editor'),
+      array('actions','document-open'),
+    ),
+    'actions/snapshot'              => array(
+      array('actions','document-save'),
+    ),
+    'actions/system-reboot'         => array(
+      array('actions','view-refresh'),
+    ),
+    'actions/system-update'         => array(
+      array('applications','system-software-update'),
+    ),
+    'actions/system-reinstall'      => array(
+      array('applications','system-installer'),
+    ),
+    'actions/task-start'            => array(
+      array('actions','media-playback-start'),
+    ),
+    'actions/task-stop'             => array(
+      array('actions','media-playback-stop'),
+    ),
+    'actions/task-schedule'         => array(
+      array('actions','chronometer'),
+      array('actions','smallclock'),
+    ),
+    'actions/up'                    => array(
+      array('actions','go-up'),
+      array('actions','arrow-up'),
+    ),
+    'actions/upload'                => array(
+      array('actions','document-import'),
+      array('actions','up'),
+    ),
+    'actions/down'                  => array(
+      array('actions','go-down'),
+      array('actions','arrow-down'),
+    ),
+    'actions/previous'              => array(
+      array('actions','go-previous'),
+      array('actions','arrow-left'),
+    ),
+    'actions/next'                  => array(
+      array('actions','go-next'),
+      array('actions','arrow-right'),
+    ),
+    'actions/submit'                => array(
+      array('actions','go-jump'),
+    ),
+    'categories/settings'           => array(
+      array('categories','gnome-settings'),
+      array('categories','preferences-other'),
+      array('categories','preferences-system'),
+    ),
+    'categories/checks'             => array(
+      array('actions','view-task'),
+      array('actions','view-calendar-tasks'),
+      array('actions','checkbox'),
+      array('status','task-complete'),
+    ),
+    'devices/server'                => array(
+      array('places','server'),
+      array('places','network-server'),
+    ),
+    'devices/media-cdrom'           => array(
+      array('devices','media-optical'),
+    ),
+    'devices/terminal'              => array(
+      array('applications','utilities-terminal'),
+    ),
+    'devices/computer-windows'      => array(
+      array('applications','os-windows'),
+      array('applications','windows'),
+    ),
+    'devices/template'              => array(
+      array('actions','document-new'),
+    ),
+    'status/object-locked'          => array(
+      array('status','changes-prevent'),
+    ),
+    'status/object-unlocked'        => array(
+      array('status','changes-allow'),
+    ),
+    'status/task-waiting'        => array(
+      array('actions','task-schedule'),
+    ),
+    'places/folder-network'        => array(
+      array('places','folder-remote'),
+    ),
+  );
 }
 
 ?>
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 13bc7dff8..bd99cb243 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -118,7 +118,7 @@ class Language
     $languages = static::getList();
 
     /* Move supported languages to flat list */
-    $langs = [];
+    $langs = array();
     foreach (array_keys($languages) as $lang) {
       $langs[] = $lang.'.UTF-8';
     }
@@ -135,7 +135,7 @@ class Language
   public static function getList($ownLanguage = FALSE)
   {
     /* locales in english */
-    $tmp_english = [
+    $tmp_english = array(
       'en_US' => 'English',
       'af_ZA' => 'Afrikaans',
       'ar_EG' => 'Arabic',
@@ -166,12 +166,12 @@ class Language
       'vi_VN' => 'Vietnamese',
       'zh_TW' => 'Taiwanese',
       'zh_CN' => 'Chinese',
-    ];
+    );
 
-    $ret = [];
+    $ret = array();
     if ($ownLanguage) {
       /* locales in their own language */
-      $tmp_ownlang = [
+      $tmp_ownlang = array(
         'en_US' => 'English',
         'ar_EG' => 'عربية',
         'af_ZA' => 'Afrikaans',
@@ -202,7 +202,7 @@ class Language
         'vi_VN' => 'Tiếng Việt',
         'zh_TW' => 'Taiwanese',
         'zh_CN' => '中文, 汉语, 漢語',
-      ];
+      );
 
       foreach ($tmp_english as $key => $name) {
         $ret[$key] = _($name).' ('.$tmp_ownlang[$key].')';
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index ced9d6910..034241092 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -28,17 +28,17 @@ class SnapshotCreateDialog extends simplePlugin
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName' => 'SnapshotCreateDialog',
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'  => _('Creating an object snapshot'),
-        'attrs' => [
+        'attrs' => array(
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -53,9 +53,9 @@ class SnapshotCreateDialog extends simplePlugin
             '',
             'SnapshotHandler'
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($dn, $parent, $aclCategory)
@@ -124,7 +124,7 @@ class SnapshotCreateDialog extends simplePlugin
  */
 class SnapshotsAttribute extends OrderedArrayAttribute
 {
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = FALSE;
@@ -138,18 +138,18 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     parent::setParent($plugin);
     if (is_object($this->plugin)) {
       if ($this->plugin->global) {
-        $this->setHeaders([
+        $this->setHeaders(array(
           _('DN'),
           _('Date'),
           _('Description'),
           ''
-        ]);
+        ));
       } else {
-        $this->setHeaders([
+        $this->setHeaders(array(
           _('Date'),
           _('Description'),
           ''
-        ]);
+        ));
       }
     }
   }
@@ -183,10 +183,10 @@ class SnapshotsAttribute extends OrderedArrayAttribute
 
   protected function getAttributeArrayValue($key, $value)
   {
-    $values = [
+    $values = array(
       date(_('Y-m-d, H:i:s'), preg_replace('/\-.*$/', '', $value['gosaSnapshotTimestamp'][0])),
       $value['description'][0]
-    ];
+    );
     if ($this->plugin->global) {
       array_unshift($values, $value['gosaSnapshotDN'][0]);
     }
@@ -199,16 +199,16 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     list ($img, $nbicons) = parent::genRowIcons($key, $value);
     $img = $this->renderInputField(
       'image', $id.'_restore_'.$key,
-      [
+      array(
         'src'   => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
         'title' => _('Restore'),
         'alt'   => _('Restore'),
         'class' => 'center'
-      ]
+      )
     ).$img;
     $nbicons++;
 
-    return  [$img, $nbicons];
+    return array ($img, $nbicons);
   }
 
   protected function handlePostValueActions($id, $postValue)
@@ -245,18 +245,18 @@ class SnapshotRestoreDialog extends simplePlugin
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName' => 'SnapshotRestoreDialog',
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'  => _('Restoring snapshots'),
-        'class' => ['fullwidth'],
-        'attrs' => [
+        'class' => array('fullwidth'),
+        'attrs' => array(
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -264,12 +264,12 @@ class SnapshotRestoreDialog extends simplePlugin
           new SnapshotsAttribute (
             _('Snapshots'), _('Existing snapshots for this object'),
             'snapshots', FALSE,
-            [],
+            array(),
             'SnapshotHandler'
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($dn, $parent, $global, $aclCategory)
@@ -298,28 +298,28 @@ class SnapshotRestoreDialog extends simplePlugin
   {
     global $ui;
     if ($this->dialog == 'delete') {
-      $objects = [
-        [
+      $objects = array(
+        array(
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        ]
-      ];
+        )
+      );
 
       // Display confirmation dialog.
       $smarty = get_smarty();
       $smarty->assign('objects', $objects);
       $str = $smarty->fetch(get_template_path('simple-remove.tpl'));
     } elseif ($this->dialog == 'restore') {
-      $objects = [
-        [
+      $objects = array(
+        array(
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        ]
-      ];
+        )
+      );
 
       // Display confirmation dialog.
       $smarty = get_smarty();
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 08072cab8..185fec9dd 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -30,23 +30,23 @@
  */
 class SnapshotHandler
 {
-  var $snapshotBases  = [];
+  var $snapshotBases  = array();
 
   protected $enabled;
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Snapshot'),
       'plDescription' => _('Snapshot handler'),
       /* Categories for snapshots are computed in config class */
-      'plCategory'    => [],
+      'plCategory'    => array(),
 
-      'plProvidedAcls' => [
+      'plProvidedAcls' => array(
         'restore_over'    => _('Restore over an existing object'),
         'restore_deleted' => _('Restore a deleted object'),
-      ]
-    ];
+      )
+    );
   }
 
   /*!
@@ -137,10 +137,10 @@ class SnapshotHandler
 
     /* Fetch all objects with */
     $ldap->cd($base);
-    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', ['gosaSnapshotDN']);
+    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', array('gosaSnapshotDN'));
 
     /* Store for which object we have snapshots */
-    $this->snapshotsCache = [];
+    $this->snapshotsCache = array();
     while ($entry = $ldap->fetch()) {
       $this->snapshotsCache[$entry['gosaSnapshotDN'][0]] = TRUE;
     }
@@ -167,7 +167,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return [];
+      return array();
     }
 
     $ldap = $config->get_ldap_link();
@@ -181,12 +181,12 @@ class SnapshotHandler
     $ldap->cd($base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
+      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
       'one'
     );
 
     /* Put results into a list and add description if missing */
-    $objects = [];
+    $objects = array();
     while ($entry = $ldap->fetch()) {
       if (!isset($entry['description'][0])) {
         $entry['description'][0]  = "";
@@ -198,7 +198,7 @@ class SnapshotHandler
     if ($raw) {
       return $objects;
     } else {
-      $tmp = [];
+      $tmp = array();
       foreach ($objects as $entry) {
         $tmp[base64_encode($entry['dn'])] = $entry['description'][0];
       }
@@ -214,7 +214,7 @@ class SnapshotHandler
    *
    * \param array $description Snapshot description
    */
-  function createSnapshot($dn, $description = [])
+  function createSnapshot($dn, $description = array())
   {
     global $config;
     if (!$this->enabled()) {
@@ -226,7 +226,7 @@ class SnapshotHandler
       $dns  = $dn;
       $dn   = $dns[0];
     } else {
-      $dns = [$dn];
+      $dns = array($dn);
     }
 
     $ldap = $config->get_ldap_link();
@@ -252,9 +252,9 @@ class SnapshotHandler
       }
     }
 
-    $target   = [];
+    $target   = array();
 
-    $target['objectClass']            = ['top', 'gosaSnapshotObject'];
+    $target['objectClass']            = array('top', 'gosaSnapshotObject');
     $target['gosaSnapshotData']       = gzcompress($data, 6);
     $target['gosaSnapshotDN']         = $dn;
     $target['description']            = $description;
@@ -307,7 +307,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return [];
+      return array();
     }
 
     $ldap = $config->get_ldap_link();
@@ -315,13 +315,13 @@ class SnapshotHandler
     /* Prepare bases and some other infos */
     $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn);
     $new_base       = $this->snapshot_dn($base_of_object);
-    $tmp            = [];
+    $tmp            = array();
 
     /* Fetch all objects with  gosaSnapshotDN=$dn */
     $ldap->cd($new_base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
+      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
       'one'
     );
 
@@ -345,7 +345,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return [];
+      return array();
     }
 
     $ldap = $config->get_ldap_link();
@@ -353,11 +353,11 @@ class SnapshotHandler
     /* Prepare bases */
     $new_base       = $this->snapshot_dn($base_of_object);
     /* Fetch all objects and check if they do not exist anymore */
-    $tmp  = [];
+    $tmp  = array();
     $ldap->cd($new_base);
     $ldap->search(
       '(objectClass=gosaSnapshotObject)',
-      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
+      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
       'one'
     );
     while ($entry = $ldap->fetch()) {
@@ -394,23 +394,23 @@ class SnapshotHandler
     global $config;
     if (!$this->enabled()) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to restore snapshot');
-      return [];
+      return array();
     }
 
     $ldap = $config->get_ldap_link();
 
     /* Get the snapshot */
-    $ldap->cat($dn, ['gosaSnapshotData'], '(gosaSnapshotData=*)');
+    $ldap->cat($dn, array('gosaSnapshotData'), '(gosaSnapshotData=*)');
     if ($attrs = $ldap->fetch()) {
       /* Prepare import string */
       $data = gzuncompress($attrs['gosaSnapshotData'][0]);
       if ($data === FALSE) {
         msg_dialog::display(_('Error'), _('There was a problem uncompressing snapshot data'), ERROR_DIALOG);
-        return [];
+        return array();
       }
     } else {
       msg_dialog::display(_('Error'), _('Snapshot data could not be fetched'), ERROR_DIALOG);
-      return [];
+      return array();
     }
 
     /* Import the given data */
diff --git a/include/class_acl.inc b/include/class_acl.inc
index 452eca871..203b6adad 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -31,19 +31,19 @@ class acl
 {
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('ACL'),
       'plDescription' => _('Manage access control lists'),
-      'plCategory'    => [
-        'acl' => [
+      'plCategory'    => array(
+        'acl' => array(
           'description'  => _('ACL').'&nbsp;&amp;&nbsp;'._('ACL roles'),
-          'objectClass'  => ['gosaAcl','gosaRole']
-        ]
-      ],
-      'plObjectType'  => [],
+          'objectClass'  => array('gosaAcl','gosaRole')
+        )
+      ),
+      'plObjectType'  => array(),
 
-      'plProvidedAcls'  => []
-    ];
+      'plProvidedAcls'  => array()
+    );
   }
 
   /*!
@@ -78,10 +78,10 @@ class acl
   static function explodeRole($role)
   {
     if (!is_array($role)) {
-      $role = [$role];
+      $role = array($role);
     }
     unset($role['count']);
-    $result = [];
+    $result = array();
     foreach ($role as $aclTemplate) {
       $list = explode(':', $aclTemplate, 2);
       $result[$list[0]] = static::extractACL($list[1]);
@@ -106,17 +106,17 @@ class acl
       list($index, $type,$role,$members) = $list;
     }
 
-    $a = [ $index => [
+    $a = array( $index => array(
       'type'    => $type,
       'filter'  => $filter,
       'members' => acl::extractMembers($members),
       'acl'     => base64_decode($role),
-    ]];
+    ));
 
     /* Handle unknown types */
-    if (!in_array($type, ['subtree', 'base'])) {
+    if (!in_array($type, array('subtree', 'base'))) {
       msg_dialog::display(_("Internal error"), sprintf(_("Unkown ACL type '%s'!\nYou might need to run \"fusiondirectory-setup --migrate-acls\" to migrate your acls to the new format."), $type), ERROR_DIALOG);
-      $a = [];
+      $a = array();
     }
     return $a;
   }
@@ -131,7 +131,7 @@ class acl
   static function extractMembers($ms)
   {
     global $config;
-    $a = [];
+    $a = array();
 
     /* Seperate by ',' and place it in an array */
     $ma = explode(',', $ms);
@@ -147,7 +147,7 @@ class acl
           continue;
         }
 
-        $ldap->cat($dn, ['cn', 'objectClass', 'description', 'uid']);
+        $ldap->cat($dn, array('cn', 'objectClass', 'description', 'uid'));
 
         /* Found entry... */
         if ($ldap->count()) {
@@ -187,7 +187,7 @@ class acl
     /* Rip acl off the string, seperate by ',' and place it in an array */
     $as = preg_replace('/^[^:]+:[^:]+:[^:]*:([^:]*).*$/', '\1', $acl);
     $aa = explode(',', $as);
-    $a  = [];
+    $a  = array();
 
     /* Dis-assemble single ACLs */
     foreach ($aa as $sacl) {
@@ -203,11 +203,11 @@ class acl
         if ($idx == 0) {
           /* Create hash for this object */
           $gobject      = $object;
-          $a[$gobject]  = [];
+          $a[$gobject]  = array();
 
           /* Append ACL if set */
           if ($gacl != "") {
-            $a[$gobject] = [$gacl];
+            $a[$gobject] = array($gacl);
           }
         } else {
           /* All other entries get appended... */
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 6a378ce82..4acac0237 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -119,7 +119,7 @@ class baseSelector
   {
     global $config;
 
-    $this->pathMapping = [];
+    $this->pathMapping = array();
 
     foreach ($bases as $base => $dummy) {
       // Build path style display
diff --git a/include/class_config.inc b/include/class_config.inc
index 81d3777ae..1585daca9 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -33,7 +33,7 @@ class config
   /* XML parser */
   var $parser;
   var $config_found     = FALSE;
-  var $tags             = [];
+  var $tags             = array();
   var $level            = 0;
   var $gpc              = 0;
   var $section          = '';
@@ -42,28 +42,28 @@ class config
   /*!
    * \brief Store configuration for current location
    */
-  var $current = [];
+  var $current = array();
 
   /* Link to LDAP-server */
   var $ldap       = NULL;
-  var $referrals  = [];
+  var $referrals  = array();
 
   /*
    * \brief Configuration data
    *
    * - $data['SERVERS'] contains server informations.
    */
-  var $data = [
-    'LOCATIONS' => [],
-    'SERVERS'   => [],
-    'MAIN'      => [],
-  ];
+  var $data = array(
+    'LOCATIONS' => array(),
+    'SERVERS'   => array(),
+    'MAIN'      => array(),
+  );
   var $basedir        = '';
 
   /* Keep a copy of the current department list */
-  var $departments      = [];
-  var $idepartments     = [];
-  var $department_info  = [];
+  var $departments      = array();
+  var $idepartments     = array();
+  var $department_info  = array();
   var $filename         = '';
   var $last_modified    = 0;
 
@@ -106,7 +106,7 @@ class config
     if (($this->filename != '') && ((filemtime($this->filename) != $this->last_modified) || $force)) {
 
       $this->config_found     = FALSE;
-      $this->tags             = [];
+      $this->tags             = array();
       $this->level            = 0;
       $this->gpc              = 0;
       $this->section          = '';
@@ -137,11 +137,11 @@ class config
 
   function parse_data ($xmldata)
   {
-    $this->data = [
-      'LOCATIONS' => [],
-      'SERVERS'   => [],
-      'MAIN'      => [],
-    ];
+    $this->data = array(
+      'LOCATIONS' => array(),
+      'SERVERS'   => array(),
+      'MAIN'      => array(),
+    );
 
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
@@ -223,7 +223,7 @@ class config
 
           /* Add location elements */
           if (!isset($this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'])) {
-            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = [];
+            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = array();
           }
 
           $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'][$server] = $attrs;
@@ -271,7 +271,7 @@ class config
   {
     if (isset($_SERVER['HTTP_FDKEY'])) {
       if (!session::is_set('HTTP_FDKEY_CACHE')) {
-        session::set('HTTP_FDKEY_CACHE', []);
+        session::set('HTTP_FDKEY_CACHE', array());
       }
       $cache = session::get('HTTP_FDKEY_CACHE');
       if (!isset($cache[$creds])) {
@@ -328,7 +328,7 @@ class config
 
       /* Move referrals */
       if (!isset($this->current['REFERRAL'])) {
-        $this->ldap->referrals = [];
+        $this->ldap->referrals = array();
       } else {
         $this->ldap->referrals = $this->current['REFERRAL'];
       }
@@ -362,7 +362,7 @@ class config
 
     /* Sort referrals, if present */
     if (isset($this->current['REFERRAL'])) {
-      $servers  = [];
+      $servers  = array();
       foreach ($this->current['REFERRAL'] as $server => $ref) {
         $servers[$server] = strlen($ref['BASE']);
       }
@@ -424,12 +424,12 @@ class config
     $ldap = $this->get_ldap_link();
 
     /* Get samba servers from LDAP */
-    $this->data['SERVERS']['SAMBA'] = [];
+    $this->data['SERVERS']['SAMBA'] = array();
     if (class_available('sambaAccount')) {
       $ldap->cd($this->current['BASE']);
       $ldap->search('(objectClass=sambaDomain)');
       while ($attrs = $ldap->fetch()) {
-        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = [ 'SID' => '','RIDBASE' => ''];
+        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = array( 'SID' => '','RIDBASE' => '');
         if (isset($attrs['sambaSID'][0])) {
           $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]]['SID'] = $attrs['sambaSID'][0];
         }
@@ -441,10 +441,10 @@ class config
       /* If no samba servers are found, look for configured sid/ridbase */
       if (count($this->data['SERVERS']['SAMBA']) == 0) {
         if (isset($this->current['SAMBASID']) && isset($this->current['SAMBARIDBASE'])) {
-          $this->data['SERVERS']['SAMBA']['DEFAULT'] = [
+          $this->data['SERVERS']['SAMBA']['DEFAULT'] = array(
             'SID'     => $this->get_cfg_value('SAMBASID'),
             'RIDBASE' => $this->get_cfg_value('SAMBARIDBASE')
-          ];
+          );
         }
       }
     }
@@ -459,7 +459,7 @@ class config
 
     if (!$forceReload) {
       $ldap = $this->get_ldap_link();
-      $ldap->cat($dn, ['fusionConfigMd5']);
+      $ldap->cat($dn, array('fusionConfigMd5'));
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs['fusionConfigMd5'][0]) && ($attrs['fusionConfigMd5'][0] == md5_file(CACHE_DIR.'/'.CLASS_CACHE))) {
           return;
@@ -488,10 +488,10 @@ class config
             $mode   = strtoupper($parts[1]);
             $cmd    = $parts[2];
             if (!isset($this->data['HOOKS'][$class])) {
-              $this->data['HOOKS'][$class] = ['CLASS' => $parts[0]];
+              $this->data['HOOKS'][$class] = array('CLASS' => $parts[0]);
             }
             if (!isset($this->data['HOOKS'][$class][$mode])) {
-              $this->data['HOOKS'][$class][$mode] = [];
+              $this->data['HOOKS'][$class][$mode] = array();
             }
             $this->data['HOOKS'][$class][$mode][] = $cmd;
           }
@@ -515,7 +515,7 @@ class config
   function get_departments()
   {
     /* Initialize result hash */
-    $result = [];
+    $result = array();
 
     $result['/'] = $this->current['BASE'];
 
@@ -528,7 +528,7 @@ class config
 
     /* Create a list of attributes to fetch */
     $filter       = '';
-    $ldap_values  = ['objectClass', 'description'];
+    $ldap_values  = array('objectClass', 'description');
     foreach ($types as $type) {
       $i = objects::infos($type);
       $filter         .= $i['filter'];
@@ -559,11 +559,11 @@ class config
 
       $dn   = $attrs['dn'];
       $data = objects::infos($oc);
-      $this->department_info[$dn] = [
+      $this->department_info[$dn] = array(
         'img'         => $data['icon'],
         'description' => (isset($attrs['description'][0]) ? $attrs['description'][0] : ''),
         'name'        => $attrs[$data['mainAttr']][0]
-      ];
+      );
 
       /* Only assign non-root departments */
       if ($dn != $result['/']) {
@@ -580,9 +580,9 @@ class config
     $base   = $this->current['BASE'];
     $qbase  = preg_quote($base, '/');
 
-    $arr  = [];
+    $arr  = array();
 
-    $this->idepartments = [];
+    $this->idepartments = array();
 
     /* Create multidimensional array, with all departments. */
     foreach ($this->departments as $key => $val) {
@@ -634,7 +634,7 @@ class config
    */
   function generateDepartmentArray($arr, $depth = -1, $max_size = 256)
   {
-    $ret = [];
+    $ret = array();
     $depth++;
 
     /* Walk through array */
@@ -691,7 +691,7 @@ class config
   {
     $class = strtoupper($class);
     $value = strtoupper($value);
-    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : []);
+    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : array());
   }
 
   /*!
@@ -725,7 +725,7 @@ class config
     }
 
     if (is_array($default) && !is_array($res)) {
-      $res = [$res];
+      $res = array($res);
     }
 
     return $res;
@@ -794,14 +794,14 @@ class config
 
   function loadPlist (pluglist $plist)
   {
-    $this->data['OBJECTS']    = [];
-    $this->data['SECTIONS']   = [];
-    $this->data['CATEGORIES'] = [];
-    $this->data['MENU']       = [];
-    $this->data['TABS']       = [];
+    $this->data['OBJECTS']    = array();
+    $this->data['SECTIONS']   = array();
+    $this->data['CATEGORIES'] = array();
+    $this->data['MENU']       = array();
+    $this->data['TABS']       = array();
     foreach ($plist->info as $class => &$plInfo) {
       if (isset($plInfo['plObjectType'])) {
-        $entry = ['CLASS' => $class,'NAME' => $plInfo['plShortName']];
+        $entry = array('CLASS' => $class,'NAME' => $plInfo['plShortName']);
         if (isset($plInfo['plSubTabs'])) {
           $entry['SUBTABS'] = strtoupper($plInfo['plSubTabs']);
         }
@@ -814,7 +814,7 @@ class config
             }
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class to tab list");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = [];
+              $this->data['TABS'][$tabclass] = array();
             }
             $this->data['TABS'][$tabclass][] = $entry;
           } else {
@@ -827,7 +827,7 @@ class config
             $value['mainTab']         = $class;
             $value['templateActive']  = FALSE;
             $value['snapshotActive']  = FALSE;
-            foreach (['ou', 'tabClass'] as $i) {
+            foreach (array('ou', 'tabClass') as $i) {
               if (!isset($value[$i])) {
                 $value[$i] = NULL;
               }
@@ -854,7 +854,7 @@ class config
             $this->data['OBJECTS'][strtoupper($key)] = $value;
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class as main tab of");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = [];
+              $this->data['TABS'][$tabclass] = array();
             }
             array_unshift($this->data['TABS'][$tabclass], $entry);
           }
@@ -862,22 +862,22 @@ class config
       } elseif (class_available($class) && is_subclass_of($class, 'simpleService')) {
         @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, "Adding service");
         if (!isset($this->data['TABS']['SERVERSERVICE'])) {
-          $this->data['TABS']['SERVERSERVICE'] = [];
+          $this->data['TABS']['SERVERSERVICE'] = array();
         }
-        $this->data['TABS']['SERVERSERVICE'][] = [
+        $this->data['TABS']['SERVERSERVICE'][] = array(
           'CLASS' => $class,
           'NAME' => $plInfo['plShortName']
-        ];
+        );
       }
       /* Feed categories */
       if (isset($plInfo['plCategory'])) {
         /* Walk through supplied list and feed only translated categories */
-        $cats = [];
+        $cats = array();
         foreach ($plInfo['plCategory'] as $idx => $data) {
           $cat    = (is_numeric($idx) ? $data : $idx);
           $cats[] = $cat;
           if (!isset($this->data['CATEGORIES'][$cat])) {
-            $this->data['CATEGORIES'][$cat] = [ 'classes' => ['0'] ];
+            $this->data['CATEGORIES'][$cat] = array( 'classes' => array('0') );
           }
           if (!empty($plInfo['plProvidedAcls'])) {
             $this->data['CATEGORIES'][$cat]['classes'][] = $class;
@@ -886,7 +886,7 @@ class config
             /* Non numeric index means -> base object containing more informations */
             $this->data['CATEGORIES'][$cat]['description'] = $data['description'];
             if (!is_array($data['objectClass'])) {
-              $data['objectClass'] = [$data['objectClass']];
+              $data['objectClass'] = array($data['objectClass']);
             }
             $this->data['CATEGORIES'][$cat]['objectClass'] = $data['objectClass'];
           }
@@ -895,18 +895,18 @@ class config
       }
     }
     unset($plInfo);
-    $this->data['CATEGORIES']['all'] = [
-      'classes'     => ['all'],
+    $this->data['CATEGORIES']['all'] = array(
+      'classes'     => array('all'),
       'description' => '*&nbsp;'._('All categories'),
-      'objectClass' => [],
-    ];
+      'objectClass' => array(),
+    );
     /* Extract categories definitions from object types */
     foreach ($this->data['OBJECTS'] as $key => $infos) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['aclCategory'], "ObjectType $key category");
       if (strtoupper($infos['aclCategory']) == $key) {
         $cat = $infos['aclCategory'];
         if (!isset($this->data['CATEGORIES'][$cat])) {
-          $this->data['CATEGORIES'][$cat] = ['classes' => ['0']];
+          $this->data['CATEGORIES'][$cat] = array('classes' => array('0'));
         }
         if (!isset($this->data['CATEGORIES'][$cat]['description'])) {
           $this->data['CATEGORIES'][$cat]['description'] = $infos['name'];
@@ -917,11 +917,11 @@ class config
     }
     /* Now that OBJECTS are filled, place tabs in categories */
     foreach ($plist->info as $class => &$plInfo) {
-      $acl = [];
+      $acl = array();
       if (isset($plInfo['plCategory'])) {
         $acl = $plInfo['plCategory'];
         if (!is_array($acl)) {
-          $acl = [$acl];
+          $acl = array($acl);
         }
       }
       if (isset($plInfo['plObjectType'])) {
@@ -985,7 +985,7 @@ class config
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
         if (!is_array($acl)) {
-          $acl = [$acl];
+          $acl = array($acl);
         }
         if (!is_numeric(key($acl))) {
           $acl = array_keys($acl);
@@ -1004,9 +1004,9 @@ class config
           $this->data['SECTIONS'][$section] = array_change_key_case($plInfo['plSection'][$section], CASE_UPPER);
         }
         if (!isset($this->data['MENU'][$section])) {
-          $this->data['MENU'][$section] = [];
+          $this->data['MENU'][$section] = array();
         }
-        $attrs = ['CLASS' => $class];
+        $attrs = array('CLASS' => $class);
         if (!empty($acl)) {
           $attrs['ACL'] = $acl;
         }
@@ -1019,7 +1019,7 @@ class config
             $this->data['SECTIONS'][$section] = array_change_key_case($infos, CASE_UPPER);
           }
           if (!isset($this->data['MENU'][$section])) {
-            $this->data['MENU'][$section] = [];
+            $this->data['MENU'][$section] = array();
           }
         }
         foreach ($entries as $section => $section_entries) {
@@ -1035,15 +1035,15 @@ class config
       $infos['classes'] = array_unique($infos['classes']);
       if (!isset($infos['description'])) {
         $infos['description'] = $name;
-        $infos['objectClass'] = [];
+        $infos['objectClass'] = array();
       }
     }
     unset($infos);
-    $this->data['SECTIONS']['personal'] = ['NAME' => _('My account'), 'PRIORITY' => 40];
-    $personal = [];
+    $this->data['SECTIONS']['personal'] = array('NAME' => _('My account'), 'PRIORITY' => 40);
+    $personal = array();
     foreach ($this->data['TABS']['USERTABS'] as $tab) {
       if ($plist->info[$tab['CLASS']]['plSelfModify']) {
-        $personal[] = ['CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self'];
+        $personal[] = array('CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self');
       }
     }
     if (!isset($this->data['MENU']['personal'])) {
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 1aa8908f3..1964e81c9 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -47,7 +47,7 @@ class divSelectBox
   function __construct($id)
   {
     $this->s_summary  = '';
-    $this->a_entries  = [];
+    $this->a_entries  = array();
     $this->cols       = 0;
     $this->id         = $id;
   }
diff --git a/include/class_filter.inc b/include/class_filter.inc
index ab7cc9c44..964a390a9 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -30,19 +30,19 @@
 class filter
 {
   var $xmlData;
-  var $elements         = [];
-  var $elementValues    = [];
-  var $alphabetElements = [];
-  var $autocompleter    = [];
+  var $elements         = array();
+  var $elementValues    = array();
+  var $alphabetElements = array();
+  var $autocompleter    = array();
   var $category         = '';
-  var $objectStorage    = [];
+  var $objectStorage    = array();
   var $base             = '';
   var $scope            = '';
   var $query;
   var $initial          = FALSE;
   var $scopeMode        = 'auto';
   var $alphabet         = NULL;
-  var $converter        = [];
+  var $converter        = array();
   var $pid;
   var $headpage;
 
@@ -79,7 +79,7 @@ class filter
 
     // Load filter
     if (!isset($this->xmlData['search']['query'][0])) {
-      $this->xmlData['search']['query'] = [$this->xmlData['search']['query']];
+      $this->xmlData['search']['query'] = array($this->xmlData['search']['query']);
     }
 
     // Move information
@@ -101,7 +101,7 @@ class filter
     // Generate formular data
     if (isset($this->xmlData['element'])) {
       if (!isset($this->xmlData['element'][0])) {
-        $this->xmlData['element'] = [$this->xmlData['element']];
+        $this->xmlData['element'] = array($this->xmlData['element']);
       }
       foreach ($this->xmlData['element'] as $element) {
         // Ignore elements without type
@@ -113,7 +113,7 @@ class filter
 
         // Fix arrays
         if (isset($element['value']) && !isset($element['value'][0])) {
-          $element['value'] = [$element['value']];
+          $element['value'] = array($element['value']);
         }
 
         // Store element for quick access
@@ -266,9 +266,9 @@ class filter
   function setComboBoxOptions($tag, $options)
   {
     if (isset($this->elements[$tag]) && ($this->elements[$tag]['type'] == "combobox")) {
-      $this->elements[$tag]['value'] = [];
+      $this->elements[$tag]['value'] = array();
       foreach ($options as $key => $label) {
-        $this->elements[$tag]['value'][] = ['label' => $label, 'key' => $key];
+        $this->elements[$tag]['value'][] = array('label' => $label, 'key' => $key);
       }
     }
   }
@@ -440,7 +440,7 @@ class filter
   function query()
   {
     global $class_mapping;
-    $result = [];
+    $result = array();
 
     // Return empty list if initial is not set
     if (!$this->initial) {
@@ -465,10 +465,10 @@ class filter
       $attributes = $query['attribute'];
 
       if ($attributes === '*') {
-        $attributes = [$attributes];
+        $attributes = array($attributes);
       } else {
         if (!is_array($attributes)) {
-          $attributes = [$attributes];
+          $attributes = array($attributes);
         }
         // ObjectClass is required to check permissions later.
         if (!in_array('objectClass', $attributes)) {
@@ -485,8 +485,8 @@ class filter
         // Handle converters if present
         if (isset($this->converter[$tag])) {
           preg_match('/([^:]+)::(.*)$/', $this->converter[$tag], $m);
-          $e_set    = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
-          $e_unset  = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
+          $e_set    = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
+          $e_unset  = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
         } else {
           $e_set    = (is_array($element['set']) ? '' : $element['set']);
           $e_unset  = (is_array($element['unset']) ? '' : $element['unset']);
@@ -519,7 +519,7 @@ class filter
         );
       }
       // Now call filter method and merge resulting entries.
-      $result = array_merge($result, call_user_func([$backend, 'query'],
+      $result = array_merge($result, call_user_func(array($backend, 'query'),
             $this, $this->base, $this->scope, $filter, $attributes, $this->category, $objectStorage));
     }
 
@@ -596,7 +596,7 @@ class filter
   function getCompletitionList($cfg, $tag, $value = "*")
   {
     global $class_mapping;
-    $res = [];
+    $res = array();
 
     // Is backend available?
     $backend = "filter".$cfg['backend'];
@@ -608,7 +608,7 @@ class filter
     $filter     = $cfg['filter'];
     $attributes = $cfg['attribute'];
     if (!is_array($attributes)) {
-      $attributes = [$attributes];
+      $attributes = array($attributes);
     }
 
     // ObjectClass is required to check permissions later.
@@ -619,10 +619,10 @@ class filter
     // Make filter
     $filter = preg_replace("/\\$$tag/", ldap_escape_f($value), $filter);
     if (isset($cfg['base']) && isset($cfg['scope']) && isset($cfg['category'])) {
-      $result = call_user_func([$backend, 'query'], $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
+      $result = call_user_func(array($backend, 'query'), $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
                            $cfg["category"], $cfg["objectStorage"]);
     } else {
-      $result = call_user_func([$backend, 'query'], $this, $this->base, $this->scope, $filter, $attributes,
+      $result = call_user_func(array($backend, 'query'), $this, $this->base, $this->scope, $filter, $attributes,
                            $this->category, $this->objectStorage);
     }
 
@@ -648,7 +648,7 @@ class filter
    */
   function processAutocomplete()
   {
-    $result = [];
+    $result = array();
 
     // Introduce maximum number of entries
     $max = 25;
diff --git a/include/class_filterLDAP.inc b/include/class_filterLDAP.inc
index 6e6cd13a4..5e677b4bb 100644
--- a/include/class_filterLDAP.inc
+++ b/include/class_filterLDAP.inc
@@ -48,7 +48,7 @@ class filterLDAP
    *
    * \param array $objectStorage
    */
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = [""])
+  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = array(""))
   {
     return static::get_list($parent, $base, $filter, $attributes, $category, $objectStorage, (($scope == 'sub') ? 'subtree' : 'one'), TRUE);
   }
@@ -80,11 +80,11 @@ class filterLDAP
 
     // Move to arrays for category and objectStorage
     if (!is_array($category)) {
-      $category = [$category];
+      $category = array($category);
     }
 
     // Initialize search bases
-    $bases = [];
+    $bases = array();
 
     foreach ($objectStorage as $oc) {
       $oc = preg_replace('/,$/', '', $oc);
@@ -103,7 +103,7 @@ class filterLDAP
         }
         $parts    = ldap_explode_dn($oc, 0);
         unset($parts['count']);
-        $dnFilter = [];
+        $dnFilter = array();
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -120,7 +120,7 @@ class filterLDAP
     $ldap = $config->get_ldap_link($sizelimit);
 
     // Do search for every base
-    $result = [];
+    $result = array();
     $limit_exceeded = FALSE;
     $ui->getSizeLimitHandler()->setLimitExceeded(FALSE);
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 58e784ffb..0b18f481d 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -40,13 +40,13 @@ class LDAP
   /* connection identifier */
   var $cid;
 
-  var $hasres         = [];
-  var $sr             = [];
-  var $re             = [];
+  var $hasres         = array();
+  var $sr             = array();
+  var $re             = array();
   var $basedn         = "";
 
   /* 0 if we are fetching the first entry, otherwise 1 */
-  var $start          = [];
+  var $start          = array();
 
   /* Any error messages to be returned can be put here */
   var $error          = "";
@@ -54,14 +54,14 @@ class LDAP
   var $srp            = 0;
 
   /* Information read from slapd.oc.conf */
-  var $objectClasses    = [];
+  var $objectClasses    = array();
   /* the dn for the bind */
   var $binddn           = "";
   /* the dn's password for the bind */
   var $bindpw           = "";
   var $hostname         = "";
   var $follow_referral  = FALSE;
-  var $referrals        = [];
+  var $referrals        = array();
 
   /* 0, empty or negative values will disable this check */
   var $max_ldap_query_time  = 0;
@@ -134,7 +134,7 @@ class LDAP
       @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3);
       if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) {
         @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
-        @ldap_set_rebind_proc($this->cid, [&$this, "rebind"]);
+        @ldap_set_rebind_proc($this->cid, array(&$this, "rebind"));
       }
       if (function_exists("ldap_start_tls") && $this->tls) {
         @ldap_start_tls($this->cid);
@@ -245,7 +245,7 @@ class LDAP
    *
    * \param string $scope Scope of the search: subtree/base/one
    */
-  function search($srp, $filter, $attrs = [], $scope = 'subtree')
+  function search($srp, $filter, $attrs = array(), $scope = 'subtree')
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -297,7 +297,7 @@ class LDAP
    *
    * \param array $attrs
    */
-  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = ["*"])
+  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = array("*"))
   {
     trigger_error('deprecated');
     $this->cd($basedn);
@@ -315,7 +315,7 @@ class LDAP
    *
    * \param string $filter Initialized at "(objectclass=*)"
    */
-  function cat($srp, $dn, $attrs = ["*"], $filter = "(objectclass=*)")
+  function cat($srp, $dn, $attrs = array("*"), $filter = "(objectclass=*)")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -347,7 +347,7 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $res  = @ldap_read($this->cid, $dn, $filter, ["objectClass"]);
+      $res  = @ldap_read($this->cid, $dn, $filter, array("objectClass"));
       $rv   = @ldap_count_entries($this->cid, $res);
       return $rv;
     } else {
@@ -381,7 +381,7 @@ class LDAP
    */
   function fetch($srp)
   {
-    $att = [];
+    $att = array();
     if ($this->hascon) {
       if ($this->hasres[$srp]) {
         if ($this->start[$srp] == 0) {
@@ -389,7 +389,7 @@ class LDAP
             $this->start[$srp]  = 1;
             $this->re[$srp]     = @ldap_first_entry($this->cid, $this->sr[$srp]);
           } else {
-            return [];
+            return array();
           }
         } else {
           $this->re[$srp] = @ldap_next_entry($this->cid, $this->re[$srp]);
@@ -400,7 +400,7 @@ class LDAP
         }
         $this->error = @ldap_error($this->cid);
         if (!isset($att)) {
-          $att = [];
+          $att = array();
         }
         return $att;
       } else {
@@ -621,11 +621,11 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $delarray = [];
+      $delarray = array();
 
       /* Get sorted list of dn's to delete */
       $this->cd($deletedn);
-      $this->search($srp, '(objectClass=*)', ['dn']);
+      $this->search($srp, '(objectClass=*)', array('dn'));
       while ($attrs = $this->fetch($srp)) {
         $delarray[$attrs['dn']] = strlen($attrs['dn']);
       }
@@ -658,7 +658,7 @@ class LDAP
       if (isset($attrs['objectClass'])) {
         $ocs = $attrs['objectClass'];
         if (!is_array($ocs)) {
-          $ocs = [$ocs];
+          $ocs = array($ocs);
         }
         if (isset($ocs[$m[1]])) {
           $str .= " - <b>objectClass: ".$ocs[$m[1]]."</b>";
@@ -733,7 +733,7 @@ class LDAP
     $real_path = substr($target, 0, strlen($target) - strlen($this->basedn) - 1);
 
     if ($target == $this->basedn) {
-      $l = ['dummy'];
+      $l = array('dummy');
     } else {
       $l = array_reverse(ldap_explode_dn($real_path, 0));
     }
@@ -767,29 +767,29 @@ class LDAP
 
       $type   = preg_replace('/^([^=]+)=.*$/', '\\1', $cdn);
       $param  = preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn);
-      $param  = preg_replace(['/\\\\,/','/\\\\"/'], [',','"'], $param);
+      $param  = preg_replace(array('/\\\\,/','/\\\\"/'), array(',','"'), $param);
 
-      $attrs = [$type => $param];
+      $attrs = array($type => $param);
 
       /* Hardcoded classes */
       switch ($type) {
         case 'ou':
-          $attrs['objectClass']  = ['organizationalUnit'];
+          $attrs['objectClass']  = array('organizationalUnit');
           break;
         case 'd':
-          $attrs['objectClass']  = ['domain'];
+          $attrs['objectClass']  = array('domain');
           break;
         case 'dc':
-          $attrs['objectClass']  = ['dcObject'];
+          $attrs['objectClass']  = array('dcObject');
           break;
         case 'o':
-          $attrs['objectClass']  = ['organization'];
+          $attrs['objectClass']  = array('organization');
           break;
         case 'l':
-          $attrs['objectClass']  = ['locality'];
+          $attrs['objectClass']  = array('locality');
           break;
         case 'c':
-          $attrs['objectClass']  = ['country'];
+          $attrs['objectClass']  = array('country');
           break;
         default:
           /* Fallback to autodetection of objectClass */
@@ -798,22 +798,22 @@ class LDAP
             exit();
           }
           /* Get name of first matching objectClass */
-          $attrs['objectClass']  = [];
+          $attrs['objectClass']  = array();
           foreach ($classes as $class) {
             if (isset($class['MUST']) && in_array($type, $class['MUST'])) {
               /* Look for first class that is structural... */
               if (isset($class['STRUCTURAL'])) {
-                $attrs['objectClass'] = [$class['NAME']];
+                $attrs['objectClass'] = array($class['NAME']);
                 break;
               }
 
               /* Look for class that is auxiliary... */
               if (empty($attrs['objectClass']) && isset($class['AUXILIARY'])) {
-                $attrs['objectClass'] = [$class['NAME']];
+                $attrs['objectClass'] = array($class['NAME']);
               }
             } elseif (empty($attrs['objectClass']) && isset($class['MAY']) && in_array($type, $class['MAY'])) {
               /* Better than nothing */
-              $attrs['objectClass'] = [$class['NAME']];
+              $attrs['objectClass'] = array($class['NAME']);
             }
           }
 
@@ -929,7 +929,7 @@ class LDAP
 
   function get_credentials($url, $referrals = NULL)
   {
-    $ret    = [];
+    $ret    = array();
     $url    = preg_replace('!\?\?.*$!', '', $url);
     $server = preg_replace('!^([^:]+://[^/]+)/.*$!', '\\1', $url);
 
@@ -970,7 +970,7 @@ class LDAP
 
     // Check scope values
     $scope = trim($scope);
-    if (!empty($scope) && !in_array($scope, ['base', 'one', 'sub', 'children'])) {
+    if (!empty($scope) && !in_array($scope, array('base', 'one', 'sub', 'children'))) {
         trigger_error(sprintf("Invalid parameter for scope '%s', please use 'base', 'one', 'sub' or 'children'."), $scope);
         return NULL;
     }
@@ -986,11 +986,11 @@ class LDAP
     $cmd = 'ldapsearch'.($this->tls ? ' -ZZ' : '')." -x -LLLL -D {$admin} {$filter} {$limit} {$scope} -H {$host} -b {$dn} -w {$pwd} ";
 
     // Create list of process pipes
-    $descriptorspec = [
-      0 => ["pipe", "r"],  // stdin
-      1 => ["pipe", "w"],  // stdout
-      2 => ["pipe", "w"]   // stderr
-    ];
+    $descriptorspec = array(
+      0 => array("pipe", "r"),  // stdin
+      1 => array("pipe", "w"),  // stdout
+      2 => array("pipe", "w")   // stderr
+    );
 
     // Try to open the process
     $process = proc_open($cmd, $descriptorspec, $pipes);
@@ -1017,7 +1017,7 @@ class LDAP
 
   function dn_exists($dn)
   {
-    return @ldap_read($this->cid, $dn, "(objectClass=*)", ["objectClass"]);
+    return @ldap_read($this->cid, $dn, "(objectClass=*)", array("objectClass"));
   }
 
   /*!
@@ -1049,8 +1049,8 @@ class LDAP
 
     /* Joining lines */
     $line       = NULL;
-    $entry      = [];
-    $entries    = [];
+    $entry      = array();
+    $entries    = array();
     $entryStart = -1;
     foreach ($fileLines as $lineNumber => $fileLine) {
       if (preg_match('/^ /', $fileLine)) {
@@ -1088,7 +1088,7 @@ class LDAP
               throw new LDIFImportException(sprintf(_('Error line %s, an entry bloc should start with the dn'), $lineNumber));
             } else {
               if (!isset($entry[$key])) {
-                $entry[$key] = [];
+                $entry[$key] = array();
               }
               $entry[$key][] = $value;
             }
@@ -1102,7 +1102,7 @@ class LDAP
             $entries[$entryStart] = $entry;
           }
           /* Start a new entry */
-          $entry      = [];
+          $entry      = array();
           $entryStart = -1;
           $line       = NULL;
         }
@@ -1184,11 +1184,11 @@ class LDAP
           $attrs = $this->fetch($srp);
           foreach (array_keys($attrs) as $name) {
             if (!is_numeric($name)) {
-              if (in_array($name, ['dn','count'])) {
+              if (in_array($name, array('dn','count'))) {
                 continue;
               }
               if (!isset($data[$name])) {
-                $data[$name] = [];
+                $data[$name] = array();
               }
             }
           }
@@ -1217,7 +1217,7 @@ class LDAP
    */
   function get_objectclasses($force_reload = FALSE)
   {
-    $objectclasses = [];
+    $objectclasses = array();
 
     /* Return the cached results. */
     if (class_available('session') && session::is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
@@ -1226,19 +1226,19 @@ class LDAP
     }
 
     // Get base to look for schema
-    $sr   = @ldap_read($this->cid, '', 'objectClass=*', ['subschemaSubentry']);
+    $sr   = @ldap_read($this->cid, '', 'objectClass=*', array('subschemaSubentry'));
     $attr = @ldap_get_entries($this->cid, $sr);
     if (!isset($attr[0]['subschemasubentry'][0])) {
-      return [];
+      return array();
     }
 
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
-    $objectclasses = [];
-    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
+    $objectclasses = array();
+    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', array('objectclasses'));
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
-      return [];
+      return array();
     }
     foreach ($attrs[0]['objectclasses'] as $val) {
       if (preg_match('/^[0-9]+$/', $val)) {
@@ -1247,7 +1247,7 @@ class LDAP
       $name = "OID";
       $pattern = explode(' ', $val);
       $ocname = preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val);
-      $objectclasses[$ocname] = [];
+      $objectclasses[$ocname] = array();
 
       foreach ($pattern as $chunk) {
         switch ($chunk) {
@@ -1259,8 +1259,8 @@ class LDAP
           case ')':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, ['MUST', 'MAY']) && !is_array($v)) {
-                $v = [$v];
+              if (in_array($name, array('MUST', 'MAY')) && !is_array($v)) {
+                $v = array($v);
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1278,8 +1278,8 @@ class LDAP
           case 'MAY':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, ['MUST','MAY']) && !is_array($v)) {
-                $v = [$v];
+              if (in_array($name, array('MUST','MAY')) && !is_array($v)) {
+                $v = array($v);
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1367,7 +1367,7 @@ class LDAP
     ldap_bind ($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
+    $sr   = @ldap_read ($ds, '', 'objectClass=*', array('namingContexts'));
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index 2d3bc3c1b..b9921b855 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -36,7 +36,7 @@
   */
 class ldapFilter
 {
-  static $operators = ['!', '&', '|'];
+  static $operators = array('!', '&', '|');
 
   protected $operator;
   protected $subparts;
@@ -82,7 +82,7 @@ class ldapFilter
     return $this->subparts;
   }
 
-  function listUsedAttributes(&$result = [])
+  function listUsedAttributes(&$result = array())
   {
     foreach ($this->subparts as $subpart) {
       $subpart->listUsedAttributes($result);
@@ -93,10 +93,10 @@ class ldapFilter
   static function parse($filter)
   {
     // Remove starting and ending parenthesis
-    $filter = preg_replace(['/^\\s*\\(/', '/\\)\\s*$/'], '', $filter);
+    $filter = preg_replace(array('/^\\s*\\(/', '/\\)\\s*$/'), '', $filter);
 
     if (in_array($filter[0], ldapFilter::$operators)) {
-      $subfilters = [];
+      $subfilters = array();
       /* We need an ending parenthesis in order to catch last subpart correctly */
       $filter .= ')';
       $offset = 0;
@@ -116,7 +116,7 @@ class ldapFilter
           }
         }
       }
-      if (in_array($filter[0], ['&', '|']) && (count($subfilters) == 1)) {
+      if (in_array($filter[0], array('&', '|')) && (count($subfilters) == 1)) {
         /* Avoid empty levels */
         return $subfilters[0];
       } else {
@@ -135,7 +135,7 @@ class ldapFilter
  */
 class ldapFilterLeaf extends ldapFilter
 {
-  static $operators = ['=','~=','>=','<='];
+  static $operators = array('=','~=','>=','<=');
 
   protected $pattern;
   protected $dnFilter = FALSE;
@@ -146,7 +146,7 @@ class ldapFilterLeaf extends ldapFilter
       $this->dnFilter = TRUE;
       $left = substr($left, 0, -4);
     }
-    parent::__construct($operator, [$left, $right]);
+    parent::__construct($operator, array($left, $right));
     if (($this->operator == '=') || ($this->operator == '~=')) {
       $prefix = '';
       $suffix = '';
@@ -156,7 +156,7 @@ class ldapFilterLeaf extends ldapFilter
       if (preg_match('/\\*$/', $this->subparts[1])) {
         $suffix = '.*';
       }
-      $search = preg_replace(['/^\\*/','/\\*$/'], '', $this->subparts[1]);
+      $search = preg_replace(array('/^\\*/','/\\*$/'), '', $this->subparts[1]);
       if ($this->dnFilter) {
         $this->pattern = '/'.$left.'='.$prefix.preg_quote($search, '/').$suffix.',/';
       } elseif ($this->subparts[1] == '*') {
@@ -192,7 +192,7 @@ class ldapFilterLeaf extends ldapFilter
     if (isset($array[$this->subparts[0]])) {
       $values = $array[$this->subparts[0]];
       if (!is_array($values)) {
-        $values = [$values];
+        $values = array($values);
       }
       foreach ($values as $value) {
         switch ($this->operator) {
@@ -221,7 +221,7 @@ class ldapFilterLeaf extends ldapFilter
     return FALSE;
   }
 
-  function listUsedAttributes(&$result = [])
+  function listUsedAttributes(&$result = array())
   {
     if ($this->dnFilter) {
       $result['dn'] = 'dn';
diff --git a/include/class_ldapMultiplexer.inc b/include/class_ldapMultiplexer.inc
index 03f1f0cda..5563720a8 100644
--- a/include/class_ldapMultiplexer.inc
+++ b/include/class_ldapMultiplexer.inc
@@ -60,11 +60,11 @@ class ldapMultiplexer {
   public function __call($methodName, $parameters)
   {
     /* Add resource pointer if the mentioned methods are used */
-    if (in_array($methodName, ['search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'])) {
+    if (in_array($methodName, array('search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'))) {
       array_unshift($parameters, $this->sr);
     }
 
-    return call_user_func_array([$this->object, $methodName], $parameters);
+    return call_user_func_array(array($this->object, $methodName), $parameters);
   }
 
   /*
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 4d1d6e890..2bd3d5178 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -32,7 +32,7 @@ class listing
 {
   var $xmlData;
   var $entries;
-  var $departments            = [];
+  var $departments            = array();
   var $departmentBrowser      = FALSE;
   var $departmentRootVisible  = FALSE;
   var $multiSelect            = FALSE;
@@ -45,24 +45,24 @@ class listing
   var $sortType;
   var $numColumns;
   var $baseMode = FALSE;
-  var $bases    = [];
-  var $header   = [];
-  var $colprops = [];
-  var $filters  = [];
+  var $bases    = array();
+  var $header   = array();
+  var $colprops = array();
+  var $filters  = array();
   var $filter   = NULL;
   var $pid;
-  protected $departmentTypes  = [];
-  var $objectTypes      = [];
-  var $objectTypeCount  = [];
-  protected $objectDnMapping  = [];
+  protected $departmentTypes  = array();
+  var $objectTypes      = array();
+  var $objectTypeCount  = array();
+  protected $objectDnMapping  = array();
   protected $copyPasteHandler = NULL;
   protected $snapshotHandler  = NULL;
-  var $exporter       = [];
-  var $exportColumns  = [];
+  var $exporter       = array();
+  var $exportColumns  = array();
   var $height         = 0;
   var $scrollPosition = 0;
   var $baseSelector;
-  protected $filterCache = [];
+  protected $filterCache = array();
 
   /*!
    * \brief Create a listing
@@ -110,7 +110,7 @@ class listing
     // Load exporters
     foreach (array_keys($class_mapping) as $class) {
       if (preg_match('/Exporter$/', $class)) {
-        $info = call_user_func([$class, "getInfo"]);
+        $info = call_user_func(array($class, "getInfo"));
         if ($info != NULL) {
           $this->exporter = array_merge($this->exporter, $info);
         }
@@ -207,7 +207,7 @@ class listing
       $this->xmlData = xml::xml2array($contents, 1);
     }
 
-    $this->filterCache = [];
+    $this->filterCache = array();
 
     if (!isset($this->xmlData['list'])) {
       return FALSE;
@@ -216,7 +216,7 @@ class listing
     $this->xmlData = $this->xmlData["list"];
 
     // Load some definition values
-    foreach (["departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode"] as $token) {
+    foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode") as $token) {
       if (isset($this->xmlData['definition'][$token]) &&
           $this->xmlData['definition'][$token] == "true") {
         $this->$token = TRUE;
@@ -227,19 +227,19 @@ class listing
     $types = departmentManagement::getDepartmentTypes();
     foreach ($types as $type) {
       $i = objects::infos($type);
-      $this->departmentTypes[strtoupper($type)] = [
+      $this->departmentTypes[strtoupper($type)] = array(
         'label'       => $i['name'],
         'image'       => $i['icon'],
         'category'    => $i['aclCategory'],
         'class'       => $i['mainTab'],
         'filter'      => objects::getFilterObject($type),
         'nameAttr'    => $i['nameAttr'],
-      ];
+      );
     }
-    $this->categories = [];
+    $this->categories = array();
     if (isset($this->xmlData['definition']['objectType'])) {
       if (isset($this->xmlData['definition']['objectType']['label'])) {
-        $this->xmlData['definition']['objectType'] = [$this->xmlData['definition']['objectType']];
+        $this->xmlData['definition']['objectType'] = array($this->xmlData['definition']['objectType']);
       }
       foreach ($this->xmlData['definition']['objectType'] as $index => $otype) {
         $this->objectTypes[$otype['objectClass']] = $otype;
@@ -259,7 +259,7 @@ class listing
     // Assign headline/Categories
     $this->headline = _($this->xmlData['definition']['label']);
     if (!is_array($this->categories)) {
-      $this->categories = [$this->categories];
+      $this->categories = array($this->categories);
     }
 
     // Evaluate columns to be exported
@@ -272,7 +272,7 @@ class listing
     }
 
     if (isset($this->xmlData['actiontriggers']['action']['type'])) {
-      $this->xmlData['actiontriggers']['action'] = [$this->xmlData['actiontriggers']['action']];
+      $this->xmlData['actiontriggers']['action'] = array($this->xmlData['actiontriggers']['action']);
     }
 
     return TRUE;
@@ -281,8 +281,8 @@ class listing
 
   function renderHeader()
   {
-    $this->header = [];
-    $this->plainHeader = [];
+    $this->header = array();
+    $this->plainHeader = array();
 
     // Initialize sort?
     $sortInit = FALSE;
@@ -293,7 +293,7 @@ class listing
       } else {
         $this->sortAttribute = "";
       }
-      $this->sortDirection = [];
+      $this->sortDirection = array();
       $sortInit = TRUE;
     }
 
@@ -540,8 +540,8 @@ class listing
     }
 
     // Reset object counter / DN mapping
-    $this->objectTypeCount = [];
-    $this->objectDnMapping = [];
+    $this->objectTypeCount = array();
+    $this->objectDnMapping = array();
 
     // Do not do anything if this is not our PID
     if ($refresh || !(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) {
@@ -566,12 +566,12 @@ class listing
           $exporter = $this->exporter[$_POST['act']];
           $userinfo = ", "._("created by")." ".$ui->cn." - ".strftime('%A, %d. %B %Y, %H:%M:%S');
           $entryIterator = new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType);
-          $sortedEntries = [];
+          $sortedEntries = array();
           foreach ($entryIterator as $entry) {
             $sortedEntries[] = $entry;
           }
           $instance = new $exporter['class']($this->headline.$userinfo, $this->plainHeader, $sortedEntries, $this->exportColumns);
-          $type = call_user_func([$exporter['class'], "getInfo"]);
+          $type = call_user_func(array($exporter['class'], "getInfo"));
           $type = $type[$_POST['act']];
           send_binary_content($instance->query(), $type['filename'], $type = $type['mime']);
         }
@@ -628,10 +628,10 @@ class listing
 
     // Fix filter if querie returns NULL
     if ($this->entries == NULL) {
-      $this->entries = [];
+      $this->entries = array();
     }
 
-    $this->dnToRow = [];
+    $this->dnToRow = array();
     foreach ($this->entries as $row => $entry) {
       $this->dnToRow[$entry['dn']] = $row;
     }
@@ -682,7 +682,7 @@ class listing
    */
   function parseLayout($layout)
   {
-    $result = [];
+    $result = array();
     $layout = preg_replace("/^\|/", "", $layout);
     $layout = preg_replace("/\|$/", "", $layout);
     $cols   = explode("|", $layout);
@@ -778,7 +778,7 @@ class listing
     } else {
       preg_match_all('/%{filter:([^(]+)\((.*)\)}/', $data, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
 
-      $filters = [];
+      $filters = array();
       foreach ($matches as $match) {
         $cl     = '';
         $method = '';
@@ -794,7 +794,7 @@ class listing
         // Prepare params for function call
         preg_match_all('/"[^"]+"|[^,]+/', $match[2][0], $parts);
 
-        $filters[$match[0][0]] = [$cl, $method, $parts[0], $match[0][1]];
+        $filters[$match[0][0]] = array($cl, $method, $parts[0], $match[0][1]);
       }
 
       $this->filterCache[$type.$index] = $filters;
@@ -802,7 +802,7 @@ class listing
 
     foreach ($filters as $filterstring => $filter) {
       list ($cl, $method, $parts, $offset) = $filter;
-      $params = [];
+      $params = array();
       foreach ($parts as $param) {
         switch ($param) {
           case 'row':
@@ -844,10 +844,10 @@ class listing
       // Replace information
       if ($cl == 'listing') {
         // Non static call
-        $data = substr_replace($data, call_user_func_array([$this, $method], $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array(array($this, $method), $params), $offset, strlen($filterstring));
       } else {
         // Static call
-        $data = substr_replace($data, call_user_func_array([$cl, $method], $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array(array($cl, $method), $params), $offset, strlen($filterstring));
       }
     }
 
@@ -897,7 +897,7 @@ class listing
       }
       $ocs = $objectType['objectClass'];
       if (!is_array($ocs)) {
-        $ocs = [$ocs];
+        $ocs = array($ocs);
       }
 
       $found = TRUE;
@@ -1114,7 +1114,7 @@ class listing
     $row    = func_get_arg(0);
     $pid    = $this->pid;
     $dn     = func_get_arg(1);
-    $params = [func_get_arg(2)];
+    $params = array(func_get_arg(2));
 
     // Collect sprintf params
     for ($i = 3;$i < func_num_args();$i++) {
@@ -1123,7 +1123,7 @@ class listing
         continue;
       }
       if (!is_array($val)) {
-        $val = [$val];
+        $val = array($val);
       }
       $val = array_map(
         function ($v)
@@ -1149,7 +1149,7 @@ class listing
 
   function renderNavigation()
   {
-    $result = [];
+    $result = array();
     $enableBack = TRUE;
     $enableRoot = TRUE;
     $enableHome = TRUE;
@@ -1217,7 +1217,7 @@ class listing
       $this->scrollPosition = $_POST['position_'.$this->pid];
     }
 
-    $result = ["targets" => [], "action" => ""];
+    $result = array("targets" => array(), "action" => "");
 
     // Filter GET with "act" attributes
     if (isset($_GET['act'])) {
@@ -1293,7 +1293,7 @@ class listing
         $target = preg_replace('/^listing_[a-zA-Z_]+_([0-9]+)(|_x)$/', '$1', $key);
         if (isset($this->entries[$target]['dn'])) {
           $result['action']   = preg_replace('/^listing_([a-zA-Z_]+)_[0-9]+(|_x)$/', '$1', $key);
-          $result['targets']  = [$this->entries[$target]['dn']];
+          $result['targets']  = array($this->entries[$target]['dn']);
         }
         break;
       }
@@ -1333,7 +1333,7 @@ class listing
 
     // Make sure we got an array of actions
     if (isset($this->xmlData['actionmenu']['action']['type'])) {
-      $this->xmlData['actionmenu']['action'] = [$this->xmlData['actionmenu']['action']];
+      $this->xmlData['actionmenu']['action'] = array($this->xmlData['actionmenu']['action']);
     }
 
     // Load shortcut
@@ -1374,7 +1374,7 @@ class listing
 
       // Skip entry if there're missing dependencies
       if (isset($action['depends'])) {
-        $deps = is_array($action['depends']) ? $action['depends'] : [$action['depends']];
+        $deps = is_array($action['depends']) ? $action['depends'] : array($action['depends']);
         foreach ($deps as $clazz) {
           if (!isset($class_mapping[$clazz])) {
             continue 2;
@@ -1400,7 +1400,7 @@ class listing
 
         // Ensure we've an array of actions, this enables sub menus with only one action.
         if (isset($action['action']['type'])) {
-          $action['action'] = [$action['action']];
+          $action['action'] = array($action['action']);
         }
 
         $result .= $this->recurseActions($action['action'])."</li>";
@@ -1469,14 +1469,14 @@ class listing
         }
         $acls = $action['acl'];
         if (!is_array($acls)) {
-          $acls = [$acls];
+          $acls = array($acls);
         }
-        $aclInfos = [];
+        $aclInfos = array();
 
         // Every ACL has to pass
         foreach ($acls as $acl) {
           $module   = $this->categories;
-          $aclList  = [];
+          $aclList  = array();
 
           // Replace %acl if available
           if ($otype) {
@@ -1486,12 +1486,12 @@ class listing
           // Split for category and plugins if needed
           if (preg_match('/^\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "[rw]" style entries
-            $aclList = [$match[1]];
+            $aclList = array($match[1]);
           } elseif (preg_match('/^([a-zA-Z0-9]+\/?[a-zA-Z0-9]+)\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "user[rw]" style entries
             // match for "user/user[rw]" style entries
             $module   = $match[1];
-            $aclList  = [$match[2]];
+            $aclList  = array($match[2]);
           } elseif (preg_match('/^([a-zA-Z0-9]+\/[a-zA-Z0-9]+)\[([a-zA-Z0-9]+:[rwcdm]+(,[a-zA-Z0-9]+:[rwcdm]+)*)\]$/', $acl, $match)) {
             // match "user/user[userPassword:rw(,...)*]" style entries
             $module   = $match[1];
@@ -1500,10 +1500,10 @@ class listing
 
           $modules = $module;
           if (!is_array($modules)) {
-            $modules = [$modules];
+            $modules = array($modules);
           }
 
-          $aclInfos[] = [$aclList, $modules];
+          $aclInfos[] = array($aclList, $modules);
         }
         $action['aclInfos'] = $aclInfos;
       }
@@ -1552,7 +1552,7 @@ class listing
     $ui = get_userinfo();
 
     // Fill internal bases list
-    $this->bases = [];
+    $this->bases = array();
     $deps = $ui->get_module_departments($this->categories);
     foreach ($config->idepartments as $key => $dep) {
       if (in_array_ics($key, $deps)) {
@@ -1575,7 +1575,7 @@ class listing
   /*! \brief Get the departments */
   function getDepartments()
   {
-    $departments = [];
+    $departments = array();
     $ui = get_userinfo();
 
     // Get list of supported department types
@@ -1589,12 +1589,12 @@ class listing
       $i    = objects::infos($type);
       $deps = objects::ls(
         $type,
-        [
+        array(
           'dn'            => 'raw',
           'objectClass'   => 'raw',
           'description'   => 'raw',
           $i['mainAttr']  => 'raw'
-        ],
+        ),
         $this->base,
         '',
         FALSE,
diff --git a/include/class_logging.inc b/include/class_logging.inc
index dbb91c114..fb9ebb402 100644
--- a/include/class_logging.inc
+++ b/include/class_logging.inc
@@ -34,7 +34,7 @@
  * \date    11.04.2007
  */
 class logging {
-  static $validActions = ['modify','create','remove','copy','snapshot','view','security','debug'];
+  static $validActions = array('modify','create','remove','copy','snapshot','view','security','debug');
 
   /*!
    * \brief logging method
@@ -49,7 +49,7 @@ class logging {
    *
    * \param $result         A status message, containing errors or success messages
    */
-  static function log ($action, $objecttype, $object, array $changes_array = [], $result = '')
+  static function log ($action, $objecttype, $object, array $changes_array = array(), $result = '')
   {
     global $config, $ui;
 
@@ -59,14 +59,14 @@ class logging {
     }
 
     /* Create data object */
-    $entry = [
+    $entry = array(
       'timestamp'   => microtime(TRUE),
       'action'      => $action,
       'objecttype'  => $objecttype,
       'object'      => $object,
       'changes'     => $changes_array,
       'result'      => $result
-    ];
+    );
     if (isset($ui->dn) && !empty($ui->dn)) {
       $entry['user']  = $ui->dn;
     } else {
@@ -83,7 +83,7 @@ class logging {
     } else {
       if (is_object($config) && preg_match('/true/i', $config->get_cfg_value('logging', ''))) {
         static::log_into_syslog($entry);
-        if (in_array($action, $config->get_cfg_value('auditActions', []))) {
+        if (in_array($action, $config->get_cfg_value('auditActions', array()))) {
           static::log_into_ldap($entry);
         }
       }
@@ -95,9 +95,9 @@ class logging {
    *
    * \param Array $entry to be checked
    */
-  static protected function check($entry = [])
+  static protected function check($entry = array())
   {
-    $msgs = [];
+    $msgs = array();
 
     if (!isset($entry['action']) || !in_array($entry['action'], static::$validActions)) {
       $msgs[] = sprintf(_('Invalid option "%s" specified!'), $entry['action']);
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index a4284e99d..5cd99f74a 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -598,7 +598,7 @@ class msgPool {
    *
    * \param array $conflicts Tabs this tab conflicts with
    */
-  public static function featuresDisabled($name, array $depends = [], array $conflicts = [])
+  public static function featuresDisabled($name, array $depends = array(), array $conflicts = array())
   {
     if (empty($depends) && empty($conflicts)) {
       return sprintf(_('This account has %s settings disabled. You can enable them by clicking below.'), $name);
@@ -643,9 +643,9 @@ class msgPool {
    */
   public static function months()
   {
-    return [_("January"), _("February"), _("March"), _("April"),
+    return array(_("January"), _("February"), _("March"), _("April"),
         _("May"), _("June"), _("July"), _("August"), _("September"),
-        _("October"), _("November"), _("December")];
+        _("October"), _("November"), _("December"));
   }
 
   /*!
@@ -654,7 +654,7 @@ class msgPool {
    */
   public static function weekdays()
   {
-    return [ _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")];
+    return array( _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"));
   }
 
   /*!
@@ -671,8 +671,8 @@ class msgPool {
   public static function ldaperror($error, $dn = '', $type = 0, $plugin = '')
   {
     /* Assign headline depending on type */
-    $typemap = [1 => _('read operation'), _('add operation'), _('modify operation'),
-        _('delete operation'), _('search operation'), _('authentication')];
+    $typemap = array(1 => _('read operation'), _('add operation'), _('modify operation'),
+        _('delete operation'), _('search operation'), _('authentication'));
 
     if (isset($typemap[$type])) {
       $msg = sprintf(_('LDAP %s failed!'), $typemap[$type]);
@@ -724,7 +724,7 @@ class msgPool {
    *
    * \param array $objects
    */
-  public static function stillInUse($type, $objects = [])
+  public static function stillInUse($type, $objects = array())
   {
     if (!is_array($objects)) {
       return sprintf(_("This '%s' is still in use by this object: %s"), $type, "<br><br>".$objects);
diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index dcae37de2..800a3c28a 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -41,7 +41,7 @@ class msg_dialog
   private $s_Message  = 'Undefined';
   private $i_Type     = INFO_DIALOG;
   private $i_ID       = 0;
-  private $a_Trace    = [];
+  private $a_Trace    = array();
 
   /*!
    * \brief Message dialog constructor
@@ -54,7 +54,7 @@ class msg_dialog
    */
   public function __construct($s_title, $s_message, $i_type)
   {
-    if (!in_array($i_type, [INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG])) {
+    if (!in_array($i_type, array(INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG))) {
       trigger_error('Invalid msg_dialog type.');
       $i_type = INFO_DIALOG;
     }
@@ -74,7 +74,7 @@ class msg_dialog
     }
 
     if ((!session::is_set('errorsAlreadyPosted')) || !is_array(session::get('errorsAlreadyPosted'))) {
-      session::set('errorsAlreadyPosted', []);
+      session::set('errorsAlreadyPosted', array());
     }
 
     $errorsAlreadyPosted = session::get('errorsAlreadyPosted');
@@ -103,7 +103,7 @@ class msg_dialog
       if (session::is_set('msg_dialogs')) {
         $msg_dialogs = session::get('msg_dialogs');
       } else {
-        $msg_dialogs = [];
+        $msg_dialogs = array();
       }
       $msg_dialogs[] = $this;
       session::set('msg_dialogs', $msg_dialogs);
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 2c795c046..4f6716d26 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -51,7 +51,7 @@ class objects
     }
 
     if (!is_array($types)) {
-      $types = [$types];
+      $types = array($types);
     }
 
     if ($checkAcl) {
@@ -62,9 +62,9 @@ class objects
       $acl = $infos['aclCategory'].'/'.$infos['mainTab'];
     }
 
-    $attrsAcls = [];
+    $attrsAcls = array();
     if ($attrs === NULL) {
-      $attrs = [];
+      $attrs = array();
       foreach ($types as $type) {
         $infos = static::infos($type);
         if ($infos['mainAttr']) {
@@ -75,13 +75,13 @@ class objects
       if (count($attrs) == 1) {
         $attrs = $attrs[0];
       } elseif (count($attrs) == 0) {
-        $attrs = ['dn' => 'raw'];
+        $attrs = array('dn' => 'raw');
       }
     } elseif ($checkAcl) {
       if (is_array($attrs)) {
         $search_attrs = array_keys($attrs);
       } else {
-        $search_attrs = [$attrs];
+        $search_attrs = array($attrs);
       }
       foreach ($search_attrs as $search_attr) {
         $category = $ui->getAttributeCategory($types[0], $search_attr);
@@ -92,7 +92,7 @@ class objects
           continue;
         }
         if (strpos($ui->get_permissions($ou, $category, $search_attr), 'r') === FALSE) {
-          $attrsAcls[$search_attr] = [$category, $search_attr];
+          $attrsAcls[$search_attr] = array($category, $search_attr);
         }
       }
     }
@@ -100,15 +100,15 @@ class objects
     if (is_array($attrs)) {
       $search_attrs = array_keys($attrs);
     } else {
-      $search_attrs = [$attrs];
+      $search_attrs = array($attrs);
     }
 
     try {
       $ldap = static::search($types, $search_attrs, $ou, $filter, $checkAcl, $scope, FALSE, $partialFilterAcls);
     } catch (NonExistingBranchException $e) {
-      return [];
+      return array();
     }
-    $result = [];
+    $result = array();
     while ($fetched_attrs = $ldap->fetch()) {
       $key = $fetched_attrs['dn'];
       if ($checkAcl) {
@@ -122,7 +122,7 @@ class objects
         }
       }
       if (is_array($attrs)) {
-        $result[$key] = [];
+        $result[$key] = array();
         foreach ($attrs as $attr => $mode) {
           if (isset($fetched_attrs[$attr])) {
             if (isset($attrsAcls[$attr]) &&
@@ -168,7 +168,7 @@ class objects
   static function count ($types, $ou = NULL, $filter = '', $checkAcl = FALSE)
   {
     try {
-      $ldap = static::search($types, ['dn'], $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
+      $ldap = static::search($types, array('dn'), $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
       if (!empty($partialFilterAcls)) {
         throw new FusionDirectoryException('Not enough rights to use "'.$partialFilterAcls[0][1].'" in filter');
       }
@@ -180,21 +180,21 @@ class objects
     return $ldap->count();
   }
 
-  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = [])
+  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = array())
   {
     global $config, $ui;
 
-    $partialFilterAcls = [];
+    $partialFilterAcls = array();
 
     if (!is_array($types)) {
-      $types = [$types];
+      $types = array($types);
     }
 
     if ($ou === NULL) {
       $ou = $config->current['BASE'];
     }
 
-    $typeFilters = [];
+    $typeFilters = array();
     foreach ($types as $type) {
       $infos = static::infos($type);
 
@@ -236,7 +236,7 @@ class objects
             continue;
           }
           if (strpos($ui->get_permissions($ou, $category, $acl), 'r') === FALSE) {
-            $partialFilterAcls[] = [$category, $acl];
+            $partialFilterAcls[] = array($category, $acl);
           }
         }
       }
@@ -248,10 +248,10 @@ class objects
     if ($templateSearch) {
       $templateFilterObject = new ldapFilter(
         '&',
-        [
+        array(
           new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
           fdTemplateFilter(ldapFilter::parse($filter)),
-        ]
+        )
       );
       $filter = "$templateFilterObject";
     }
@@ -301,7 +301,7 @@ class objects
 
     if ($text === NULL) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($dn, [$infos['nameAttr']]);
+      $ldap->cat($dn, array($infos['nameAttr']));
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs[$infos['nameAttr']][0])) {
           $text = $attrs[$infos['nameAttr']][0];
@@ -343,7 +343,7 @@ class objects
       } else {
         $parts = ldap_explode_dn(preg_replace('/,$/', '', $infos['ou']), 0);
         unset($parts['count']);
-        $dnFilter = [];
+        $dnFilter = array();
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -396,11 +396,11 @@ class objects
 
     $infos = static::infos($type);
 
-    $templates = [];
+    $templates = array();
     foreach ($config->departments as $key => $value) {
       // Search all templates from the current dn.
       try {
-        $ldap = static::search($type, ['cn'], $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
+        $ldap = static::search($type, array('cn'), $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
       } catch (NonExistingBranchException $e) {
         continue;
       }
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index 499dde5aa..efadea480 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -40,23 +40,23 @@ class pluglist {
    * \brief The plInfo result for all plugin, using class as key.
    * Contains the plugin index in 'INDEX' and the path in 'PATH'
    */
-  var $info             = [];
+  var $info             = array();
 
   /*!
    * \brief Foreign references on DNs
    */
-  var $dnForeignRefs = [];
+  var $dnForeignRefs = array();
 
   /*!
    * \brief Using the plugin index as a key, the class of the plugin.
    */
-  var $dirlist          = [];
+  var $dirlist          = array();
 
   /*!
    * \brief List plugin indexes of all plugin that the user have acl for
    */
-  var $allowed_plugins  = [];
-  var $silly_cache      = [];
+  var $allowed_plugins  = array();
+  var $silly_cache      = array();
 
   /*!
    * \brief List the plugins
@@ -71,13 +71,13 @@ class pluglist {
     sort($classes);
 
     $index = 0;
-    $depends_infos    = [];
-    $conflicts_infos  = [];
-    $foreign_refs     = [];
+    $depends_infos    = array();
+    $conflicts_infos  = array();
+    $foreign_refs     = array();
     foreach ($classes as $cname) {
       $cmethods = get_class_methods($cname);
       if (in_array_ics('plInfo', $cmethods)) {
-        $infos = call_user_func([$cname, 'plInfo']);
+        $infos = call_user_func(array($cname, 'plInfo'));
         if (empty($infos)) {
           continue;
         }
@@ -85,7 +85,7 @@ class pluglist {
           $infos['plSelfModify']  = FALSE;
           /* services are not part of any objectType */
           unset($infos['plObjectType']);
-          $infos['plCategory']    = ['server'];
+          $infos['plCategory']    = array('server');
         } else {
           if (!isset($infos['plSelfModify'])) {
             $infos['plSelfModify'] = FALSE;
@@ -103,10 +103,10 @@ class pluglist {
         if (isset($infos['plForeignKeys'])) {
           foreach ($infos['plForeignKeys'] as $ofield => &$pfks) {
             if (!is_array($pfks)) {
-              $pfks = [$pfks];
+              $pfks = array($pfks);
             }
             if (!is_array($pfks[0])) {
-              $pfks = [$pfks];
+              $pfks = array($pfks);
             }
             foreach ($pfks as &$pfk) {
               $class = $pfk[0];
@@ -125,32 +125,32 @@ class pluglist {
               }
               $pfk[2] = $filter;
               if (!isset($foreign_refs[$class])) {
-                $foreign_refs[$class] = [];
+                $foreign_refs[$class] = array();
               }
               if (!isset($foreign_refs[$class][$field])) {
-                $foreign_refs[$class][$field] = [];
+                $foreign_refs[$class][$field] = array();
               }
-              $foreign_refs[$class][$field][] = [$cname, $ofield, $filter];
+              $foreign_refs[$class][$field][] = array($cname, $ofield, $filter);
               if ($field == 'dn') {
-                $this->dnForeignRefs[] = [$cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%")];
+                $this->dnForeignRefs[] = array($cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%"));
               }
             }
             unset($pfk);
           }
           unset($pfks);
         } else {
-          $infos['plForeignKeys'] = [];
+          $infos['plForeignKeys'] = array();
         }
         if (!isset($infos['plProvidedAcls'])) {
-          $infos['plProvidedAcls'] = [];
+          $infos['plProvidedAcls'] = array();
         }
         if (!isset($infos['plCategory'])) {
-          $infos['plCategory'] = [];
+          $infos['plCategory'] = array();
         }
         if (!isset($infos['plTitle']) && isset($infos['plShortName'])) {
           $infos['plTitle'] = $infos['plShortName'];
         }
-        $infos['plForeignRefs']         = [];
+        $infos['plForeignRefs']         = array();
         $infos['INDEX']                 = $index;
         $this->info[$cname]             = $infos;
         $this->dirlist[$index++]        = $cname;
@@ -163,7 +163,7 @@ class pluglist {
           if (isset($this->info[$depend]['plDepending'])) {
             $this->info[$depend]['plDepending'][] = $cname;
           } else {
-            $this->info[$depend]['plDepending'] = [$cname];
+            $this->info[$depend]['plDepending'] = array($cname);
           }
         } else {
           trigger_error("$cname depends of the inexisting plugin $depend");
@@ -178,7 +178,7 @@ class pluglist {
               $this->info[$conflict]['plConflicts'][] = $cname;
             }
           } else {
-            $this->info[$conflict]['plConflicts'] = [$cname];
+            $this->info[$conflict]['plConflicts'] = array($cname);
           }
         }
       }
@@ -190,9 +190,9 @@ class pluglist {
     }
 
     /* Provide field for 'all' */
-    $this->info['all'] = [];
+    $this->info['all'] = array();
 
-    $this->info['all']['plProvidedAcls']  = [];
+    $this->info['all']['plProvidedAcls']  = array();
     $this->info['all']['plDescription']   = _("All objects in this category");
     $this->info['all']['plSelfModify']    = FALSE;
 
@@ -248,11 +248,11 @@ class pluglist {
     /* Split given acl string into an array.
       e.g. "user,systems" => array("user","systems");
          */
-    $acls_to_check = [];
+    $acls_to_check = array();
     if (preg_match("/,/", $aclname)) {
       $acls_to_check = explode(",", $aclname);
     } else {
-      $acls_to_check = [$aclname];
+      $acls_to_check = array($aclname);
     }
 
     foreach ($acls_to_check as $acl_to_check) {
@@ -309,7 +309,7 @@ class pluglist {
         $plDescription = $this->info[$cname]['plDescription'];
       }
       if ($plHeadline && $plIcon && $plDescription) {
-        return [$plHeadline,$plDescription,$href,$plIcon];
+        return array($plHeadline,$plDescription,$href,$plIcon);
       }
     }
     $vars = get_class_vars($cname);
@@ -329,7 +329,7 @@ class pluglist {
     if (!$plIcon) {
       $plIcon = "icon.png";
     }
-    return [$plHeadline,$plDescription,$href,$plIcon];
+    return array($plHeadline,$plDescription,$href,$plIcon);
   }
 
   /*!
diff --git a/include/class_template.inc b/include/class_template.inc
index 62ca74cbe..3dab9c506 100644
--- a/include/class_template.inc
+++ b/include/class_template.inc
@@ -35,25 +35,25 @@ class template
 
   protected $applied = FALSE;
 
-  static protected $uiSpecialAttributes = ['dn','cn','uid','sn','givenName'];
+  static protected $uiSpecialAttributes = array('dn','cn','uid','sn','givenName');
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Template'),
       'plDescription' => _('Object template, used to create several objects with similar values'),
       /* Categories for templates are computed in config class */
-      'plCategory'    => [],
+      'plCategory'    => array(),
 
-      'plProvidedAcls' => [
+      'plProvidedAcls' => array(
         'template_cn' => _('Template name')
-      ]
-    ];
+      )
+    );
   }
 
   static function getTemplatedTypes()
   {
-    $result = [];
+    $result = array();
     $types  = objects::types();
     foreach ($types as $type) {
       if (in_array($type, departmentManagement::getDepartmentTypes())) {
@@ -82,11 +82,11 @@ class template
       $this->tabObject  = objects::open($this->dn, $this->type);
     }
     $tempTabObject    = objects::open($this->dn, $this->type); /* Used to know which tab is activated */
-    $this->attributes = [];
+    $this->attributes = array();
     $tempTabObject->setActiveTabs($this->tabObject);
     foreach ($this->tabObject->by_object as $class => $tab) {
       if ($tab->is_account || $tab->ignore_account) {
-        $this->attributes[$class] = [];
+        $this->attributes[$class] = array();
         $attrs = array_unique(array_merge($tab->getRequiredAttributes(), $this->needed));
         foreach (array_keys($tab->attributesAccess) as $attr) {
           if (!$tab->showInTemplate($attr, $this->attrs)) {
@@ -140,12 +140,12 @@ class template
 
   function serialize()
   {
-    $attributes = [];
+    $attributes = array();
     foreach ($this->tabObject->by_object as $class => $plugin) {
       if (!isset($this->attributes[$class])) {
         continue;
       }
-      $attributes[$class] = ['name' => $this->tabObject->by_name[$class], 'attrs' => []];
+      $attributes[$class] = array('name' => $this->tabObject->by_name[$class], 'attrs' => array());
       foreach ($this->attributes[$class] as $attr) {
         $plugin->attributesAccess[$attr]->serializeAttribute($attributes[$class]['attrs'], FALSE);
       }
@@ -181,8 +181,8 @@ class template
   function execute()
   {
     $smarty   = get_smarty();
-    $sections = [];
-    $posted   = [];
+    $sections = array();
+    $posted   = array();
     $smarty->assign('baseACL', 'rw');
     foreach ($this->tabObject->by_object as $class => &$plugin) {
       if (!isset($this->attributes[$class])) {
@@ -197,7 +197,7 @@ class template
           return $dialogResult;
         }
       }
-      $attributes = [];
+      $attributes = array();
       foreach ($this->attributes[$class] as $attr) {
         if ($plugin->attributesAccess[$attr]->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -262,7 +262,7 @@ class template
     unset($plugin);
     foreach ($this->attrs as &$array) {
       if (!is_array($array)) {
-        $array = [$array];
+        $array = array($array);
       }
       if (!isset($array['count'])) {
         $array['count'] = count($array);
@@ -271,7 +271,7 @@ class template
     unset($array);
 
     $ui           = get_userinfo();
-    $specialAttrs = [];
+    $specialAttrs = array();
     foreach (static::$uiSpecialAttributes as $attr) {
       $specialAttrs['caller'.strtoupper($attr)] = $ui->$attr;
     }
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index ae4059eea..2b56786c2 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -39,7 +39,7 @@ class templateHandling
     list($depends, $errors) = static::attributesDependencies($attrs);
     msg_dialog::displayChecks($errors);
     $attrs    = static::sortAttributes($attrs, $depends);
-    return [$attrs, $depends];
+    return array($attrs, $depends);
   }
 
   /*! \brief Translate template attrs into $attrs as if taken from LDAP */
@@ -47,14 +47,14 @@ class templateHandling
   {
     unset($template_attrs['fdTemplateField']['count']);
     sort($template_attrs['fdTemplateField']);
-    $attrs = [];
+    $attrs = array();
     foreach ($template_attrs['fdTemplateField'] as $field) {
       preg_match('/^([^:]+):(.*)$/s', $field, $m);
       if (isset($attrs[$m[1]])) {
         $attrs[$m[1]][] = $m[2];
         $attrs[$m[1]]['count']++;
       } else {
-        $attrs[$m[1]]           = [$m[2]];
+        $attrs[$m[1]]           = array($m[2]);
         $attrs[$m[1]]['count']  = 1;
       }
     }
@@ -119,16 +119,16 @@ class templateHandling
   public static function parseMask($mask, array $attrs)
   {
     if ($mask == '|') {
-      return ['%'];
+      return array('%');
     }
     $modifiers = '';
     if (preg_match('/^([^|]+)\|/', $mask, $m)) {
       $modifiers = $m[1];
       $mask = substr($mask, strlen($m[0]));
     }
-    $result = [''];
+    $result = array('');
     if (isset($attrs[$mask])) {
-      $result = [$attrs[$mask]];
+      $result = array($attrs[$mask]);
       if (is_array($result[0])) {
         unset($result[0]['count']);
       }
@@ -137,14 +137,14 @@ class templateHandling
     }
     $len    = strlen($modifiers);
     for ($i = 0; $i < $len; ++$i) {
-      $args     = [];
+      $args     = array();
       $modifier = $modifiers[$i];
       if (preg_match('/^\[([^\]]+)\].*$/', substr($modifiers, $i + 1), $m)) {
         /* get modifier args */
         $args = explode(',', $m[1]);
         $i += strlen($m[1]) + 2;
       }
-      $result_tmp = [];
+      $result_tmp = array();
       foreach ($result as $r) {
         $result_tmp = array_merge($result_tmp, static::applyModifier($modifier, $args, $r));
       }
@@ -166,7 +166,7 @@ class templateHandling
    */
   public static function neededAttrs(array &$attrs, array $flatdepends)
   {
-    $needed = [];
+    $needed = array();
     foreach ($flatdepends as $attr => $depends) {
       if ((isset($depends[0])) && ($depends[0] == 'askme')) {
         $needed[] = $attr;
@@ -233,7 +233,7 @@ class templateHandling
    */
   public static function listFields($string)
   {
-    $fields = [];
+    $fields = array();
     $offset = 0;
     while (preg_match('/%([^%]+)%/', $string, $m, PREG_OFFSET_CAPTURE, $offset)) {
       $mask   = $m[1][0];
@@ -257,15 +257,15 @@ class templateHandling
     // handle ligatures
     $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
     // delete unhandled characters
-    return [preg_replace('#&[^;]+;#', '', $str)];
+    return array(preg_replace('#&[^;]+;#', '', $str));
   }
 
   private static function modifierTranslit(array $args, $str)
   {
     $localesaved = setlocale(LC_CTYPE, 0);
-    $ret = [];
+    $ret = array();
     foreach ($args as $arg) {
-      setlocale(LC_CTYPE, [$arg,"$arg.UTF8"]);
+      setlocale(LC_CTYPE, array($arg,"$arg.UTF8"));
       $ret[] = iconv('UTF8', 'ASCII//TRANSLIT', $str);
     }
     setlocale(LC_CTYPE, $localesaved);
@@ -283,7 +283,7 @@ class templateHandling
       }
     }
 
-    return [preg_replace($pattern.'u', $replace, $str)];
+    return array(preg_replace($pattern.'u', $replace, $str));
   }
 
   private static function modifierSubString(array $args, $str)
@@ -295,13 +295,13 @@ class templateHandling
       array_unshift($args, 0);
     }
     if (preg_match('/^(\d+)-(\d+)$/', $args[1], $m)) {
-      $res = [];
+      $res = array();
       for ($i = $m[1];$i < $m[2]; ++$i) {
         $res[] = mb_substr($str, $args[0], $i);
       }
       return array_unique($res);
     } else {
-      return [mb_substr($str, $args[0], $args[1])];
+      return array(mb_substr($str, $args[0], $args[1]));
     }
   }
 
@@ -366,9 +366,9 @@ class templateHandling
     $dateObject = new DateTime($args[0], new DateTimeZone('UTC'));
     if ($args[1] == 'epoch') {
       /* Special handling for shadowExpire: days since epoch */
-      return [floor($dateObject->format('U') / 86400)];
+      return array(floor($dateObject->format('U') / 86400));
     }
-    return [$dateObject->format($args[1])];
+    return array($dateObject->format($args[1]));
   }
 
   /*! \brief Apply a modifier
@@ -387,27 +387,27 @@ class templateHandling
       /* $str is an array and $m is lowercase, so it's a string modifier */
       $str = reset($str);
     }
-    $result = [$str];
+    $result = array($str);
     switch ($m) {
       case 'F':
         // First
-        $result = [reset($str)];
+        $result = array(reset($str));
         break;
       case 'L':
         // Last
-        $result = [end($str)];
+        $result = array(end($str));
         break;
       case 'J':
         // Join
         if (isset($args[0])) {
-          $result = [join($args[0], $str)];
+          $result = array(join($args[0], $str));
         } else {
-          $result = [join($str)];
+          $result = array(join($str));
         }
         break;
       case 'C':
         // Count
-        $result = [count($str)];
+        $result = array(count($str));
         break;
       case 'M':
         // Match
@@ -415,40 +415,40 @@ class templateHandling
           trigger_error('Missing "M" match modifier parameter');
           $args[] = '/.*/';
         }
-        $result = [array_filter(
+        $result = array(array_filter(
           $str,
           function ($s) use ($args)
           {
             return preg_match($args[0], $s);
           }
-        )];
+        ));
         break;
       case '4':
         // IPv4
-        $result = [array_filter($str, 'tests::is_ipv4')];
+        $result = array(array_filter($str, 'tests::is_ipv4'));
         break;
       case '6':
         // IPv6
-        $result = [array_filter($str, 'tests::is_ipv6')];
+        $result = array(array_filter($str, 'tests::is_ipv6'));
         break;
       case 'c':
         // comment
-        $result = [''];
+        $result = array('');
         break;
       case 'b':
         // base64
         if (isset($args[0]) && ($args[0] == 'd')) {
-          $result = [base64_decode($str)];
+          $result = array(base64_decode($str));
         }
-        $result = [base64_encode($str)];
+        $result = array(base64_encode($str));
         break;
       case 'u':
         // uppercase
-        $result = [mb_strtoupper($str, 'UTF-8')];
+        $result = array(mb_strtoupper($str, 'UTF-8'));
         break;
       case 'l':
         // lowercase
-        $result = [mb_strtolower($str, 'UTF-8')];
+        $result = array(mb_strtolower($str, 'UTF-8'));
         break;
       case 'a':
         // remove accent
@@ -468,22 +468,22 @@ class templateHandling
         break;
       case 'r':
         // random string
-        $result = [static::modifierRandomString($args)];
+        $result = array(static::modifierRandomString($args));
         break;
       case 'd':
         // date
-        $result = [static::modifierDate($args)];
+        $result = array(static::modifierDate($args));
         break;
       default:
         trigger_error("Unkown modifier '$m'");
-        $result = [$str];
+        $result = array($str);
         break;
     }
     return $result;
   }
 
   /*! \brief Flattens dependencies (if a depends of b which depends of c then a depends of c) */
-  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = [])
+  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = array())
   {
     if (isset($cache[$key])) {
       return $cache[$key];
@@ -501,7 +501,7 @@ class templateHandling
               $key,
               $a
             );
-            return [];
+            return array();
           }
           $deps = static::flatDepends ($cache, $errors, $depends, $a, $forbidden);
           if (($askmeKey = array_search('askme', $deps)) !== FALSE) {
@@ -521,11 +521,11 @@ class templateHandling
   protected static function attributesDependencies(array $attrs)
   {
     /* Compute dependencies of each attr */
-    $depends = [];
+    $depends = array();
     foreach ($attrs as $key => $values) {
-      $depends[$key] = [];
+      $depends[$key] = array();
       if (!is_array($values))  {
-        $values = [$values];
+        $values = array($values);
       }
       unset ($values['count']);
       foreach ($values as $value) {
@@ -535,19 +535,19 @@ class templateHandling
           $depends[$key][] = $m[2][0];
           if (!isset($attrs[$m[2][0]])) {
             /* Dependency which has no value might be missing */
-            $attrs[$m[2][0]]    = [];
-            $depends[$m[2][0]]  = [];
+            $attrs[$m[2][0]]    = array();
+            $depends[$m[2][0]]  = array();
           }
         }
       }
     }
     /* Flattens dependencies */
-    $flatdepends  = [];
-    $errors       = [];
+    $flatdepends  = array();
+    $errors       = array();
     foreach ($depends as $key => $value) {
       static::flatDepends($flatdepends, $errors, $depends, $key);
     }
-    return [$flatdepends, $errors];
+    return array($flatdepends, $errors);
   }
 
   /*! \brief Sort attrs depending of dependencies */
diff --git a/include/class_tests.inc b/include/class_tests.inc
index a74a0e8d8..80d61e696 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -179,7 +179,7 @@ class tests
   public static function is_ip_with_subnetmask($ip)
   {
     /* Generate list of valid submasks */
-    $res = [];
+    $res = array();
     for ($e = 0; $e <= 32; $e++) {
       $res[$e] = $e;
     }
@@ -291,7 +291,7 @@ class tests
   public static function is_department_name_reserved($name)
   {
     global $config;
-    $reservedNames = [];
+    $reservedNames = array();
     foreach ($config->data['OBJECTS'] as $infos) {
       if (isset($infos['ou'])) {
         if ($infos['ou'] != '') {
diff --git a/include/class_timezone.inc b/include/class_timezone.inc
index 2b8991aaf..315b1b5ca 100644
--- a/include/class_timezone.inc
+++ b/include/class_timezone.inc
@@ -77,9 +77,9 @@ class timezone
       $tz       = $config->get_cfg_value('timezone');
       $tz_delta = date('Z', $stamp);
       $tz_delta = $tz_delta / 3600;
-      return ['name' => $tz, 'value' => $tz_delta];
+      return array('name' => $tz, 'value' => $tz_delta);
     } else {
-      return ['name' => 'unconfigured', 'value' => 0];
+      return array('name' => 'unconfigured', 'value' => 0);
     }
   }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 55a0eac87..430e8c000 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -39,15 +39,15 @@ class userinfo
   var $givenName    = '';
   var $gidNumber    = -1;
   var $language     = "";
-  var $subtreeACL   = [];
-  var $ACL          = [];
-  var $groups       = [];
-  var $roles        = [];
-  var $result_cache = [];
+  var $subtreeACL   = array();
+  var $ACL          = array();
+  var $groups       = array();
+  var $roles        = array();
+  var $result_cache = array();
   var $ignoreACL    = FALSE;
 
-  var $ACLperPath             = [];
-  var $ACLperPath_usesFilter  = [];
+  var $ACLperPath             = array();
+  var $ACLperPath_usesFilter  = array();
 
   /*! \brief LDAP size limit handler */
   protected $sizeLimitHandler;
@@ -73,7 +73,7 @@ class userinfo
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, ['cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage']);
+    $ldap->cat($this->dn, array('cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage'));
     $attrs = $ldap->fetch();
 
     $this->uid = $attrs['uid'][0];
@@ -107,7 +107,7 @@ class userinfo
   public function reset_acl_cache()
   {
     /* Initialize ACL_CACHE */
-    session::set('ACL_CACHE', []);
+    session::set('ACL_CACHE', array());
   }
 
   /*!
@@ -116,42 +116,42 @@ class userinfo
   function loadACL()
   {
     global $config;
-    $this->ACL          = [];
-    $this->groups       = [];
-    $this->roles        = [];
-    $this->result_cache = [];
+    $this->ACL          = array();
+    $this->groups       = array();
+    $this->roles        = array();
+    $this->result_cache = array();
     $this->reset_acl_cache();
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
 
     /* Get member groups... */
-    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', ['dn']);
+    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', array('dn'));
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member POSIX groups... */
-    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', ['dn']);
+    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', array('dn'));
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member roles... */
-    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', ['dn']);
+    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', array('dn'));
     while ($attrs = $ldap->fetch()) {
       $this->roles[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Crawl through ACLs and move relevant to the tree */
-    $ldap->search("(objectClass=gosaACL)", ['dn', 'gosaAclEntry']);
-    $aclp = [];
-    $aclc = [];
+    $ldap->search("(objectClass=gosaACL)", array('dn', 'gosaAclEntry'));
+    $aclp = array();
+    $aclc = array();
     while ($attrs = $ldap->fetch()) {
 
       /* Insert links in ACL array */
       $aclp[$attrs['dn']] = substr_count($attrs['dn'], ',');
-      $aclc[$attrs['dn']] = [];
-      $ol = [];
+      $aclc[$attrs['dn']] = array();
+      $ol = array();
       for ($i = 0; $i < $attrs['gosaAclEntry']['count']; $i++) {
         $ol = array_merge($ol, acl::explodeAcl($attrs['gosaAclEntry'][$i]));
       }
@@ -163,18 +163,18 @@ class userinfo
       foreach ($data as $prio => $aclc_value) {
         unset($aclc[$dn][$prio]);
 
-        $ldap->cat($aclc_value['acl'], ["gosaAclTemplate"]);
+        $ldap->cat($aclc_value['acl'], array("gosaAclTemplate"));
         $attrs = $ldap->fetch();
 
         if (isset($attrs['gosaAclTemplate'])) {
           $roleAcls = acl::explodeRole($attrs['gosaAclTemplate']);
           foreach ($roleAcls as $roleAcl) {
-            $aclc[$dn][]  = [
+            $aclc[$dn][]  = array(
               'acl'     => $roleAcl,
               'type'    => $aclc_value['type'],
               'members' => $aclc_value['members'],
               'filter'  => $aclc_value['filter']
-            ];
+            );
           }
         }
       }
@@ -219,7 +219,7 @@ class userinfo
 
         if ($interresting) {
           if (!isset($this->ACL[$dn])) {
-            $this->ACL[$dn] = [];
+            $this->ACL[$dn] = array();
           }
           $this->ACL[$dn][$idx] = $type;
         }
@@ -240,7 +240,7 @@ class userinfo
       For object located in 'ou=dep1,ou=base' we have to both ACLs,
        for objects in 'ou=base' we only have to apply on ACL.
      */
-    $without_self_acl = $all_acl = [];
+    $without_self_acl = $all_acl = array();
     foreach ($this->ACL as $dn => $acl) {
       $sdn = $dn;
       do {
@@ -403,11 +403,11 @@ class userinfo
   function get_snapshot_permissions($dn, $categories)
   {
     if (!is_array($categories)) {
-      $categories = [$categories];
+      $categories = array($categories);
     }
     /* Possible permissions for snapshots */
-    $objectPermissions    = ['r', 'c', 'd'];
-    $attributePermissions = ['restore_over', 'restore_deleted'];
+    $objectPermissions    = array('r', 'c', 'd');
+    $attributePermissions = array('restore_over', 'restore_deleted');
     foreach ($categories as $category) {
       $acl = $this->get_permissions($dn, $category.'/SnapshotHandler');
       foreach ($objectPermissions as $i => $perm) {
@@ -455,7 +455,7 @@ class userinfo
     if (isset($ACL_CACHE["$dn+$object+$attribute"])) {
       $ret = $ACL_CACHE["$dn+$object+$attribute"];
       if ($skip_write) {
-        $ret = str_replace(['w','c','d','m'], '', $ret);
+        $ret = str_replace(array('w','c','d','m'), '', $ret);
       }
       return $ret;
     }
@@ -485,7 +485,7 @@ class userinfo
           $ACL_CACHE["$orig_dn+$object+$attribute"] = $ret;
         }
         if ($skip_write) {
-          $ret = str_replace(['w','c','d','m'], '', $ret);
+          $ret = str_replace(array('w','c','d','m'), '', $ret);
         }
         return $ret;
       }
@@ -494,7 +494,7 @@ class userinfo
     /* Get ldap object, for later filter checks */
     $ldap = $config->get_ldap_link();
 
-    $acl = ['r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => ''];
+    $acl = array('r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => '');
 
     /* Build dn array */
     $path = explode(',', $dn);
@@ -630,7 +630,7 @@ class userinfo
 
     /* Remove write if needed */
     if ($skip_write) {
-      $ret = str_replace(['w','c','d','m'], '', $ret);
+      $ret = str_replace(array('w','c','d','m'), '', $ret);
     }
     return $ret;
   }
@@ -661,17 +661,17 @@ class userinfo
     $ACL_CACHE = &session::get_ref('ACL_CACHE');
 
     if (!is_array($module)) {
-      $module = [$module];
+      $module = array($module);
     }
 
-    $res = [];
+    $res = array();
     foreach ($module as $mod) {
       if (isset($ACL_CACHE['MODULE_DEPARTMENTS'][$mod])) {
         $res = array_merge($res, $ACL_CACHE['MODULE_DEPARTMENTS'][$mod]);
         continue;
       }
 
-      $deps = [];
+      $deps = array();
 
       /* Search for per object ACLs */
       foreach ($this->ACL as $dn => $infos) {
@@ -733,7 +733,7 @@ class userinfo
    */
   function mergeACL($acl, $type, $newACL)
   {
-    $at = ["subtree" => "s", "one" => "1"];
+    $at = array("subtree" => "s", "one" => "1");
 
     if ((strpos($newACL, 'w') !== FALSE) && (strpos($newACL, 'r') === FALSE)) {
       $newACL .= "r";
@@ -897,8 +897,8 @@ class userinfo
     $current  = floor(date("U") / 60 / 60 / 24);
 
     // Fetch required attributes
-    foreach (['shadowExpire','shadowLastChange','shadowMax','shadowMin',
-                'shadowInactive','shadowWarning','sambaKickoffTime'] as $attr) {
+    foreach (array('shadowExpire','shadowLastChange','shadowMax','shadowMin',
+                'shadowInactive','shadowWarning','sambaKickoffTime') as $attr) {
       $$attr = (isset($attrs[$attr][0]) ? $attrs[$attr][0] : NULL);
     }
 
@@ -1002,7 +1002,7 @@ class userinfo
   function isBlacklisted($plugin)
   {
     global $config;
-    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', []);
+    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', array());
     foreach ($blacklist as $item) {
       list ($group, $p) = explode('|', $item, 2);
       if ($plugin == $p) {
@@ -1023,7 +1023,7 @@ class userinfo
   {
     global $config;
 
-    if (in_array_ics($attribute, ['objectClass', 'dn'])) {
+    if (in_array_ics($attribute, array('objectClass', 'dn'))) {
       return TRUE;
     }
 
diff --git a/include/class_xml.inc b/include/class_xml.inc
index 93b549ee3..aeec46690 100644
--- a/include/class_xml.inc
+++ b/include/class_xml.inc
@@ -41,12 +41,12 @@ class xml {
   static function xml2array($contents, $get_attributes = 1, $priority = 'tag')
   {
     if (!$contents) {
-      return [];
+      return array();
     }
 
     if (!function_exists('xml_parser_create')) {
       trigger_error('xml_parser_create function does not exists');
-      return [];
+      return array();
     }
 
     //Get the XML parser of PHP - PHP must have this module for the parser to work
@@ -62,12 +62,12 @@ class xml {
     }
 
     //Initializations
-    $xml_array    = [];
+    $xml_array    = array();
 
     $current = &$xml_array; //Refference
 
     //Go through the tags.
-    $repeated_tag_index = [];//Multiple tags with same name will be turned into an array
+    $repeated_tag_index = array();//Multiple tags with same name will be turned into an array
     foreach ($xml_values as $data) {
       unset($attributes, $value);//Remove existing values, or there will be trouble
 
@@ -75,8 +75,8 @@ class xml {
       // tag(string), type(string), level(int), attributes(array).
       extract($data);//We could use the array by itself, but this cooler.
 
-      $result = [];
-      $attributes_data = [];
+      $result = array();
+      $attributes_data = array();
 
       if (isset($value)) {
         if ($priority == 'tag') {
@@ -117,7 +117,7 @@ class xml {
             $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
             $repeated_tag_index[$tag.'_'.$level]++;
           } else {//This section will make the value an array if multiple tags with the same name appear together
-            $current[$tag] = [$current[$tag],$result];//This will combine the existing item and the new item together to make an array
+            $current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array
             $repeated_tag_index[$tag.'_'.$level] = 2;
 
             if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
@@ -148,7 +148,7 @@ class xml {
             $repeated_tag_index[$tag.'_'.$level]++;
 
           } else { //If it is not an array...
-            $current[$tag] = [$current[$tag],$result]; //...Make it an array using using the existing value and the new value
+            $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
             $repeated_tag_index[$tag.'_'.$level] = 1;
             if ($priority == 'tag' and $get_attributes) {
               if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
diff --git a/include/exporter/class_cvsExporter.inc b/include/exporter/class_cvsExporter.inc
index 284fa361b..10f011720 100644
--- a/include/exporter/class_cvsExporter.inc
+++ b/include/exporter/class_cvsExporter.inc
@@ -43,7 +43,7 @@ class csvExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = [])
+  function __construct($headline, $header, $entries, $columns = array())
   {
     // If no preset, render all columns
     if (!count($columns)) {
@@ -90,7 +90,7 @@ class csvExporter
    */
   static function getInfo()
   {
-    return ["exportCSV" => [ "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ]];
+    return array("exportCSV" => array( "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ));
   }
 
 }
diff --git a/include/exporter/class_pdfExporter.inc b/include/exporter/class_pdfExporter.inc
index 56cd04ce8..75d3c396f 100644
--- a/include/exporter/class_pdfExporter.inc
+++ b/include/exporter/class_pdfExporter.inc
@@ -51,7 +51,7 @@ class pdfExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = [])
+  function __construct($headline, $header, $entries, $columns = array())
   {
     // Bail out if no FPDF available
     if (!class_exists('FPDF')) {
@@ -141,7 +141,7 @@ class pdfExporter
    */
   function calcWidth($header, $entries, $columns)
   {
-    $width = [];
+    $width = array();
 
     // Locate longest value for each column
     foreach ($columns as $index) {
@@ -193,7 +193,7 @@ class pdfExporter
     // Check if class defined
     $classes = get_declared_classes();
     if (in_array('FPDF', $classes)) {
-      return ["exportPDF" => [ "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ]];
+      return array("exportPDF" => array( "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ));
     } else {
       return NULL;
     }
diff --git a/include/functions.inc b/include/functions.inc
index fb4e41a80..1a9bd6138 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -53,7 +53,7 @@ define ('POSIX_DISALLOW_PASSWORD_CHANGE', 8);
 
 /* Rewrite german 'umlauts' and spanish 'accents'
    to get better results */
-$REWRITE = [ "ä" => "ae",
+$REWRITE = array( "ä" => "ae",
     "ö" => "oe",
     "ü" => "ue",
     "Ä" => "Ae",
@@ -71,7 +71,7 @@ $REWRITE = [ "ä" => "ae",
     "Ó" => "O",
     "Ú" => "U",
     "ñ" => "ny",
-    "Ñ" => "Ny" ];
+    "Ñ" => "Ny" );
 
 
 /*!
@@ -274,14 +274,14 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
     } else {
       $nf = preg_replace('!^'.$BASE_DIR.'/!', '', $path);
     }
-    $paths = [
+    $paths = array(
       "$BASE_DIR/ihtml/themes/$theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/$default_theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/default/$nf/$filename",
       $path."/$filename"
-    ];
+    );
   } else {
-    $paths = [
+    $paths = array(
       "themes/$theme/$filename",
       "$BASE_DIR/ihtml/themes/$theme/$filename",
       "themes/$default_theme/$filename",
@@ -289,7 +289,7 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
       "themes/default/$filename",
       "$BASE_DIR/ihtml/themes/default/$filename",
       $filename
-    ];
+    );
   }
 
   foreach ($paths as $path) {
@@ -441,8 +441,8 @@ function ldap_get_user ($username)
     exit();
   }
 
-  $allowed_attributes = ['uid','mail'];
-  $verify_attr = [];
+  $allowed_attributes = array('uid','mail');
+  $verify_attr = array();
   $tmp = explode(',', $config->get_cfg_value('loginAttribute'));
   foreach ($tmp as $attr) {
     if (in_array($attr, $allowed_attributes)) {
@@ -451,7 +451,7 @@ function ldap_get_user ($username)
   }
 
   if (count($verify_attr) == 0) {
-    $verify_attr = ['uid'];
+    $verify_attr = array('uid');
   }
   $tmp    = $verify_attr;
   $tmp[]  = 'uid';
@@ -526,7 +526,7 @@ function ldap_login_user ($username, $password)
   }
   if (class_available('ppolicyAccount')) {
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=*)', [], 'one');
+    $ldap->search('(objectClass=*)', array(), 'one');
     if (!$ldap->success()) {
       msg_dialog::display(
         _('Authentication error'),
@@ -561,7 +561,7 @@ function add_lock($object, $user)
       don't need to remove any locks for them later.
    */
   if (!session::is_set('LOCK_CACHE')) {
-    session::set('LOCK_CACHE', ['']);
+    session::set('LOCK_CACHE', array(''));
   }
   if (is_array($object)) {
     foreach ($object as $obj) {
@@ -589,7 +589,7 @@ function add_lock($object, $user)
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
   $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($user).')(fdObjectDn='.base64_encode($object).'))',
-      ['fdUserDn']);
+      array('fdUserDn'));
   if (!$ldap->success()) {
     msg_dialog::display(_('Configuration error'), sprintf(_('Cannot create locking information in LDAP tree. Please contact your administrator!').'<br><br>'._('LDAP server returned: %s'), '<br><br><i>'.$ldap->get_error().'</i>'), ERROR_DIALOG);
     return;
@@ -597,16 +597,16 @@ function add_lock($object, $user)
 
   /* Add lock if none present */
   if ($ldap->count() == 0) {
-    $attrs  = [];
+    $attrs  = array();
     $name   = md5($object);
     $ldap->cd('cn='.$name.','.get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-    $attrs = [
+    $attrs = array(
       'objectClass'     => 'fdLockEntry',
       'fdUserDn'        => $user,
       'fdObjectDn'      => base64_encode($object),
       'cn'              => $name,
       'fdLockTimestamp' => LdapGeneralizedTime::toString(new DateTime('now')),
-    ];
+    );
     $ldap->add($attrs);
     if (!$ldap->success()) {
       msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), "cn=$name,".get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], 0), LDAP_ERROR);
@@ -653,7 +653,7 @@ function del_lock ($object)
   /* Check for existance and remove the entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', ['fdObjectDn']);
+  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', array('fdObjectDn'));
   $attrs = $ldap->fetch();
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), $ldap->getDN(), LDAP_DEL, ERROR_DIALOG));
@@ -681,7 +681,7 @@ function del_user_locks($userdn)
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
 
   /* Remove all objects of this user, drop errors silently in this case. */
-  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', ['fdUserDn']);
+  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', array('fdUserDn'));
   while ($attrs = $ldap->fetch()) {
     $ldap->rmdir($attrs['dn']);
   }
@@ -754,7 +754,7 @@ function get_locks($objects, $allow_readonly = FALSE)
   } else {
     if ($allow_readonly && isset($_POST['open_readonly'])) {
       /* If readonly is allowed and asked and there is only one object, bypass lock detection */
-      return [];
+      return array();
     }
     $filter = '(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($objects).'))';
   }
@@ -762,20 +762,20 @@ function get_locks($objects, $allow_readonly = FALSE)
   /* Get LDAP link, check for presence of the lock entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search($filter, ['fdUserDn','fdObjectDn', 'fdLockTimestamp']);
+  $ldap->search($filter, array('fdUserDn','fdObjectDn', 'fdLockTimestamp'));
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), '', LDAP_SEARCH), LDAP_ERROR);
     return FALSE;
   }
 
-  $locks = [];
+  $locks = array();
   while ($attrs = $ldap->fetch()) {
-    $locks[] = [
+    $locks[] = array(
       'dn'        => $attrs['dn'],
       'object'    => base64_decode($attrs['fdObjectDn'][0]),
       'user'      => $attrs['fdUserDn'][0],
       'timestamp' => LdapGeneralizedTime::fromString($attrs['fdLockTimestamp'][0]),
-    ];
+    );
   }
 
   if (!is_array($objects) && (count($locks) > 1)) {
@@ -881,7 +881,7 @@ function get_ou($name)
 {
   global $config;
 
-  $map = [
+  $map = array(
     'fusiondirectoryRDN'      => 'ou=fusiondirectory,',
     'lockRDN'                 => 'ou=locks,',
     'recoveryTokenRDN'        => 'ou=recovery,',
@@ -931,7 +931,7 @@ function get_ou($name)
     'dsaRDN'    => 'ou=dsa,',
 
     'mimetypeRDN' => 'ou=mime,'
-  ];
+  );
 
   /* Preset ou... */
   if ($config->get_cfg_value($name, '_not_set_') != '_not_set_') {
@@ -1054,9 +1054,9 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
   /* Save variables from LOCK_VARS_TO_USE in session - for further editing */
   if ( session::is_set('LOCK_VARS_TO_USE') && count(session::get('LOCK_VARS_TO_USE'))) {
 
-    $LOCK_VARS_USED_GET       = [];
-    $LOCK_VARS_USED_POST      = [];
-    $LOCK_VARS_USED_REQUEST   = [];
+    $LOCK_VARS_USED_GET       = array();
+    $LOCK_VARS_USED_POST      = array();
+    $LOCK_VARS_USED_REQUEST   = array();
     $LOCK_VARS_TO_USE         = session::get('LOCK_VARS_TO_USE');
 
     foreach ($LOCK_VARS_TO_USE as $name) {
@@ -1083,7 +1083,7 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
         }
       }
     }
-    session::set('LOCK_VARS_TO_USE',        []);
+    session::set('LOCK_VARS_TO_USE',        array());
     session::set('LOCK_VARS_USED_GET',      $LOCK_VARS_USED_GET);
     session::set('LOCK_VARS_USED_POST',     $LOCK_VARS_USED_POST);
     session::set('LOCK_VARS_USED_REQUEST',  $LOCK_VARS_USED_REQUEST);
@@ -1335,10 +1335,10 @@ function netmask_to_bits($netmask)
  */
 function _recurse_gen_uids($rule, array $variables)
 {
-  $result = [];
+  $result = array();
 
   if (!count($variables)) {
-    return [$rule];
+    return array($rule);
   }
 
   reset($variables);
@@ -1373,13 +1373,13 @@ function gen_uids($rule, $attributes)
 
   // Attributes should be arrays
   foreach ($attributes as $name => $value) {
-      $attributes[$name] = [$value];
+      $attributes[$name] = array($value);
   }
 
   /* Search for keys and fill the variables array with all
      possible values for that key. */
   $stripped   = $rule;
-  $variables  = [];
+  $variables  = array();
 
   for ($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
     $variables[$pos]  = templateHandling::parseMask($m[1][0], $attributes);
@@ -1396,7 +1396,7 @@ function gen_uids($rule, $attributes)
   $ldap->cd($config->current['BASE']);
 
   /* Remove used uids and watch out for id tags */
-  $ret = [];
+  $ret = array();
   foreach ($proposed as $uid) {
     /* Check for id tag and modify uid if needed */
     if (preg_match('/\{id(:|!)(\d+)}/', $uid, $m)) {
@@ -1411,7 +1411,7 @@ function gen_uids($rule, $attributes)
         }
         $res = preg_replace('/{id(:|!)\d+}/', $number, $uid);
 
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1428,7 +1428,7 @@ function gen_uids($rule, $attributes)
       while (TRUE) {
         $number = sprintf("%0".$size."d", random_int(0, pow(10, $size) - 1));
         $res    = preg_replace('/{id#(\d+)}/', $number, $uid);
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1440,7 +1440,7 @@ function gen_uids($rule, $attributes)
     }
 
     /* Don't assign used ones */
-    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', ['dn']);
+    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', array('dn'));
     if ($ldap->count() == 0) {
       /* Add uid, but remove {} first. These are invalid anyway. */
       $uid = preg_replace('/[{}]/', '', $uid);
@@ -1501,7 +1501,7 @@ function to_byte($value)
  */
 function humanReadableSize ($bytes, $precision = 2)
 {
-  $format = [
+  $format = array(
     _('%sB'),
     _('%sKiB'),
     _('%sMiB'),
@@ -1511,7 +1511,7 @@ function humanReadableSize ($bytes, $precision = 2)
     _('%sEiB'),
     _('%sZiB'),
     _('%sYiB')
-  ];
+  );
   if ($bytes == 0) {
     return sprintf($format[0], '0');
   }
@@ -1632,7 +1632,7 @@ function scan_directory($path, $sort_desc = FALSE)
     if (is_readable($path)) {
 
       /* Get contents and write it into an array */
-      $ret = [];
+      $ret = array();
 
       $dir = opendir($path);
 
@@ -1857,7 +1857,7 @@ function normalizeLdap($input)
  */
 function check_schema($cfg)
 {
-  $checks = [];
+  $checks = array();
 
   /* Get objectclasses */
   $ldapObj = new LDAP($cfg['admin'], $cfg['password'], $cfg['connection'], FALSE, $cfg['tls']);
@@ -1871,14 +1871,14 @@ function check_schema($cfg)
   /* This is the default block used for each entry.
    *  to avoid unset indexes.
    */
-  $def_check = [
+  $def_check = array(
     'SCHEMA_FILE'       => '',
-    'CLASSES_REQUIRED'  => [],
+    'CLASSES_REQUIRED'  => array(),
     'STATUS'            => FALSE,
     'IS_MUST_HAVE'      => FALSE,
     'MSG'               => '',
     'INFO'              => ''
-  ];
+  );
 
   /* FusionDirectory core schemas */
 
@@ -1886,7 +1886,7 @@ function check_schema($cfg)
   $checks['core-fd'] = $def_check;
 
   $checks['core-fd']['SCHEMA_FILE']       = 'core-fd.schema';
-  $checks['core-fd']['CLASSES_REQUIRED']  = ['fdLockEntry'];
+  $checks['core-fd']['CLASSES_REQUIRED']  = array('fdLockEntry');
   $checks['core-fd']['IS_MUST_HAVE']      = TRUE;
   $checks['core-fd']['INFO']              = _('Main FusionDirectory schema');
 
@@ -1894,7 +1894,7 @@ function check_schema($cfg)
   $checks['core-fd-conf'] = $def_check;
 
   $checks['core-fd-conf']['SCHEMA_FILE']      = 'core-fd-conf.schema';
-  $checks['core-fd-conf']['CLASSES_REQUIRED'] = ['fusionDirectoryConf'];
+  $checks['core-fd-conf']['CLASSES_REQUIRED'] = array('fusionDirectoryConf');
   $checks['core-fd-conf']['IS_MUST_HAVE']     = TRUE;
   $checks['core-fd-conf']['INFO']             = _('Schema used to store FusionDirectory configuration');
 
@@ -1902,7 +1902,7 @@ function check_schema($cfg)
   $checks['ldapns'] = $def_check;
 
   $checks['ldapns']['SCHEMA_FILE']      = 'ldapns.schema';
-  $checks['ldapns']['CLASSES_REQUIRED'] = ['hostObject'];
+  $checks['ldapns']['CLASSES_REQUIRED'] = array('hostObject');
   $checks['ldapns']['IS_MUST_HAVE']     = FALSE;
   $checks['ldapns']['INFO']             = _('Used to store trust mode information in users or groups.');
 
@@ -1910,7 +1910,7 @@ function check_schema($cfg)
   $checks['template-fd'] = $def_check;
 
   $checks['template-fd']['SCHEMA_FILE']      = 'template-fd.schema';
-  $checks['template-fd']['CLASSES_REQUIRED'] = ['fdTemplate'];
+  $checks['template-fd']['CLASSES_REQUIRED'] = array('fdTemplate');
   $checks['template-fd']['IS_MUST_HAVE']     = FALSE;
   $checks['template-fd']['INFO']             = _('Used to store templates.');
 
@@ -1919,7 +1919,7 @@ function check_schema($cfg)
     $checks['nis'] = $def_check;
 
     $checks['nis']['SCHEMA_FILE']       = 'nis.schema';
-    $checks['nis']['CLASSES_REQUIRED']  = ['posixAccount'];
+    $checks['nis']['CLASSES_REQUIRED']  = array('posixAccount');
     $checks['nis']['IS_MUST_HAVE']      = FALSE;
     $checks['nis']['INFO']              = _('Used to store POSIX information.');
   }
@@ -1943,7 +1943,7 @@ function check_schema($cfg)
   $checks['posixGroup'] = $def_check;
 
   $checks['posixGroup']['SCHEMA_FILE']      = 'nis.schema';
-  $checks['posixGroup']['CLASSES_REQUIRED'] = ['posixGroup'];
+  $checks['posixGroup']['CLASSES_REQUIRED'] = array('posixGroup');
   $checks['posixGroup']['STATUS']           = TRUE;
   $checks['posixGroup']['MSG']              = '';
   $checks['posixGroup']['INFO']             = '';
@@ -2022,13 +2022,13 @@ function change_password ($dn, $password, $hash = "")
 {
   $userTabs = objects::open($dn, 'user');
   $userTab  = $userTabs->getBaseObject();
-  $userTab->userPassword = [
+  $userTab->userPassword = array(
     $hash,
     $password,
     $password,
     $userTab->userPassword,
     $userTab->attributesAccess['userPassword']->isLocked()
-  ];
+  );
   $userTabs->save_object();
   $error = $userTabs->save();
   if (!empty($error)) {
@@ -2043,13 +2043,13 @@ function lock_samba_account($mode, array $attrs)
 {
   global $config;
   if (!isset($attrs['sambaNTPassword'][0])) {
-    return [];
+    return array();
   }
-  $modify = ['sambaNTPassword' => $attrs['sambaNTPassword'][0]];
+  $modify = array('sambaNTPassword' => $attrs['sambaNTPassword'][0]);
   if ($config->get_cfg_value("sambaGenLMPassword", "FALSE") == "TRUE") {
     $modify['sambaLMPassword'] = $attrs['sambaLMPassword'][0];
   } else {
-    $modify['sambaLMPassword'] = [];
+    $modify['sambaLMPassword'] = array();
   }
   foreach ($modify as &$pwd) {
     if (is_array($pwd)) {
@@ -2075,7 +2075,7 @@ function lock_ssh_account($mode, array $attrs, &$modify)
   if (!isset($attrs['sshPublicKey'])) {
     return;
   }
-  $modify['sshPublicKey'] = [];
+  $modify['sshPublicKey'] = array();
   for ($i = 0; $i < $attrs['sshPublicKey']['count']; ++$i) {
     if ($mode == 'LOCK') {
       $modify['sshPublicKey'][] = preg_replace('/^/', 'disabled-', $attrs['sshPublicKey'][$i]);
@@ -2109,7 +2109,7 @@ function getEntryCSN($dn)
   $attr = $config->get_cfg_value('modificationDetectionAttribute');
   if ($attr != '') {
     $ldap = $config->get_ldap_link();
-    $ldap->cat($dn, [$attr]);
+    $ldap->cat($dn, array($attr));
     $csn = $ldap->fetch();
     if (isset($csn[$attr][0])) {
       return $csn[$attr][0];
@@ -2293,7 +2293,7 @@ function mark($needle, $haystack)
 function reset_errors()
 {
   session::set('errors', '');
-  session::set('errorsAlreadyPosted', []);
+  session::set('errorsAlreadyPosted', array());
   session::set('LastError', '');
 }
 
@@ -2324,14 +2324,14 @@ if (!function_exists('ldap_escape')) {
   /* PHP version of ldap_escape for PHP<5.6 */
   function ldap_escape($subject, $ignore = '', $flags = 0)
   {
-    static $charMaps = [
-      LDAP_ESCAPE_FILTER => ['\\', '*', '(', ')', "\x00"],
-      LDAP_ESCAPE_DN     => ['\\', ',', '=', '+', '<', '>', ';', '"', '#'],
-    ];
+    static $charMaps = array(
+      LDAP_ESCAPE_FILTER => array('\\', '*', '(', ')', "\x00"),
+      LDAP_ESCAPE_DN     => array('\\', ',', '=', '+', '<', '>', ';', '"', '#'),
+    );
 
     // Pre-process the char maps on first call
     if (!isset($charMaps[0])) {
-      $charMaps[0] = [];
+      $charMaps[0] = array();
       for ($i = 0; $i < 256; $i++) {
         $charMaps[0][chr($i)] = sprintf('\\%02x', $i);
       }
@@ -2351,7 +2351,7 @@ if (!function_exists('ldap_escape')) {
 
     // Create the base char map to escape
     $flags = (int)$flags;
-    $charMap = [];
+    $charMap = array();
     if ($flags & LDAP_ESCAPE_FILTER) {
       $charMap += $charMaps[LDAP_ESCAPE_FILTER];
     }
@@ -2467,7 +2467,7 @@ function mail_utf8($to, $from_user, $from_email, $subject, $message, $replyto_us
 function fopenWithErrorHandling()
 {
   $args   = func_get_args();
-  $errors = [];
+  $errors = array();
   set_error_handler(
     function ($errno, $errstr, $errfile, $errline, $errcontext) use (&$errors)
     {
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index 73d2761d0..e0a29422d 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -154,8 +154,8 @@ class printAClass {
 
         case 'string':
           if ($this->look_for_leading_tabs && preg_match('/^\t/m', $value)) {
-            $search       = ['/\t/', "/\n/"];
-            $replace      = ['&nbsp;&nbsp;&nbsp;','<br />'];
+            $search       = array('/\t/', "/\n/");
+            $replace      = array('&nbsp;&nbsp;&nbsp;','<br />');
             $value        = preg_replace( $search, $replace, htmlspecialchars($value));
             $value_style  = 'color:black;border:1px gray dotted;';
           } else {
diff --git a/include/password-methods/class_password-methods-crypt.inc b/include/password-methods/class_password-methods-crypt.inc
index ac7c99793..935ae1f7d 100644
--- a/include/password-methods/class_password-methods-crypt.inc
+++ b/include/password-methods/class_password-methods-crypt.inc
@@ -116,7 +116,7 @@ class passwordMethodCrypt extends passwordMethod
    */
   static function get_hash_name()
   {
-    $hashes = [];
+    $hashes = array();
     if (CRYPT_STD_DES == 1) {
       $hashes[] = "crypt/standard-des";
     }
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index e84c20362..3f3f5ef2f 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -57,7 +57,7 @@ class passwordMethodsasl extends passwordMethod
     } else {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->cat($dn, [$attr]);
+      $ldap->cat($dn, array($attr));
       if ($ldap->count() == 1) {
         $attrs = $ldap->fetch();
         $this->uid = $attrs[$attr][0];
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index acc7541e9..713f7adc1 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -29,7 +29,7 @@
  */
 class passwordMethod
 {
-  var $attrs    = [];
+  var $attrs    = array();
   var $display  = FALSE;
   var $hash     = '';
 
@@ -170,7 +170,7 @@ class passwordMethod
 
       // Call pre hooks
       $userClass = new user($dn);
-      $errors = $userClass->callHook('PRE'.$mode, [], $ret);
+      $errors = $userClass->callHook('PRE'.$mode, array(), $ret);
       if (!empty($errors)) {
         msg_dialog::displayChecks($errors);
         return FALSE;
@@ -191,7 +191,7 @@ class passwordMethod
       // Call the password post-lock hook, if defined.
       if ($ldap->success()) {
         $userClass = new user($dn);
-        $errors = $userClass->callHook('POST'.$mode, [], $ret);
+        $errors = $userClass->callHook('POST'.$mode, array(), $ret);
         if (!empty($errors)) {
           msg_dialog::displayChecks($errors);
         }
@@ -221,7 +221,7 @@ class passwordMethod
           if ($test->is_available()) {
             $plugs = $test->get_hash_name();
             if (!is_array($plugs)) {
-              $plugs = [$plugs];
+              $plugs = array($plugs);
             }
 
             foreach ($plugs as $plugname) {
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 52531b460..2bc9c961e 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -44,15 +44,15 @@ function htmlunescape ($html)
 
 function html_trace($errstr = "")
 {
-  static $hideArgs = [
-    'ldap_init'         => [3],
-    'ldap_login_user'   => [1],
-    'change_password'   => [1],
-    'cred_decrypt'      => [0,1],
-    'LDAP/__construct'  => [1],
-  ];
+  static $hideArgs = array(
+    'ldap_init'         => array(3),
+    'ldap_login_user'   => array(1),
+    'change_password'   => array(1),
+    'cred_decrypt'      => array(0,1),
+    'LDAP/__construct'  => array(1),
+  );
   if (!function_exists('debug_backtrace')) {
-    return  ['', ''];
+    return array ('', '');
   }
   $trace = array_slice(debug_backtrace(), 1);
 
@@ -104,7 +104,7 @@ function html_trace($errstr = "")
       if (isset($hideArgs[$func])) {
         $hideArgsIndexes = $hideArgs[$func];
       } else {
-        $hideArgsIndexes = [];
+        $hideArgsIndexes = array();
       }
       $f = function ($index, $arg) use(&$f, $hideArgsIndexes) {
         static $i = 0;
@@ -161,7 +161,7 @@ function html_trace($errstr = "")
   $return_html    .= "</table>";
   $return_mailto  .= rawurlencode("=== /Trace ===");
 
-  return [$return_html, $return_mailto];
+  return array($return_html, $return_mailto);
 }
 
 /*!
@@ -207,7 +207,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
     /* Write to syslog */
     if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-      logging::log('view', 'error', '', [], "PHP error: $errstr ($errfile, line $errline)");
+      logging::log('view', 'error', '', array(), "PHP error: $errstr ($errfile, line $errline)");
     }
 
     set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
@@ -216,7 +216,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
   /* Send all errors to logging class, except "Ldap : No such object" messages*/
   if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-    logging::log('debug', 'all', $errfile, [], 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
+    logging::log('debug', 'all', $errfile, array(), 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
   }
 
   /* Create header as needed */
@@ -358,8 +358,8 @@ $smarty = new Smarty;
 
 $smarty->template_dir = $BASE_DIR.'/ihtml/';
 $smarty->caching      = FALSE;
-$smarty->assign('css_files', []);
-$smarty->assign('js_files', []);
+$smarty->assign('css_files', array());
+$smarty->assign('js_files', array());
 
 $smarty->php_handling = Smarty::PHP_REMOVE;
 
diff --git a/include/select/class_filterLDAPBlacklist.inc b/include/select/class_filterLDAPBlacklist.inc
index 4603e41b5..6f533ebf7 100644
--- a/include/select/class_filterLDAPBlacklist.inc
+++ b/include/select/class_filterLDAPBlacklist.inc
@@ -57,7 +57,7 @@ class filterLDAPBlacklist {
             if (isset($entry[$attr_name])) {
               $test = $entry[$attr_name];
               if (!is_array($test)) {
-                $test = [$test];
+                $test = array($test);
               }
               if (in_array($match, $test)) {
                 unset($entries[$id]);
diff --git a/include/select/groupSelect/class_groupSelect.inc b/include/select/groupSelect/class_groupSelect.inc
index 5234796a0..d1bc7a529 100644
--- a/include/select/groupSelect/class_groupSelect.inc
+++ b/include/select/groupSelect/class_groupSelect.inc
@@ -23,7 +23,7 @@
  */
 class groupSelect extends simpleSelectManagement
 {
-  protected $objectTypes  = ['group'];
+  protected $objectTypes  = array('group');
   protected $autoFilter   = FALSE;
 
   function __construct()
diff --git a/include/select/objectSelect/class_objectSelect.inc b/include/select/objectSelect/class_objectSelect.inc
index 4c805485f..f76215238 100644
--- a/include/select/objectSelect/class_objectSelect.inc
+++ b/include/select/objectSelect/class_objectSelect.inc
@@ -23,12 +23,12 @@
  */
 class objectSelect extends userSelect
 {
-  protected $objectTypes = [
+  protected $objectTypes = array(
     'user', 'ogroup',
     'application',
     'terminal', 'workstation', 'server', 'printer', 'phone',
     'simpleSecurityObject'
-  ];
-  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
+  );
+  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
 }
 ?>
diff --git a/include/select/systemSelect/class_systemSelect.inc b/include/select/systemSelect/class_systemSelect.inc
index 3c65d2264..0ba3bf30e 100644
--- a/include/select/systemSelect/class_systemSelect.inc
+++ b/include/select/systemSelect/class_systemSelect.inc
@@ -23,9 +23,9 @@
  */
 class systemSelect extends simpleSelectManagement
 {
-  protected $autoFilterAttributes = ['dn', 'cn', 'ipHostNumber', 'macAddress'];
-  protected $objectTypes = [
+  protected $autoFilterAttributes = array('dn', 'cn', 'ipHostNumber', 'macAddress');
+  protected $objectTypes = array(
     'terminal', 'workstation', 'server'
-  ];
+  );
 }
 ?>
diff --git a/include/select/userGroupSelect/class_userGroupSelect.inc b/include/select/userGroupSelect/class_userGroupSelect.inc
index 4052d7a5e..70667205b 100644
--- a/include/select/userGroupSelect/class_userGroupSelect.inc
+++ b/include/select/userGroupSelect/class_userGroupSelect.inc
@@ -23,13 +23,13 @@
  */
 class userGroupSelect extends userSelect
 {
-  protected $objectTypes = ['user', 'group'];
-  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
+  protected $objectTypes = array('user', 'group');
+  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
 
   function __construct()
   {
     if (class_available('mixedGroup')) {
-      $this->objectTypes = ['user', 'ogroup'];
+      $this->objectTypes = array('user', 'ogroup');
     }
     parent::__construct();
   }
@@ -40,6 +40,6 @@ class userGroupSelect extends userSelect
  */
 class userGroupRoleSelect extends userGroupSelect
 {
-  protected $objectTypes = ['user', 'group', 'role', 'ogroup'];
+  protected $objectTypes = array('user', 'group', 'role', 'ogroup');
 }
 ?>
diff --git a/include/select/userSelect/class_userSelect.inc b/include/select/userSelect/class_userSelect.inc
index 2d9640afa..536f9adb7 100644
--- a/include/select/userSelect/class_userSelect.inc
+++ b/include/select/userSelect/class_userSelect.inc
@@ -23,22 +23,22 @@
  */
 class userSelect extends simpleSelectManagement
 {
-  protected $objectTypes          = ['user'];
-  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
+  protected $objectTypes          = array('user');
+  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c||||';
-    $columns = [
-       [
+    $columns = array (
+      array (
         'label'         => _('Login'),
         'sortAttribute' => 'uid',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,uid)}',
         'export'        => 'true',
-       ],
-    ];
+      ),
+    );
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index 2ee2c567d..668edb68c 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -155,9 +155,9 @@ class BaseSelectorAttribute extends Attribute
     if ($this->disabled) {
       $display = $this->renderInputField(
         'text', '',
-        [
+        array(
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        ]
+        )
       );
     } else {
       $display = '{literal}'.$this->baseSelector->render().'{/literal}';
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index e9a8f6f6c..4930296bb 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -93,7 +93,7 @@ class BooleanAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = ($this->value ? ['checked' => 'checked'] : []);
+    $attributes = ($this->value ? array('checked' => 'checked') : array());
     if ($this->submitForm) {
       $js       = 'document.mainform.submit();';
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -174,7 +174,7 @@ class ObjectClassBooleanAttribute extends BooleanAttribute
     if (is_array($objectclasses)) {
       $this->objectclasses = $objectclasses;
     } else {
-      $this->objectclasses = [$objectclasses];
+      $this->objectclasses = array($objectclasses);
     }
     parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->setInLdap(FALSE);
diff --git a/include/simpleplugin/attributes/class_CompositeAttribute.inc b/include/simpleplugin/attributes/class_CompositeAttribute.inc
index d24033911..b21936fba 100644
--- a/include/simpleplugin/attributes/class_CompositeAttribute.inc
+++ b/include/simpleplugin/attributes/class_CompositeAttribute.inc
@@ -95,7 +95,7 @@ class CompositeAttribute extends Attribute
     $res = preg_match($this->readFormat, $value, $m);
     if ($res === 1) {
       $m = array_slice($m, 1);
-      $values = [];
+      $values = array();
       foreach (array_keys($this->attributes) as $name) {
         if (isset($m[$name])) {
           $values[] = $m[$name];
@@ -250,7 +250,7 @@ class CompositeAttribute extends Attribute
       }
     } else {
       parent::serializeAttribute($attributes, $form);
-      $subattributes = [];
+      $subattributes = array();
       foreach ($this->attributes as &$attribute) {
         $attribute->setDisabled($this->disabled);
         $attribute->serializeAttribute($subattributes, $form);
@@ -276,7 +276,7 @@ class CompositeAttribute extends Attribute
 
   public function htmlIds()
   {
-    $ret = [];
+    $ret = array();
     foreach ($this->attributes as &$attribute) {
       $ret = array_merge($ret, $attribute->htmlIds());
     }
diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 5e104bcf6..3f573223f 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -143,10 +143,10 @@ class DateAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      [
+      array(
         'value' => '{literal}'.$this->getValue().'{/literal}',
         'class' => 'date'
-      ]
+      )
     );
     $display  .= '{if $'.$this->getAcl().'ACL|regex_replace:"/[cdmr]/":"" == "w"}'.
         '<script type="text/javascript">
@@ -195,7 +195,7 @@ class TimeHisAttribute extends CompositeAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = [
+    $attributes = array(
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -211,7 +211,7 @@ class TimeHisAttribute extends CompositeAttribute
         $ldapName.'_seconds', TRUE,
         0, 59, 0
       )
-    ];
+    );
     parent::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)(\d\d)$/', '%02d%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -269,7 +269,7 @@ class TimeHiAttribute extends TimeHisAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = [
+    $attributes = array(
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -280,7 +280,7 @@ class TimeHiAttribute extends TimeHisAttribute
         $ldapName.'_minutes', TRUE,
         0, 59, 0
       )
-    ];
+    );
     CompositeAttribute::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)$/', '%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -293,7 +293,7 @@ class DateTimeAttribute extends CompositeAttribute
 {
   function __construct($label, $description, $ldapName, $required, $acl = '')
   {
-    $attributes = [
+    $attributes = array(
       new DateAttribute(
         _('Date'), '',
         $ldapName.'_date', $required,
@@ -305,7 +305,7 @@ class DateTimeAttribute extends CompositeAttribute
         $ldapName.'_time', $required,
         FALSE
       )
-    ];
+    );
     parent::__construct($description, $ldapName, $attributes, '/^(\d{8})(\d{6})$/', '%s%s', $acl, $label);
   }
 }
diff --git a/include/simpleplugin/attributes/class_FileAttribute.inc b/include/simpleplugin/attributes/class_FileAttribute.inc
index 54ff0aa08..a9475f781 100644
--- a/include/simpleplugin/attributes/class_FileAttribute.inc
+++ b/include/simpleplugin/attributes/class_FileAttribute.inc
@@ -162,17 +162,17 @@ class FileDownloadAttribute extends FileAttribute
     $display = '';
     if ($this->upload) {
       $display  .= $this->renderInputField('file', $id);
-      $display  .= $this->renderInputField('submit', 'upload'.$id, ['value' => _('Upload')]);
+      $display  .= $this->renderInputField('submit', 'upload'.$id, array('value' => _('Upload')));
     }
     if ($this->download) {
       $display  .= $this->renderInputField(
         'image', 'download'.$id,
-        [
+        array(
           'title' => _('Download'),
           'alt'   => _('Download'),
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-save&amp;size=16',
-        ]
+        )
       );
     }
     return $this->renderAcl($display);
@@ -181,7 +181,7 @@ class FileDownloadAttribute extends FileAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = [];
+    $ids  = array();
     if ($this->download) {
       $ids[] = 'download'.$id;
     }
@@ -250,7 +250,7 @@ class FileTextAreaAttribute extends FileDownloadAttribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars */
-    return str_replace(["\r\n", "\r"], "\n", $value);
+    return str_replace(array("\r\n", "\r"), "\n", $value);
   }
 
   function renderFormInput ()
@@ -412,22 +412,22 @@ class ImageAttribute extends FileAttribute
     $display  .= $this->renderInputField('file', $id);
     $display .= $this->renderInputField(
       'image', $id.'_upload',
-      [
+      array(
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=upload&amp;size=16',
         'title' => _('Upload'),
         'alt'   => _('Upload')
-      ]
+      )
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        [
+        array(
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        ]
+        )
       );
     }
     if (($this->getValue() == '') && ($this->placeholder != '')) {
@@ -442,7 +442,7 @@ class ImageAttribute extends FileAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return [$id.'_img',$id,'upload'.$id];
+    return array($id.'_img',$id,'upload'.$id);
   }
 
   /*! \brief Fill LDAP value in the attrs array
@@ -458,7 +458,7 @@ class ImageAttribute extends FileAttribute
         }
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = [];
+        $attrs[$this->getLdapName()] = array();
       }
     }
   }
diff --git a/include/simpleplugin/attributes/class_IntAttribute.inc b/include/simpleplugin/attributes/class_IntAttribute.inc
index 9ab048fca..fe851ad2a 100644
--- a/include/simpleplugin/attributes/class_IntAttribute.inc
+++ b/include/simpleplugin/attributes/class_IntAttribute.inc
@@ -92,9 +92,9 @@ class IntAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = [
+    $attributes = array(
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    ];
+    );
     if ($this->min !== FALSE) {
       $attributes['min'] = $this->min;
     }
@@ -117,9 +117,9 @@ class IntAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      [
+      array(
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-      ]
+      )
     );
     return $this->renderAcl($display);
   }
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index c08350d28..8b63d683c 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -24,23 +24,23 @@
 class phoneSelect extends simpleSelectManagement
 {
   protected $multiSelect          = FALSE;
-  protected $autoFilterAttributes = ['dn','cn','ipHostNumber','macAddress','telephoneNumber'];
-  protected $objectTypes          = ['phone'];
+  protected $autoFilterAttributes = array('dn','cn','ipHostNumber','macAddress','telephoneNumber');
+  protected $objectTypes          = array('phone');
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     /* Add column for phone number */
     $data['list']['table']['layout'] .= '|';
-    $columns = [
-       [
+    $columns = array (
+      array (
         'label'         => _('Number'),
         'sortAttribute' => 'telephoneNumber',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,telephoneNumber)}',
         'export'        => 'true',
-       ],
-    ];
+      ),
+    );
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
@@ -58,7 +58,7 @@ class phoneSelect extends simpleSelectManagement
  */
 class mobilePhoneSelect extends phoneSelect
 {
-  protected $objectTypes = ['mobilePhone'];
+  protected $objectTypes = array('mobilePhone');
 }
 
 /*!
@@ -66,7 +66,7 @@ class mobilePhoneSelect extends phoneSelect
  */
 class anyPhoneSelect extends phoneSelect
 {
-  protected $objectTypes = ['phone','mobilePhone'];
+  protected $objectTypes = array('phone','mobilePhone');
 }
 
 /*!
@@ -138,12 +138,12 @@ class PhoneNumberButtonAttribute extends PhoneNumberAttribute
     if ($this->type !== FALSE) {
       $display .= $this->renderAcl($this->renderInputField(
         'image', $id.'_edit',
-        [
+        array(
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit')
-        ]
+        )
       ));
     }
     return $display;
diff --git a/include/simpleplugin/attributes/class_SelectAttribute.inc b/include/simpleplugin/attributes/class_SelectAttribute.inc
index b3ac11de3..58eeb1f00 100644
--- a/include/simpleplugin/attributes/class_SelectAttribute.inc
+++ b/include/simpleplugin/attributes/class_SelectAttribute.inc
@@ -43,7 +43,7 @@ class SelectAttribute extends Attribute
    *  \param array $outputs The labels corresponding to the choices, leave to NULL if you want to display the choices themselves
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = [], $defaultValue = "", $outputs = NULL, $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = array(), $defaultValue = "", $outputs = NULL, $acl = "")
   {
     if (!in_array($defaultValue, $choices, TRUE) && isset($choices[0])) {
       $defaultValue = $choices[0];
@@ -90,7 +90,7 @@ class SelectAttribute extends Attribute
    */
   function setDisplayChoices ($values)
   {
-    $this->outputs = [];
+    $this->outputs = array();
     $values = array_values($values);
     $i = 0;
     foreach ($this->choices as $choice) {
@@ -234,7 +234,7 @@ class ObjectSelectAttribute extends SelectAttribute
 
   function __construct ($label, $description, $ldapName, $required, $objectType, $objectAttrs = NULL, $objectFilter = '', $acl = "")
   {
-    parent::__construct($label, $description, $ldapName, $required, [], "", NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, array(), "", NULL, $acl);
     $this->objectType   = $objectType;
     $this->objectAttrs  = $objectAttrs;
     $this->objectFilter = $objectFilter;
diff --git a/include/simpleplugin/attributes/class_SetAttribute.inc b/include/simpleplugin/attributes/class_SetAttribute.inc
index d206b8d1c..0101290fc 100644
--- a/include/simpleplugin/attributes/class_SetAttribute.inc
+++ b/include/simpleplugin/attributes/class_SetAttribute.inc
@@ -35,7 +35,7 @@ class SetAttribute extends Attribute
    *  \param array $values The default values
    *  \param boolean $valueUnicity Should the value unicity be checked
    */
-  function __construct ($attribute, $values = [], $valueUnicity = TRUE)
+  function __construct ($attribute, $values = array(), $valueUnicity = TRUE)
   {
     parent::__construct(
       $attribute->getLabel(),     $attribute->getDescription(),
@@ -60,7 +60,7 @@ class SetAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = [];
+      $this->value = array();
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -222,20 +222,20 @@ class SetAttribute extends Attribute
       if ($this->linearRendering || $readOnly) {
         parent::renderAttribute($attributes, $readOnly);
       } else {
-        $attributes[$this->getLdapName()] = [
+        $attributes[$this->getLdapName()] = array(
           'htmlid'      => $this->getForHtmlId(),
           'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
           'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
           'input'       => $this->renderAcl($this->renderOnlyFormInput()),
-        ];
+        );
         $this->handleEditingValue();
         $this->attribute->renderAttribute($attributes, $readOnly);
-        $attributes[$this->getLdapName().'_buttons'] = [
+        $attributes[$this->getLdapName().'_buttons'] = array(
           'htmlid'      => 'add'.$this->getHtmlId(),
           'label'       => '',
           'description' => '',
           'input'       => $this->renderAcl($this->renderButtons()),
-        ];
+        );
       }
     }
   }
@@ -249,7 +249,7 @@ class SetAttribute extends Attribute
     if ($form) {
       return;
     } else {
-      $subattributes = [];
+      $subattributes = array();
       $this->attribute->setDisabled($this->disabled);
       $this->attribute->serializeAttribute($subattributes, $form);
       $attributes[$this->getLdapName()]['attributes']       = $subattributes;
@@ -270,8 +270,8 @@ class SetAttribute extends Attribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons  = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
-    $buttons .= $this->renderInputField('submit', 'del'.$id, ['value' => '{msgPool type=delButton}']);
+    $buttons  = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
+    $buttons .= $this->renderInputField('submit', 'del'.$id, array('value' => '{msgPool type=delButton}'));
     return $buttons;
   }
 
@@ -283,7 +283,7 @@ class SetAttribute extends Attribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array_merge(['add'.$id,'del'.$id,'row'.$id], $this->attribute->htmlIds());
+    return array_merge(array('add'.$id,'del'.$id,'row'.$id), $this->attribute->htmlIds());
   }
 
   /*! \brief Set the parent plugin for this attribute
@@ -300,10 +300,10 @@ class SetAttribute extends Attribute
 
   function getArrayValues()
   {
-    $result = [];
+    $result = array();
     foreach ($this->value as $value) {
       $this->attribute->setValue($value);
-      $row = [];
+      $row = array();
       foreach ($this->attribute->getArrayValue() as $val) {
         $row[] = $val;
       }
@@ -371,7 +371,7 @@ class OrderedArrayAttribute extends SetAttribute
    *  \param array $values The default values
    *  \param boolean $edit_enabled Can the values be edited
    */
-  function __construct ($attribute, $order = TRUE, $values = [], $edit_enabled = FALSE)
+  function __construct ($attribute, $order = TRUE, $values = array(), $edit_enabled = FALSE)
   {
     parent::__construct($attribute, $values);
     $this->order        = $order;
@@ -408,7 +408,7 @@ class OrderedArrayAttribute extends SetAttribute
 
   function computeLdapValue ()
   {
-    $ldapValue = [];
+    $ldapValue = array();
     foreach ($this->value as $key => $value) {
       $ldapValue[] = $this->writeValue($key, $value);
     }
@@ -418,7 +418,7 @@ class OrderedArrayAttribute extends SetAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = [];
+      $this->value = array();
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $value = $this->readValue($attrs[$this->getLdapName()][$i]);
         if (is_array($value)) {
@@ -441,12 +441,12 @@ class OrderedArrayAttribute extends SetAttribute
     $div->SetHeight($this->height);
     $div->SetHeaders($this->headers);
     foreach ($this->value as $key => $value) {
-      $fields = [];
+      $fields = array();
       foreach ($this->getAttributeArrayValue($key, $value) as $field) {
         if (is_array($field)) {
           $fields[] = $field;
         } else {
-          $fields[] = ['string' => $field];
+          $fields[] = array('string' => $field);
         }
       }
       if (empty($fields)) {
@@ -455,7 +455,7 @@ class OrderedArrayAttribute extends SetAttribute
 
       list ($img, $nbicons) = $this->genRowIcons($key, $value);
 
-      $fields[] = ["html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"'];
+      $fields[] = array("html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"');
       $div->AddEntry($fields);
     }
     $smarty->assign("div_$id", $div->DrawList());
@@ -474,12 +474,12 @@ class OrderedArrayAttribute extends SetAttribute
       if ($key != 0) {
         $img .= $this->renderInputField(
           'image', $id.'_up_'.$key,
-          [
+          array(
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-descending&amp;size=16',
             'title' => _('Sort up'),
             'alt'   => _('Sort up'),
             'class' => 'center'
-          ]
+          )
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -487,12 +487,12 @@ class OrderedArrayAttribute extends SetAttribute
       if (($key + 1) < count($this->value)) {
         $img .= $this->renderInputField(
           'image', $id.'_down_'.$key,
-          [
+          array(
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-ascending&amp;size=16',
             'title' => _('Sort down'),
             'alt'   => _('Sort down'),
             'class' => 'center'
-          ]
+          )
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -502,25 +502,25 @@ class OrderedArrayAttribute extends SetAttribute
       $nbicons++;
       $img .= $this->renderInputField(
         'image', $id.'_edit_'.$key,
-        [
+        array(
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit'),
           'class' => 'center'
-        ]
+        )
       );
     }
     $img .= $this->renderInputField(
       'image', $id.'_del_'.$key,
-      [
+      array(
         'src'   => 'geticon.php?context=actions&amp;icon=edit-delete&amp;size=16',
         'title' => _('Delete'),
         'alt'   => _('Delete'),
         'class' => 'center'
-      ]
+      )
     );
 
-    return  [$img, $nbicons];
+    return array ($img, $nbicons);
   }
 
   protected function getAttributeArrayValue($key, $value)
@@ -627,7 +627,7 @@ class OrderedArrayAttribute extends SetAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = ['add'.$id];
+    $ids  = array('add'.$id);
     if ($this->attribute !== FALSE) {
       $ids  = array_merge($ids, $this->attribute->htmlIds());
     }
@@ -649,7 +649,7 @@ class OrderedArrayAttribute extends SetAttribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
+    $buttons = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
     return $buttons;
   }
 }
@@ -662,9 +662,9 @@ class SubNodesAttribute extends OrderedArrayAttribute
   protected $objectClass;
   protected $objectClasses;
 
-  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = [], $edit_enabled = FALSE, $acl = "")
+  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = array(), $edit_enabled = FALSE, $acl = "")
   {
-    $attributes_keys = [];
+    $attributes_keys = array();
     foreach ($attributes as $attribute) {
       $attributes_keys[$attribute->getLdapName()] = $attribute;
       $attributes_keys[$attribute->getLdapName()]->htmlid_prefix = $ldapName.'_';
@@ -681,7 +681,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
       $this->objectClasses  = $objectClass;
     } else {
       $this->objectClass    = $objectClass;
-      $this->objectClasses  = [$objectClass];
+      $this->objectClasses  = array($objectClass);
     }
   }
 
@@ -692,8 +692,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
     if (isset($attrs['dn'])) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search('objectClass='.$this->objectClass, ['*'], 'one');
-      $this->value = [];
+      $ldap->search('objectClass='.$this->objectClass, array('*'), 'one');
+      $this->value = array();
       while ($subattrs = $ldap->fetch()) {
         $this->attribute->resetToDefault();
         foreach ($this->attribute->attributes as &$attribute) {
@@ -715,8 +715,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search('objectClass='.$this->objectClass, ['dn'], 'one');
-    $delete = [];
+    $ldap->search('objectClass='.$this->objectClass, array('dn'), 'one');
+    $delete = array();
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -725,7 +725,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
     }
     /* Then add our values */
     foreach ($this->value as $val) {
-      $attrs = ['objectClass' => $this->objectClasses];
+      $attrs = array('objectClass' => $this->objectClasses);
       $this->attribute->setValue($val);
       foreach ($this->attribute->attributes as &$attribute) {
         $attribute->fillLdapValue($attrs);
diff --git a/include/simpleplugin/attributes/class_StringAttribute.inc b/include/simpleplugin/attributes/class_StringAttribute.inc
index 452239369..19906142b 100644
--- a/include/simpleplugin/attributes/class_StringAttribute.inc
+++ b/include/simpleplugin/attributes/class_StringAttribute.inc
@@ -59,9 +59,9 @@ class StringAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = [
+    $attributes = array(
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    ];
+    );
     if (!empty($this->managedAttributes)) {
       $js       = $this->managedAttributesJS();
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -76,7 +76,7 @@ class StringAttribute extends Attribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars in multiline values (mainly useful for textarea) */
-    return str_replace(["\r\n", "\r"], "\n", $value);
+    return str_replace(array("\r\n", "\r"), "\n", $value);
   }
 
   function check ()
@@ -160,10 +160,10 @@ class PasswordAttribute extends StringAttribute
     $id = $this->getHtmlId();
     $display  = $this->renderInputField(
       'password', $id,
-      [
+      array(
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}',
         'autocomplete' => ($this->autocomplete ? 'on' : 'off'),
-      ]
+      )
     );
     if ($this->autocomplete === FALSE) {
       $display = '{literal}<input autocomplete="off" value="foolautocompleteworkaround" type="text" style="display:none;"/>{/literal}'.$display;
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index be4b7a959..45c49ad0f 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -75,12 +75,12 @@ class Attribute
   protected $plugin;
   /* \brief Array of attributes to manage (prefix => value => attribute)
    * Prefix should be 'erase' or 'disable' */
-  protected $managedAttributes = [];
+  protected $managedAttributes = array();
   /* \brief Array of multiple values groups for managed attributes */
-  protected $managedAttributesMultipleValues = [];
+  protected $managedAttributesMultipleValues = array();
 
   /* \bried Array of booleans telling for each managing attributes if he's disabling us */
-  protected $managingAttributesOrders = [];
+  protected $managingAttributesOrders = array();
 
   /*! \brief The constructor of Attribute
    *
@@ -201,7 +201,7 @@ class Attribute
   /* Return the value as an array of values to be displayed in a table columns */
   function getArrayValue ()
   {
-    return [$this->displayValue($this->getValue())];
+    return array($this->displayValue($this->getValue()));
   }
 
   function getLdapName ()
@@ -352,7 +352,7 @@ class Attribute
       $this->managedAttributesMultipleValues = $mAttributes['multiplevalues'];
       unset($mAttributes['multiplevalues']);
     } else {
-      $this->managedAttributesMultipleValues = [];
+      $this->managedAttributesMultipleValues = array();
     }
     $this->managedAttributes = $mAttributes;
     $this->manageAttributes($this->getValue());
@@ -420,7 +420,7 @@ class Attribute
       if ($value !== '') {
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = [];
+        $attrs[$this->getLdapName()] = array();
       }
     }
   }
@@ -440,7 +440,7 @@ class Attribute
           continue;
         }
         foreach ($attributes as $attribute) {
-          $attrs[$attribute] = [];
+          $attrs[$attribute] = array();
         }
       }
     }
@@ -452,11 +452,11 @@ class Attribute
   {
     global $config;
     $value = $this->getValue();
-    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === []))) {
+    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === array()))) {
       return msgPool::required($this->getLabel());
     } elseif (($this->unique !== FALSE) && !$this->disabled) {
       $value = $this->computeLdapValue();
-      if (($value === "") || ($value === [])) {
+      if (($value === "") || ($value === array())) {
         return;
       }
       $ldap = $config->get_ldap_link();
@@ -497,10 +497,10 @@ class Attribute
           $filters[] = $pluginFilter;
         }
       } else {
-        $filters = [$this->uniqueFilter];
+        $filters = array($this->uniqueFilter);
       }
       $filter = '(&'.$filter.implode($filters).')';
-      $ldap->search($filter, [$this->getLdapName()]);
+      $ldap->search($filter, array($this->getLdapName()));
       $branches = array_filter(
         array_map(
           function ($key, $ot)
@@ -588,12 +588,12 @@ class Attribute
       } else {
         $input = $this->renderFormInput();
       }
-      $attributes[$this->getLdapName()] = [
+      $attributes[$this->getLdapName()] = array(
         'htmlid'      => $this->getForHtmlId(),
         'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
         'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
         'input'       => $input,
-      ];
+      );
     }
   }
 
@@ -612,7 +612,7 @@ class Attribute
       }
       /* Avoid empty array */
       $type[] = 'Attribute';
-      $infos = [
+      $infos = array(
         'htmlid'      => $this->getHtmlId(),
         'label'       => $this->getLabel(),
         'required'    => $this->isRequired(),
@@ -621,7 +621,7 @@ class Attribute
         'value'       => $this->getValue(),
         'default'     => $this->defaultValue,
         'type'        => $type,
-      ];
+      );
       if (!$form) {
         $infos['inldap']   = $this->isInLdap();
         $infos['visible']  = $this->visible;
@@ -657,10 +657,10 @@ class Attribute
   function getAclInfo ()
   {
     if (empty($this->acl)) {
-      return [
+      return array(
         'name' => $this->getHtmlId(),
         'desc' => $this->getDescription()
-      ];
+      );
     } else {
       /* If acl is not empty, we use an acl that is not ours, we have no acl to create */
       return FALSE;
@@ -679,7 +679,7 @@ class Attribute
 
   public function htmlIds()
   {
-    return [$this->getHtmlId()];
+    return array($this->getHtmlId());
   }
 
   protected function managedAttributesJS ()
@@ -728,7 +728,7 @@ class Attribute
     return ($this->getValue() == $value);
   }
 
-  protected function renderInputField($type, $name, $attributes = [])
+  protected function renderInputField($type, $name, $attributes = array())
   {
     $input  = '<input type="'.$type.'" '.
               'name="'.$name.'" id="'.$name.'"'.
@@ -773,7 +773,7 @@ class HiddenArrayAttribute extends HiddenAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = [];
+      $this->value = array();
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -853,7 +853,7 @@ class DisplayLDAPArrayAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = [];
+      $this->value = array();
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index 6f0dadf7a..9188182b8 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -176,7 +176,7 @@ class DialogAttribute extends SetAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->attribute = FALSE;
@@ -217,7 +217,7 @@ class DialogAttribute extends SetAttribute
 
   function getFilterWhiteList ()
   {
-    return [];
+    return array();
   }
 
   function loadPostValue ()
@@ -245,21 +245,21 @@ class DialogAttribute extends SetAttribute
     if ($this->isTemplate()) {
       $buttons  .= $this->renderInputField(
         'text', $id,
-        ['value' => $this->editingValue]
+        array('value' => $this->editingValue)
       );
       $buttons  .= $this->renderInputField(
         'submit', 'add'.$id,
-        ['value' => '{msgPool type=addButton}']
+        array('value' => '{msgPool type=addButton}')
       );
       $dialogButtonValue = _('Add (dialog)');
     }
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      ['value' => $dialogButtonValue]
+      array('value' => $dialogButtonValue)
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      ['value' => '{msgPool type=delButton}']
+      array('value' => '{msgPool type=delButton}')
     );
     return $buttons;
   }
@@ -267,7 +267,7 @@ class DialogAttribute extends SetAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    $ids = ['add'.$id.'_dialog','del'.$id,'row'.$id];
+    $ids = array('add'.$id.'_dialog','del'.$id,'row'.$id);
     if ($this->isTemplate()) {
       $ids[] = $id;
       $ids[] = 'add'.$id;
@@ -283,7 +283,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 {
   protected $dialogClass;
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = TRUE;
@@ -297,7 +297,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 
   function getFilterWhiteList ()
   {
-    return [];
+    return array();
   }
 
   function loadPostValue ()
@@ -333,7 +333,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
     $id = $this->getHtmlId();
     return $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      ['value' => '{msgPool type=addButton}']
+      array('value' => '{msgPool type=addButton}')
     );
   }
 
@@ -356,11 +356,11 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
  */
 class GenericDialogAttribute extends DialogAttribute
 {
-  protected $displays     = [];
+  protected $displays     = array();
   protected $store_attr   = 'dn';
   protected $display_attr = 'cn';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $store_attr = 'dn', $display_attr = 'cn', $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $store_attr = 'dn', $display_attr = 'cn', $acl = '')
   {
     $this->store_attr   = $store_attr;
     $this->display_attr = $display_attr;
@@ -369,7 +369,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return [$this->store_attr => $this->getValue()];
+    return array($this->store_attr => $this->getValue());
   }
 
   function addValue ($dn, $attrs)
@@ -432,7 +432,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return [$this->display_attr];
+    return array($this->display_attr);
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -503,7 +503,7 @@ class UsersGroupsAttribute extends GenericDialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return ['cn', 'uid', 'objectClass'];
+    return array('cn', 'uid', 'objectClass');
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -546,7 +546,7 @@ class GroupsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass = 'GroupSelectDialog';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
   {
     parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', 'cn', $acl);
   }
@@ -583,14 +583,14 @@ class MailsAttribute extends DialogAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
   {
     SetAttribute::__construct(new MailAttribute($label, $description, $ldapName, $required, "", $acl), $defaultValue);
   }
 
   function getFilterBlackList ()
   {
-    return ['mail' => $this->getValue()];
+    return array('mail' => $this->getValue());
   }
 
   function addValue ($dn, $attrs)
@@ -606,15 +606,15 @@ class MailsAttribute extends DialogAttribute
     $id = $this->getHtmlId();
     $buttons  = $this->renderInputField(
       'submit', 'add'.$id,
-      ['value' => '{msgPool type=addButton}']
+      array('value' => '{msgPool type=addButton}')
     );
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      ['value' => '{msgPool type=addButton} (from list)']
+      array('value' => '{msgPool type=addButton} (from list)')
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      ['value' => '{msgPool type=delButton}']
+      array('value' => '{msgPool type=delButton}')
     );
     return $buttons;
   }
@@ -622,7 +622,7 @@ class MailsAttribute extends DialogAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return ['add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id];
+    return array('add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id);
   }
 }
 
@@ -643,7 +643,7 @@ class SystemsAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return ['cn' => $this->getValue()];
+    return array('cn' => $this->getValue());
   }
 }
 
@@ -670,7 +670,7 @@ class ButtonAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'submit', $id,
-      ['value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}']
+      array('value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}')
     );
     return $this->renderAcl($display);
   }
@@ -716,12 +716,12 @@ class DialogButtonAttribute extends ButtonAttribute
 
   function getFilterBlackList ()
   {
-    return [];
+    return array();
   }
 
   function getFilterWhiteList ()
   {
-    return [];
+    return array();
   }
 }
 
@@ -748,9 +748,9 @@ class UserAttribute extends DialogButtonAttribute
     if ($this->isTemplate()) {
       $display = $this->renderInputField(
         'text', $id,
-        [
+        array(
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        ]
+        )
       );
     } else {
       $display  = '<img src="geticon.php?context=types&amp;icon=user&amp;size=16" alt="user icon" class="center"/>';
@@ -764,22 +764,22 @@ class UserAttribute extends DialogButtonAttribute
     }
     $display .= $this->renderInputField(
       'image', $id.'_dialog',
-      [
+      array(
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
         'title' => _('Edit'),
         'alt'   => _('Edit')
-      ]
+      )
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        [
+        array(
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        ]
+        )
       );
     }
     return $this->renderAcl($display);
@@ -833,7 +833,7 @@ class UserAttribute extends DialogButtonAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = [$id.'_dialog'];
+    $ids  = array($id.'_dialog');
     if ($this->isTemplate()) {
       $ids[] = $id;
     }
@@ -851,7 +851,7 @@ class GenericSimplePluginDialog extends GenericDialog
 {
   protected $initialDialogValue = NULL;
 
-  function __construct($simplePlugin, $attribute, $value = [])
+  function __construct($simplePlugin, $attribute, $value = array())
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass('new');
@@ -895,7 +895,7 @@ class GenericSimplePluginDialog extends GenericDialog
       return $this->dialog->execute().$this->buttons();
     }
 
-    $value = [];
+    $value = array();
     foreach ($this->dialog->attributes as $attr) {
       $value[$attr] = $this->dialog->$attr;
     }
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index 987ab3850..01170c186 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -182,9 +182,9 @@ class CommaListAttribute extends CompositeAttribute
   {
     parent::__construct(
       $attribute->getDescription(), $ldapName,
-      [
+      array(
         $attribute
-      ], '', ''
+      ), '', ''
     );
     $this->sep = $sep;
   }
@@ -192,9 +192,9 @@ class CommaListAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value == '') {
-      return [[]];
+      return array(array());
     } else {
-      return [explode($this->sep, $value)];
+      return array(explode($this->sep, $value));
     }
   }
 
@@ -213,10 +213,10 @@ class UnitIntAttribute extends CompositeAttribute
   function __construct ($label, $description, $ldapName, $required, $units, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
     parent::__construct($description, $ldapName,
-      [
+      array(
         new IntAttribute('', '', $ldapName.'_int', $required, $min, $max, $defaultValue),
         new SelectAttribute('', '', $ldapName.'_select', TRUE, array_keys($units), '', array_values($units)),
-      ], '', '',
+      ), '', '',
       $acl, $label
     );
     $this->setLinearRendering(TRUE);
@@ -226,12 +226,12 @@ class UnitIntAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value === '') {
-      return ['', 0];
+      return array('', 0);
     }
     $choices = $this->attributes[1]->getChoices();
     sort($choices);
     if ($value == 0) {
-      return [$value, $choices[0]];
+      return array($value, $choices[0]);
     }
     /* Find the appropriate unit */
     for (
@@ -239,7 +239,7 @@ class UnitIntAttribute extends CompositeAttribute
       ($value % $choices[$i] != 0) && ($i > 0);
       $i--
     );
-    return [$value / $choices[$i], $choices[$i]];
+    return array($value / $choices[$i], $choices[$i]);
   }
 
   function writeValues($values)
@@ -264,13 +264,13 @@ class BytesSizeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = [
+    $units = array(
       1             => _('B'),
       pow(1024, 1)  => _('KiB'),
       pow(1024, 2)  => _('MiB'),
       pow(1024, 3)  => _('GiB'),
       pow(1024, 4)  => _('TiB'),
-    ];
+    );
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
@@ -282,12 +282,12 @@ class TimeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = [
+    $units = array(
       1     => _('seconds'),
       60    => _('minutes'),
       3600  => _('hours'),
       86400 => _('days'),
-    ];
+    );
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index dc3d03d4e..b6787011f 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -26,15 +26,15 @@
 class multiPlugin extends simplePlugin
 {
   /* attribute list for save action */
-  var $objectclasses  = [];
+  var $objectclasses  = array();
   var $ignore_account = TRUE;
-  var $plugin         = [];
+  var $plugin         = array();
 
   var $tabClass = '';
 
   static function getAttributesInfo ()
   {
-    return [];
+    return array();
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL)
@@ -156,7 +156,7 @@ class multiPlugin extends simplePlugin
   /* Save to LDAP */
   function save()
   {
-    $errors = [];
+    $errors = array();
     /* Save objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -175,7 +175,7 @@ class multiPlugin extends simplePlugin
 
   function remove($fulldelete = FALSE)
   {
-    $errors = [];
+    $errors = array();
     /* Remove objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -188,7 +188,7 @@ class multiPlugin extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template($attrs, $skip = array())
   {
     /* Adapt objects */
     foreach ($this->plugin as &$plug) {
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index a25077180..b372dbfe3 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -132,14 +132,14 @@ class simpleManagement
   // The currently used object(s) (e.g. in edit, removal)
   // $dn is public due to some compatibility problems with class plugin..
   public $dn      = '';
-  protected $dns  = [];
+  protected $dns  = array();
 
   // The last used object(s).
   protected $last_dn  = '';
-  protected $last_dns = [];
+  protected $last_dns = array();
 
   // The common places the displayed objects are stored in. (e.g. array("ou=groups,",".."))
-  protected $storagePoints = [];
+  protected $storagePoints = array();
 
   // The opened object.
   protected $tabObject    = NULL;
@@ -172,14 +172,14 @@ class simpleManagement
   protected $filter   = NULL;
 
   // A list of configured actions/events
-  protected $actions = [];
+  protected $actions = array();
 
   // Some management classes are used in tab groups and needs this
   public $is_template = FALSE;
-  public $attributes  = [];
+  public $attributes  = array();
 
   /* Attributes that child classes should override */
-  protected $objectTypes  = [];
+  protected $objectTypes  = array();
 
   /* Attributes that child classes can override */
   protected $departmentBrowser      = TRUE;
@@ -193,7 +193,7 @@ class simpleManagement
   protected $autoActions      = TRUE;
   protected $skipCpHandler    = FALSE;
 
-  protected $autoFilterAttributes = ['dn', 'cn', 'description'];
+  protected $autoFilterAttributes = array('dn', 'cn', 'description');
 
   protected $headpageClass = "listing";
 
@@ -216,7 +216,7 @@ class simpleManagement
     }
     unset($object);
 
-    $this->storagePoints = [];
+    $this->storagePoints = array();
     foreach ($this->objectTypes as $key => $object) {
       try {
         $i = objects::infos($object);
@@ -286,22 +286,22 @@ class simpleManagement
   {
     if ($this->autoActions) {
       if (static::$skipTemplates) {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [];
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array();
       } else {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [
-          [
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array(
+          array(
             'type'    => 'sub',
             'image'   => 'geticon.php?context=devices&icon=template&size=16',
             'label'   => _('Template'),
-            'action'  => [],
-          ],
-          [
+            'action'  => array(),
+          ),
+          array(
             'type'    => 'sub',
             'image'   => 'geticon.php?context=actions&icon=document-new&size=16',
             'label'   => _('From template'),
-            'action'  => [],
-          ],
-        ];
+            'action'  => array(),
+          ),
+        );
       }
     }
     $this->configureHeadline();
@@ -315,17 +315,17 @@ class simpleManagement
 
       $filterObject = objects::getFilterObject($object);
       $this->headpage->objectTypes[$object] =
-        [
+        array(
           'label'       => $i['name'],
           'category'    => $i['aclCategory'],
           'class'       => $i['mainTab'],
           'image'       => $i['icon'],
           'filter'      => $filterObject,
           'nameAttr'    => $i['nameAttr'],
-        ];
+        );
       if (!static::$skipTemplates) {
         $this->headpage->objectTypes['template_'.$object] =
-          [
+          array(
             'label'       => sprintf(_('%s template'), $i['name']),
             'category'    => $i['aclCategory'],
             'class'       => 'template',
@@ -333,13 +333,13 @@ class simpleManagement
             'filter'      =>
               new ldapFilter(
                 '&',
-                [
+                array(
                   new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
                   fdTemplateFilter($filterObject),
-                ]
+                )
               ),
             'nameAttr'    => $i['nameAttr'],
-          ];
+          );
       }
       $this->headpage->categories[] = $i['aclCategory'];
       if ($this->autoActions) {
@@ -353,30 +353,30 @@ class simpleManagement
             $icon = $infos['plIcon'];
           }
         }
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = [
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = array(
           'name'  => 'new_'.$object,
           'type'  => 'entry',
           'image' => $icon,
           'label' => $i['name'],
           'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-        ];
+        );
         if (!static::$skipTemplates) {
           $this->registerAction('new_template_'.$object, 'newEntryTemplate');
           $this->registerAction('template_apply_'.$object, 'newEntryFromTemplate');
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = [
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = array(
             'name'  => 'new_template_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/template[c]',
-          ];
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = [
+          );
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = array(
             'name'  => 'template_apply_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-          ];
+          );
         }
       }
     }
@@ -426,13 +426,13 @@ class simpleManagement
         $tag    = 'FILTER'.$object;
         $filter .= '$'.$tag;
         $i      = objects::infos($object);
-        $this->filter->elements[$tag] = [
+        $this->filter->elements[$tag] = array(
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => [],
+          'unset'   => array(),
           'set'     => preg_replace('/\$/', '\\\$', $i['filter'])
-        ];
+        );
         $this->filter->elementValues[$tag] = TRUE;
 
         if ($i['mainAttr']) {
@@ -445,13 +445,13 @@ class simpleManagement
       if (!static::$skipTemplates) {
         $tag    = 'FILTERTEMPLATE';
         $filter .= '$'.$tag;
-        $this->filter->elements[$tag] = [
+        $this->filter->elements[$tag] = array(
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => [],
+          'unset'   => array(),
           'set'     => '(objectClass=fdTemplate)'
-        ];
+        );
         $this->filter->elementValues[$tag] = TRUE;
 
         $attributes[] = 'fdTemplateField';
@@ -472,7 +472,7 @@ class simpleManagement
   {
     $contents = file_get_contents($file);
     $data     = xml::xml2array($contents, 1);
-    foreach (['departmentBrowser','departmentRootVisible','baseMode','multiSelect'] as $var) {
+    foreach (array('departmentBrowser','departmentRootVisible','baseMode','multiSelect') as $var) {
       $data['list']['definition']["$var"] = ($this->$var ? 'true' : 'false');
     }
     return $data;
@@ -519,18 +519,18 @@ class simpleManagement
   {
     global $config;
     $smarty = get_smarty();
-    $filters = [];
+    $filters = array();
     foreach ($this->objectTypes as $object) {
-      $filters[] = [
+      $filters[] = array(
         'id'    => 'FILTER'.$object,
         'label' => sprintf(_('Show %s'), $config->data['OBJECTS'][$object]['name'])
-      ];
+      );
     }
     if (!static::$skipTemplates) {
-      $filters[] = [
+      $filters[] = array(
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      ];
+      );
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
@@ -545,7 +545,7 @@ class simpleManagement
   function execute()
   {
     // Ensure that html posts and gets are kept even if we see a 'Entry islocked' dialog.
-    $vars = ['/^act$/','/^listing/','/^PID$/'];
+    $vars = array('/^act$/','/^listing/','/^PID$/');
     session::set('LOCK_VARS_TO_USE', $vars);
 
     /* Display the copy & paste dialog, if it is currently open */
@@ -593,7 +593,7 @@ class simpleManagement
 
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = [];
+      $bases = array();
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -757,7 +757,7 @@ class simpleManagement
       return;
     }
     if ($cancel) {
-      $msgs = [];
+      $msgs = array();
     } else {
       $msgs = $this->tabObject->save();
     }
@@ -910,7 +910,7 @@ class simpleManagement
   {
     if (!is_object($this->headpage)) {
       trigger_error("No valid headpage given....!");
-      return [];
+      return array();
     }
     $action = $this->headpage->getAction();
     if (isset($_POST['edit_cancel'])) {
@@ -941,7 +941,7 @@ class simpleManagement
     if (isset($this->actions[$action['action']])) {
       $func = $this->actions[$action['action']];
       if (!isset($action['targets'])) {
-        $action['targets'] = [];
+        $action['targets'] = array();
       }
       return $this->$func($action['action'], $action['targets'], $action);
     }
@@ -977,7 +977,7 @@ class simpleManagement
     $this->last_dn  = $this->dn;
     $this->dn       = "";
     $this->last_dns = $this->dns;
-    $this->dns      = [];
+    $this->dns      = array();
 
     $this->last_tabObject     = $this->tabObject;
     $this->tabObject          = NULL;
@@ -1015,8 +1015,8 @@ class simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $ui;
-    $disallowed = [];
-    $this->dns  = [];
+    $disallowed = array();
+    $this->dns  = array();
 
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal requested!");
 
@@ -1051,7 +1051,7 @@ class simpleManagement
       }
 
       // Add locks
-      $objects = [];
+      $objects = array();
       foreach ($this->dns as $dn) {
         $type   = $this->getType($dn);
         if (preg_match('/^template_/', $type) && !static::$skipTemplates) {
@@ -1062,12 +1062,12 @@ class simpleManagement
           $info = objects::infos($type);
         }
         $entry  = $this->getHeadpage()->getEntry($dn);
-        $objects[] = [
+        $objects[] = array(
           'name'  => $entry[$info['mainAttr']][0],
           'dn'    => $dn,
           'icon'  => $info['icon'],
           'type'  => $info['name']
-        ];
+        );
       }
       add_lock ($this->dns, $ui->dn);
 
@@ -1105,7 +1105,7 @@ class simpleManagement
         del_lock($this->dn);
       } else {
         msg_dialog::display(_('Permission error'), msgPool::permDelete($dn), ERROR_DIALOG);
-        logging::log('security', 'simpleManagement/'.get_class($this), $dn, [], 'Tried to trick deletion.');
+        logging::log('security', 'simpleManagement/'.get_class($this), $dn, array(), 'Tried to trick deletion.');
       }
     }
 
@@ -1155,7 +1155,7 @@ class simpleManagement
     global $config, $ui;
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = [];
+      $bases = array();
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -1196,7 +1196,7 @@ class simpleManagement
    *  @param  array   $target  A list of object dns, which should be affected by this method.
    *  @param  array   $all     A combination of both 'action' and 'target'.
    */
-  function copyPasteHandler($action = '', array $target = [], array $all = [])
+  function copyPasteHandler($action = '', array $target = array(), array $all = array())
   {
     global $ui;
     // Return without any actions while copy&paste handler is disabled.
@@ -1293,7 +1293,7 @@ class simpleManagement
    */
   function getAllDeletedSnapshots()
   {
-    $tmp = [];
+    $tmp = array();
     $snapshotBases = $this->snapHandler->getSnapshotBases();
     if (is_array($snapshotBases)) {
       foreach ($snapshotBases as $base) {
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 19d85044c..40aba6b15 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -35,7 +35,7 @@ class simplePlugin
    *
    * associative array that stores attributeLdapName => reference on object
    */
-  public $attributesAccess = [];
+  public $attributesAccess = array();
 
   /*!
     \brief Mark plugin as account
@@ -87,13 +87,13 @@ class simplePlugin
 
     This should only be used internally.
    */
-  public $attrs = [];
+  public $attrs = array();
 
   /*! \brief The objectClasses set by this tab */
-  protected $objectclasses = [];
+  protected $objectclasses = array();
 
   /*! \brief The state of the attributes when we opened the object */
-  protected $saved_attributes = [];
+  protected $saved_attributes = array();
 
   /*! \brief Do we want a header allowing to able/disable this plugin */
   protected $displayHeader = FALSE;
@@ -112,14 +112,14 @@ class simplePlugin
   protected $needEditMode = FALSE;
 
   /*! \brief Attributes that needs to be initialized before the others */
-  protected $preInitAttributes = [];
+  protected $preInitAttributes = array();
 
   /*! \brief FALSE to disable inheritance. Array like array ('objectClass' => 'attribute') to specify oc of the groups it might be inherited from
    */
   protected $inheritance      = FALSE;
   protected $member_of_group  = FALSE;
   protected $editing_group    = NULL;
-  protected $group_attrs      = [];
+  protected $group_attrs      = array();
 
   /*! \brief Used when the entry is opened as "readonly" due to locks */
   protected $read_only = FALSE;
@@ -163,9 +163,9 @@ class simplePlugin
       $this->ignore_account = TRUE;
     }
 
-    $this->attributesInfo = [];
+    $this->attributesInfo = array();
     foreach ($attributesInfo as $section => $sectionInfo) {
-      $attrs = [];
+      $attrs = array();
       foreach ($sectionInfo['attrs'] as $attr) {
         $name = $attr->getLdapName();
         if (isset($attrs[$name])) {
@@ -339,24 +339,24 @@ class simplePlugin
     if ($this->is_template && $this->mainTab) {
       /* Unshift special section for template infos */
       $this->attributesInfo = array_merge(
-        [
-          '_template' => [
-            'class' => ['fullwidth'],
+        array(
+          '_template' => array(
+            'class' => array('fullwidth'),
             'name'  => _('Template settings'),
-            'attrs' => [
+            'attrs' => array(
               '_template_cn' => new StringAttribute(
                 _('Template name'), _('This is the name of the template'),
                 '_template_cn', TRUE,
                 '', 'template_cn'
               )
-            ]
-          ],
-          '_template_dummy' => [
-            'class' => ['invisible'],
+            )
+          ),
+          '_template_dummy' => array(
+            'class' => array('invisible'),
             'name'  => '_template_dummy',
-            'attrs' => []
-          ]
-        ],
+            'attrs' => array()
+          )
+        ),
         $this->attributesInfo
       );
       $this->attributesAccess['_template_cn'] =& $this->attributesInfo['_template']['attrs']['_template_cn'];
@@ -385,10 +385,10 @@ class simplePlugin
       if (!$this->mainTab) {
         trigger_error('It seems main tab has not been saved.');
       }
-      $template_attrs = [
-        'objectClass'     => ['fdTemplate'],
-        'fdTemplateField' => []
-      ];
+      $template_attrs = array(
+        'objectClass'     => array('fdTemplate'),
+        'fdTemplateField' => array()
+      );
     }
     $template_attrs = templateHandling::fieldsToLDAP($template_attrs, $this->attrs);
     if ($this->mainTab) {
@@ -532,7 +532,7 @@ class simplePlugin
   function get_allowed_bases()
   {
     global $config;
-    $deps = [];
+    $deps = array();
 
     /* Is this a new object ? Or just an edited existing object */
     foreach ($config->idepartments as $dn => $name) {
@@ -596,7 +596,7 @@ class simplePlugin
     $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn));
     if (!$ldap->rename_dn($src_dn, $dst_dn)) {
       logging::log('debug', 'Ldap Protocol v3 implementation error, ldap_rename failed.',
-        "FROM: $src_dn  -- TO: $dst_dn", [], $ldap->get_error());
+        "FROM: $src_dn  -- TO: $dst_dn", array(), $ldap->get_error());
       @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, "Rename failed FROM: $src_dn  -- TO:  $dst_dn",
         'Ldap Protocol v3 implementation error. Error:'.$ldap->get_error());
       return $ldap->get_error();
@@ -605,13 +605,13 @@ class simplePlugin
     /* Update userinfo if necessary */
     if (preg_match('/'.preg_quote($src_dn, '/').'$/i', $ui->dn)) {
       $ui_dn = preg_replace('/'.preg_quote($src_dn, '/').'$/i', $dst_dn, $ui->dn);
-      logging::log('view', 'acl/'.get_class($this), $this->dn, [], 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
+      logging::log('view', 'acl/'.get_class($this), $this->dn, array(), 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
       $ui->dn = $ui_dn;
     }
 
     /* Check if departments were moved. If so, force the reload of config->departments */
     $ldap->cd($dst_dn);
-    $ldap->search('(objectClass=gosaDepartment)', ['dn']);
+    $ldap->search('(objectClass=gosaDepartment)', array('dn'));
     if ($ldap->count()) {
       $config->get_departments();
       $config->make_idepartments();
@@ -624,7 +624,7 @@ class simplePlugin
 
   function getRequiredAttributes()
   {
-    $tmp = [];
+    $tmp = array();
     foreach ($this->attributesAccess as $attr) {
       if ($attr->isRequired()) {
         $tmp[] = $attr->getLdapName();
@@ -658,10 +658,10 @@ class simplePlugin
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "execute");
 
     /* Reset Lock message POST/GET check array, to prevent preg_match errors */
-    session::set('LOCK_VARS_TO_USE', []);
-    session::set('LOCK_VARS_USED_GET', []);
-    session::set('LOCK_VARS_USED_POST', []);
-    session::set('LOCK_VARS_USED_REQUEST', []);
+    session::set('LOCK_VARS_TO_USE', array());
+    session::set('LOCK_VARS_USED_GET', array());
+    session::set('LOCK_VARS_USED_POST', array());
+    session::set('LOCK_VARS_USED_REQUEST', array());
 
     $this->displayPlugin  = TRUE;
     $this->header         = "";
@@ -721,7 +721,7 @@ class simplePlugin
     $plInfo   = pluglist::pluginInfos(get_class($this));
     $disabled = $this->acl_skip_write();
     if ($this->is_account) {
-      $depends = [];
+      $depends = array();
       if (isset($plInfo['plDepending'])) {
         foreach ($plInfo['plDepending'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -735,8 +735,8 @@ class simplePlugin
       $buttonText = msgPool::removeFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresEnabled($plInfo['plShortName'], $depends);
     } else {
-      $depends    = [];
-      $conflicts  = [];
+      $depends    = array();
+      $conflicts  = array();
       if (isset($plInfo['plDepends'])) {
         foreach ($plInfo['plDepends'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -760,7 +760,7 @@ class simplePlugin
       $buttonText = msgPool::addFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresDisabled($plInfo['plShortName'], $depends, $conflicts);
     }
-    return [$disabled,$buttonText,$text];
+    return array($disabled,$buttonText,$text);
   }
 
   /*!
@@ -826,7 +826,7 @@ class simplePlugin
       }
     }
 
-    $sections = [];
+    $sections = array();
     foreach ($this->attributesInfo as $section => $sectionInfo) {
       $legend = $sectionInfo['name'];
       if (isset($sectionInfo['icon'])) {
@@ -842,7 +842,7 @@ class simplePlugin
       } else {
         $smarty->assign("sectionClasses", '');
       }
-      $attributes = [];
+      $attributes = array();
       foreach ($sectionInfo['attrs'] as $attr) {
         if ($attr->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -970,18 +970,18 @@ class simplePlugin
   function remove($fulldelete = FALSE)
   {
     if (!$this->initially_was_account) {
-      return [];
+      return array();
     }
 
     if (!$fulldelete && !$this->acl_is_removeable()) {
       trigger_error('remove was called on a tab without enough ACL rights');
-      return [];
+      return array();
     }
 
     $this->prepare_remove();
     if ($this->is_template && (!defined('_OLD_TEMPLATES_') || !_OLD_TEMPLATES_)) {
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = [];
+      $this->saved_attributes = array();
     }
     /* Pre hooks */
     $errors = $this->pre_remove();
@@ -993,14 +993,14 @@ class simplePlugin
       return $errors;
     }
     $this->post_remove();
-    return [];
+    return array();
   }
 
   /* Remove FusionDirectory attributes */
   protected function prepare_remove ()
   {
     global $config;
-    $this->attrs = [];
+    $this->attrs = array();
 
     if (!$this->mainTab) {
       /* include global link_info */
@@ -1009,7 +1009,7 @@ class simplePlugin
       /* Get current objectClasses in order to add the required ones */
       $ldap->cat($this->dn);
       $tmp  = $ldap->fetch ();
-      $oc   = [];
+      $oc   = array();
       if ($this->is_template) {
         if (isset($tmp['fdTemplateField'])) {
           foreach ($tmp['fdTemplateField'] as $tpl_field) {
@@ -1030,7 +1030,7 @@ class simplePlugin
 
       /* Unset attributes from entry */
       foreach ($this->attributes as $val) {
-        $this->attrs["$val"] = [];
+        $this->attrs["$val"] = array();
       }
     }
   }
@@ -1056,9 +1056,9 @@ class simplePlugin
     $this->ldap_error = $ldap->get_error();
 
     if ($ldap->success()) {
-      return [];
+      return array();
     } else {
-      return [msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class())];
+      return array(msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class()));
     }
   }
 
@@ -1211,11 +1211,11 @@ class simplePlugin
         return $errors;
       }
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = [];
+      $this->saved_attributes = array();
     }
     $this->cleanup();
     if (!$this->shouldSave()) {
-      return []; /* Nothing to do here */
+      return array(); /* Nothing to do here */
     }
     /* Pre hooks */
     $errors = $this->pre_save();
@@ -1230,7 +1230,7 @@ class simplePlugin
     $this->prepareNextCleanup();
     /* Post hooks and logging */
     $this->post_save();
-    return [];
+    return array();
   }
 
   protected function shouldSave()
@@ -1256,13 +1256,13 @@ class simplePlugin
     $this->entryCSN = '';
 
     /* Start with empty array */
-    $this->attrs = [];
+    $this->attrs = array();
 
     /* Get current objectClasses in order to add the required ones */
-    $ldap->cat($this->dn, ['fdTemplateField', 'objectClass']);
+    $ldap->cat($this->dn, array('fdTemplateField', 'objectClass'));
 
     $tmp  = $ldap->fetch();
-    $oc   = [];
+    $oc   = array();
 
     if ($this->is_template) {
       if (isset($tmp['fdTemplateField'])) {
@@ -1294,7 +1294,7 @@ class simplePlugin
       }
     }
 
-    return [];
+    return array();
   }
 
   protected function pre_save ()
@@ -1313,17 +1313,17 @@ class simplePlugin
 
     /* Check if this is a new entry ... add/modify */
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, ["objectClass"]);
+    $ldap->cat($this->dn, array("objectClass"));
     if ($this->mainTab && !$this->initially_was_account) {
       if ($ldap->count()) {
-        return [sprintf(_('There is already an entry with the same dn : %s'), $this->dn)];
+        return array(sprintf(_('There is already an entry with the same dn : %s'), $this->dn));
       }
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
       $action = "add";
     } else {
       if (!$ldap->count()) {
-        return [sprintf(_('The entry %s is not existing'), $this->dn)];
+        return array(sprintf(_('The entry %s is not existing'), $this->dn));
       }
       $action = "modify";
     }
@@ -1334,9 +1334,9 @@ class simplePlugin
 
     /* Check for errors */
     if (!$ldap->success()) {
-      return [msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class())];
+      return array(msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class()));
     }
-    return [];
+    return array();
   }
 
   /*! \brief This function is called after LDAP save to do some post operations and logging
@@ -1367,7 +1367,7 @@ class simplePlugin
    *
    * \param  array  $addAttrs
    */
-  protected function handle_hooks($when, $mode, array $addAttrs = [])
+  protected function handle_hooks($when, $mode, array $addAttrs = array())
   {
     switch ($mode) {
       case 'add':
@@ -1388,7 +1388,7 @@ class simplePlugin
   /*! \brief Forward command execution requests
    *         to the post hook execution method.
    */
-  function handle_post_events($mode, array $addAttrs = [])
+  function handle_post_events($mode, array $addAttrs = array())
   {
     /* Update foreign keys */
     if ($mode == 'remove') {
@@ -1403,7 +1403,7 @@ class simplePlugin
    *  \brief Forward command execution requests
    *         to the pre hook execution method.
    */
-  function handle_pre_events($mode, array $addAttrs = [])
+  function handle_pre_events($mode, array $addAttrs = array())
   {
     global $config;
 
@@ -1412,7 +1412,7 @@ class simplePlugin
       /* Store information if there was subobjects before deletion */
       $ldap = $config->get_ldap_link();
       $ldap->cd($this->dn);
-      $ldap->search('(objectClass=*)', ['dn'], 'one');
+      $ldap->search('(objectClass=*)', array('dn'), 'one');
       $this->hadSubobjects = ($ldap->count() > 0);
     }
     return $this->handle_hooks('PRE', $mode, $addAttrs);
@@ -1423,15 +1423,15 @@ class simplePlugin
    *           Replaces placeholder by class values of this plugin instance.
    *       Allows to a add special replacements.
    */
-  function callHook($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
+  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
   {
     if ($this->is_template) {
-      return [];
+      return array();
     }
     global $config;
 
     $commands = $config->searchHooks(get_class($this), $cmd);
-    $messages = [];
+    $messages = array();
 
     foreach ($commands as $command) {
       // Walk trough attributes list and add the plugins attributes.
@@ -1494,7 +1494,7 @@ class simplePlugin
   function check ()
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'check');
-    $messages = [];
+    $messages = array();
 
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
@@ -1509,7 +1509,7 @@ class simplePlugin
       }
     }
 
-    $error = $this->callHook('CHECK', ['nbCheckErrors' => count($messages)], $returnOutput);
+    $error = $this->callHook('CHECK', array('nbCheckErrors' => count($messages)), $returnOutput);
     if (!empty($error)) {
       $messages = array_merge($messages, $error);
     }
@@ -1552,14 +1552,14 @@ class simplePlugin
     if (preg_match('/^handle_/', $mode)) {
       $olddn    = $param1;
       $newdn    = $param2;
-      $classes  = [get_class($this)];
+      $classes  = array(get_class($this));
       if (($olddn != $newdn) && $this->mainTab) {
         if ($newdn === NULL) {
           $subobjects = $this->hadSubobjects;
         } else {
           $ldap = $config->get_ldap_link();
           $ldap->cd($newdn);
-          $ldap->search('(objectClass=*)', ['dn'], 'one');
+          $ldap->search('(objectClass=*)', array('dn'), 'one');
           $subobjects = ($ldap->count() > 0);
         }
       }
@@ -1567,7 +1567,7 @@ class simplePlugin
       $classes = array_keys($this->parent->by_object);
     }
     // We group by objectType concerned
-    $foreignRefs = [];
+    $foreignRefs = array();
     if ($subobjects) {
       $field = 'dn';
       /* Special treatment for foreign keys on DN when moving an object
@@ -1586,11 +1586,11 @@ class simplePlugin
         }
         if ($class == 'aclAssignment') {
           /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-          $objectTypes = ['ACLASSIGNMENT'];
+          $objectTypes = array('ACLASSIGNMENT');
         } elseif (is_subclass_of($class, 'simpleService')) {
-          $objectTypes = ['SERVER'];
+          $objectTypes = array('SERVER');
         } else {
-          $objectTypes = [];
+          $objectTypes = array();
           $cinfos = pluglist::pluginInfos($class);
           foreach ($cinfos['plObjectType'] as $key => $objectType) {
             if (!is_numeric($key)) {
@@ -1608,13 +1608,13 @@ class simplePlugin
           $newvalue = $newdn;
 
           $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-            [
+            array(
               'tab'       => $classes[0],
               'field'     => $field,
               'oldvalue'  => $oldvalue,
               'newvalue'  => $newvalue,
-            ];
-          $filter = templateHandling::parseString($filtersub, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
+            );
+          $filter = templateHandling::parseString($filtersub, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
           if (!preg_match('/^\(.*\)$/', $filter)) {
             $filter = '('.$filter.')';
           }
@@ -1642,11 +1642,11 @@ class simplePlugin
           $cinfos = pluglist::pluginInfos($class);
           if ($class == 'aclAssignment') {
             /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-            $objectTypes = ['ACLASSIGNMENT'];
+            $objectTypes = array('ACLASSIGNMENT');
           } elseif (is_subclass_of($class, 'simpleService')) {
-            $objectTypes = ['SERVER'];
+            $objectTypes = array('SERVER');
           } else {
-            $objectTypes = [];
+            $objectTypes = array();
             foreach ($cinfos['plObjectType'] as $key => $objectType) {
               if (!is_numeric($key)) {
                 $objectType = $key;
@@ -1671,24 +1671,24 @@ class simplePlugin
                 $newvalue = $this->attributeValue($field);
               }
               $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-                [
+                array(
                   'tab'       => $tabclass,
                   'field'     => $field,
                   'oldvalue'  => $oldvalue,
                   'newvalue'  => $newvalue,
-                ];
-              $filter = templateHandling::parseString($filter, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
+                );
+              $filter = templateHandling::parseString($filter, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
             } elseif ($mode == 'references') {
               $foreignRefs[$objectType]['refs'][$class]['name'] = $cinfos['plShortName'];
 
               $foreignRefs[$objectType]['refs'][$class]['fields'][$ofield][$field] =
-                [
+                array(
                   'tab'     => $tabclass,
                   'field'   => $field,
                   'tabname' => $this->parent->by_name[$tabclass],
                   'value'   => $this->parent->by_object[$tabclass]->$field,
-                ];
-              $filter = templateHandling::parseString($filter, ['oldvalue' => $this->parent->by_object[$tabclass]->$field], 'ldap_escape_f');
+                );
+              $filter = templateHandling::parseString($filter, array('oldvalue' => $this->parent->by_object[$tabclass]->$field), 'ldap_escape_f');
             }
             if (!preg_match('/^\(.*\)$/', $filter)) {
               $filter = '('.$filter.')';
@@ -1701,7 +1701,7 @@ class simplePlugin
 
     /* Back up POST content */
     $SAVED_POST = $_POST;
-    $refs = [];
+    $refs = array();
     // For each concerned objectType
     foreach ($foreignRefs as $objectType => $tabRefs) {
       // Compute filter
@@ -1709,7 +1709,7 @@ class simplePlugin
       $filter = '(|'.join($filters).')';
       // Search objects
       try {
-        $objects = objects::ls($objectType, ['dn' => 'raw'], NULL, $filter);
+        $objects = objects::ls($objectType, array('dn' => 'raw'), NULL, $filter);
       } catch (NonExistingObjectTypeException $e) {
         continue;
       } catch (EmptyFilterException $e) {
@@ -1718,7 +1718,7 @@ class simplePlugin
       // For each object of this type
       foreach (array_keys($objects) as $dn) {
         /* Avoid sending POST to opened objects */
-        $_POST = [];
+        $_POST = array();
         // Build the object
         $tabobject = objects::open($dn, $objectType);
         if (preg_match('/^handle_/', $mode)) {
@@ -1735,12 +1735,12 @@ class simplePlugin
                     $ofield,
                     $field['oldvalue'],
                     $field['newvalue'],
-                    [
+                    array(
                       'CLASS' => $field['tab'],
                       'FIELD' => $field['field'],
                       'MODE'  => preg_replace('/^handle_/', '', $mode),
                       'DN'    => $this->dn,
-                    ]
+                    )
                   );
                 }
               }
@@ -1761,17 +1761,17 @@ class simplePlugin
                   if ($pluginobject->foreignKeyCheck(
                         $ofield,
                         $field['value'],
-                        [
+                        array(
                           'CLASS' => $field['tab'],
                           'FIELD' => $field['field'],
                           'DN'    => $this->dn,
-                        ]
+                        )
                       )) {
                     if (!isset($refs[$dn])) {
-                      $refs[$dn] = [
+                      $refs[$dn] = array(
                         'link'  => '',
-                        'tabs'  => [],
-                      ];
+                        'tabs'  => array(),
+                      );
                       try {
                         $refs[$dn]['link'] = objects::link($dn, $objectType);
                       } catch (FusionDirectoryException $e) {
@@ -1780,10 +1780,10 @@ class simplePlugin
                       }
                     }
                     if (!isset($refs[$dn]['tabs'][$tab])) {
-                      $refs[$dn]['tabs'][$tab] = [
+                      $refs[$dn]['tabs'][$tab] = array(
                         'link'    => '',
-                        'fields'  => [],
-                      ];
+                        'fields'  => array(),
+                      );
                       try {
                         if (is_subclass_of($tab, 'simpleService')) {
                           $refs[$dn]['tabs'][$tab]['link'] = objects::link($dn, $objectType, "service_$tab", sprintf(_('Service "%s"'), $tab_infos['name']));
@@ -1831,7 +1831,7 @@ class simplePlugin
     }
 
     /* Build DN with multiple attributes */
-    $usableAttributes = [];
+    $usableAttributes = array();
     foreach ($this->attributes as $attr) {
       if (($attr != $attribute) && is_scalar($this->$attr) && ($this->$attr != '')) {
         $usableAttributes[] = (string)$attr;
@@ -1861,7 +1861,7 @@ class simplePlugin
    *
    * \param array $skip A new array
    */
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template($attrs, $skip = array())
   {
     $this->attrs = $attrs;
 
@@ -1888,7 +1888,7 @@ class simplePlugin
     $this->dn       = 'new';
     $this->orig_dn  = $this->dn;
 
-    $this->saved_attributes       = [];
+    $this->saved_attributes       = array();
     $this->initially_was_account  = FALSE;
   }
 
@@ -1970,7 +1970,7 @@ class simplePlugin
    */
   static function plInfo()
   {
-    return [];
+    return array();
   }
 
   /*! \brief This function generate the needed ACLs for a given attribtues array
@@ -1979,7 +1979,7 @@ class simplePlugin
    */
   static function generatePlProvidedAcls ($attributesInfo)
   {
-    $plProvidedAcls = [];
+    $plProvidedAcls = array();
     foreach ($attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
         $aclInfo = $attr->getAclInfo();
@@ -2019,7 +2019,7 @@ class simplePlugin
       }
       $objectType = $key;
     }
-    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : ['user']);
+    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : array('user'));
     $key = key($plCategory);
     if (is_numeric($key)) {
       $plCategory = $plCategory[$key];
@@ -2081,7 +2081,7 @@ class simplePlugin
           /* Check locking */
           if ($locks = get_locks($entry_dn)) {
             session::set('back_plugin', $plug);
-            session::set('LOCK_VARS_TO_USE', ["/^edit$/", "/^plug$/"]);
+            session::set('LOCK_VARS_TO_USE', array("/^edit$/", "/^plug$/"));
             $lock_msg = gen_locked_message($locks, $entry_dn);
           } else {
             /* Lock the current entry */
diff --git a/include/simpleplugin/class_simpleService.inc b/include/simpleplugin/class_simpleService.inc
index 65d06ac7f..580492891 100644
--- a/include/simpleplugin/class_simpleService.inc
+++ b/include/simpleplugin/class_simpleService.inc
@@ -27,7 +27,7 @@ class simpleService extends simplePlugin
 
   protected $status = '';
 
-  public $conflicts   = [];
+  public $conflicts   = array();
   public $DisplayName = '';
 
   /*! \brief constructor
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index 57ccbb831..edc6049a3 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -35,13 +35,13 @@ class simpleTabs
 
   public $objectType      = FALSE;
   protected $specialTabs  = TRUE;
-  protected $plNotify     = [];
+  protected $plNotify     = array();
 
   var $last       = "";
   var $current    = "";
   var $disabled   = "";
-  var $by_name    = [];
-  var $by_object  = [];
+  var $by_name    = array();
+  var $by_object  = array();
   var $acl_category;
 
   /* A parent object if available, e.g. a management class. */
@@ -69,7 +69,7 @@ class simpleTabs
     $this->dn           = $dn;
 
     if (!count($data)) {
-      $data[] = ['CLASS' => 'plugin','NAME' => 'Error'];
+      $data[] = array('CLASS' => 'plugin','NAME' => 'Error');
       msg_dialog::display(_('Error'),
         sprintf(_('No plugin definitions found to initialize "%s", please check your configuration file.'), get_class($this)),
         ERROR_DIALOG);
@@ -124,7 +124,7 @@ class simpleTabs
     $baseobject = NULL;
     foreach ($this->by_object as $name => $object) {
       $class = get_class($object);
-      if (in_array($class, ["reference","acl"])) {
+      if (in_array($class, array("reference","acl"))) {
         continue;
       }
       if ($baseobject === NULL) {
@@ -251,7 +251,7 @@ class simpleTabs
     }
     $display  .= '<table class="tabs-header"><tbody><tr>';
     $index    = 0;
-    $style    = ['tab-left', 'tab-active', 'tab-right'];
+    $style    = array('tab-left', 'tab-active', 'tab-right');
     foreach ($this->by_name as $class => $name) {
 
       /* Activate right tabs with style "tab-right" */
@@ -334,13 +334,13 @@ class simpleTabs
   protected function check()
   {
     global $config;
-    $messages = [];
+    $messages = array();
 
     if ($this->getBaseObject()->is_template) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
       $filter = '(&(objectClass=fdTemplate)(cn='.ldap_escape_f($this->getBaseObject()->_template_cn).'))';
-      $ldap->search($filter, ['dn']);
+      $ldap->search($filter, array('dn'));
       while ($attrs = $ldap->fetch()) {
         if ($attrs['dn'] != $this->getBaseObject()->dn) {
           $messages[] = msgPool::duplicated($this->getBaseObject()->attributesAccess['_template_cn']->getLabel(), $attrs['dn']);
@@ -392,12 +392,12 @@ class simpleTabs
       $new_dn     = $baseobject->compute_dn();
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $new_dn, 'Saving');
     } catch (FusionDirectoryException $e) {
-      return [
+      return array(
         sprintf(_('Failed to compute DN for object: %s'), $e->getMessage())
-      ];
+      );
     }
 
-    $errors   = [];
+    $errors   = array();
     $creation = ($this->dn == 'new');
 
     /* Move ? */
@@ -467,7 +467,7 @@ class simpleTabs
    * \param array $attrs an LDAP-like values array
    * \param array $skip Attributes to skip
    */
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template($attrs, $skip = array())
   {
     foreach ($this->by_object as $key => &$obj) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index cef03948f..4ba70276f 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -23,36 +23,36 @@ class dashboard extends simplePlugin
 {
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Dashboard'),
       'plTitle'       => _('Dashboard'),
       'plDescription' => _('Statistics and various information'),
       'plIcon'        => 'geticon.php?context=applications&icon=utilities-system-monitor&size=48',
-      'plObjectType'  => [
-        'dashboard' => [
+      'plObjectType'  => array(
+        'dashboard' => array(
           'name'      => _('Dashboard'),
           'tabClass'  => 'tabs_dashboard',
           'mainAttr'  => FALSE
-        ]
-      ],
-      'plSection'     => ['reporting' => ['name' => _('Reporting'), 'priority' => 30]],
+        )
+      ),
+      'plSection'     => array('reporting' => array('name' => _('Reporting'), 'priority' => 30)),
       'plPriority'    => 0,
 
-      'plProvidedAcls'  => [
+      'plProvidedAcls'  => array(
         'dashboard' => _('See dashboard')
-      ]
-    ];
+      )
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'stats' => [
+    return array(
+      'stats' => array(
         'name'  => _('Statistics'),
-        'attrs' => [new FakeAttribute('stats')],
+        'attrs' => array(new FakeAttribute('stats')),
         'template' => get_template_path('main_stats.tpl', TRUE, dirname(__FILE__)),
-      ],
-    ];
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -66,7 +66,7 @@ class dashboard extends simplePlugin
   function overview_stats()
   {
     global $config;
-    $stats = [];
+    $stats = array();
     foreach ($config->data['OBJECTS'] as $type => $infos) {
       try {
         $nb = count(objects::ls($type, NULL, NULL, '', TRUE));
@@ -83,10 +83,10 @@ class dashboard extends simplePlugin
       if ($nb == 0) {
         continue;
       }
-      $node = [
+      $node = array(
         'name'  => $infos['name'],
         'nb'    => $nb
-      ];
+      );
       if (isset($infos['icon'])) {
         $node['img'] = $infos['icon'];
       } else {
diff --git a/plugins/addons/dashboard/class_dashBoardPasswords.inc b/plugins/addons/dashboard/class_dashBoardPasswords.inc
index 229a61beb..fe43bf1b0 100644
--- a/plugins/addons/dashboard/class_dashBoardPasswords.inc
+++ b/plugins/addons/dashboard/class_dashBoardPasswords.inc
@@ -22,25 +22,25 @@ class dashboardPassword extends simplePlugin
 {
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Passwords'),
       'plDescription' => _('Statistics about passwords'),
-      'plObjectType'  => ['dashboard'],
+      'plObjectType'  => array('dashboard'),
       'plPriority'    => 12,
 
-      'plProvidedAcls'  => []
-    ];
+      'plProvidedAcls'  => array()
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'pwds' => [
+    return array(
+      'pwds' => array(
         'name'  => _('Passwords statistics'),
-        'attrs' => [new FakeAttribute('pwds_stats')],
+        'attrs' => array(new FakeAttribute('pwds_stats')),
         'template' => get_template_path('pwd_stats.tpl', TRUE, dirname(__FILE__)),
-      ],
-    ];
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -64,11 +64,11 @@ class dashboardPassword extends simplePlugin
         sprintf(_('Password statistics could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = [];
+      $users = array();
     }
     $nb_accounts = count($users);
     $nb_locked_accounts = 0;
-    $methods_stats = [];
+    $methods_stats = array();
     foreach ($users as $userPassword) {
       if (!empty($userPassword)) {
         if (preg_match("/^\{[^\}]+\}!/", $userPassword)) {
@@ -77,10 +77,10 @@ class dashboardPassword extends simplePlugin
         $method = passwordMethod::get_method($userPassword);
         $methodClass = get_class($method);
         if (!isset($methods_stats[$methodClass])) {
-          $methods_stats[$methodClass] = [
+          $methods_stats[$methodClass] = array(
             'nb' => 0,
             'name' => $method->get_hash()
-          ];
+          );
           if ($method->get_hash() == $defaultMethod) {
             $methods_stats[$methodClass]['style'] = 'default';
           } elseif ($method->get_hash() == 'clear') {
@@ -95,15 +95,15 @@ class dashboardPassword extends simplePlugin
       }
     }
 
-    return [
+    return array(
       'methods'         => $methods_stats,
       'nb'              => $nb_accounts,
       'img'             => 'geticon.php?context=types&icon=user&size=16',
-      'locked_accounts' => [
+      'locked_accounts' => array(
         'nb'  => $nb_locked_accounts,
         'img' => 'geticon.php?context=status&icon=object-locked&size=16'
-      ],
-    ];
+      ),
+    );
   }
 }
 ?>
diff --git a/plugins/addons/dashboard/class_dashBoardUsers.inc b/plugins/addons/dashboard/class_dashBoardUsers.inc
index 0a80119a2..e3d72351f 100644
--- a/plugins/addons/dashboard/class_dashBoardUsers.inc
+++ b/plugins/addons/dashboard/class_dashBoardUsers.inc
@@ -23,54 +23,54 @@ class dashboardUsers extends simplePlugin
 {
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Users'),
       'plDescription' => _('Statistics about users'),
-      'plObjectType'  => ['dashboard'],
+      'plObjectType'  => array('dashboard'),
       'plPriority'    => 10,
 
-      'plProvidedAcls'    => []
-    ];
+      'plProvidedAcls'    => array()
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'userstats' => [
+    return array(
+      'userstats' => array(
         'name'  => _('Users statistics'),
-        'attrs' => [new FakeAttribute('users_stats')],
+        'attrs' => array(new FakeAttribute('users_stats')),
         'template' => get_template_path('users_stats.tpl', TRUE, dirname(__FILE__)),
-      ],
-      'groupstats' => [
+      ),
+      'groupstats' => array(
         'name'  => _('Groups statistics'),
-        'attrs' => [new FakeAttribute('groups_stats')],
+        'attrs' => array(new FakeAttribute('groups_stats')),
         'template' => get_template_path('groups_stats.tpl', TRUE, dirname(__FILE__)),
-      ],
-      'expired_accounts' => [
+      ),
+      'expired_accounts' => array(
         'name'  => _('Expired accounts'),
-        'attrs' => [new FakeAttribute('expired')],
+        'attrs' => array(new FakeAttribute('expired')),
         'template' => get_template_path('users_accounts.tpl', TRUE, dirname(__FILE__)),
-      ],
-    ];
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $this->expiredAccountsColumns = [
-      'user' => [
+    $this->expiredAccountsColumns = array(
+      'user' => array(
         'uid'             => _('Login'),
         'cn'              => _('Name'),
         'telephoneNumber' => _('Phone number'),
         'expirationDate'  => _('Expiration date'),
-      ],
-      'manager' => [
+      ),
+      'manager' => array(
         'manager_cn'      => _('Name'),
         'manager_mail'    => _('Email'),
         'manager_phone'   => _('Phone number'),
-      ]
-    ];
+      )
+    );
     $this->users_stats  = $this->computeUsersStats();
     $this->groups_stats = $this->computeGroupsStats();
     $this->expired      = $this->expired_accounts_info();
@@ -97,15 +97,15 @@ class dashboardUsers extends simplePlugin
       $nb_samba_accounts  = 0;
     }
 
-    return [
-      'accounts' => [
-        ['name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
-        ['name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'],
-        ['name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
-      ],
+    return array(
+      'accounts' => array(
+        array('name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
+        array('name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'),
+        array('name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
+      ),
       'nb'  => $nb_accounts,
       'img' => 'geticon.php?context=types&icon=user&size=16',
-    ];
+    );
   }
 
   function computeGroupsStats ()
@@ -132,14 +132,14 @@ class dashboardUsers extends simplePlugin
       $nb_samba_groups  = 0;
     }
 
-    return [
-      'groups' => [
-        ['name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
-        ['name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
-      ],
+    return array(
+      'groups' => array(
+        array('name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
+        array('name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
+      ),
       'nb'  => $nb_groups,
       'img' => 'geticon.php?context=types&icon=user-group&size=16',
-    ];
+    );
   }
 
   function expired_accounts_info ()
@@ -158,24 +158,24 @@ class dashboardUsers extends simplePlugin
 
     if (!class_available('posixAccount')) {
       /* if shadowExpire is not available no way to check expiration */
-      return [
+      return array(
         'columns'             => $this->expiredAccountsColumns,
-        'accounts'            => [],
-        'accounts_next_days'  => [],
+        'accounts'            => array(),
+        'accounts_next_days'  => array(),
         'next_days'           => $next_expired_days,
-      ];
+      );
     }
 
     /* search all account with all date, mail, telephone */
     try {
-      $attributes = [
+      $attributes = array(
         'dn'                    => 'raw',
         'uid'                   => '*',
         'cn'                    => '*',
         'telephoneNumber'       => '*',
         'manager'               => '*',
         'shadowExpire'          => '*',
-      ];
+      );
       if (class_available('mailAccount')) {
         $attributes['mail'] = 'raw';
       }
@@ -186,18 +186,18 @@ class dashboardUsers extends simplePlugin
         sprintf(_('Expired user information could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = [];
+      $users = array();
     } catch (FusionDirectoryException $e) {
       msg_dialog::display(
         _('Error'),
         sprintf(_('Expired user information could not be computed because of the following error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = [];
+      $users = array();
     }
 
-    $expired_accounts       = [];
-    $next_expired_accounts  = [];
+    $expired_accounts       = array();
+    $next_expired_accounts  = array();
     foreach ($users as $user) {
       // Test if account is expired now
       if ($user['shadowExpire'][0] <= $today) {
@@ -207,15 +207,15 @@ class dashboardUsers extends simplePlugin
       }
     }
 
-    uasort($expired_accounts,       ['dashboardUsers','compareUsers']);
-    uasort($next_expired_accounts,  ['dashboardUsers','compareUsers']);
+    uasort($expired_accounts,       array('dashboardUsers','compareUsers'));
+    uasort($next_expired_accounts,  array('dashboardUsers','compareUsers'));
 
-    return [
+    return array(
       'columns'             => $this->expiredAccountsColumns,
       'accounts'            => $expired_accounts,
       'accounts_next_days'  => $next_expired_accounts,
       'next_days'           => $next_expired_days,
-    ];
+    );
   }
 
   static function get_user_infos($attrs)
@@ -224,7 +224,7 @@ class dashboardUsers extends simplePlugin
 
     if (isset($attrs['manager'][0])) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($attrs['manager'][0], ['cn', 'mail', 'telephoneNumber']);
+      $ldap->cat($attrs['manager'][0], array('cn', 'mail', 'telephoneNumber'));
       if ($manager_attrs = $ldap->fetch()) {
         $manager_cn     = (isset($manager_attrs['cn'][0]) ? $manager_attrs['cn'][0] : '');
         $manager_mail   = (isset($manager_attrs['mail'][0]) ? $manager_attrs['mail'][0] : '');
@@ -247,7 +247,7 @@ class dashboardUsers extends simplePlugin
       $human_shadowExpire = '';
     }
 
-    return [
+    return array(
       'uid'             => $attrs['uid'][0],
       'cn'              => $attrs['cn'][0],
       'telephoneNumber' => (isset($attrs['telephoneNumber'][0]) ? $attrs['telephoneNumber'][0] : ''),
@@ -256,7 +256,7 @@ class dashboardUsers extends simplePlugin
       'manager_mail'    => $manager_mail,
       'manager_phone'   => $manager_phone,
       'expirationDate'  => $human_shadowExpire,
-    ];
+    );
   }
 
   static function compareUsers ($a, $b)
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index 1c6655f81..a28f52420 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -22,31 +22,31 @@ class aclAssignmentDialogWindow extends simplePlugin
 {
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('ACL Assignment Dialog'),
       'plDescription' => _('Access control roles assignment dialog'),
-      'plCategory'    => ['acl'],
+      'plCategory'    => array('acl'),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'properties' => [
+    return array(
+      'properties' => array(
         'name'  => _('Properties'),
-        'attrs' => [
+        'attrs' => array(
           new SelectAttribute(
             _('Mode'), _('Is this applying on complete subtree or only the base?'),
             'aclMode', TRUE,
-            ['subtree',    'base'], 'base',
-            [_('Subtree'), _('Base only')]
+            array('subtree',    'base'), 'base',
+            array(_('Subtree'), _('Base only'))
           ),
           new SelectAttribute(
             _('Role'), _('Role to apply'),
             'aclRole', TRUE,
-            []
+            array()
           ),
           new BooleanAttribute(
             _('For all users'), _('Apply this ACL for all LDAP users'),
@@ -56,9 +56,9 @@ class aclAssignmentDialogWindow extends simplePlugin
             _('Members'), _('Users or groups to assign this role to.'),
             'aclMembers', TRUE
           )
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($value, $isContainer = FALSE)
@@ -75,11 +75,11 @@ class aclAssignmentDialogWindow extends simplePlugin
     $this->attributesAccess['aclRole']->setChoices(array_keys($roles), array_values($roles));
     $this->attributesAccess['allUsers']->setInLdap(FALSE);
     $this->attributesAccess['allUsers']->setManagedAttributes(
-      [
-        'disable' => [
-          TRUE => ['aclMembers']
-        ]
-      ]
+      array(
+        'disable' => array(
+          TRUE => array('aclMembers')
+        )
+      )
     );
 
     if ($value !== NULL) {
@@ -109,13 +109,13 @@ class aclAssignmentDialogWindow extends simplePlugin
 
   function getAclEntry()
   {
-    $entry = [
+    $entry = array(
       'scope'   => $this->aclMode,
       'role'    => $this->aclRole,
       'members' => $this->aclMembers,
-    ];
+    );
     if ($this->allUsers) {
-      $entry['members'] = ['*'];
+      $entry['members'] = array('*');
     }
     return $entry;
   }
@@ -134,7 +134,7 @@ class ACLsAssignmentDialog extends GenericDialog
     if (isset($simplePlugin->attrs['objectClass'])) {
       if (count(array_intersect(
                   $simplePlugin->attrs['objectClass'],
-                  ['organizationalUnit', 'organization', 'domain', 'country', 'locality'])
+                  array('organizationalUnit', 'organization', 'domain', 'country', 'locality'))
                 )) {
         $isContainer = TRUE;
       }
@@ -196,11 +196,11 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
   function readValue($value)
   {
     $acl = explode(':', $value);
-    return [$acl[0], [
+    return array($acl[0], array(
       'scope'   => $acl[1],
       'role'    => base64_decode($acl[2]),
       'members' => array_map('base64_decode', explode(',', $acl[3])),
-    ]];
+    ));
   }
 
   function writeValue($key, $value)
@@ -248,9 +248,9 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     foreach ($this->value as $value) {
       if (($source['CLASS'] == 'aclRole') && ($value['role'] == $oldvalue)) {
         return TRUE;
-      } elseif (in_array($source['CLASS'], ['user','posixGroup','roleGeneric']) && in_array($oldvalue, $value['members'])) {
+      } elseif (in_array($source['CLASS'], array('user','posixGroup','roleGeneric')) && in_array($oldvalue, $value['members'])) {
         return TRUE;
-      } elseif (!in_array($source['CLASS'], ['aclRole','user','posixGroup','roleGeneric'])) {
+      } elseif (!in_array($source['CLASS'], array('aclRole','user','posixGroup','roleGeneric'))) {
         trigger_error('unknown source '.$source['CLASS']);
       }
     }
@@ -259,13 +259,13 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
 
 class aclAssignment extends simplePlugin
 {
-  var $objectclasses  = ['gosaAcl'];
+  var $objectclasses  = array('gosaAcl');
 
   static function plInfo()
   {
     global $config;
-    $oc = [
-      'aclAssignment' => [
+    $oc = array(
+      'aclAssignment' => array(
         'aclCategory' => 'acl',
         'name'        => _('ACL assignment'),
         'filter'      => 'objectClass=gosaAcl',
@@ -273,44 +273,44 @@ class aclAssignment extends simplePlugin
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
         'tabClass'    => 'simpleTabs_noSpecial',
         'mainAttr'    => FALSE
-      ],
-    ];
+      ),
+    );
     if ($config->get_cfg_value('aclTabOnObjects') == 'TRUE') {
       $oc[] = 'special';
     } else {
       $oc = array_merge($oc, departmentManagement::getDepartmentTypes());
     }
-    return [
+    return array(
       'plShortName'   => _('ACL Assignment'),
       'plDescription' => _('Access control roles assignment'),
       'plObjectType'  => $oc,
-      'plForeignKeys'  => [
-        'gosaAclEntry' => [
-          ['aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'],
-          ['user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
-          ['posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
-          ['roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
-        ]
-      ],
+      'plForeignKeys'  => array(
+        'gosaAclEntry' => array(
+          array('aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'),
+          array('user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
+          array('posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
+          array('roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
+        )
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'  => _('Assignments'),
-        'class' => ['fullwidth'],
-        'attrs' => [
+        'class' => array('fullwidth'),
+        'attrs' => array(
           new ACLsAssignmentAttribute(
             '', _('ACL role assignments for this base'),
             'gosaAclEntry', FALSE
           )
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index 3e949b9a2..dea452766 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -27,24 +27,24 @@ class aclAssignmentCreationDialog extends simplePlugin
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('ACL assignment creation'),
       'plShortName'   => _('ACL assignment creation'),
       'plDescription' => _('Create an ACL assignment on an arbitrary dn'),
-      'plCategory'    => ['acl'],
+      'plCategory'    => array('acl'),
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'  => _('ACL assignment creation'),
-        'class' => ['fullwidth'],
-        'attrs' => [
+        'class' => array('fullwidth'),
+        'attrs' => array(
           new StringAttribute (
             _('Dn'), _('DN you wish to add assignments for'),
             'baseDn', TRUE,
@@ -52,9 +52,9 @@ class aclAssignmentCreationDialog extends simplePlugin
             '/^([^=,]+=[^=,]+,)+'.preg_quote($config->current['BASE'], '/').'$/',
             'ou=people,'.$config->current['BASE']
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($parent)
@@ -107,7 +107,7 @@ class aclAssignmentCreationDialog extends simplePlugin
     try {
       $this->simpleManagement->newEntryConfirmed($this->baseDn);
     } catch (NonExistingLdapNodeException $e) {
-      msg_dialog::displayChecks([_('The dn you entered could not be found in the LDAP')]);
+      msg_dialog::displayChecks(array(_('The dn you entered could not be found in the LDAP')));
       return TRUE;
     }
     return FALSE;
@@ -122,9 +122,9 @@ class aclAssignmentCreationDialog extends simplePlugin
 
 class aclManagement extends simpleManagement
 {
-  protected $objectTypes  = ['aclAssignment'];
+  protected $objectTypes  = array('aclAssignment');
 
-  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'ou', 'dc'];
+  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'ou', 'dc');
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
@@ -136,17 +136,17 @@ class aclManagement extends simpleManagement
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('ACL assignments'),
       'plTitle'       => _('ACL assignments management'),
       'plDescription' => _('Manage ACL roles assignments to users'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 28,
-      'plManages'     => ['aclAssignment'],
+      'plManages'     => array('aclAssignment'),
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 
   function configureFilter()
@@ -168,7 +168,7 @@ class aclManagement extends simpleManagement
   function configureHeadpage ()
   {
     /* Remove department types so that we don't mistake assignments with them */
-    $this->headpage->objectTypes = [];
+    $this->headpage->objectTypes = array();
     $this->headpage->registerElementFilter('filterLabel', 'aclManagement::filterLabel');
     parent::configureHeadpage();
   }
@@ -213,7 +213,7 @@ class aclManagement extends simpleManagement
           continue;
         }
         if (!is_array($val)) {
-          $val = [$val];
+          $val = array($val);
         }
         $ou = htmlentities(reset($val), ENT_COMPAT, 'UTF-8');
       }
diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc
index b4c579236..9f7801390 100644
--- a/plugins/admin/aclrole/class_aclEditionDialog.inc
+++ b/plugins/admin/aclrole/class_aclEditionDialog.inc
@@ -25,8 +25,8 @@ class ACLEditionDialog extends GenericDialog
   protected $initialAclValue;
   protected $dialogState      = 'create';
   protected $aclObject        = '';
-  protected $aclContents      = [];
-  protected $savedAclContents = [];
+  protected $aclContents      = array();
+  protected $savedAclContents = array();
 
   function __construct($simplePlugin, $attribute, $acl = NULL)
   {
@@ -35,7 +35,7 @@ class ACLEditionDialog extends GenericDialog
 
     /* New entry gets presets... */
     if ($acl === NULL) {
-      $this->aclContents  = [];
+      $this->aclContents  = array();
     } else {
       $this->aclContents  = $acl;
     }
@@ -59,7 +59,7 @@ class ACLEditionDialog extends GenericDialog
   {
     global $config;
 
-    $new_acl = [];
+    $new_acl = array();
 
     foreach ($_POST as $name => $post) {
       /* Actions... */
@@ -98,7 +98,7 @@ class ACLEditionDialog extends GenericDialog
 
         /* Ordinary ACL */
         if (!isset($new_acl[$object])) {
-          $new_acl[$object] = [];
+          $new_acl[$object] = array();
         }
         if (isset($new_acl[$object][$attribute])) {
           $new_acl[$object][$attribute] .= $value;
@@ -164,7 +164,7 @@ class ACLEditionDialog extends GenericDialog
           /* Hide empty categories */
           continue;
         }
-        $summary = [];
+        $summary = array();
         foreach ($infos['classes'] as $oc) {
           if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) &&
               $this->aclContents[$oc][0] != '') {
@@ -193,17 +193,17 @@ class ACLEditionDialog extends GenericDialog
                   '<input class="center" type="image" src="geticon.php?context=actions&amp;icon=edit-delete&amp;size=16"
                     alt="'._('Delete').'" name="cat_del_'.$section.'" title="'._('Reset category ACL').'"/>';
 
-        $field1 = ['html' => $infos['description'], 'attach' => 'style="width:140px"'];
-        $field2 = ['html' => $summary];
-        $field3 = ['html' => $action, 'attach' => 'style="border-right:0px;width:40px"'];
-        $aclList->AddEntry([$field1, $field2, $field3]);
+        $field1 = array('html' => $infos['description'], 'attach' => 'style="width:140px"');
+        $field2 = array('html' => $summary);
+        $field3 = array('html' => $action, 'attach' => 'style="border-right:0px;width:40px"');
+        $aclList->AddEntry(array($field1, $field2, $field3));
       }
 
       $smarty->assign('headline', _('List of available ACL categories'));
       $smarty->assign('aclEdition', $aclList->DrawList());
     } elseif ($this->dialogState == 'edit') {
       /* Collect objects for selected category */
-      $aclObjects = [];
+      $aclObjects = array();
       foreach ($config->data['CATEGORIES'][$this->aclObject]['classes'] as $idx => $class) {
         if ($idx == 0) {
           continue;
@@ -310,7 +310,7 @@ class ACLEditionDialog extends GenericDialog
     foreach ($list as $key => $name) {
       /* Create sub acl if it does not exist */
       if (!isset($this->aclContents[$key])) {
-        $this->aclContents[$key] = [];
+        $this->aclContents[$key] = array();
       }
       if (!isset($this->aclContents[$key][0])) {
         $this->aclContents[$key][0] = '';
diff --git a/plugins/admin/aclrole/class_aclRole.inc b/plugins/admin/aclrole/class_aclRole.inc
index 1856c7e77..a435a5099 100644
--- a/plugins/admin/aclrole/class_aclRole.inc
+++ b/plugins/admin/aclrole/class_aclRole.inc
@@ -36,13 +36,13 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
       }
     }
     $summary = sprintf(_('Contains settings for these objects: %s'), preg_replace('/, $/', '', $summary));
-    return [$summary];
+    return array($summary);
   }
 
   function readValue($value)
   {
     $acl = explode(':', $value, 2);
-    return [$acl[0], acl::extractACL($acl[1])];
+    return array($acl[0], acl::extractACL($acl[1]));
   }
 
   function writeValue($key, $value)
@@ -69,31 +69,31 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
 
 class aclRole extends simplePlugin
 {
-  var $objectclasses  = ['top','gosaRole'];
+  var $objectclasses  = array('top','gosaRole');
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Role'),
       'plDescription' => _('Access control roles'),
-      'plObjectType'  => ['aclRole' => [
+      'plObjectType'  => array('aclRole' => array(
         'aclCategory' => 'acl',
         'name'        => _('ACL role'),
         'filter'      => 'objectClass=gosaRole',
         'ou'          => get_ou('aclRoleRDN'),
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
-      ]],
+      )),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo()
   {
-    return [
-      'properties' => [
+    return array(
+      'properties' => array(
         'name'  => _('Properties'),
-        'attrs' => [
+        'attrs' => array(
           new BaseSelectorAttribute(get_ou('aclRoleRDN')),
           new HostNameAttribute(
             _('Name'), _('A name for this role'),
@@ -103,19 +103,19 @@ class aclRole extends simplePlugin
             _('Description'), _('Short description of this role'),
             'description', FALSE
           ),
-        ]
-      ],
-      'acls' => [
+        )
+      ),
+      'acls' => array(
         'name'  => _('ACLs'),
-        'class' => ['fullwidth'],
-        'attrs' => [
+        'class' => array('fullwidth'),
+        'attrs' => array(
           new ACLsAttribute(
             '', _('ACLs which are part of this group'),
             'gosaAclTemplate', TRUE
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 }
 ?>
diff --git a/plugins/admin/aclrole/class_aclRoleManagement.inc b/plugins/admin/aclrole/class_aclRoleManagement.inc
index 3d135fe2b..ca6ccda6b 100644
--- a/plugins/admin/aclrole/class_aclRoleManagement.inc
+++ b/plugins/admin/aclrole/class_aclRoleManagement.inc
@@ -21,7 +21,7 @@
 class aclRoleManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = ['aclRole'];
+  protected $objectTypes  = array('aclRole');
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
@@ -30,18 +30,18 @@ class aclRoleManagement extends simpleManagement
   /* Return plugin informations for acl handling  */
   public static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('ACL roles'),
       'plTitle'       => _('ACL roles management'),
       'plDescription' => _('Manage ACL roles'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 27,
-      'plCategory'    => ['acl'],
-      'plManages'     => ['aclRole'],
+      'plCategory'    => array('acl'),
+      'plManages'     => array('aclRole'),
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_country.inc b/plugins/admin/departments/class_country.inc
index 8ce3ee17e..f9ed6aa35 100644
--- a/plugins/admin/departments/class_country.inc
+++ b/plugins/admin/departments/class_country.inc
@@ -21,14 +21,14 @@
 class country extends department
 {
   static $namingAttr  = "c";
-  var $structuralOC   = ["country"];
+  var $structuralOC   = array("country");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Country'),
       'plDescription' => _('Country'),
-      'plObjectType'  => ['country' => [
+      'plObjectType'  => array('country' => array(
         'aclCategory' => 'department',
         'name'        => _('Country'),
         'filter'      => '(&(objectClass=country)(objectClass=gosaDepartment))',
@@ -36,13 +36,13 @@ class country extends department
         'icon'        => 'geticon.php?context=types&icon=country&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_dcObject.inc b/plugins/admin/departments/class_dcObject.inc
index e73bd6f6e..63f5e0248 100644
--- a/plugins/admin/departments/class_dcObject.inc
+++ b/plugins/admin/departments/class_dcObject.inc
@@ -21,15 +21,15 @@
 class dcObject extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = ["top", "dcObject", "gosaDepartment"];
-  var $structuralOC   = ["locality"];
+  var $objectclasses  = array("top", "dcObject", "gosaDepartment");
+  var $structuralOC   = array("locality");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Domain Component'),
       'plDescription' => _('Domain Component'),
-      'plObjectType'  => ['dcObject' => [
+      'plObjectType'  => array('dcObject' => array(
         'aclCategory' => 'department',
         'name'        => _('Domain Component'),
         'filter'      => '(&(objectClass=dcObject)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class dcObject extends department
         'icon'        => 'geticon.php?context=types&icon=dc&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc
index 1a23f53d3..c907951a3 100644
--- a/plugins/admin/departments/class_department.inc
+++ b/plugins/admin/departments/class_department.inc
@@ -24,32 +24,32 @@ class department extends simplePlugin
   static $namingAttr = 'ou';
 
   /* Do not append the structural object classes here, they are added dynamically in the constructor */
-  var $objectclasses  = ["top", "gosaDepartment"];
-  var $structuralOC   = ["organizationalUnit"];
+  var $objectclasses  = array("top", "gosaDepartment");
+  var $structuralOC   = array("organizationalUnit");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Department'),
       'plDescription' => _('Departments'),
-      'plCategory'    => ['department' => ['objectClass' => 'gosaDepartment', 'description' => _('Departments')]],
+      'plCategory'    => array('department' => array('objectClass' => 'gosaDepartment', 'description' => _('Departments'))),
       'plObjectType'  =>
-        [
-          'department' => [
+        array(
+          'department' => array(
             'name'      => _('Department'),
             'filter'    => '(&(objectClass=organizationalUnit)(objectClass=gosaDepartment))',
             'ou'        => '',
             'icon'      => 'geticon.php?context=places&icon=folder&size=16',
             'tabClass'  => 'deptabs',
             'mainAttr'  => static::$namingAttr,
-          ]
-        ],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+          )
+        ),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo()
@@ -58,10 +58,10 @@ class department extends simplePlugin
   }
   static function getDepartmentAttributesInfo($name)
   {
-    $attributesInfo = [
-      'properties' => [
+    $attributesInfo = array(
+      'properties' => array(
         'name'  => _('Properties'),
-        'attrs' => [
+        'attrs' => array(
           new BaseSelectorAttribute(''),
           new StringAttribute(
             sprintf(_('Name of %s'), $name), sprintf(_('A name for this %s'), $name),
@@ -84,11 +84,11 @@ class department extends simplePlugin
             _('Manager'), sprintf(_('Manager of this %s'), $name),
             'manager', FALSE
           )
-        ]
-      ],
-      'location' => [
+        )
+      ),
+      'location' => array(
         'name'  => _('Location'),
-        'attrs' => [
+        'attrs' => array(
           new StringAttribute(
             _('State'), _('State'), 'st', FALSE
           ),
@@ -112,9 +112,9 @@ class department extends simplePlugin
             _('Fax'), _('Facsimile telephone number'),
             'facsimileTelephoneNumber', FALSE
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
     if (static::$namingAttr != 'ou') {
       $attributesInfo['properties']['attrs'][] = new HiddenAttribute('ou');
     }
@@ -130,7 +130,7 @@ class department extends simplePlugin
     if ($dn == "" || $dn == "new" || !$ldap->dn_exists($dn)) {
       $this->objectclasses = array_merge($this->structuralOC, $this->objectclasses);
     } else {
-      $ldap->cat($dn, ["structuralObjectClass"]);
+      $ldap->cat($dn, array("structuralObjectClass"));
       $attrs = $ldap->fetch();
       if (isset($attrs['structuralObjectClass']['count'])) {
         for ($i = 0; $i < $attrs['structuralObjectClass']['count']; $i++) {
@@ -146,7 +146,7 @@ class department extends simplePlugin
 
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $categoriesList = $config->get_cfg_value('DepartmentCategories', []);
+    $categoriesList = $config->get_cfg_value('DepartmentCategories', array());
 
     /* Insert current value to possibilities */
     if (isset($this->attributesAccess['businessCategory'])) {
diff --git a/plugins/admin/departments/class_departmentManagement.inc b/plugins/admin/departments/class_departmentManagement.inc
index 6d81d0155..e5e349f03 100644
--- a/plugins/admin/departments/class_departmentManagement.inc
+++ b/plugins/admin/departments/class_departmentManagement.inc
@@ -29,17 +29,17 @@ class departmentManagement extends simpleManagement
   /* Return plugin information for acl handling */
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Departments'),
       'plTitle'       => _('Manage departments'),
       'plDescription' => _('Manage departments, countries, domain components, domains, localities and organization nodes,'),
       'plIcon'        => 'geticon.php?context=places&icon=folder&size=48',
-      'plSection'     => ['accounts' => ['name' => _('Users and groups'), 'priority' => 0]],
+      'plSection'     => array('accounts' => array('name' => _('Users and groups'), 'priority' => 0)),
       'plPriority'    => 0,
       'plManages'     => static::getDepartmentTypes(),
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 
   function __construct()
@@ -83,7 +83,7 @@ class departmentManagement extends simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $config;
-    $target = array_remove_entries([$config->current['BASE']], $target);
+    $target = array_remove_entries(array($config->current['BASE']), $target);
     return parent::removeEntryRequested($action, $target, $all);
   }
 
@@ -106,7 +106,7 @@ class departmentManagement extends simpleManagement
 
   static function getDepartmentTypes()
   {
-    return ['DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION'];
+    return array('DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION');
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_domain.inc b/plugins/admin/departments/class_domain.inc
index abc4eae16..8cf7d844b 100644
--- a/plugins/admin/departments/class_domain.inc
+++ b/plugins/admin/departments/class_domain.inc
@@ -21,15 +21,15 @@
 class domain extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = ["top", "domain", "gosaDepartment"];
-  var $structuralOC   = ["domain"];
+  var $objectclasses  = array("top", "domain", "gosaDepartment");
+  var $structuralOC   = array("domain");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Domain'),
       'plDescription' => _('Domain'),
-      'plObjectType'  => ['domain' => [
+      'plObjectType'  => array('domain' => array(
         'aclCategory' => 'department',
         'name'        => _('Domain'),
         'filter'      => '(&(objectClass=domain)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class domain extends department
         'icon'        => 'geticon.php?context=types&icon=domain&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_locality.inc b/plugins/admin/departments/class_locality.inc
index db2b137f8..af8873e27 100644
--- a/plugins/admin/departments/class_locality.inc
+++ b/plugins/admin/departments/class_locality.inc
@@ -21,15 +21,15 @@
 class locality extends department
 {
   static $namingAttr  = "l";
-  var $objectclasses  = ["top", "gosaDepartment"];
-  var $structuralOC   = ["locality"];
+  var $objectclasses  = array("top", "gosaDepartment");
+  var $structuralOC   = array("locality");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Locality'),
       'plDescription' => _('Locality'),
-      'plObjectType'  => ['locality' => [
+      'plObjectType'  => array('locality' => array(
         'aclCategory' => 'department',
         'name'        => _('Locality'),
         'filter'      => '(&(!(objectClass=dcObject))(objectClass=locality)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class locality extends department
         'icon'        => 'geticon.php?context=types&icon=locality&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_organization.inc b/plugins/admin/departments/class_organization.inc
index 960cf5f6b..93e82ff29 100644
--- a/plugins/admin/departments/class_organization.inc
+++ b/plugins/admin/departments/class_organization.inc
@@ -21,15 +21,15 @@
 class organization extends department
 {
   static $namingAttr  = "o";
-  var $objectclasses  = ["top", "gosaDepartment"];
-  var $structuralOC   = ["organization"];
+  var $objectclasses  = array("top", "gosaDepartment");
+  var $structuralOC   = array("organization");
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Organization'),
       'plDescription' => _('Organization'),
-      'plObjectType'  => ['organization' => [
+      'plObjectType'  => array('organization' => array(
         'aclCategory' => 'department',
         'name'        => _('Organization'),
         'filter'      => '(&(objectClass=organization)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class organization extends department
         'icon'        => 'geticon.php?context=types&icon=organization&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 9f4a7f464..75155b3c0 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -21,7 +21,7 @@
 
 class groupManagement extends simpleManagement
 {
-  protected $objectTypes  = ['ogroup', 'role', 'group'];
+  protected $objectTypes  = array('ogroup', 'role', 'group');
 
   protected $autoFilter = FALSE;
 
@@ -31,17 +31,17 @@ class groupManagement extends simpleManagement
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Groups and roles'),
       'plTitle'       => _('Manage groups and roles'),
       'plDescription' => _('Allows you to manage object groups, POSIX groups and roles'),
       'plIcon'        => 'geticon.php?context=types&icon=resource-group&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => ['ogroup', 'group', 'role'],
+      'plManages'     => array('ogroup', 'group', 'role'),
       'plPriority'    => 20,
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 
   function __construct()
@@ -89,24 +89,24 @@ class groupManagement extends simpleManagement
 
     // Register Daemon Events
     if ($this->siActive) {
-      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = [];
-      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = [];
+      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = array();
+      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = array();
       $events = argonautEventTypes::get_event_types();
       foreach ($events as $name => $data) {
         $this->registerAction('T_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = [
+        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = array(
         'name' => 'T_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        ];
+        );
         $this->registerAction('S_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = [
+        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = array(
         'name' => 'S_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        ];
+        );
       }
     } else {
       unset($this->headpage->xmlData['actionmenu']['action'][3]);
@@ -139,7 +139,7 @@ class groupManagement extends simpleManagement
     $event = preg_replace('/^[TS]_/', '', $action);
 
     // Now send FAI/Argonaut events here.
-    $mac = [];
+    $mac = array();
 
     // Collect target mac addresses
     $ldap = $config->get_ldap_link();
@@ -170,12 +170,12 @@ class groupManagement extends simpleManagement
     /* Skip installation or update trigerred events,
      *  if this entry is currently processing.
      */
-    if ($triggered && in_array($event, ['reinstall','update'])) {
+    if ($triggered && in_array($event, array('reinstall','update'))) {
       foreach ($mac as $key => $mac_address) {
         if ($o_queue->is_currently_installing($mac_address)) {
           msg_dialog::display(_('Action canceled'), sprintf(_('System %s is currently installing'), $dn), ERROR_DIALOG);
           unset($mac[$key]);
-          logging::log('security', 'systems/'.get_class($this), '', [], 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
+          logging::log('security', 'systems/'.get_class($this), '', array(), 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
         }
       }
     }
@@ -246,7 +246,7 @@ class groupManagement extends simpleManagement
   static function filterProperties($row, $dn, $objectType, $attrs, $gosaGroupObjects = NULL)
   {
     global $config;
-    static $grouptabs = [];
+    static $grouptabs = array();
 
     // Load information if needed
     $result = '&nbsp;';
@@ -318,42 +318,42 @@ class groupManagement extends simpleManagement
   function renderList()
   {
     $smarty = get_smarty();
-    $filters = [
-      ['id'  => 'USER',        'label'  => _('Show user groups')],
-      ['id'  => 'ROLE',        'label'  => _('Show organizational roles')],
-      ['id'  => 'APPLICATION', 'label'  => _('Show application groups')],
-      ['id'  => 'GROUP',       'label'  => _('Show groups of groups')],
-      ['id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')],
-    ];
+    $filters = array(
+      array('id'  => 'USER',        'label'  => _('Show user groups')),
+      array('id'  => 'ROLE',        'label'  => _('Show organizational roles')),
+      array('id'  => 'APPLICATION', 'label'  => _('Show application groups')),
+      array('id'  => 'GROUP',       'label'  => _('Show groups of groups')),
+      array('id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')),
+    );
     if (class_available('posixGroup')) {
-      $filters[] = ['id'  => 'PRIMARY',  'label'  => _('Show primary groups')];
+      $filters[] = array('id'  => 'PRIMARY',  'label'  => _('Show primary groups'));
       if (class_available('mailAccount')) {
-        $filters[] = ['id'  => 'MAIL',  'label'  => _('Show mail groups')];
+        $filters[] = array('id'  => 'MAIL',  'label'  => _('Show mail groups'));
       }
       if (class_available('sambaAccount')) {
-        $filters[] = ['id'  => 'SAMBA', 'label'  => _('Show samba groups')];
+        $filters[] = array('id'  => 'SAMBA', 'label'  => _('Show samba groups'));
       }
     }
     if (class_available('simpleSecurityObject')) {
-      $filters[] = ['id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries')];
+      $filters[] = array('id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries'));
     }
     if (class_available('systemManagement')) {
       $filters = array_merge(
         $filters,
-        [
-          ['id'  => 'SERVER',      'label'  => _('Show server groups')],
-          ['id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')],
-          ['id'  => 'TERMINAL',    'label'  => _('Show terminal groups')],
-          ['id'  => 'PRINTER',     'label'  => _('Show printer groups')],
-          ['id'  => 'PHONE',       'label'  => _('Show phone groups')],
-        ]
+        array(
+          array('id'  => 'SERVER',      'label'  => _('Show server groups')),
+          array('id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')),
+          array('id'  => 'TERMINAL',    'label'  => _('Show terminal groups')),
+          array('id'  => 'PRINTER',     'label'  => _('Show printer groups')),
+          array('id'  => 'PHONE',       'label'  => _('Show phone groups')),
+        )
       );
     }
     if (!static::$skipTemplates) {
-      $filters[] = [
+      $filters[] = array(
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      ];
+      );
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc
index 55f8fab2b..c1e277151 100644
--- a/plugins/admin/groups/class_roleGeneric.inc
+++ b/plugins/admin/groups/class_roleGeneric.inc
@@ -28,48 +28,48 @@ class RoleMembersAttribute extends UsersAttribute
     if ($config->get_cfg_value('RestrictRoleMembers') == 'TRUE') {
       if ($this->whitelistDns === NULL) {
         /* Computes a list of members of all groups within our branch */
-        $groups = objects::ls('ogroup', ['member' => '*'], $this->plugin->base);
+        $groups = objects::ls('ogroup', array('member' => '*'), $this->plugin->base);
         if (empty($groups)) {
-          $this->whitelistDns = [];
+          $this->whitelistDns = array();
         } else {
           $this->whitelistDns = call_user_func_array('array_merge_recursive', $groups)['member'];
         }
       }
-      return [
-        'branches'  => [$this->plugin->base],
+      return array(
+        'branches'  => array($this->plugin->base),
         'dn'        => $this->whitelistDns,
-      ];
+      );
     } else {
-      return [];
+      return array();
     }
   }
 }
 
 class roleGeneric extends simplePlugin
 {
-  var $objectclasses = ['organizationalRole'];
+  var $objectclasses = array('organizationalRole');
 
   static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Role'),
       'plDescription' => _('Role information'),
-      'plObjectType'  => ['role' =>
-        [
+      'plObjectType'  => array('role' =>
+        array(
           'name'        => _('Role'),
           'description' => _('Organizational role'),
           'ou'          => get_ou('roleRDN'),
           'filter'      => '(&(objectClass=organizationalRole)(!(objectClass=simpleSecurityObject)))',
           'icon'        => 'geticon.php?context=types&icon=role&size=16',
           'mainAttr'    => 'cn',
-        ]
-      ],
-      'plForeignKeys'  => [
-        'roleOccupant' => ['user','dn','roleOccupant=%oldvalue%','*']
-      ],
+        )
+      ),
+      'plForeignKeys'  => array(
+        'roleOccupant' => array('user','dn','roleOccupant=%oldvalue%','*')
+      ),
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
    /*!
@@ -77,10 +77,10 @@ class roleGeneric extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'  => _('Information'),
-        'attrs' => [
+        'attrs' => array(
           new BaseSelectorAttribute (get_ou('roleRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
@@ -99,25 +99,25 @@ class roleGeneric extends simplePlugin
             _('Fax number'), _('Fax number'),
             'facsimileTelephoneNumber'
           )
-        ]
-      ],
-      'members' => [
+        )
+      ),
+      'members' => array(
         'name'  => _('Role members'),
-        'attrs' => [
+        'attrs' => array(
           new RoleMembersAttribute (
             '', _('Add users for the role'),
             'roleOccupant', FALSE
           )
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
   function ldap_save()
   {
     global $ui;
 
-    $errors = [];
+    $errors = array();
 
     if (isset($this->attrs['roleOccupant'])) {
       $savedOccupants     = $this->attributesAccess['roleOccupant']->getInitialValue();
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 55bec8e42..5c26b4389 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -21,16 +21,16 @@
 class ogrouptabs extends simpleTabs_noSpecial
 {
   protected $groupObjects = NULL;
-  protected $removed_tabs = [];
+  protected $removed_tabs = array();
 
-  function __construct ($type, $dn, $copied_object = NULL)
+  function __construct($type, $dn, $copied_object = NULL)
   {
     parent::__construct($type, $dn, $copied_object);
 
     $this->loadtabs($this->getBaseObject()->gosaGroupObjects);
   }
 
-  function loadtabs ($gosaGroupObjects)
+  function loadtabs($gosaGroupObjects)
   {
     global $config;
     if ($this->groupObjects == $gosaGroupObjects) {
@@ -39,21 +39,21 @@ class ogrouptabs extends simpleTabs_noSpecial
     $this->groupObjects = $gosaGroupObjects;
     $objects = preg_replace('/[\[\]]/', '', $gosaGroupObjects);
 
-    $tabs = [];
+    $tabs = array();
     if (strlen($objects)) {
       if (isset($config->data['TABS']['OGROUP-DYNAMICTABS'])) {
         $dtabs  = $config->data['TABS']['OGROUP-DYNAMICTABS'];
       } else {
-        $dtabs  = [];
+        $dtabs  = array();
       }
       $tabs   = FALSE;
       for ($i = 0; $i < strlen($objects); $i++) {
-        if (in_array($objects[$i], ['I','G'])) {
+        if (in_array($objects[$i], array('I','G'))) {
           /* Ignore unknown objects and groups */
           continue;
         }
         $otype = ogroup::$objectTypes[$objects[$i]];
-        $otabs = [];
+        $otabs = array();
         if (isset($config->data['TABS'][strtoupper($otype).'TABS'])) {
           $otabs = array_uintersect(
             $dtabs,
@@ -129,7 +129,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     unset($this->plNotify["$class"]);
   }
 
-  function gen_tabs ($disabled = FALSE)
+  function gen_tabs($disabled = FALSE)
   {
     $this->loadtabs($this->getBaseObject()->getGroupObjectTypes());
     return parent::gen_tabs($disabled);
@@ -138,7 +138,7 @@ class ogrouptabs extends simpleTabs_noSpecial
   /*!
    * \brief Sets the active tabs from this instance to an other one. Used by templates
    */
-  function setActiveTabs (&$tabObject)
+  function setActiveTabs(&$tabObject)
   {
     $tabObject->loadtabs($this->groupObjects);
     foreach ($this->by_object as $class => $plugin) {
@@ -148,12 +148,12 @@ class ogrouptabs extends simpleTabs_noSpecial
     }
   }
 
-  function check ($ignore_account = FALSE)
+  function check($ignore_account = FALSE)
   {
     return parent::check(FALSE);
   }
 
-  function save ()
+  function save()
   {
     $errors = parent::save();
 
@@ -174,7 +174,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     return $errors;
   }
 
-  function save_object ($save_current = FALSE)
+  function save_object($save_current = FALSE)
   {
     parent::save_object($save_current);
 
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index fe034506e..3424dc787 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -22,7 +22,7 @@
 
 class userManagement extends simpleManagement
 {
-  protected $objectTypes  = ['user'];
+  protected $objectTypes  = array('user');
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
@@ -36,22 +36,22 @@ class userManagement extends simpleManagement
 
   public static $skipTemplates = FALSE;
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Users'),
       'plTitle'       => _('Manage users'),
       'plDescription' => _('Manage user accounts and their properties'),
       'plIcon'        => 'geticon.php?context=types&icon=user&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => ['user'],
+      'plManages'     => array('user'),
       'plPriority'    => 10,
 
-      'plProvidedAcls' => []
-    ];
+      'plProvidedAcls' => array()
+    );
   }
 
-  function __construct ()
+  function __construct()
   {
     $this->filterXMLPath  = get_template_path('user-filter.xml',  TRUE, dirname(__FILE__));
     $this->listXMLPath    = get_template_path('user-list.xml',    TRUE, dirname(__FILE__));
@@ -80,7 +80,7 @@ class userManagement extends simpleManagement
   {
     parent::configureFilter();
 
-    $classes = [];
+    $classes = array();
     if (class_available('posixAccount')) {
       $classes[] = 'posixAccount';
     } else {
@@ -121,7 +121,7 @@ class userManagement extends simpleManagement
 
   /* !\brief  Lock/unlock multiple users.
    */
-  function lockUsers ($action, array $target, array $all)
+  function lockUsers($action, array $target, array $all)
   {
     if (!count($target)) {
       return;
@@ -136,12 +136,12 @@ class userManagement extends simpleManagement
 
   /* !\brief  Locks/unlocks the given user(s).
    */
-  function lockEntry ($action, $entry, $all, $type = 'toggle')
+  function lockEntry($action, $entry, $all, $type = 'toggle')
   {
     global $config, $ui;
     // Filter out entries we are not allowed to modify
-    $disallowed = [];
-    $allowed    = [];
+    $disallowed = array();
+    $allowed    = array();
     foreach ($entry as $dn) {
       if (!preg_match('/w/', $ui->get_permissions($dn, 'user/user', 'userLock'))) {
         $disallowed[] = $dn;
@@ -156,7 +156,7 @@ class userManagement extends simpleManagement
     // Try to lock/unlock the rest of the entries.
     $ldap = $config->get_ldap_link();
     foreach ($allowed as $dn) {
-      $ldap->cat($dn, ['userPassword']);
+      $ldap->cat($dn, array('userPassword'));
       if ($ldap->count() == 1) {
 
         // We can't lock empty passwords.
@@ -207,7 +207,7 @@ class userManagement extends simpleManagement
     }
   }
 
-  static function filterLockImage ($userPassword)
+  static function filterLockImage($userPassword)
   {
     $image = 'images/empty.png';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -220,7 +220,7 @@ class userManagement extends simpleManagement
     return $image;
   }
 
-  static function filterLockLabel ($userPassword)
+  static function filterLockLabel($userPassword)
   {
     $label = '';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -233,10 +233,10 @@ class userManagement extends simpleManagement
     return $label;
   }
 
-  static function filterProperties ($row, $dn, $attrs)
+  static function filterProperties($row, $dn, $attrs)
   {
     global $config;
-    static $usertabs = [];
+    static $usertabs = array();
     if (empty($usertabs)) {
       foreach ($config->data['TABS']['USERTABS'] as $plug) {
         if ($plug['CLASS'] == 'user') {
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index a309d0f17..c8e193537 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -25,7 +25,7 @@ class DebugLevelAttribute extends SetAttribute
   {
     if (isset($attrs[$this->getLdapName()])) {
       $value = $attrs[$this->getLdapName()][0];
-      $this->value = [];
+      $this->value = array();
       foreach ($this->attribute->getChoices() as $choice) {
         if ($value & $choice) {
           $this->value[] = $choice;
@@ -36,7 +36,7 @@ class DebugLevelAttribute extends SetAttribute
     }
   }
 
-  function computeLdapValue ()
+  function computeLdapValue()
   {
     $value = 0;
     foreach ($this->value as $v) {
@@ -48,49 +48,49 @@ class DebugLevelAttribute extends SetAttribute
 
 class configInLdap extends simplePlugin
 {
-  var $objectclasses  = ["fusionDirectoryConf"];
+  var $objectclasses  = array("fusionDirectoryConf");
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'     => _('Configuration'),
       'plTitle'         => _('FusionDirectory configuration'),
       'plDescription'   => _('Configuration screen of FusionDirectory'),
       'plIcon'          => 'geticon.php?context=categories&icon=settings&size=48',
-      'plObjectType'    => [
-        'configuration' => [
+      'plObjectType'    => array(
+        'configuration' => array(
           'name'      => _('FusionDirectory configuration'),
           'filter'    => 'objectClass=fusionDirectoryConf',
           'tabClass'  => 'tabs_configInLdap',
           'icon'      => 'geticon.php?context=categories&icon=settings&size=16',
           'mainAttr'  => FALSE,
           'ou'        => preg_replace('/^[^,]+,/', '', CONFIGRDN)
-        ]
-      ],
-      'plSection'       => ['conf' => ['name' => _('Configuration'), 'priority' => 20]],
-      'plManages'       => ['configuration'],
+        )
+      ),
+      'plSection'       => array('conf' => array('name' => _('Configuration'), 'priority' => 20)),
+      'plManages'       => array('configuration'),
       'plPriority'      => 0,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    $plugins = [];
+    $plugins = array();
     if (session::is_set('plist')) {
       $plugins = array_keys(session::get('plist')->info);
     }
     sort($plugins);
-    return [
-      'look_n_feel' => [
+    return array(
+      'look_n_feel' => array(
         'name'  => _('Look and feel'),
-        'attrs' => [
+        'attrs' => array(
           new SelectAttribute (
             _('Language'), _('Language of the application. If \'automatic\' or not available, the one asked by the browser will be used. This setting can be overriden per user.'),
             'fdLanguage', FALSE,
-            ['']
+            array('')
           ),
           new SelectAttribute (
             _('Theme'), _('Theme to be used'),
@@ -101,14 +101,14 @@ class configInLdap extends simplePlugin
           new SelectAttribute (
             _('Timezone'), _('Timezone to be used'),
             'fdTimezone', TRUE,
-            ['America/New_York']
+            array('America/New_York')
           ),
           new HiddenAttribute ('fusionConfigMd5'),
-        ]
-      ],
-      'core_settings' => [
+        )
+      ),
+      'core_settings' => array(
         'name'  => _('Core settings'),
-        'attrs' => [
+        'attrs' => array(
           new IntAttribute (
             _('LDAP size limit'), _('Defines the number of entries to get from LDAP by default.'),
             'fdLdapSizeLimit', FALSE,
@@ -118,7 +118,7 @@ class configInLdap extends simplePlugin
             _('Edit locking'),
             _('Check if a entry currently being edited has been modified outside of FusionDirectory in the meantime.'),
             'fdModificationDetectionAttribute', FALSE,
-            ['', 'entryCSN', 'contextCSN'], 'entryCSN'
+            array('', 'entryCSN', 'contextCSN'), 'entryCSN'
           ),
           new BooleanAttribute (
             _('Enable logging'),
@@ -147,15 +147,15 @@ class configInLdap extends simplePlugin
             'fdWildcardForeignKeys', FALSE,
             TRUE
           ),
-        ]
-      ],
-      'password' => [
+        )
+      ),
+      'password' => array(
         'name'  => _('Password settings'),
-        'attrs' => [
+        'attrs' => array(
           new SelectAttribute (
             _('Password default hash'), _('Default hash to be used'),
             'fdPasswordDefaultHash', TRUE,
-            ['ssha']
+            array('ssha')
           ),
           new BooleanAttribute (
             _('Force default hash'), _('Force the use of the default password hash'),
@@ -184,17 +184,17 @@ class configInLdap extends simplePlugin
             _('SASL Exop'), _('Attribute to be stored in the userPassword attribute'),
             'fdSaslExop'
           ),
-        ]
-      ],
-      'login' => [
+        )
+      ),
+      'login' => array(
         'name'  => _('Login and session'),
-        'attrs' => [
+        'attrs' => array(
           new SelectAttribute (
             _('Login attribute'),
             _('Which LDAP attribute should be used as the login name during login.'),
             'fdLoginAttribute', TRUE,
-            ['uid', 'mail', 'uid,mail'], 'uid',
-            ['uid', 'mail', 'both']
+            array('uid', 'mail', 'uid,mail'), 'uid',
+            array('uid', 'mail', 'both')
           ),
           new BooleanAttribute (
             _('Enforce encrypted connections'),
@@ -227,11 +227,11 @@ class configInLdap extends simplePlugin
             'fdHttpHeaderAuthHeaderName', FALSE,
             'AUTH_USER'
           ),
-        ]
-      ],
-      'ssl' => [
+        )
+      ),
+      'ssl' => array(
         'name'  => _('SSL'),
-        'attrs' => [
+        'attrs' => array(
           new TrimmedStringAttribute (
             _('Key path'), _('Path to FusionDirectory private key. Unused for now.'),
             'fdSslKeyPath', FALSE,
@@ -247,11 +247,11 @@ class configInLdap extends simplePlugin
             'fdSslCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-        ]
-      ],
-      'cas' => [
+        )
+      ),
+      'cas' => array(
         'name'  => _('CAS'),
-        'attrs' => [
+        'attrs' => array(
           new BooleanAttribute (
             _('Enable CAS'), _('CAS login will be used instead of LDAP bind'),
             'fdCasActivated', FALSE,
@@ -277,16 +277,16 @@ class configInLdap extends simplePlugin
             'fdCasContext', FALSE,
             '/cas'
           ),
-        ]
-      ],
-      'people_and_group' => [
+        )
+      ),
+      'people_and_group' => array(
         'name'  => _('People and group storage'),
-        'class' => ['critical'],
-        'attrs' => [
+        'class' => array('critical'),
+        'attrs' => array(
           new SelectAttribute (
             _('People DN attribute'), _('Attribute to use at the beginning of users dn'),
             'fdAccountPrimaryAttribute', TRUE,
-            ['uid', 'cn']
+            array('uid', 'cn')
           ),
           new StringAttribute (
             _('CN pattern'), _('The pattern to use to build the common name field'),
@@ -321,11 +321,11 @@ class configInLdap extends simplePlugin
             _('Postal address pattern'), _('When using separate address fields, you can use a pattern to fill postalAddress field.'),
             'fdPostalAddressPattern'
           ),
-        ]
-      ],
-      'debug' => [
+        )
+      ),
+      'debug' => array(
         'name'  => _('Debugging'),
-        'attrs' => [
+        'attrs' => array(
           new BooleanAttribute (
             _('Display errors'),
             _('Shows PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some passwords in it.'),
@@ -346,18 +346,18 @@ class configInLdap extends simplePlugin
               _('Debug level'),
               _('Display certain information on each page load.'),
               'fdDebugLevel', FALSE,
-              [DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
-                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL],
+              array(DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
+                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL),
                     DEBUG_TRACE,
-              ['Trace',      'LDAP',     'Database', 'Shell',      'POST',
-                    'SESSION',      'ACL',      'SI',     'Mail']
+              array('Trace',      'LDAP',     'Database', 'Shell',      'POST',
+                    'SESSION',      'ACL',      'SI',     'Mail')
             )
           ),
-        ]
-      ],
-      'miscellaneous' => [
+        )
+      ),
+      'miscellaneous' => array(
         'name'  => _('Miscellaneous'),
-        'attrs' => [
+        'attrs' => array(
           new BooleanAttribute (
             _('Display summary in listings'),
             _('Determines whether a status bar will be shown on the bottom of lists, displaying a short summary of type and number of elements in the list.'),
@@ -374,42 +374,42 @@ class configInLdap extends simplePlugin
               _('Available department categories'), _('Available categories in the departments dropdown'),
               'fdDepartmentCategories', FALSE
             ),
-            []
+            array()
           ),
           new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Use this to hide some menu entry to specific groups of users'),
               'fdPluginsMenuBlacklist',
-              [
+              array(
                 new SelectAttribute(
                   '', _('Group or role'),
                   'blacklistGroup', TRUE,
-                  []
+                  array()
                 ),
                 new SelectAttribute(
                   '', _('Plugin to blacklist'),
                   'blacklistPlugin', TRUE,
-                  []
+                  array()
                 ),
-              ],
+              ),
               '',
               _('Plugin menu blacklist')
             ),
             // no order
             FALSE,
-            []
+            array()
           )
-        ]
-      ],
-      'hooks' => [
+        )
+      ),
+      'hooks' => array(
         'name'  => _('Hooks'),
-        'class' => ['fullwidth'],
-        'attrs' => [
+        'class' => array('fullwidth'),
+        'attrs' => array(
           new OrderedArrayAttribute (
             new CompositeAttribute (
               _('Hooks that are called when specific actions happens'),
               'fdTabHook',
-              [
+              array(
                 new SelectAttribute(
                   _('Tab'), _('The tab that this hook concerns'),
                   'hookTab', TRUE,
@@ -418,22 +418,22 @@ class configInLdap extends simplePlugin
                 new SelectAttribute(
                   _('Mode'), _('When to call this command'),
                   'hookMode', TRUE,
-                  ['postcreate', 'postremove', 'postmodify',
+                  array('postcreate', 'postremove', 'postmodify',
                         'precreate', 'preremove', 'premodify', 'check',
-                        'prelock', 'postlock', 'preunlock', 'postunlock']
+                        'prelock', 'postlock', 'preunlock', 'postunlock')
                 ),
                 new TextAreaAttribute(
                   _('Command'), _('The command that will be called'),
                   'hookCmd', TRUE
                 )
-              ],
+              ),
               '/^([^\\|]+)\\|([^\\|]+)\\|(.*)$/',
               '%s|%s|%s',
               '', // acl
               _('Hooks')
             ),
             FALSE, // non-ordered
-            [],
+            array(),
             TRUE // edition
           ),
           new BooleanAttribute (
@@ -441,9 +441,9 @@ class configInLdap extends simplePlugin
             _('When enabled successful hook execution output is displayed to the user using a dialog.'),
             'fdDisplayHookOutput'
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -453,7 +453,7 @@ class configInLdap extends simplePlugin
     /* Languages */
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(["" => _("Automatic")], $languages);
+    $languages = array_merge(array("" => _("Automatic")), $languages);
     $attributesInfo['look_n_feel']['attrs'][0]->setChoices(array_keys($languages), array_values($languages));
     /* Timezones */
     $attributesInfo['look_n_feel']['attrs'][2]->setChoices(timezone::_get_tz_zones());
@@ -485,7 +485,7 @@ class configInLdap extends simplePlugin
       array_keys($groupsAndRoles),
       array_values($groupsAndRoles)
     );
-    $menuPlugins = [];
+    $menuPlugins = array();
     $plist = session::get('plist');
     foreach ($config->data['SECTIONS'] as $section => $section_infos) {
       foreach ($config->data['MENU'][$section] as $info) {
@@ -511,73 +511,73 @@ class configInLdap extends simplePlugin
     $this->fusionConfigMd5 = md5_file(CACHE_DIR."/".CLASS_CACHE);
 
     $this->attributesAccess['fdHttpAuthActivated']->setManagedAttributes(
-      [
-        'erase' => [
-          TRUE => [
+      array(
+        'erase' => array (
+          TRUE => array (
             'fdCasActivated',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
     $this->attributesAccess['fdEnableSnapshots']->setManagedAttributes(
-      [
-        'disable' => [
-          FALSE => [
+      array(
+        'disable' => array (
+          FALSE => array (
             'fdSnapshotBase',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
 
     $this->attributesAccess['fdTabHook']->setLinearRendering(FALSE);
 
     $this->attributesAccess['fdForceSSL']->setManagedAttributes(
-      [
-        'disable' => [
-          TRUE => [
+      array(
+        'disable' => array (
+          TRUE => array (
             'fdWarnSSL',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
     $this->attributesAccess['fdCasActivated']->setManagedAttributes(
-      [
-        'disable' => [
-          FALSE => [
+      array(
+        'disable' => array (
+          FALSE => array (
             'fdCasServerCaCertPath',
             'fdCasHost',
             'fdCasPort',
             'fdCasContext',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
     $this->attributesAccess['fdHttpHeaderAuthActivated']->setManagedAttributes(
-      [
-        'disable' => [
-          FALSE => [
+      array(
+        'disable' => array (
+          FALSE => array (
             'fdHttpHeaderAuthHeaderName',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
     $this->attributesAccess['fdSplitPostalAddress']->setManagedAttributes(
-      [
-        'disable' => [
-          FALSE => [
+      array(
+        'disable' => array (
+          FALSE => array (
             'fdPostalAddressPattern',
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
   }
 
-  function compute_dn ()
+  function compute_dn()
   {
     return $this->dn;
   }
 
-  function check ()
+  function check()
   {
     $messages = parent::check();
     if (($this->fdPasswordDefaultHash == 'sasl') && ($this->fdSaslRealm == '') && ($this->fdSaslExop == '')) {
@@ -586,7 +586,7 @@ class configInLdap extends simplePlugin
     return $messages;
   }
 
-  static function get_themes ()
+  static function get_themes()
   {
     $themesdir  = '../ihtml/themes/';
     $themes     = array_keys(session::get(IconTheme::$session_var));
diff --git a/plugins/config/class_dashBoardConfig.inc b/plugins/config/class_dashBoardConfig.inc
index 09993901b..38b094ad8 100644
--- a/plugins/config/class_dashBoardConfig.inc
+++ b/plugins/config/class_dashBoardConfig.inc
@@ -20,27 +20,27 @@
 
 class dashboardConfig extends simplePlugin
 {
-  var $objectclasses  = ['fdDashboardPluginConf'];
+  var $objectclasses  = array('fdDashboardPluginConf');
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'     => _('Dashboard configuration'),
       'plDescription'   => _('FusionDirectory dashboard plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => ['configuration'],
-      'plObjectType'    => ['smallConfig'],
+      'plCategory'      => array('configuration'),
+      'plObjectType'    => array('smallConfig'),
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'systems' => [
+    return array(
+      'systems' => array(
         'name'  => _('Dashboard name schema'),
-        'attrs' => [
+        'attrs' => array(
           new IntAttribute (
             _('Number of digits'), _('Number of digits to use after prefix'),
             'fdDashboardNumberOfDigit', FALSE,
@@ -51,21 +51,21 @@ class dashboardConfig extends simplePlugin
               _('Prefixes'), _('Prefixes to be used for computer ids'),
               'fdDashboardPrefix', TRUE
             ),
-            ["PC"]
+            array("PC")
           )
-        ]
-      ],
-      'users' => [
+        )
+      ),
+      'users' => array(
         'name'  => _('Dashboard expired users'),
-        'attrs' => [
+        'attrs' => array(
           new IntAttribute (
             _('Number of days'), _('Number of days before expiration needed for an account to show in the dashboard next expired accounts list'),
             'fdDashboardExpiredAccountsDays', FALSE,
             1, FALSE, 15
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 }
 ?>
diff --git a/plugins/config/class_mainPluginsConfig.inc b/plugins/config/class_mainPluginsConfig.inc
index dec365b7e..a00e598f0 100644
--- a/plugins/config/class_mainPluginsConfig.inc
+++ b/plugins/config/class_mainPluginsConfig.inc
@@ -20,45 +20,45 @@
 
 class mainPluginsConfig extends simplePlugin
 {
-  var $objectclasses  = ["fusionDirectoryPluginsConf"];
+  var $objectclasses  = array("fusionDirectoryPluginsConf");
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       "plShortName"     => _("Plugins configuration"),
       "plDescription"   => _("FusionDirectory plugins configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => ["configuration"],
-      "plObjectType"    => ["smallConfig"],
+      "plCategory"      => array("configuration"),
+      "plObjectType"    => array("smallConfig"),
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'ogroups' => [
+    return array(
+      'ogroups' => array(
         'name'  => _('Object groups'),
-        'attrs' => [
+        'attrs' => array(
           new StringAttribute (
             _('Groups RDN'), _('Branch in which object groups will be stored'),
             'fdOGroupRDN', TRUE,
             'ou=groups'
           ),
-        ]
-      ],
-      'sasl' => [
+        )
+      ),
+      'sasl' => array(
         'name'  => _('SASL'),
-        'attrs' => [
+        'attrs' => array(
           new BooleanAttribute (
             _('Force to ask for password'), _('Useful if you add a hook using password value when SASL user passwords are edited'),
             'fdForceSaslPasswordAsk', TRUE,
             FALSE
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 }
 ?>
diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc
index daea9f313..676fa318d 100644
--- a/plugins/config/class_pluginsConfigInLdap.inc
+++ b/plugins/config/class_pluginsConfigInLdap.inc
@@ -22,16 +22,16 @@ class pluginsConfigInLdap extends multiPlugin
 {
   var $tabClass = 'SMALLCONFIGTABS';
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('Plugins'),
       'plDescription' => _('Configuration for plugins'),
       'plPriority'    => 20,
-      'plObjectType'  => ['configuration'],
+      'plObjectType'  => array('configuration'),
       'plSubTabs'     => 'SMALLCONFIGTABS',
 
-      'plProvidedAcls'  => []
-    ];
+      'plProvidedAcls'  => array()
+    );
   }
 }
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index 799ea261a..ff252c0de 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -20,27 +20,27 @@
 
 class recoveryConfig extends simplePlugin
 {
-  var $objectclasses  = ['fdPasswordRecoveryConf'];
+  var $objectclasses  = array('fdPasswordRecoveryConf');
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'     => _('Password recovery'),
       'plDescription'   => _('Settings for the password recovery feature'),
-      'plObjectType'    => ['configuration'],
+      'plObjectType'    => array('configuration'),
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return  [
-      'settings' => [
+    return array (
+      'settings' => array (
         'name'      => _('Password recovery settings'),
-        'class'     => ['alone'],
+        'class'     => array ('alone'),
         'template'  => get_template_path('simpleplugin_section_alone.tpl'),
-        'attrs'     => [
+        'attrs'     => array (
           new BooleanAttribute (
             _('Activate password recovery'),
             _('Whether to activate or not password recovery feature'),
@@ -79,11 +79,11 @@ class recoveryConfig extends simplePlugin
             'fdPasswordRecoveryLoginAttribute', TRUE,
             'uid'
           ),
-        ]
-      ],
-      'first_email' => [
+        )
+      ),
+      'first_email' => array (
         'name' => _('First email'),
-        'attrs' => [
+        'attrs' => array (
           new StringAttribute (
             _('Subject'),
             _('Subject of the first email'),
@@ -98,11 +98,11 @@ class recoveryConfig extends simplePlugin
             TRUE,
             _("Hello,\n\nHere is your information: \n - Login : %s\n - Link : %s\n\nThis link is only valid for 10 minutes.")
           )
-        ]
-      ],
-      'second_email' => [
+        )
+      ),
+      'second_email' => array (
         'name' => _('Second email'),
-        'attrs' => [
+        'attrs' => array (
           new StringAttribute (
             _('Subject'),
             _('Subject of the second email'),
@@ -117,9 +117,9 @@ class recoveryConfig extends simplePlugin
             TRUE,
            _("Hello,\n\nYour password has been changed.\nYour login is still %s.")
           )
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -128,7 +128,7 @@ class recoveryConfig extends simplePlugin
     // Check if token branch is here
     $ldap = $config->get_ldap_link();
     $tokenBranch = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($tokenBranch, ['dn']);
+    $ldap->cat($tokenBranch, array('dn'));
     if (!$ldap->count()) {
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($tokenBranch);
@@ -145,15 +145,15 @@ class recoveryConfig extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
 
     $this->attributesAccess['fdPasswordRecoveryActivated']->setManagedAttributes(
-      [
-        'disable' => [
-          FALSE => [
+      array(
+        'disable' => array(
+          FALSE => array(
             'fdPasswordRecoveryEmail','fdPasswordRecoveryValidity','fdPasswordRecoverySalt',
             'fdPasswordRecoveryMailSubject','fdPasswordRecoveryMailBody',
             'fdPasswordRecoveryMail2Subject','fdPasswordRecoveryMail2Body'
-          ]
-        ]
-      ]
+          )
+        )
+      )
     );
   }
 }
diff --git a/plugins/generic/references/class_reference.inc b/plugins/generic/references/class_reference.inc
index b398f82cf..c67a5a8f2 100644
--- a/plugins/generic/references/class_reference.inc
+++ b/plugins/generic/references/class_reference.inc
@@ -20,35 +20,35 @@
 
 class reference extends simplePlugin
 {
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('References'),
       'plDescription' => _('References'),
-      'plCategory'    => ['acl'],
-      'plObjectType'  => [
-        'special' => [
+      'plCategory'    => array('acl'),
+      'plObjectType'  => array(
+        'special' => array(
           'name' => 'special'
-        ]
-      ],
+        )
+      ),
       'plPriority'    => 10,
 
-      'plProvidedAcls'  => []
-    ];
+      'plProvidedAcls'  => array()
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'main' => [
+    return array(
+      'main' => array(
         'name'      => _('References'),
-        'class'     => ['fullwidth'],
-        'attrs'     => [
+        'class'     => array('fullwidth'),
+        'attrs'     => array(
           new FakeAttribute('refs')
-        ],
+        ),
         'template'  => get_template_path('contents.tpl', TRUE, dirname(__FILE__))
-      ],
-    ];
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -58,7 +58,7 @@ class reference extends simplePlugin
     $this->refs = NULL;
   }
 
-  function execute ()
+  function execute()
   {
     if ($this->refs === NULL) {
       $this->fillRefs();
@@ -68,7 +68,7 @@ class reference extends simplePlugin
     return parent::execute();
   }
 
-  function fillRefs ()
+  function fillRefs()
   {
     if (!isset($this->parent)) {
       $this->refs = NULL;
@@ -77,18 +77,18 @@ class reference extends simplePlugin
     $this->refs = $this->browseForeignKeys('references');
   }
 
-  function check ()
+  function check()
   {
   }
 
-  function save ()
+  function save()
   {
-    return [];
+    return array();
   }
 
-  function remove ($fulldelete = FALSE)
+  function remove($fulldelete = FALSE)
   {
-    return [];
+    return array();
   }
 }
 
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 1c7cdccff..7ce7c6681 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -29,8 +29,8 @@ class UserPasswordAttribute extends CompositeAttribute
     $temp = passwordMethod::get_available_methods();
 
     /* Create password methods array */
-    $pwd_methods = [];
-    $this->needPassword = [];
+    $pwd_methods = array();
+    $this->needPassword = array();
     foreach ($temp['name'] as $id => $name) {
       $this->needPassword[$name] = $temp[$id]['object']->need_password();
       $pwd_methods[$name] = $name;
@@ -41,7 +41,7 @@ class UserPasswordAttribute extends CompositeAttribute
 
     parent::__construct (
       $description, $ldapName,
-      [
+      array(
         new SelectAttribute(
           _('Password method'), _('Password hash method to use'),
           $ldapName.'_pwstorage', TRUE,
@@ -62,13 +62,13 @@ class UserPasswordAttribute extends CompositeAttribute
           $ldapName.'_locked', FALSE,
           FALSE
         )
-      ],
+      ),
       '', '', $acl, $label
     );
     $this->attributes[0]->setSubmitForm(TRUE);
   }
 
-  public function setParent (&$plugin)
+  public function setParent(&$plugin)
   {
     global $config;
     parent::setParent($plugin);
@@ -84,7 +84,7 @@ class UserPasswordAttribute extends CompositeAttribute
   }
 
   /* We need to handle method select disabling manually */
-  function renderAttribute (&$attributes, $readOnly)
+  function renderAttribute(&$attributes, $readOnly)
   {
     global $config;
     if ($this->visible) {
@@ -143,7 +143,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->checkIfMethodNeedsPassword();
   }
 
-  function checkIfMethodNeedsPassword ()
+  function checkIfMethodNeedsPassword()
   {
     $method = $this->attributes[0]->getValue();
     if ($method != $this->previousMethod) {
@@ -160,7 +160,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->previousMethod = $method;
   }
 
-  function readValues ($value)
+  function readValues($value)
   {
     global $config;
     $pw_storage = $config->get_cfg_value('passwordDefaultHash', 'ssha');
@@ -183,10 +183,10 @@ class UserPasswordAttribute extends CompositeAttribute
         $pw_storage = 'clear';
       }
     }
-    return [$pw_storage, $password, $password, $value, $locked];
+    return array($pw_storage, $password, $password, $value, $locked);
   }
 
-  function writeValues ($values)
+  function writeValues($values)
   {
     if ($this->needPassword[$values[0]] && ($values[1] == '')) {
       if ($this->plugin->is_template) {
@@ -209,7 +209,7 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function check ()
+  function check()
   {
     $method = $this->attributes[0]->getValue();
     if (!$this->needPassword[$method]) {
@@ -225,17 +225,17 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function getMethod ()
+  function getMethod()
   {
     return $this->attributes[0]->getValue();
   }
 
-  function getClear ()
+  function getClear()
   {
     return $this->attributes[1]->getValue();
   }
 
-  function isLocked ()
+  function isLocked()
   {
     return $this->attributes[4]->getValue();
   }
@@ -246,8 +246,8 @@ class PostalAddressAttribute extends TextAreaAttribute
   function inputValue ($ldapValue)
   {
     return str_replace(
-      ['$',  '\24','\5C'],
-      ["\n", '$',  '\\'],
+      array('$',  '\24','\5C'),
+      array("\n", '$',  '\\'),
       $ldapValue
     );
   }
@@ -255,11 +255,11 @@ class PostalAddressAttribute extends TextAreaAttribute
   function computeLdapValue ()
   {
     return str_replace(
-      ["\r\n", "\n", "\r"],
+      array("\r\n", "\n", "\r"),
       '$',
       str_replace(
-        ['\\', '$'],
-        ['\5C','\24'],
+        array('\\', '$'),
+        array('\5C','\24'),
         $this->getValue()
       )
     );
@@ -268,19 +268,19 @@ class PostalAddressAttribute extends TextAreaAttribute
 
 class user extends simplePlugin
 {
-  var $objectclasses  = ['inetOrgPerson','organizationalPerson','person'];
+  var $objectclasses  = array('inetOrgPerson','organizationalPerson','person');
 
   private $was_locked;
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'   => _('User'),
       'plDescription' => _('User account information'),
       'plIcon'        => 'geticon.php?context=applications&icon=user-info&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=user-info&size=16',
       'plSelfModify'  => TRUE,
-      'plObjectType'  => ['user' => [
+      'plObjectType'  => array('user' => array(
         'name'        => _('User'),
         'description' => _('User account'),
         'filter'      => '(objectClass=inetOrgPerson)',
@@ -288,16 +288,16 @@ class user extends simplePlugin
         'nameAttr'    => 'cn',
         'icon'        => 'geticon.php?context=types&icon=user&size=16',
         'ou'          => get_ou('userRDN'),
-      ]],
-      'plForeignKeys'  => [
-        'manager' => ['user','dn','manager=%oldvalue%','*']
-      ],
+      )),
+      'plForeignKeys'  => array(
+        'manager' => array('user','dn','manager=%oldvalue%','*')
+      ),
 
       'plProvidedAcls' => array_merge(
         parent::generatePlProvidedAcls(static::getAttributesInfo()),
-        ['userLock' => _('User lock status')]
+        array('userLock' => _('User lock status'))
       )
-    ];
+    );
   }
 
   // The main function : information about attributes
@@ -306,12 +306,12 @@ class user extends simplePlugin
     global $config;
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(['' => ''], $languages);
-    $attributesInfo = [
-      'perso' => [
+    $languages = array_merge(array('' => ''), $languages);
+    $attributesInfo = array(
+      'perso' => array(
         'name'  => _('Personal information'),
         'icon'  => 'geticon.php?context=types&icon=user&size=16',
-        'attrs' => [
+        'attrs' => array(
           new HiddenAttribute('cn'),
           new StringAttribute (
             _('Last name'), _('Last name of this user'),
@@ -332,12 +332,12 @@ class user extends simplePlugin
             'jpegPhoto', FALSE,
             150, 200, 'jpeg'
           ),
-        ]
-      ],
-      'contact' => [
+        )
+      ),
+      'contact' => array(
         'name'  => _('Organizational contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => [
+        'attrs' => array(
           new StringAttribute (
             _('Location'), _('Location'),
             'l', FALSE
@@ -378,12 +378,12 @@ class user extends simplePlugin
             _('Homepage'), _('Personal homepage'),
             'labeledURI', FALSE
           ),
-        ]
-      ],
-      'account' => [
+        )
+      ),
+      'account' => array(
         'name'  => _('Account information'),
         'icon'  => 'geticon.php?context=applications&icon=ldap&size=16',
-        'attrs' => [
+        'attrs' => array(
           new BaseSelectorAttribute (get_ou("userRDN")),
           new UidAttribute (
             _('Login'), _('Login of this user'),
@@ -398,12 +398,12 @@ class user extends simplePlugin
             _('Password'), _('Password of the user'),
             'userPassword', FALSE
           ),
-        ]
-      ],
-      'homecontact' => [
+        )
+      ),
+      'homecontact' => array(
         'name'  => _('Personal contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => [
+        'attrs' => array(
           new StringAttribute (
             _('Display name'), _('Name this user should appear as. Used by Exchange.'),
             'displayName', FALSE
@@ -416,12 +416,12 @@ class user extends simplePlugin
             _('Private phone'), _('Home phone number'),
             'homePhone', FALSE
           ),
-        ]
-      ],
-      'organization' => [
+        )
+      ),
+      'organization' => array(
         'name'  => _('Organizational information'),
         'icon'  => 'geticon.php?context=places&icon=folder&size=16',
-        'attrs' => [
+        'attrs' => array(
           new SetAttribute (
             new StringAttribute (
               _('Title'), _('Title of a person in their organizational context. Each title is one value of this multi-valued attribute'),
@@ -452,12 +452,12 @@ class user extends simplePlugin
             _('Manager'), _('Manager'),
             'manager', FALSE
           ),
-        ]
-      ],
-    ];
+        )
+      ),
+    );
     if ($config->get_cfg_value('SplitPostalAddress') == 'TRUE') {
       $attributesInfo['contact']['attrs'][2]->setVisible(FALSE);
-      array_splice($attributesInfo['contact']['attrs'], 3, 0, [
+      array_splice($attributesInfo['contact']['attrs'], 3, 0, array(
         new StringAttribute (
           _('Street'), _('Street part of the address'),
           'street', FALSE
@@ -471,7 +471,7 @@ class user extends simplePlugin
           'postalCode', FALSE,
           0, FALSE
         ),
-      ]);
+      ));
     }
     return $attributesInfo;
   }
@@ -491,13 +491,13 @@ class user extends simplePlugin
     $this->was_locked = $this->attributesAccess['userPassword']->isLocked();
   }
 
-  function is_this_account ($attrs)
+  function is_this_account($attrs)
   {
     /* Only inetOrgPerson is needed, it has the two others as SUP classes */
     return (isset($attrs['objectClass']) && in_array_ics('inetOrgPerson', $attrs['objectClass']));
   }
 
-  function resetCopyInfos ()
+  function resetCopyInfos()
   {
     parent::resetCopyInfos();
     $this->attributesAccess['uid']->setDisabled($this->initially_was_account && !$this->is_template);
@@ -513,7 +513,7 @@ class user extends simplePlugin
   private function applyPattern ($pattern)
   {
     $fields   = templateHandling::listFields($pattern);
-    $attrs    = [];
+    $attrs    = array();
     foreach ($fields as $field) {
       if (in_array($field, $this->attributes)) {
         $attrs[$field] = $this->$field;
@@ -534,7 +534,7 @@ class user extends simplePlugin
     return templateHandling::parseString($pattern, $attrs);
   }
 
-  function compute_dn ()
+  function compute_dn()
   {
     global $config;
     if ($this->is_template) {
@@ -548,14 +548,14 @@ class user extends simplePlugin
     return $this->create_unique_dn($attribute, get_ou('userRDN').$this->base);
   }
 
-  function execute ()
+  function execute()
   {
     $smarty = get_smarty();
     $smarty->append('css_files', 'plugins/users/style/user_tab.css');
     return parent::execute();
   }
 
-  protected function shouldSave ()
+  protected function shouldSave()
   {
     if ($this->attributesAccess['userPassword']->getClear() != '') {
       /* There may be hooks using this even if LDAP object is not modified */
@@ -577,7 +577,7 @@ class user extends simplePlugin
     return parent::prepare_save();
   }
 
-  function ldap_save ()
+  function ldap_save()
   {
     $errors = parent::ldap_save();
 
@@ -594,7 +594,7 @@ class user extends simplePlugin
     return $errors;
   }
 
-  function post_save ()
+  function post_save()
   {
     global $ui;
 
@@ -608,7 +608,7 @@ class user extends simplePlugin
     return parent::post_save();
   }
 
-  function adapt_from_template ($attrs, $skip = [])
+  function adapt_from_template($attrs, $skip = array())
   {
     if ($this->uid != '') {
       $skip[] = 'uid';
@@ -622,17 +622,17 @@ class user extends simplePlugin
           $hash = $tmp->generate_hash($password);
         }
       }
-      $this->userPassword = [
+      $this->userPassword = array(
         '',
         $password,
         $password,
         $hash,
         $this->attributesAccess['userPassword']->isLocked()
-      ];
+      );
     }
   }
 
-  function callHook ($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
+  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
   {
     $addAttrs['passwordMethod'] = $this->attributesAccess['userPassword']->getMethod();
     $addAttrs['userLocked']     = $this->attributesAccess['userPassword']->isLocked();
@@ -656,7 +656,7 @@ class user extends simplePlugin
     $length       = $config->get_cfg_value('passwordMinLength', 0);
 
     $ldap = $config->get_ldap_link();
-    $ldap->cat($user, ['pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword']);
+    $ldap->cat($user, array('pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword'));
     $attrs = $ldap->fetch();
     $ppolicydn = '';
     if (isset($attrs['pwdPolicySubentry'][0])) {
@@ -668,7 +668,7 @@ class user extends simplePlugin
       }
     }
     if (!empty($ppolicydn)) {
-      $ldap->cat($ppolicydn, ['pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify']);
+      $ldap->cat($ppolicydn, array('pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify'));
       $policy = $ldap->fetch();
       if (!$policy) {
         return sprintf(_('Ppolicy "%s" could not be found in the LDAP!'), $ppolicydn);
diff --git a/plugins/personal/roles/class_userRoles.inc b/plugins/personal/roles/class_userRoles.inc
index db3078c9a..95be4ba93 100644
--- a/plugins/personal/roles/class_userRoles.inc
+++ b/plugins/personal/roles/class_userRoles.inc
@@ -20,54 +20,54 @@
 
 class userRoles extends simplePlugin
 {
-  var $objectclasses = [];
+  var $objectclasses = array();
 
-  protected $savedGroupsMembership  = [];
-  protected $savedRolesMembership   = [];
-  protected $templateGroups         = [];
-  protected $templateRoles          = [];
+  protected $savedGroupsMembership  = array();
+  protected $savedRolesMembership   = array();
+  protected $templateGroups         = array();
+  protected $templateRoles          = array();
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [
+    return array(
       'plShortName'     => _('Groups and roles'),
       'plDescription'   => _('Edit user\'s groups and roles'),
       'plIcon'          => 'geticon.php?context=types&icon=role&size=48',
       'plSmallIcon'     => 'geticon.php?context=types&icon=role&size=16',
       'plSelfModify'    => FALSE,
-      'plObjectType'    => ['user'],
+      'plObjectType'    => array('user'),
       'plPriority'      => 5,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    ];
+    );
   }
 
   static function getAttributesInfo ()
   {
-    return [
-      'groups' => [
+    return array(
+      'groups' => array(
         'name'  => _('Groups membership'),
-        'attrs' => [
+        'attrs' => array(
           new SetAttribute(
             new SelectAttribute(
               '', _('Groups membership'),
               'groupsMembership', FALSE
             )
           )
-        ]
-      ],
-      'roles' => [
+        )
+      ),
+      'roles' => array(
         'name'  => _('Roles membership'),
-        'attrs' => [
+        'attrs' => array(
           new SetAttribute(
             new SelectAttribute(
               '', _('Roles membership'),
               'rolesMembership', FALSE
             )
           )
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -76,8 +76,8 @@ class userRoles extends simplePlugin
     $this->ignore_account = FALSE;
 
     /* Groups handling */
-    $groups      = [];
-    $groupsattrs = objects::ls('ogroup', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
+    $groups      = array();
+    $groupsattrs = objects::ls('ogroup', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
     foreach ($groupsattrs as $dn => $groupattr) {
       $groupDisplay = $groupattr['cn'];
       if (isset($groupattr['description'])) {
@@ -94,7 +94,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userGroups']['count']);
         $myGroups = array_combine($this->attrs['userGroups'], $this->attrs['userGroups']);
       } else {
-        $myGroups = [];
+        $myGroups = array();
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -103,7 +103,7 @@ class userRoles extends simplePlugin
           '(member='.$this->dn.')'
         );
       } else {
-        $myGroups = [];
+        $myGroups = array();
       }
       $this->savedGroupsMembership = array_keys($myGroups);
     }
@@ -113,8 +113,8 @@ class userRoles extends simplePlugin
     $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
 
     /* Roles handling */
-    $roles        = [];
-    $rolesattrs  = objects::ls('role', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
+    $roles        = array();
+    $rolesattrs  = objects::ls('role', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
     foreach ($rolesattrs as $dn => $roleattr) {
       $roleDisplay = $roleattr['cn'];
       if (isset($roleattr['description'])) {
@@ -131,7 +131,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userRoles']['count']);
         $myRoles = array_combine($this->attrs['userRoles'], $this->attrs['userRoles']);
       } else {
-        $myRoles = [];
+        $myRoles = array();
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -140,7 +140,7 @@ class userRoles extends simplePlugin
           '(roleOccupant='.$this->dn.')'
         );
       } else {
-        $myRoles = [];
+        $myRoles = array();
       }
       $this->savedRolesMembership = array_keys($myRoles);
     }
@@ -153,7 +153,7 @@ class userRoles extends simplePlugin
     $this->initially_was_account = $this->is_account;
   }
 
-  function is_this_account ($attrs)
+  function is_this_account($attrs)
   {
     if (!isset($attrs['dn'])) {
       if (isset($attrs['userGroups'])) { /* Template groups field */
@@ -167,7 +167,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  protected function ldap_remove ()
+  protected function ldap_remove()
   {
     if ($this->is_template) {
       return parent::ldap_remove();
@@ -191,16 +191,16 @@ class userRoles extends simplePlugin
         }
       }
     }
-    return [];
+    return array();
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
   }
 
-  protected function shouldSave ()
+  protected function shouldSave()
   {
     if (parent::shouldSave()) {
       return TRUE;
@@ -214,7 +214,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  function prepare_save ()
+  function prepare_save()
   {
     $errors = parent::prepare_save();
     if ($this->is_template) {
@@ -224,16 +224,16 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function prepare_remove ()
+  function prepare_remove()
   {
     parent::prepare_remove();
     if ($this->is_template) {
-      $this->attrs['userGroups']  = [];
-      $this->attrs['userRoles']   = [];
+      $this->attrs['userGroups']  = array();
+      $this->attrs['userRoles']   = array();
     }
   }
 
-  function ldap_save ()
+  function ldap_save()
   {
     $errors = parent::ldap_save();
 
@@ -243,12 +243,12 @@ class userRoles extends simplePlugin
 
     if (!$this->is_template) {
       /* We need to give an array which looks like an ldap fetch and match user filter */
-      $fake_attrs = [
-        'objectClass' => ['inetOrgPerson','organizationalPerson','person'],
-        'cn'          => [$this->dn],
-        'uid'         => [$this->dn],
+      $fake_attrs = array(
+        'objectClass' => array('inetOrgPerson','organizationalPerson','person'),
+        'cn'          => array($this->dn),
+        'uid'         => array($this->dn),
         'dn'          => $this->dn
-      ];
+      );
 
       /* Take care about groupsMembership values: add to groups */
       $groupsMembership = $this->attributesAccess['groupsMembership']->getValue();
@@ -344,7 +344,7 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template ($attrs, $skip = [])
+  function adapt_from_template($attrs, $skip = array())
   {
     parent::adapt_from_template($attrs, $skip);
 
@@ -358,7 +358,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
       $this->templateGroups = array_keys($myGroups);
     } else {
-      $this->templateGroups = [];
+      $this->templateGroups = array();
     }
 
     $this->savedRolesMembership = $this->rolesMembership;
@@ -371,7 +371,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['rolesMembership']->setValue(array_keys($myRoles));
       $this->templateRoles = array_keys($myRoles);
     } else {
-      $this->templateRoles = [];
+      $this->templateRoles = array();
     }
 
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index a1b881127..6d90d8a69 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -23,7 +23,7 @@ require_once("class_setupStep.inc");
 
 class fake_userinfo extends userinfo
 {
-  function __construct ()
+  function __construct()
   {
     $this->cn   = 'fake_cn';
     $this->dn   = 'fake_dn';
@@ -50,12 +50,12 @@ class setup
   var $i_previous       = 0;
 
   var $i_config         = 4;
-  var $o_steps          = [];
-  var $captured_values  = [];
+  var $o_steps          = array();
+  var $captured_values  = array();
 
-  function __construct ()
+  function __construct()
   {
-    $this->o_steps = [
+    $this->o_steps = array(
       new setupStepWelcome($this),
       new setupStepLanguage($this),
       new setupStepChecks($this),
@@ -63,7 +63,7 @@ class setup
       new setupStepConfig_before_init($this),
       new setupStepMigrate($this),
       new setupStepFinish($this),
-    ];
+    );
 
     $this->i_steps = count($this->o_steps);
 
@@ -75,7 +75,7 @@ class setup
     }
   }
 
-  function execute ()
+  function execute()
   {
     /* Display phpinfo() dialog when $_GET['info'] is set,
      *  but only do this, if user is allowed to use the setup.
@@ -96,7 +96,7 @@ class setup
 
 
   /* Save posted attributes  */
-  function save_object ()
+  function save_object()
   {
     /* Call save_object for current setup step */
     $this->o_steps[$this->i_current]->save_object();
@@ -167,7 +167,7 @@ class setup
   }
 
 
-  function disable_steps_from ($start)
+  function disable_steps_from($start)
   {
     for ($i = $start; $i < $this->i_steps; $i++) {
       $this->o_steps[$i]->set_enabled(FALSE);
@@ -177,7 +177,7 @@ class setup
 
 
   /* Create navigation menu */
-  function get_navigation_html ()
+  function get_navigation_html()
   {
     $str = '<ul class="menu"><li><a>FusionDirectory Setup</a><ul>';
     foreach ($this->o_steps as $key => $step) {
@@ -219,7 +219,7 @@ class setup
   }
 
 
-  function get_bottom_html ()
+  function get_bottom_html()
   {
     /* Skip adding forward/backward button,
      *  if the currently opened step is a sub dialog
@@ -241,20 +241,20 @@ class setup
   }
 
   /* Create header entry */
-  function get_header_text ()
+  function get_header_text()
   {
     return $this->o_steps[$this->i_current]->get_title();
   }
 
   /* Create header entry */
-  function get_header_image ()
+  function get_header_image()
   {
     return $this->o_steps[$this->i_current]->header_image;
   }
 
 
   /* Check if the given step id is valid and selectable */
-  function selectable_step ($id)
+  function selectable_step($id)
   {
     if (isset($this->o_steps[$id]) && $this->o_steps[$id]->is_enabled()) {
       return TRUE;
@@ -262,7 +262,7 @@ class setup
     return FALSE;
   }
 
-  function step_name_to_id ($name)
+  function step_name_to_id($name)
   {
     foreach ($this->o_steps as $id => $class) {
       if (get_class($class) == $name) {
@@ -273,7 +273,7 @@ class setup
   }
 
   /* Called when LDAP is configured */
-  function read_ldap_config ()
+  function read_ldap_config()
   {
     global $config;
     /* Get attributes from current ldap step */
diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc
index 1d9017b95..2554fd386 100644
--- a/setup/class_setupStep.inc
+++ b/setup/class_setupStep.inc
@@ -31,63 +31,63 @@ class setupStep extends simplePlugin
 
   var $header_image = '';
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [];
+    return array();
   }
 
-  function __construct ($parent)
+  function __construct($parent)
   {
     parent::__construct(NULL, NULL, $parent);
     $this->update_strings();
   }
 
-  function update_strings ()
+  function update_strings()
   {
     die('abstract method');
   }
 
-  function get_short_name ()
+  function get_short_name()
   {
     return $this->s_short_name;
   }
 
-  function get_title ()
+  function get_title()
   {
     return $this->s_title;
   }
 
-  function get_description ()
+  function get_description()
   {
     return $this->s_description;
   }
 
-  function is_active ()
+  function is_active()
   {
     return $this->is_active;
   }
 
-  function is_enabled ()
+  function is_enabled()
   {
     return $this->is_enabled;
   }
 
-  function is_completed ()
+  function is_completed()
   {
     return $this->is_completed;
   }
 
-  function set_active ($value = TRUE)
+  function set_active($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled ($value = TRUE)
+  function set_enabled($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed ($value = TRUE)
+  function set_completed($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
@@ -95,7 +95,7 @@ class setupStep extends simplePlugin
   /* Return attributes handled by this setup step */
   public function get_attributes ()
   {
-    $tmp = [];
+    $tmp = array();
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
@@ -103,7 +103,7 @@ class setupStep extends simplePlugin
   }
 
   /* bypass LDAP loading */
-  protected function loadAttributes ()
+  protected function loadAttributes()
   {
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
diff --git a/setup/class_setupStepChecks.inc b/setup/class_setupStepChecks.inc
index f901d9e32..081645f53 100644
--- a/setup/class_setupStepChecks.inc
+++ b/setup/class_setupStepChecks.inc
@@ -23,27 +23,27 @@ class setupStepChecks extends setupStep
 {
   var $header_image = 'geticon.php?context=categories&icon=checks&size=48';
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [
-      'modules' => [
+    return array(
+      'modules' => array(
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => [
+        'attrs'     => array(
           new FakeAttribute('basic_checks')
-        ]
-      ],
-      'setup' => [
+        )
+      ),
+      'setup' => array(
         'name'      => _('PHP setup configuration'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => [
+        'attrs'     => array(
           new FakeAttribute('config_checks')
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('Installation check');
     $this->s_title        = _('Installation check');
@@ -51,17 +51,17 @@ class setupStepChecks extends setupStep
   }
 
   /* Execute and display template */
-  function execute ()
+  function execute()
   {
     $this->run_checks();
     return parent::execute();
   }
 
   /* Execute all checks */
-  function run_checks ()
+  function run_checks()
   {
-    $basic_checks   = [];
-    $config_checks  = [];
+    $basic_checks   = array();
+    $config_checks  = array();
 
     /* PHP version check */
     $N = _('Checking PHP version');
@@ -69,7 +69,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to a supported version.');
     $R = version_compare(phpversion(), PHP_MIN_VERSION, '>=');
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     /* Check for LDAP extension */
     $N = msgPool::checkingFor("LDAP");
@@ -77,7 +77,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("LDAP");
     $R = is_callable("ldap_bind");
     $M = TRUE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check for gettext support */
     $N = msgPool::checkingFor("gettext");
@@ -85,7 +85,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("gettext");
     $R = is_callable("bindtextdomain");
     $M = TRUE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check for curl support */
     $N = msgPool::checkingFor('curl');
@@ -93,7 +93,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('curl');
     $R = is_callable('curl_init');
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     /* Pseudo-random check */
     $N = _('Checking cryptographically secure pseudo-random integers');
@@ -101,7 +101,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to PHP7 or activate openssl module.');
     $R = (is_callable('random_int') || is_callable('openssl_random_pseudo_bytes'));
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     /* Check for json support */
     $N = msgPool::checkingFor('json');
@@ -109,7 +109,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('json');
     $R = is_callable('json_encode');
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     /* Check for filter support */
     $N = msgPool::checkingFor('filter');
@@ -117,7 +117,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('filter');
     $R = is_callable('filter_var');
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     /* Check for iconv */
     $N = msgPool::checkingFor("iconv");
@@ -125,7 +125,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("iconv");
     $R = is_callable("iconv");
     $M = TRUE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check for installed mhash module */
     $N = msgPool::checkingFor("hash method");
@@ -133,7 +133,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mhash/sha1");
     $R = is_callable('mhash') || is_callable('sha1');
     $M = FALSE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check if imap module is available */
     $N = msgPool::checkingFor("IMAP");
@@ -141,7 +141,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("IMAP");
     $R = is_callable("imap_open");
     $M = TRUE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check if mbstring module is available */
     $N = msgPool::checkingFor(_("mbstring"));
@@ -149,21 +149,21 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mbstring");
     $R = is_callable("mb_strlen");
     $M = TRUE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     $N = msgPool::checkingFor(_('imagick'));
     $D = _('FusionDirectory requires this extension to handle images.');
     $S = msgPool::installPhpModule('imagick');
     $R = class_exists('Imagick', FALSE);
     $M = TRUE;
-    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
+    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
 
     $N = msgPool::checkingFor(_("compression module"));
     $D = _("FusionDirectory requires this extension to handle snapshots.");
     $S = msgPool::installPhpModule("compile with --with-zlib");
     $R = is_callable("gzcompress");
     $M = FALSE;
-    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* PHP Configuration checks */
 
@@ -174,7 +174,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or higher.");
     $R = ini_get("session.gc_maxlifetime") >= 86400;
     $M = FALSE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Session auto start must be turned off */
     $session_auto_start = ini_get('session.auto_start');
@@ -183,7 +183,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.auto_start' in your php.ini and set it to 'Off'.");
     $R = !$session_auto_start;
     $M = TRUE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check if memory limit is set to 128 or > */
     $N = "memory_limit &gt;= <b>128</b>";
@@ -191,7 +191,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'memory_limit' in your php.ini and set it to '128M' or higher.");
     $R = ini_get('memory_limit') >= 128;
     $M = TRUE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Implicit Flush disabled can increase performance */
     $N = "implicit_flush = <b>"._("Off")."</b>";
@@ -199,7 +199,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'implicit_flush' in your php.ini and set it to 'Off'.");
     $R = !ini_get('implicit_flush');
     $M = FALSE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Check if execution time is set to 30 */
     $N = "max_execution_time &gt;= <b>30</b>";
@@ -207,7 +207,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'max_execution_time' in your php.ini and set it to '30' or higher.");
     $R = ini_get("max_execution_time") >= 30;
     $M = TRUE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     /* Expose php should be set to off */
     $N = "expose_php = <b>"._("Off")."</b>";
@@ -215,19 +215,19 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'expose_php' in your php.ini and set if to 'Off'.");
     $R = !ini_get("expose_php");
     $M = FALSE;
-    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
+    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
 
     $this->basic_checks   = $basic_checks;
     $this->config_checks  = $config_checks;
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
      /* If everything is fine, set this step to completed
      *  and allow switching to next setup step */
     $failed = FALSE;
-    foreach (['basic_checks','config_checks'] as $type) {
+    foreach (array('basic_checks','config_checks') as $type) {
       foreach ($this->$type as $obj) {
         if ($obj['MUST'] && !$obj['RESULT']) {
           $failed = TRUE;
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index d83c73764..a62e80c6e 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -21,7 +21,7 @@
 
 class setupStepConfig_before_init extends setupStep
 {
-  function update_strings ()
+  function update_strings()
   {
     global $config;
     if (!isset($config->current['BASE'])) {
@@ -42,57 +42,57 @@ class setupStepConfig extends configInLdap
   var $is_completed = FALSE;
   var $header_image;
 
-  static function plInfo ()
+  static function plInfo()
   {
-    return [];
+    return array();
   }
 
-  function __construct ($parent, $cv)
+  function __construct($parent, $cv)
   {
     global $config;
     parent::__construct(CONFIGRDN.$config->current['BASE'], NULL, $parent, TRUE);
 
-    $this->attributesInfo['miscellaneous']['class'] = ['invisible'];
-    $this->attributesInfo['debug']['class'] = ['invisible'];
+    $this->attributesInfo['miscellaneous']['class'] = array('invisible');
+    $this->attributesInfo['debug']['class'] = array('invisible');
 
     $this->fdLanguage     = $cv['lang_selected'];
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $infos = parent::plInfo();
     $this->header_image = $infos['plIcon'];
   }
 
-  function get_short_name ()
+  function get_short_name()
   {
     $infos = parent::plInfo();
     return $infos['plTitle'];
   }
 
-  function get_title ()
+  function get_title()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
-  function get_description ()
+  function get_description()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
   /* Return attributes handled by this setup step */
-  function get_attributes ()
+  function get_attributes()
   {
-    $tmp = [];
+    $tmp = array();
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
     return $tmp;
   }
 
-  function save_object ()
+  function save_object()
   {
     global $config;
     parent::save_object();
@@ -126,58 +126,58 @@ class setupStepConfig extends configInLdap
     }
   }
 
-  function is_active ()
+  function is_active()
   {
     return $this->is_active;
   }
 
-  function is_enabled ()
+  function is_enabled()
   {
     return $this->is_enabled;
   }
 
-  function is_completed ()
+  function is_completed()
   {
     return $this->is_completed;
   }
 
-  function set_active ($value = TRUE)
+  function set_active($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled ($value = TRUE)
+  function set_enabled($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed ($value = TRUE)
+  function set_completed($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
 
   /* bypass acl system as there is no user login */
-  function acl_is_writeable ($attribute, $skip_write = FALSE)
+  function acl_is_writeable($attribute, $skip_write = FALSE)
   {
     return TRUE;
   }
-  function acl_is_readable ($attribute)
+  function acl_is_readable($attribute)
   {
     return TRUE;
   }
-  function acl_is_createable ($base = "")
+  function acl_is_createable($base = "")
   {
     return TRUE;
   }
-  function acl_is_removeable ($base = "")
+  function acl_is_removeable($base = "")
   {
     return TRUE;
   }
-  function acl_is_moveable ($base = "")
+  function acl_is_moveable($base = "")
   {
     return TRUE;
   }
-  function aclGetPermissions ($attribute = '0', $base = NULL, $skipWrite = FALSE)
+  function aclGetPermissions($attribute = '0', $base = NULL, $skipWrite = FALSE)
   {
     return 'cmdrw';
   }
diff --git a/setup/class_setupStepFinish.inc b/setup/class_setupStepFinish.inc
index ab93fab18..0e2fe373b 100644
--- a/setup/class_setupStepFinish.inc
+++ b/setup/class_setupStepFinish.inc
@@ -23,26 +23,26 @@ class setupStepFinish extends setupStep
 {
   var $header_image = 'geticon.php?context=devices&icon=server&size=48';
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [
-      'welcome' => [
+    return array(
+      'welcome' => array(
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_finish.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => [
-        ]
-      ]
-    ];
+        'attrs'     => array(
+        )
+      )
+    );
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('Finish');
     $this->s_title        = _('Finish - write the configuration file');
     $this->s_description  = _('Write configuration file');
   }
 
-  function get_conf_data ()
+  function get_conf_data()
   {
     $smarty           = get_smarty();
     $cv               = $this->parent->captured_values;
@@ -52,7 +52,7 @@ class setupStepFinish extends setupStep
     return $smarty->fetch(CONFIG_TEMPLATE_DIR.CONFIG_FILE);
   }
 
-  function insertConfigDefaults ()
+  function insertConfigDefaults()
   {
     /* Insert default config values, even for installed plugin */
     global $config, $ui, $plist, $BASE_DIR;
@@ -79,7 +79,7 @@ class setupStepFinish extends setupStep
     $config->checkLdapConfig(TRUE);
   }
 
-  function execute ()
+  function execute()
   {
     /* Check if there is currently an active fusiondirectory.conf */
     $exists   = file_exists(CONFIG_DIR."/".CONFIG_FILE);
@@ -98,7 +98,7 @@ class setupStepFinish extends setupStep
     return parent::execute();
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
     $exists = file_exists(CONFIG_DIR.'/'.CONFIG_FILE);
@@ -121,7 +121,7 @@ class setupStepFinish extends setupStep
   }
 
   /* check if given file is world readable */
-  function is_world_readable ($file)
+  function is_world_readable($file)
   {
     clearstatcache();
     $p = fileperms($file);
diff --git a/setup/class_setupStepLanguage.inc b/setup/class_setupStepLanguage.inc
index de0fc6093..767f11930 100644
--- a/setup/class_setupStepLanguage.inc
+++ b/setup/class_setupStepLanguage.inc
@@ -23,13 +23,13 @@ class setupStepLanguage extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-language&size=48';
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [
-      'lang' => [
+    return array(
+      'lang' => array(
         'name'      => _('Preferred language'),
-        'class'     => ['fullwidth', 'setup-language'],
-        'attrs'     => [
+        'class'     => array('fullwidth', 'setup-language'),
+        'attrs'     => array(
           new DisplayAttribute(
             '', '',
             'msg', FALSE
@@ -42,19 +42,19 @@ class setupStepLanguage extends setupStep
             'lang', FALSE,
             'en_EN'
           )
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
-  function __construct ($parent)
+  function __construct($parent)
   {
     parent::__construct($parent);
     $this->lang = Language::detect();
     $this->attributesAccess['lang_selected']->setSize(20);
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('Language setup');
     $this->s_title        = _('Language setup');
@@ -62,16 +62,16 @@ class setupStepLanguage extends setupStep
     $this->msg            = _('At this point, you can select the site wide default language. Choosing "automatic" will use the language requested by the browser. This setting can be overriden per user.');
   }
 
-  function execute ()
+  function execute()
   {
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(["" => _("Automatic")], $languages);
+    $languages = array_merge(array("" => _("Automatic")), $languages);
     $this->attributesAccess['lang_selected']->setChoices(array_keys($languages), array_values($languages));
     return parent::execute();
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
     $this->is_completed   = TRUE;
diff --git a/setup/class_setupStepLdap.inc b/setup/class_setupStepLdap.inc
index f931da121..f08c07acc 100644
--- a/setup/class_setupStepLdap.inc
+++ b/setup/class_setupStepLdap.inc
@@ -31,10 +31,10 @@ class setupStepLdap extends setupStep
 
   static function getAttributesInfo ()
   {
-    return [
-      'connection' => [
+    return array(
+      'connection' => array(
         'name'      => _('LDAP connection'),
-        'attrs'     => [
+        'attrs'     => array(
           new StringAttribute(
             _('Location name'), _('Name of this connexion to show in the LDAP server list'),
             'location', TRUE,
@@ -53,15 +53,15 @@ class setupStepLdap extends setupStep
             _('Base'), _('The LDAP directory base'),
             'base', TRUE
           )
-        ]
-      ],
-      'auth' => [
+        )
+      ),
+      'auth' => array(
         'name'      => _('Authentication'),
-        'attrs'     => [
+        'attrs'     => array(
           new CompositeAttribute(
             _('DN of the admin account to use for binding to the LDAP. Base is automatically appended.'),
             'admin',
-            [
+            array(
               new StringAttribute(
                 '', '',
                 'admin_given', TRUE,
@@ -70,7 +70,7 @@ class setupStepLdap extends setupStep
               new DisplayAttribute(
                 '', '', 'base_append'
               )
-            ],
+            ),
             '^(.+)(.*)$',
             '%s%s',
             '',
@@ -80,21 +80,21 @@ class setupStepLdap extends setupStep
             _('Admin password'), _('Password for the admin account to use for binding to the LDAP'),
             'password', TRUE
           ),
-        ]
-      ],
-      'status' => [
+        )
+      ),
+      'status' => array(
         'name'      => _('Status'),
-        'attrs'     => [
+        'attrs'     => array(
           new DisplayAttribute(
             _('Current status'), _('Result of last attempt at checking LDAP binding and basic schemas'),
             'status', FALSE
           ),
-        ]
-      ]
-    ];
+        )
+      )
+    );
   }
 
-  function __construct ($parent)
+  function __construct($parent)
   {
     parent::__construct($parent);
     $this->update_strings();
@@ -105,14 +105,14 @@ class setupStepLdap extends setupStep
     $this->status = $this->get_connection_status();
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('LDAP setup');
     $this->s_title        = _('LDAP connection setup');
     $this->s_description  = _('This dialog performs the basic configuration of the LDAP connectivity for FusionDirectory.');
   }
 
-  function update_base_choices ()
+  function update_base_choices()
   {
     $attr = @LDAP::get_naming_contexts($this->connection);
     unset($attr['count']);
@@ -135,7 +135,7 @@ class setupStepLdap extends setupStep
     $this->lastBase       = $this->base;
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
     $this->connection = preg_replace('/\/$/', '', $this->connection);
@@ -158,7 +158,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function get_connection_status ()
+  function get_connection_status()
   {
     $this->connect_id = FALSE;
     $this->bind_id    = FALSE;
@@ -199,7 +199,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function check ()
+  function check()
   {
     $error = parent::check();
     if (!empty($error)) {
@@ -207,7 +207,7 @@ class setupStepLdap extends setupStep
       return $error;
     } elseif ($this->is_completed) {
       $checked  = check_schema($this->parent->captured_values);
-      $error    = [];
+      $error    = array();
       foreach ($checked as $check) {
         if (!$check['STATUS']) {
           if ($check['IS_MUST_HAVE']) {
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index f99ada78c..cfda33456 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -48,13 +48,13 @@ class CheckFailedException extends FusionDirectoryException
 {
   private $error;
 
-  public function __construct ($msg, $error)
+  public function __construct($msg, $error)
   {
     parent::__construct($msg);
     $this->error = $error;
   }
 
-  public function getError ()
+  public function getError()
   {
     return $this->error;
   }
@@ -69,7 +69,7 @@ class StepMigrateDialog extends GenericDialog
   private $tplfile;
   private $check;
 
-  public function __construct (&$check, $tpl, $infos)
+  public function __construct(&$check, $tpl, $infos)
   {
     $this->attribute  = NULL;
     $this->dialog     = NULL;
@@ -78,7 +78,7 @@ class StepMigrateDialog extends GenericDialog
     $this->check      = $check;
   }
 
-  public function dialog_execute ()
+  public function dialog_execute()
   {
     if (
       isset($_POST['dialog_showchanges']) ||
@@ -121,7 +121,7 @@ class StepMigrateCheck
   public $fnc;
   private $step;
 
-  public function __construct ($step, $name, $title)
+  public function __construct($step, $name, $title)
   {
     $this->name   = $name;
     $this->title  = $title;
@@ -129,7 +129,7 @@ class StepMigrateCheck
     $this->step   = $step;
   }
 
-  public function run ($fnc = NULL)
+  public function run($fnc = NULL)
   {
     if ($fnc === NULL) {
       $fnc          = $this->fnc;
@@ -145,7 +145,7 @@ class StepMigrateCheck
     }
   }
 
-  public function save_object ()
+  public function save_object()
   {
     if (isset($_POST[$this->name.'_create'])) {
       $fnc = $this->fnc.'_create';
@@ -164,7 +164,7 @@ class StepMigrateCheck
     return '<input type="submit" name="'.$this->name.'_'.$id.'" value="'.$value.'"/>';
   }
 
-  public function migrate_confirm ()
+  public function migrate_confirm()
   {
     $fnc = $this->fnc.'_migrate'.'_confirm';
     $res = $this->step->$fnc($this);
@@ -174,7 +174,7 @@ class StepMigrateCheck
     return $res;
   }
 
-  public function dialog_refresh ()
+  public function dialog_refresh()
   {
     $fnc = $this->fnc.'_migrate'.'_refresh';
     return $this->step->$fnc($this);
@@ -186,80 +186,80 @@ class setupStepMigrate extends setupStep
   var $header_image   = "geticon.php?context=applications&icon=utilities-system-monitor&size=48";
 
   /* Root object classes */
-  var $rootOC_details = [];
+  var $rootOC_details = array();
 
   /* Entries needing migration */
-  var $orgUnits_toMigrate       = [];
-  var $accounts_toMigrate       = [];
-  var $outsideUsers_toMigrate   = [];
-  var $outsideGroups_toMigrate  = [];
+  var $orgUnits_toMigrate       = array();
+  var $accounts_toMigrate       = array();
+  var $outsideUsers_toMigrate   = array();
+  var $outsideGroups_toMigrate  = array();
 
   /* check for multiple use of same uidNumber */
-  var $check_uidNumbers = [];
+  var $check_uidNumbers = array();
 
   /* check for multiple use of same gidNumber */
-  var $check_gidNumbers = [];
+  var $check_gidNumbers = array();
 
   /* Defaults ACL roles */
   var $defaultRoles;
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [
-      'checks' => [
-        'class'     => ['fullwidth'],
+    return array(
+      'checks' => array(
+        'class'     => array('fullwidth'),
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_migrate.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => [
+        'attrs'     => array(
           new FakeAttribute('checks')
-        ]
-      ],
-    ];
+        )
+      ),
+    );
   }
 
-  function __construct ($parent)
+  function __construct($parent)
   {
     parent::__construct($parent);
     $this->fill_defaultRoles();
   }
 
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('LDAP inspection');
     $this->s_title        = _('LDAP inspection');
     $this->s_description  = _('Analyze your current LDAP for FusionDirectory compatibility');
   }
 
-  function fill_defaultRoles ()
+  function fill_defaultRoles()
   {
-    $this->defaultRoles = [
-      [
+    $this->defaultRoles = array(
+      array(
         'cn'              => 'manager',
         'description'     => _('Give all rights on users in the given branch'),
-        'objectclass'     => ['top', 'gosaRole'],
+        'objectclass'     => array('top', 'gosaRole'),
         'gosaAclTemplate' => '0:user/user;cmdrw,user/posixAccount;cmdrw'
-      ],
-      [
+      ),
+      array(
         'cn'              => 'editowninfos',
         'description'     => _('Allow users to edit their own information (main tab and posix use only on base)'),
-        'objectclass'     => ['top', 'gosaRole'],
+        'objectclass'     => array('top', 'gosaRole'),
         'gosaAclTemplate' => '0:user/user;srw,user/posixAccount;srw'
-      ],
-      [
+      ),
+      array(
         'cn'              => 'editownpwd',
         'description'     => _('Allow users to edit their own password (use only on base)'),
-        'objectclass'     => ['top', 'gosaRole'],
+        'objectclass'     => array('top', 'gosaRole'),
         'gosaAclTemplate' => '0:user/user;s#userPassword;rw'
-      ],
-    ];
+      ),
+    );
   }
 
-  function initialize_checks ()
+  function initialize_checks()
   {
     global $config;
     $config->get_departments();
 
-    $checks = [
+    $checks = array(
       'baseOC'        => new StepMigrateCheck($this, 'baseOC',        _('Inspecting object classes in root object')),
       'permissions'   => new StepMigrateCheck($this, 'permissions',   _('Checking permission for LDAP database')),
       'accounts'      => new StepMigrateCheck($this, 'accounts',      _('Checking for invisible users')),
@@ -270,13 +270,13 @@ class setupStepMigrate extends setupStep
       'orgUnits'      => new StepMigrateCheck($this, 'orgUnits',      _('Checking for invisible departments')),
       'uidNumber'     => new StepMigrateCheck($this, 'uidNumber',     _('Checking for duplicated UID numbers')),
       'gidNumber'     => new StepMigrateCheck($this, 'gidNumber',     _('Checking for duplicated GID numbers')),
-    ];
+    );
 
     $this->checks = $checks;
   }
 
   /* Return ldif information for a given attribute array */
-  function array_to_ldif ($attrs)
+  function array_to_ldif($attrs)
   {
     $ret = '';
     unset($attrs['count']);
@@ -297,7 +297,7 @@ class setupStepMigrate extends setupStep
     return preg_replace("/\n$/", '', $ret);
   }
 
-  function execute ()
+  function execute()
   {
     if (empty($this->checks) || isset($_POST['reload'])) {
       $this->initialize_checks();
@@ -308,7 +308,7 @@ class setupStepMigrate extends setupStep
     return parent::execute();
   }
 
-  function save_object ()
+  function save_object()
   {
     $this->is_completed = TRUE;
     parent::save_object();
@@ -321,7 +321,7 @@ class setupStepMigrate extends setupStep
    * If the parameter just_check is TRUE, then just check for the OCs.
    * If the Parameter is FALSE, try to add the required object classes.
    */
-  function check_baseOC (&$checkobj)
+  function check_baseOC(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -340,8 +340,8 @@ class setupStepMigrate extends setupStep
 
     /* Root object doesn't exists */
     if (!in_array("gosaDepartment", $attrs['objectClass'])) {
-      $this->rootOC_details = [];
-      $mods = [];
+      $this->rootOC_details = array();
+      $mods = array();
 
       /* Get list of possible container objects, to be able to detect naming
        *  attributes and missing attribute types.
@@ -472,7 +472,7 @@ class setupStepMigrate extends setupStep
    * Create and remove a dummy object,
    *  to ensure that we have the necessary permissions
    */
-  function check_permissions (&$checkobj)
+  function check_permissions(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -480,7 +480,7 @@ class setupStepMigrate extends setupStep
     /* Create dummy entry */
     $name       = 'GOsa_setup_text_entry_'.session_id().random_int(0, 999999);
     $dn         = 'ou='.$name.','.$config->current['BASE'];
-    $testEntry  = [];
+    $testEntry  = array();
 
     $testEntry['objectClass'][] = 'top';
     $testEntry['objectClass'][] = 'organizationalUnit';
@@ -498,11 +498,11 @@ class setupStepMigrate extends setupStep
     }
 
     /* Try to create dummy object */
-    $ldap->cd($dn);
+    $ldap->cd ($dn);
     $res = $ldap->add($testEntry);
     $ldap->cat($dn);
     if (!$ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your LDAP database.'), $config->current['ADMINDN'])
@@ -513,7 +513,7 @@ class setupStepMigrate extends setupStep
     $res = $ldap->rmDir($dn);
     $ldap->cat($dn);
     if ($ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your ldap database.'), $config->current['ADMINDN'])
@@ -527,7 +527,7 @@ class setupStepMigrate extends setupStep
   /* Check if there are users which will
    *  be invisible for FusionDirectory
    */
-  function check_accounts (&$checkobj)
+  function check_accounts(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -536,7 +536,7 @@ class setupStepMigrate extends setupStep
      *  the 'html checked' status for the checkboxes again
      */
     $old    = $this->accounts_toMigrate;
-    $this->accounts_toMigrate = [];
+    $this->accounts_toMigrate = array();
 
     /* Get all invisible users */
     $ldap->cd($config->current['BASE']);
@@ -550,7 +550,7 @@ class setupStepMigrate extends setupStep
         '(!(objectClass=inetOrgPerson))'.
         '(uid=*)'.
       ')',
-      ['sn','givenName','cn','uid']
+      array('sn','givenName','cn','uid')
     );
 
     while ($attrs = $ldap->fetch()) {
@@ -590,10 +590,10 @@ class setupStepMigrate extends setupStep
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      [
+      array(
         'title'   => _('User migration'),
         'outside' => FALSE,
-      ]
+      )
     );
   }
 
@@ -601,19 +601,19 @@ class setupStepMigrate extends setupStep
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      [
+      array(
         'title'   => _('User migration'),
         'outside' => FALSE,
-      ]
+      )
     );
   }
 
-  function check_accounts_migrate_confirm (&$checkobj, $only_ldif = FALSE)
+  function check_accounts_migrate_confirm(&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      ['inetOrgPerson','organizationalPerson','person'],
-      [],
+      array('inetOrgPerson','organizationalPerson','person'),
+      array(),
       $only_ldif
     );
   }
@@ -649,7 +649,7 @@ class setupStepMigrate extends setupStep
     return $infos;
   }
 
-  function check_multipleGeneric_migrate_confirm (&$checkobj, $oc, $mandatory, $only_ldif)
+  function check_multipleGeneric_migrate_confirm(&$checkobj, $oc, $mandatory, $only_ldif)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -660,11 +660,11 @@ class setupStepMigrate extends setupStep
       $entry['checked'] = isset($_POST['migrate_'.$key]);
       if ($entry['checked']) {
         /* Get old objectClasses */
-        $ldap->cat($entry['dn'], array_merge(['objectClass'], array_keys($mandatory)));
+        $ldap->cat($entry['dn'], array_merge(array('objectClass'), array_keys($mandatory)));
         $attrs = $ldap->fetch();
 
         /* Create new objectClass array */
-        $new_attrs  = [];
+        $new_attrs  = array();
         $new_attrs['objectClass'] = $oc;
         for ($i = 0; $i < $attrs['objectClass']['count']; $i++) {
           if (!in_array_ics($attrs['objectClass'][$i], $new_attrs['objectClass'])) {
@@ -706,7 +706,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check Acls if there is at least one object with acls defined */
-  function check_adminAccount (&$checkobj)
+  function check_adminAccount(&$checkobj)
   {
     global $config;
 
@@ -726,8 +726,8 @@ class setupStepMigrate extends setupStep
       $attrs = $ldap->fetch();
 
       /* Collect a list of available FusionDirectory users and groups */
-      $users = [];
-      $ldap->search('(objectClass=inetOrgPerson)', ['uid','dn']);
+      $users = array();
+      $ldap->search('(objectClass=inetOrgPerson)', array('uid','dn'));
       while ($user_attrs = $ldap->fetch()) {
         if (isset($user_attrs['uid'][0])) {
           $users[$user_attrs['dn']]       = $user_attrs['uid'][0];
@@ -736,13 +736,13 @@ class setupStepMigrate extends setupStep
           $users[$user_attrs['dn']] = $user_attrs['dn'];
         }
       }
-      $groups = [];
-      $ldap->search('(objectClass=posixGroup)', ['cn','dn']);
+      $groups = array();
+      $ldap->search('(objectClass=posixGroup)', array('cn','dn'));
       while ($group_attrs = $ldap->fetch()) {
         $groups[$group_attrs['dn']] = $group_attrs['cn'][0];
       }
-      $roles = [];
-      $ldap->search('(objectClass=organizationalRole)', ['cn','dn']);
+      $roles = array();
+      $ldap->search('(objectClass=organizationalRole)', array('cn','dn'));
       while ($role_attrs = $ldap->fetch()) {
         $roles[$role_attrs['dn']] = $role_attrs['cn'][0];
       }
@@ -761,7 +761,7 @@ class setupStepMigrate extends setupStep
 
           if ($tmp[1] == 'subtree') {
             /* Check if acl owner is a valid FusionDirectory user account */
-            $ldap->cat(base64_decode($tmp[2]), ['gosaAclTemplate'], '(gosaAclTemplate=*:all;cmdrw)');
+            $ldap->cat(base64_decode($tmp[2]), array('gosaAclTemplate'), '(gosaAclTemplate=*:all;cmdrw)');
             if ($ldap->count()) {
               $members = explode(',', $tmp[3]);
               foreach ($members as $member) {
@@ -836,17 +836,17 @@ class setupStepMigrate extends setupStep
     return '';
   }
 
-  function check_adminAccount_create (&$checkobj)
+  function check_adminAccount_create(&$checkobj)
   {
-    $infos = [
+    $infos = array(
       'uid'       => 'fd-admin',
       'password'  => '',
       'password2' => '',
-    ];
+    );
     $this->openDialog(new StepMigrateDialog($checkobj, 'setup_migrate_adminAccount.tpl', $infos));
   }
 
-  function check_adminAccount_migrate_confirm (&$checkobj)
+  function check_adminAccount_migrate_confirm(&$checkobj)
   {
     global $config;
     session::set('CurrentMainBase', $config->current['BASE']);
@@ -855,7 +855,7 @@ class setupStepMigrate extends setupStep
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', ['dn']);
+    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', array('dn'));
     if ($attrs = $ldap->fetch()) {
       $roledn = $attrs['dn'];
     } else {
@@ -864,7 +864,7 @@ class setupStepMigrate extends setupStep
 
       $baseObject->cn               = 'admin';
       $baseObject->description      = _('Gives all rights on all objects');
-      $baseObject->gosaAclTemplate  = [['all' => ['0' => 'cmdrw']]];
+      $baseObject->gosaAclTemplate  = array(array('all' => array('0' => 'cmdrw')));
 
       $tabObject->save();
       $roledn = $tabObject->dn;
@@ -891,11 +891,11 @@ class setupStepMigrate extends setupStep
     $assignments = $baseObject->gosaAclEntry;
     array_unshift(
       $assignments,
-      [
+      array(
         'scope'   => 'subtree',
         'role'    => $roledn,
-        'members' => [$admindn],
-      ]
+        'members' => array($admindn),
+      )
     );
     $baseObject->gosaAclEntry = $assignments;
     $tabObject->save();
@@ -903,17 +903,17 @@ class setupStepMigrate extends setupStep
     return TRUE;
   }
 
-  function check_adminAccount_migrate_refresh (&$checkobj)
+  function check_adminAccount_migrate_refresh(&$checkobj)
   {
-    return [
+    return array(
       'uid'       => $_POST['uid'],
       'password'  => $_POST['userPassword_password'],
       'password2' => $_POST['userPassword_password2'],
-    ];
+    );
   }
 
   /* Check if default roles and groupes have been inserted */
-  function check_defaultACLs (&$checkobj)
+  function check_defaultACLs(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -930,7 +930,7 @@ class setupStepMigrate extends setupStep
     $existings = 0;
     foreach ($this->defaultRoles as $role) {
       $dn = 'cn='.$role['cn'].','.get_ou('aclRoleRDN').$config->current['BASE'];
-      $ldap->cat($dn, ['dn']);
+      $ldap->cat($dn, array('dn'));
       if ($ldap->count() > 0) {
         $existings++;
       }
@@ -953,7 +953,7 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_defaultACLs_migrate (&$checkobj)
+  function check_defaultACLs_migrate(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -985,7 +985,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for users outside the people ou */
-  function check_outsideUsers (&$checkobj)
+  function check_outsideUsers(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -995,7 +995,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Search for all users
      ***********/
-    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', ['dn']);
+    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', array('dn'));
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1006,7 +1006,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Check if returned users are within a valid department. (peopleou,gosaDepartment,base)
      ***********/
-    $this->outsideUsers_toMigrate = [];
+    $this->outsideUsers_toMigrate = array();
     $people_ou = trim(get_ou('userRDN'));
 
     while ($attrs = $ldap->fetch()) {
@@ -1034,35 +1034,35 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideUsers_migrate (&$checkobj)
+  function check_outsideUsers_migrate(&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      [
+      array(
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      ]
+      )
     );
   }
 
-  function check_outsideUsers_migrate_refresh (&$checkobj)
+  function check_outsideUsers_migrate_refresh(&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      [
+      array(
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      ]
+      )
     );
   }
 
-  function check_outsideUsers_migrate_confirm (&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
+  function check_outsideUsers_migrate_confirm(&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1087,7 +1087,7 @@ class setupStepMigrate extends setupStep
           $entry['ldif'] = _('Entry will be moved from').":<br/>\t".($ldap->fix($dn)).'<br/>'._('to').":<br/>\t".($ldap->fix($d_dn));
 
           /* Check if there are references to this object */
-          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', ['dn']);
+          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', array('dn'));
           $refs = '';
           while ($attrs = $ldap->fetch()) {
             $ref_dn = $attrs['dn'];
@@ -1107,7 +1107,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for groups outside the group ou */
-  function check_outsideGroups (&$checkobj)
+  function check_outsideGroups(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1118,7 +1118,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Get all groups
      ***********/
-    $res = $ldap->search('(objectClass=posixGroup)', ['dn']);
+    $res = $ldap->search('(objectClass=posixGroup)', array('dn'));
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1126,7 +1126,7 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->outsideGroups_toMigrate = [];
+    $this->outsideGroups_toMigrate = array();
     while ($attrs = $ldap->fetch()) {
       $group_db_base = preg_replace('/^[^,]+,'.preg_quote($group_ou, '/').'/i', '', $attrs['dn']);
 
@@ -1153,55 +1153,55 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideGroups_migrate (&$checkobj)
+  function check_outsideGroups_migrate(&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      [
+      array(
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      ]
+      )
     );
   }
 
-  function check_outsideGroups_migrate_refresh (&$checkobj)
+  function check_outsideGroups_migrate_refresh(&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      [
+      array(
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      ]
+      )
     );
   }
 
-  function check_outsideGroups_migrate_confirm (&$checkobj, $only_ldif = FALSE)
+  function check_outsideGroups_migrate_confirm(&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_outsideUsers_migrate_confirm($checkobj, $only_ldif, 'groupRDN');
   }
 
   /* Check if there are invisible organizational Units */
-  function check_orgUnits (&$checkobj)
+  function check_orgUnits(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $old                      = $this->orgUnits_toMigrate;
-    $this->orgUnits_toMigrate = [];
+    $this->orgUnits_toMigrate = array();
 
     /* Skip FusionDirectory internal departments */
-    $skip_dns = [
+    $skip_dns = array(
       '/ou=fusiondirectory,'.preg_quote($config->current['BASE']).'$/',
       '/dc=addressbook,/',
       '/ou=systems,'.preg_quote($config->current['BASE']).'$/',
       '/ou=snapshots,/'
-    ];
+    );
     foreach (objects::types() as $type) {
       $infos = objects::infos($type);
       if (isset($infos['ou']) && ($infos['ou'] != '')) {
@@ -1211,7 +1211,7 @@ class setupStepMigrate extends setupStep
 
     /* Get all invisible departments */
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', ['ou','description','dn']);
+    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', array('ou','description','dn'));
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1262,46 +1262,46 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_orgUnits_migrate (&$checkobj)
+  function check_orgUnits_migrate(&$checkobj)
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      [
+      array(
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      ]
+      )
     );
   }
 
-  function check_orgUnits_migrate_refresh (&$checkobj)
+  function check_orgUnits_migrate_refresh(&$checkobj)
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      [
+      array(
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      ]
+      )
     );
   }
 
-  function check_orgUnits_migrate_confirm (&$checkobj, $only_ldif)
+  function check_orgUnits_migrate_confirm(&$checkobj, $only_ldif)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      ['gosaDepartment'],
-      ['description' => 'FusionDirectory department'],
+      array('gosaDepartment'),
+      array('description' => 'FusionDirectory department'),
       $only_ldif
     );
   }
 
   /* Check if there are uidNumbers which are used more than once */
-  function check_uidNumber (&$checkobj)
+  function check_uidNumber(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", ["dn","uidNumber"]);
+    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", array("dn","uidNumber"));
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1309,8 +1309,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_uidNumbers = [];
-    $tmp = [];
+    $this->check_uidNumbers = array();
+    $tmp = array();
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['uidNumber'][0]][] = $attrs;
     }
@@ -1339,13 +1339,13 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check if there are duplicated gidNumbers present in ldap */
-  function check_gidNumber (&$checkobj)
+  function check_gidNumber(&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", ["dn","gidNumber"]);
+    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", array("dn","gidNumber"));
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1353,8 +1353,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_gidNumbers = [];
-    $tmp = [];
+    $this->check_gidNumbers = array();
+    $tmp = array();
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['gidNumber'][0]][] = $attrs;
     }
diff --git a/setup/class_setupStepWelcome.inc b/setup/class_setupStepWelcome.inc
index d73e23a46..d8f87295b 100644
--- a/setup/class_setupStepWelcome.inc
+++ b/setup/class_setupStepWelcome.inc
@@ -23,19 +23,19 @@ class setupStepWelcome extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-welcome&size=48';
 
-  static function getAttributesInfo ()
+  static function getAttributesInfo()
   {
-    return [
-      'welcome' => [
+    return array(
+      'welcome' => array(
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_welcome.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => [
-        ]
-      ]
-    ];
+        'attrs'     => array(
+        )
+      )
+    );
   }
 
-  function __construct ($parent)
+  function __construct($parent)
   {
     parent::__construct($parent);
 
@@ -45,14 +45,14 @@ class setupStepWelcome extends setupStep
   }
 
   /* We need to init them with a method to be able to use _() */
-  function update_strings ()
+  function update_strings()
   {
     $this->s_short_name   = _('Welcome');
     $this->s_title        = _('Welcome to FusionDirectory setup wizard');
     $this->s_description  = _('The welcome message');
   }
 
-  function execute ()
+  function execute()
   {
     $smarty = get_smarty();
     $smarty->assign('auth_id', session_id());
@@ -61,7 +61,7 @@ class setupStepWelcome extends setupStep
     return parent::execute();
   }
 
-  function save_object ()
+  function save_object()
   {
     parent::save_object();
     $id = "";
-- 
GitLab


From bb69cf712d73fca182bc57d5547553119255d07a Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 12 Jul 2022 19:21:12 +0100
Subject: [PATCH 097/117] :ambulance: Fix(1.3-fixes) - Codestyle

Fixing codestyle
---
 contrib/smarty/plugins/block.render.php       |   8 +-
 contrib/smarty/plugins/function.msgPool.php   |   4 +-
 html/autocomplete.php                         |   4 +-
 html/class_passwordRecovery.inc               |  28 +-
 html/getbin.php                               |   4 +-
 html/geticon.php                              |   4 +-
 html/index.php                                |  30 +-
 html/main.php                                 |  16 +-
 html/progress.php                             |   2 +-
 html/setup.php                                |   2 +-
 include/accept-to-gettext.inc                 |   8 +-
 include/class_Combinations.inc                |   2 +-
 include/class_CopyPasteHandler.inc            |  30 +-
 include/class_IconTheme.inc                   | 320 +++++++++---------
 include/class_Language.inc                    |  12 +-
 include/class_SnapshotDialogs.inc             |  72 ++--
 include/class_SnapshotHandler.inc             |  52 +--
 include/class_acl.inc                         |  40 +--
 include/class_baseSelector.inc                |   2 +-
 include/class_config.inc                      | 134 ++++----
 include/class_divSelectBox.inc                |   2 +-
 include/class_filter.inc                      |  44 +--
 include/class_filterLDAP.inc                  |  10 +-
 include/class_ldap.inc                        | 112 +++---
 include/class_ldapFilter.inc                  |  20 +-
 include/class_ldapMultiplexer.inc             |   4 +-
 include/class_listing.inc                     | 112 +++---
 include/class_logging.inc                     |  14 +-
 include/class_msgPool.inc                     |  14 +-
 include/class_msg_dialog.inc                  |   8 +-
 include/class_objects.inc                     |  44 +--
 include/class_pluglist.inc                    |  56 +--
 include/class_template.inc                    |  32 +-
 include/class_templateHandling.inc            |  92 ++---
 include/class_tests.inc                       |   4 +-
 include/class_timezone.inc                    |   4 +-
 include/class_userinfo.inc                    |  82 ++---
 include/class_xml.inc                         |  16 +-
 include/exporter/class_cvsExporter.inc        |   4 +-
 include/exporter/class_pdfExporter.inc        |   6 +-
 include/functions.inc                         | 128 +++----
 include/functions_debug.inc                   |   4 +-
 .../class_password-methods-crypt.inc          |   2 +-
 .../class_password-methods-sasl.inc           |   2 +-
 .../class_password-methods.inc                |   8 +-
 include/php_setup.inc                         |  28 +-
 include/select/class_filterLDAPBlacklist.inc  |   2 +-
 .../select/groupSelect/class_groupSelect.inc  |   2 +-
 .../objectSelect/class_objectSelect.inc       |   6 +-
 .../systemSelect/class_systemSelect.inc       |   6 +-
 .../userGroupSelect/class_userGroupSelect.inc |   8 +-
 .../select/userSelect/class_userSelect.inc    |  12 +-
 .../class_BaseSelectorAttribute.inc           |   4 +-
 .../attributes/class_BooleanAttribute.inc     |   4 +-
 .../attributes/class_CompositeAttribute.inc   |   6 +-
 .../attributes/class_DateAttribute.inc        |  16 +-
 .../attributes/class_FileAttribute.inc        |  22 +-
 .../attributes/class_IntAttribute.inc         |   8 +-
 .../attributes/class_PhoneNumberAttribute.inc |  20 +-
 .../attributes/class_SelectAttribute.inc      |   6 +-
 .../attributes/class_SetAttribute.inc         |  74 ++--
 .../attributes/class_StringAttribute.inc      |  10 +-
 include/simpleplugin/class_Attribute.inc      |  42 +--
 .../simpleplugin/class_dialogAttributes.inc   |  70 ++--
 .../simpleplugin/class_helpersAttribute.inc   |  26 +-
 include/simpleplugin/class_multiPlugin.inc    |  12 +-
 .../simpleplugin/class_simpleManagement.inc   | 112 +++---
 include/simpleplugin/class_simplePlugin.inc   | 212 ++++++------
 include/simpleplugin/class_simpleService.inc  |   2 +-
 include/simpleplugin/class_simpleTabs.inc     |  24 +-
 plugins/addons/dashboard/class_dashBoard.inc  |  34 +-
 .../dashboard/class_dashBoardPasswords.inc    |  34 +-
 .../addons/dashboard/class_dashBoardUsers.inc | 102 +++---
 plugins/admin/acl/class_aclAssignment.inc     |  94 ++---
 plugins/admin/acl/class_aclManagement.inc     |  40 +--
 .../admin/aclrole/class_aclEditionDialog.inc  |  24 +-
 plugins/admin/aclrole/class_aclRole.inc       |  36 +-
 .../admin/aclrole/class_aclRoleManagement.inc |  12 +-
 plugins/admin/departments/class_country.inc   |  16 +-
 plugins/admin/departments/class_dcObject.inc  |  18 +-
 .../admin/departments/class_department.inc    |  48 +--
 .../class_departmentManagement.inc            |  12 +-
 plugins/admin/departments/class_domain.inc    |  18 +-
 plugins/admin/departments/class_locality.inc  |  18 +-
 .../admin/departments/class_organization.inc  |  18 +-
 .../admin/groups/class_groupManagement.inc    |  70 ++--
 plugins/admin/groups/class_roleGeneric.inc    |  54 +--
 plugins/admin/groups/tabs_ogroups.inc         |  24 +-
 plugins/admin/users/class_userManagement.inc  |  34 +-
 plugins/config/class_configInLdap.inc         | 240 ++++++-------
 plugins/config/class_dashBoardConfig.inc      |  34 +-
 plugins/config/class_mainPluginsConfig.inc    |  32 +-
 plugins/config/class_pluginsConfigInLdap.inc  |  10 +-
 plugins/config/class_recoveryConfig.inc       |  54 +--
 .../generic/references/class_reference.inc    |  46 +--
 plugins/personal/generic/class_user.inc       | 136 ++++----
 plugins/personal/roles/class_userRoles.inc    |  90 ++---
 setup/class_setup.inc                         |  32 +-
 setup/class_setupStep.inc                     |  30 +-
 setup/class_setupStepChecks.inc               |  74 ++--
 setup/class_setupStepConfig.inc               |  50 +--
 setup/class_setupStepFinish.inc               |  26 +-
 setup/class_setupStepLanguage.inc             |  26 +-
 setup/class_setupStepLdap.inc                 |  46 +--
 setup/class_setupStepMigrate.inc              | 262 +++++++-------
 setup/class_setupStepWelcome.inc              |  22 +-
 106 files changed, 2124 insertions(+), 2124 deletions(-)

diff --git a/contrib/smarty/plugins/block.render.php b/contrib/smarty/plugins/block.render.php
index 0727cc211..90770bcb7 100644
--- a/contrib/smarty/plugins/block.render.php
+++ b/contrib/smarty/plugins/block.render.php
@@ -62,17 +62,17 @@ function smarty_block_render($params, $text, &$smarty)
   }
 
   /* Remove select options */
-  $from = array(
+  $from = [
     "#<option.*<\/option>#is",
     "/(<textarea.*>).*(<\/textarea>)/is",
     "/^(.*<input.*)checked(.*>.*)$/isD"
-  );
+  ];
 
-  $to = array(
+  $to = [
     " ",
     "\\1\\2",
     "\\1 \\2"
-  );
+  ];
 
   $text = preg_replace($from, $to, $text);
 
diff --git a/contrib/smarty/plugins/function.msgPool.php b/contrib/smarty/plugins/function.msgPool.php
index c63fc95f4..ae72af0ca 100644
--- a/contrib/smarty/plugins/function.msgPool.php
+++ b/contrib/smarty/plugins/function.msgPool.php
@@ -21,14 +21,14 @@
 function smarty_function_msgPool($params, &$smarty)
 {
   if (class_available('msgPool') && isset($params['type'])) {
-    $parameter = array();
+    $parameter = [];
     foreach ($params as $para => $value) {
       if (!preg_match('/^type$/i', $para)) {
         $parameter[$para] = $value;
       }
     }
     if (is_callable('msgPool::'.$params['type'])) {
-      echo call_user_func_array(array('msgPool',$params['type']), $parameter);
+      echo call_user_func_array(['msgPool',$params['type']], $parameter);
     } else {
       trigger_error('Unknown msgPool function '.$params['type']);
     }
diff --git a/html/autocomplete.php b/html/autocomplete.php
index c8f5437b2..0b0bce54d 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -26,11 +26,11 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', array(), 'Error: autocomplete.php called without session');
+  logging::log('security', 'unknown', '', [], 'Error: autocomplete.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 825525d38..e8a91ee66 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -59,7 +59,7 @@ class standAlonePage {
       $smarty = get_smarty();
 
       /* Generate server list */
-      $servers = array();
+      $servers = [];
       foreach ($config->data['LOCATIONS'] as $key => $ignored) {
         $servers[$key] = $key;
       }
@@ -248,7 +248,7 @@ class standAlonePage {
 class passwordRecovery extends standAlonePage {
   protected $loginAttribute;
   protected $login;
-  var $message = array();
+  var $message = [];
   var $email_address;
 
   var $step = 1;
@@ -401,7 +401,7 @@ class passwordRecovery extends standAlonePage {
 
     // Check if token branch is here
     $token = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($token, array('dn'));
+    $ldap->cat($token, ['dn']);
     if (!$ldap->count()) {
       /* It's not, let's create it */
       $ldap->cd ($config->current['BASE']);
@@ -414,15 +414,15 @@ class passwordRecovery extends standAlonePage {
     }
 
     $dn = 'ou='.$this->login.','.$token;
-    $ldap->cat($dn, array('dn'));
+    $ldap->cat($dn, ['dn']);
     $add = ($ldap->count() == 0);
     /* We store the token and its validity due date */
-    $attrs = array(
-      'objectClass'   => array('organizationalUnit'),
+    $attrs = [
+      'objectClass'   => ['organizationalUnit'],
       'ou'            => $this->login,
       'userPassword'  => $sha1_temp_password,
       'description'   => time() + $this->delay_allowed * 60,
-    );
+    ];
     $ldap->cd($dn);
     if ($add) {
       $ldap->add($attrs);
@@ -466,7 +466,7 @@ class passwordRecovery extends standAlonePage {
     /* Retrieve dn from the ldap */
     $ldap = $config->get_ldap_link();
 
-    $objectClasses = array('gosaMailAccount');
+    $objectClasses = ['gosaMailAccount'];
     if (class_available('personalInfo') && ($config->get_cfg_value('privateEmailPasswordRecovery', 'FALSE') == 'TRUE')) {
       $objectClasses[] = 'fdPersonalInfo';
     }
@@ -475,7 +475,7 @@ class passwordRecovery extends standAlonePage {
     }
     $filter = '(&(|(objectClass='.join(')(objectClass=', $objectClasses).'))('.$this->loginAttribute.'='.ldap_escape_f($this->login).'))';
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, array('dn'));
+    $ldap->search($filter, ['dn']);
 
     if ($ldap->count() < 1) {
       $this->message[] = sprintf(_('Did not find an account with login "%s"'), htmlentities($this->login, ENT_COMPAT, 'UTF-8'));
@@ -510,7 +510,7 @@ class passwordRecovery extends standAlonePage {
     }
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
-    $ldap->search($filter, array('dn', 'userPassword', $this->loginAttribute));
+    $ldap->search($filter, ['dn', 'userPassword', $this->loginAttribute]);
 
     /* Only one ldap node should be found */
     if ($ldap->count() < 1) {
@@ -536,7 +536,7 @@ class passwordRecovery extends standAlonePage {
 
       $smarty->assign('login', $this->login);
       $smarty->assign('email_address', $this->email_address);
-      $params = $this->encodeParams(array('login', 'directory', 'email_address'));
+      $params = $this->encodeParams(['login', 'directory', 'email_address']);
       $smarty->assign('params', $params);
     }
 
@@ -603,7 +603,7 @@ class passwordRecovery extends standAlonePage {
     $this->uniq = $uniq_id_from_mail;
     $this->step = 4;
     $smarty->assign('login', $this->login);
-    $params = $this->encodeParams(array('login', 'directory', 'email_address', 'uniq'));
+    $params = $this->encodeParams(['login', 'directory', 'email_address', 'uniq']);
     $smarty->assign('params', $params);
 
     if (isset($_POST['change'])) {
@@ -620,13 +620,13 @@ class passwordRecovery extends standAlonePage {
 
     $userTabs = objects::open($dn, 'user');
     $userTab  = $userTabs->getBaseObject();
-    $userTab->userPassword = array(
+    $userTab->userPassword = [
       '',
       $new_password,
       $new_password_repeated,
       $userTab->userPassword,
       $userTab->attributesAccess['userPassword']->isLocked()
-    );
+    ];
 
     /* Is there any problem with entered passwords? */
     $userTabs->save_object();
diff --git a/html/getbin.php b/html/getbin.php
index 0598ea917..a41a60e74 100644
--- a/html/getbin.php
+++ b/html/getbin.php
@@ -27,11 +27,11 @@
 error_reporting (0);
 session_cache_limiter('private');
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
-  logging::log('security', 'unknown', '', array(), 'Error: getbin.php called without session');
+  logging::log('security', 'unknown', '', [], 'Error: getbin.php called without session');
   header ('Location: index.php');
   exit;
 }
diff --git a/html/geticon.php b/html/geticon.php
index 2e338e288..0e2fc5ae2 100644
--- a/html/geticon.php
+++ b/html/geticon.php
@@ -25,7 +25,7 @@
 
 session_cache_limiter("private");
 session::start();
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 $theme = '';
 if (session::is_set('config')) {
@@ -34,7 +34,7 @@ if (session::is_set('config')) {
 } else {
   header("cache-control: no-cache");
 }
-IconTheme::$extensions    = array('png');
+IconTheme::$extensions    = ['png'];
 if (!isset($_GET['context']) || !isset($_GET['icon']) || !isset($_GET['size'])) {
   trigger_error('Missing information in query string: '.$_SERVER['QUERY_STRING']);
   exit;
diff --git a/html/index.php b/html/index.php
index a72e361f9..a444fc69b 100644
--- a/html/index.php
+++ b/html/index.php
@@ -70,7 +70,7 @@ function displayLogin()
   }
 
   /* Generate server list */
-  $servers = array();
+  $servers = [];
   if (isset($_POST['server'])) {
     $selected = $_POST['server'];
   } else {
@@ -246,7 +246,7 @@ class Index {
     if ($config->get_cfg_value('schemaCheck') != 'TRUE') {
       return TRUE;
     }
-    $cfg = array();
+    $cfg = [];
     $cfg['admin']       = $config->current['ADMINDN'];
     $cfg['password']    = $config->current['ADMINPASSWORD'];
     $cfg['connection']  = $config->current['SERVER'];
@@ -269,7 +269,7 @@ class Index {
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], array('dn'));
+    $ldap->cat(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], ['dn']);
     $attrs = $ldap->fetch();
     if (!count($attrs)) {
       $ldap->cd($config->current['BASE']);
@@ -302,9 +302,9 @@ class Index {
     $ui = ldap_login_user(static::$username, static::$password);
     if ($ui === NULL) {
       if (isset($_SERVER['REMOTE_ADDR'])) {
-        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
+        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'" [from '.$_SERVER['REMOTE_ADDR'].']');
       } else {
-        logging::log('security', 'login', '', array(), 'Authentication failed for user "'.static::$username.'"');
+        logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'"');
       }
       $message = _('Please check the username/password combination.');
       $smarty->assign ('focusfield', 'password');
@@ -340,7 +340,7 @@ class Index {
       $expired = $ui->expired_status();
 
       if ($expired == POSIX_ACCOUNT_EXPIRED) {
-        logging::log('security', 'login', '', array(), 'Account for user "'.static::$username.'" has expired');
+        logging::log('security', 'login', '', [], 'Account for user "'.static::$username.'" has expired');
         $message = _('Account locked. Please contact your system administrator!');
         $smarty->assign ('focusfield', 'username');
         return FALSE;
@@ -354,7 +354,7 @@ class Index {
   {
     global $config;
     /* Not account expired or password forced change go to main page */
-    logging::log('security', 'login', '', array(), 'User "'.static::$username.'" logged in successfully.');
+    logging::log('security', 'login', '', [], 'User "'.static::$username.'" logged in successfully.');
     session::set('connected', 1);
     session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
     header ('Location: main.php?global_check=1');
@@ -398,13 +398,13 @@ class Index {
     static::$username = $_POST['username'];
     static::$password = $_POST['password'];
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -430,13 +430,13 @@ class Index {
     static::$username = $_SERVER['PHP_AUTH_USER'];
     static::$password = $_SERVER['PHP_AUTH_PW'];
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'validateUserInput',
       'ldapLoginUser',
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -499,11 +499,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
@@ -566,11 +566,11 @@ class Index {
 
     $ui->loadACL();
 
-    $success = static::runSteps(array(
+    $success = static::runSteps([
       'checkForLockingBranch',
       'loginAndCheckExpired',
       'runSchemaCheck',
-    ));
+    ]);
 
     if ($success) {
       /* Everything went well, redirect to main.php */
diff --git a/html/main.php b/html/main.php
index 00a1e3100..367e90533 100644
--- a/html/main.php
+++ b/html/main.php
@@ -40,8 +40,8 @@ textdomain($domain);
 
 /* Remember everything we did after the last click */
 session::start();
-session::set('errorsAlreadyPosted', array());
-session::set('runtime_cache', array());
+session::set('errorsAlreadyPosted', []);
+session::set('runtime_cache', []);
 session::set('limit_exceeded', FALSE);
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
@@ -51,7 +51,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
 /* Logged in? Simple security check */
 if (!session::is_set('connected')) {
-  logging::log('security', 'login', '', array(), 'main.php called without session - logging out');
+  logging::log('security', 'login', '', [], 'main.php called without session - logging out');
   header ('Location: index.php?message=nosession');
   exit;
 }
@@ -83,7 +83,7 @@ if (session::get('_LAST_PAGE_REQUEST') != '') {
      */
     if ($request_time > $max_life) {
       session::destroy();
-      logging::log('security', 'login', '', array(), 'main.php called with expired session - logging out');
+      logging::log('security', 'login', '', [], 'main.php called with expired session - logging out');
       header ('Location: index.php?signout=1&message=expired');
       exit;
     }
@@ -114,7 +114,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
             _("Fatal error: Register globals is on. FusionDirectory will refuse to login unless this is fixed by an administrator."),
             FATAL_ERROR_DIALOG);
 
-  logging::log('security', 'login', '', array(), 'Register globals is on. For security reasons, this should be turned off.');
+  logging::log('security', 'login', '', [], 'Register globals is on. For security reasons, this should be turned off.');
   session::destroy ();
   exit;
 }
@@ -136,7 +136,7 @@ if ($config->get_cfg_value("handleExpiredAccounts") == "TRUE") {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, 'This user account ('.$ui->uid.') is about to expire');
 
     // The users password is about to xpire soon, display a warning message.
-    logging::log('security', 'fusiondirectory', '', array(), 'password for user "'.$ui->uid.'" is about to expire');
+    logging::log('security', 'fusiondirectory', '', [], 'password for user "'.$ui->uid.'" is about to expire');
     msg_dialog::display(_('Password change'), _('Your password is about to expire, please change your password!'), INFO_DIALOG);
     session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE);
   } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE) {
@@ -166,7 +166,7 @@ if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   $plugin_dir = $plist->get_path($plug);
   session::set('plugin_dir', $plugin_dir);
   if ($plugin_dir == '') {
-    logging::log('security', 'fusiondirectory', '', array(), "main.php called with invalid plug parameter \"$plug\"");
+    logging::log('security', 'fusiondirectory', '', [], "main.php called with invalid plug parameter \"$plug\"");
     header ('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
     exit;
   }
@@ -346,4 +346,4 @@ echo $display;
 /* Save plist and config */
 session::set('plist', $plist);
 session::set('config', $config);
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
diff --git a/html/progress.php b/html/progress.php
index 782bb2759..352aaa539 100644
--- a/html/progress.php
+++ b/html/progress.php
@@ -58,7 +58,7 @@ if (!function_exists("imagecreate")) {
 
   $x_matches = FALSE;
   $y_matches = FALSE;
-  foreach (array(7,6,5,4,3,2,1,0) as $font) {
+  foreach ([7,6,5,4,3,2,1,0] as $font) {
     $fx = ImageFontWidth($font) * strlen("$p%");
     $fy = ImageFontHeight($font);
 
diff --git a/html/setup.php b/html/setup.php
index 48f981613..4695b6ad1 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -50,7 +50,7 @@ ini_set("session.gc_maxlifetime", 24 * 60 * 60);
 /* Start session */
 session::start();
 session::set('DEBUGLEVEL', 0);
-session::set('errorsAlreadyPosted', array());
+session::set('errorsAlreadyPosted', []);
 
 CSRFProtection::check();
 
diff --git a/include/accept-to-gettext.inc b/include/accept-to-gettext.inc
index d4f171469..0995f1db7 100644
--- a/include/accept-to-gettext.inc
+++ b/include/accept-to-gettext.inc
@@ -74,7 +74,7 @@
  */
 function parse_scores ($str)
 {
-  $scores = array();
+  $scores = [];
   $parts = preg_split('/,/', $str);
   foreach ($parts as $part) {
     $part = trim(strtolower($part));
@@ -109,7 +109,7 @@ function max_scores ($scores, $testvals)
 function parse_gettext_lang ($str)
 {
   if (preg_match("/^([^_]*)(_([^_]*))?\.(.*)$/", $str, $m)) {
-    return array(strtolower($m[1]), strtolower($m[3]), strtolower($m[4]));
+    return [strtolower($m[1]), strtolower($m[3]), strtolower($m[4])];
   } else {
     return FALSE;
   }
@@ -157,8 +157,8 @@ function al2gt($gettextlangs)
     }
     list ($lang, $country, $char) = $infos;
 
-    $lang_score = max_scores($lang_scores, array($lang,$lang.'-'.$country,'*'));
-    $char_score = max_scores($char_scores, array($char,'*'));
+    $lang_score = max_scores($lang_scores, [$lang,$lang.'-'.$country,'*']);
+    $char_score = max_scores($char_scores, [$char,'*']);
     if ($char_score == 0) {
       // exclude charsets the user refuses
       continue;
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index 2821f6df5..d2776767f 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -43,7 +43,7 @@ class Combinations implements Iterator
 
   function current()
   {
-    $r = array();
+    $r = [];
     for ($i = 0; $i < $this->size; $i++) {
       $r[] = $this->input[$this->current[$i]];
     }
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index 15586d2de..9a8e6b6ea 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -34,20 +34,20 @@ class CopyPasteHandler
   /*!
    * \brief This array contains all dns of the currently copied objects
    */
-  protected $objectList = array();
+  protected $objectList = [];
   /*!
    * \brief This array contains all remaining objects to paste
    */
-  protected $queue = array();
+  protected $queue = [];
 
   /*!
    *  \brief The dn of the last edited object
    */
   var $lastdn = "";
 
-  var $disallowed_objects = array();
-  var $objects_to_fix     = array();
-  var $clean_objects      = array();
+  var $disallowed_objects = [];
+  var $objects_to_fix     = [];
+  var $clean_objects      = [];
   var $require_update     = FALSE;
 
   /*!
@@ -56,7 +56,7 @@ class CopyPasteHandler
   function __construct()
   {
     $this->current  = NULL;
-    $this->queue    = array();
+    $this->queue    = [];
   }
 
 
@@ -77,12 +77,12 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
 
-    if (!in_array($action, array('cut','copy'))) {
+    if (!in_array($action, ['cut','copy'])) {
       trigger_error(sprintf('Specified action "%s" does not exists for copy & paste.', $action));
       return FALSE;
     }
 
-    $tmp = array();
+    $tmp = [];
 
     $tmp['method']  = $action;
     $tmp['dn']      = $dn;
@@ -112,8 +112,8 @@ class CopyPasteHandler
   {
     $this->current        = FALSE;
     $this->require_update = TRUE;
-    $this->queue          = array();
-    $this->objectList     = array();
+    $this->queue          = [];
+    $this->objectList     = [];
   }
 
   /*!
@@ -141,7 +141,7 @@ class CopyPasteHandler
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
     if (!isset($entry['tab_class']) && !isset($entry['type'])) {
-      return array();
+      return [];
     }
 
     $entry['object'] = objects::open($entry['dn'], $entry['type']);
@@ -172,9 +172,9 @@ class CopyPasteHandler
      * Create a list of all entries that can be pasted directly.
      */
     if ($this->require_update) {
-      $this->clean_objects      = array();
-      $this->objects_to_fix     = array();
-      $this->disallowed_objects = array();
+      $this->clean_objects      = [];
+      $this->objects_to_fix     = [];
+      $this->disallowed_objects = [];
 
       /* Put each queued object in one of the above arrays */
       foreach ($this->queue as $key => $entry) {
@@ -199,7 +199,7 @@ class CopyPasteHandler
         }
       }
       if (count($this->disallowed_objects)) {
-        $dns = array();
+        $dns = [];
         foreach ($this->disallowed_objects as $entry) {
           $dns[] = $entry['dn'];
         }
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 72b3618f1..495f88d2f 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -54,7 +54,7 @@ class IconThemeDir
     $this->Size     = $infos['Size'];
     $this->MinSize  = $infos['Size'];
     $this->MaxSize  = $infos['Size'];
-    foreach (array('Type', 'MaxSize', 'MinSize', 'Threshold') as $key) {
+    foreach (['Type', 'MaxSize', 'MinSize', 'Threshold'] as $key) {
       if (isset($infos[$key])) {
         $this->$key = $infos[$key];
       }
@@ -102,7 +102,7 @@ class IconThemeDir
  */
 class IconTheme
 {
-  private $subdirs = array();
+  private $subdirs = [];
   private $path;
   private $parent;
 
@@ -200,14 +200,14 @@ class IconTheme
   }
 
   static public $default_theme  = 'breezy';
-  static public $extensions     = array('png', 'xpm', 'svg');
+  static public $extensions     = ['png', 'xpm', 'svg'];
   static public $find_closest   = FALSE;
 
   /* We store themes in the session. To do otherwise, override these methods. */
   static public $session_var    = 'IconThemes';
   static public function loadThemes($path)
   {
-    $themes = array();
+    $themes = [];
     if ($dir = opendir("$path")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (file_exists("$path/$file/index.theme") && !preg_match("/^\./", $file)) {
@@ -246,162 +246,162 @@ class IconTheme
   }
 
   /* Fallback system */
-  static public $fallbacks = array(
-    'types/user-group'              => array(
-      array('applications','system-users')
-    ),
-    'types/resource-group'          => array(
-      array('actions','resource-group')
-    ),
-    'types/user'                    => array(
-      array('places','user-identity'),
-      array('status','avatar-default'),
-    ),
-    'types/contact'                 => array(
-      array('mimetypes','x-office-contact'),
-    ),
-    'types/certificate'             => array(
-      array('mimetypes','stock_certificate'),
-      array('mimetypes','application-certificate'),
-      array('actions','view-certificate'),
-    ),
-    'applications/user-info'        => array(
-      array('actions','user-properties'),
-      array('types','contact'),
-      array('mimetypes','x-office-contact'),
-      array('types','user'),
-      array('places','user-identity'),
-      array('status','avatar-default'),
-    ),
-    'applications/office-calendar'  => array(
-      array('mimetypes','x-office-calendar'),
-    ),
-    'applications/os-linux'         => array(
-      array('applications','linux'),
-    ),
-    'applications/os-windows'       => array(
-      array('applications','windows'),
-    ),
-    'applications/samba'            => array(
-      array('applications','os-windows'),
-      array('applications','windows'),
-    ),
-    'applications/config-language'  => array(
-      array('applications','locale'),
-      array('applications','preferences-desktop-locale'),
-    ),
-    'mimetypes/text-csv'            => array(
-      array('mimetypes','x-office-spreadsheet'),
-      array('mimetypes','text-x-generic'),
-    ),
-    'mimetypes/application-pdf'     => array(
-      array('mimetypes','x-office-document'),
-    ),
-    'actions/application-exit'      => array(
-      array('actions','system-log-out'),
-    ),
-    'actions/document-export'       => array(
-      array('actions','document-send'),
-    ),
-    'actions/download'              => array(
-      array('actions','document-save'),
-    ),
-    'actions/document-restore'      => array(
-      array('actions','document-import'),
-      array('actions','document-open'),
-    ),
-    'actions/document-edit'         => array(
-      array('actions','edit'),
-      array('applications','text-editor'),
-      array('applications','accessories-text-editor'),
-      array('actions','document-open'),
-    ),
-    'actions/snapshot'              => array(
-      array('actions','document-save'),
-    ),
-    'actions/system-reboot'         => array(
-      array('actions','view-refresh'),
-    ),
-    'actions/system-update'         => array(
-      array('applications','system-software-update'),
-    ),
-    'actions/system-reinstall'      => array(
-      array('applications','system-installer'),
-    ),
-    'actions/task-start'            => array(
-      array('actions','media-playback-start'),
-    ),
-    'actions/task-stop'             => array(
-      array('actions','media-playback-stop'),
-    ),
-    'actions/task-schedule'         => array(
-      array('actions','chronometer'),
-      array('actions','smallclock'),
-    ),
-    'actions/up'                    => array(
-      array('actions','go-up'),
-      array('actions','arrow-up'),
-    ),
-    'actions/upload'                => array(
-      array('actions','document-import'),
-      array('actions','up'),
-    ),
-    'actions/down'                  => array(
-      array('actions','go-down'),
-      array('actions','arrow-down'),
-    ),
-    'actions/previous'              => array(
-      array('actions','go-previous'),
-      array('actions','arrow-left'),
-    ),
-    'actions/next'                  => array(
-      array('actions','go-next'),
-      array('actions','arrow-right'),
-    ),
-    'actions/submit'                => array(
-      array('actions','go-jump'),
-    ),
-    'categories/settings'           => array(
-      array('categories','gnome-settings'),
-      array('categories','preferences-other'),
-      array('categories','preferences-system'),
-    ),
-    'categories/checks'             => array(
-      array('actions','view-task'),
-      array('actions','view-calendar-tasks'),
-      array('actions','checkbox'),
-      array('status','task-complete'),
-    ),
-    'devices/server'                => array(
-      array('places','server'),
-      array('places','network-server'),
-    ),
-    'devices/media-cdrom'           => array(
-      array('devices','media-optical'),
-    ),
-    'devices/terminal'              => array(
-      array('applications','utilities-terminal'),
-    ),
-    'devices/computer-windows'      => array(
-      array('applications','os-windows'),
-      array('applications','windows'),
-    ),
-    'devices/template'              => array(
-      array('actions','document-new'),
-    ),
-    'status/object-locked'          => array(
-      array('status','changes-prevent'),
-    ),
-    'status/object-unlocked'        => array(
-      array('status','changes-allow'),
-    ),
-    'status/task-waiting'        => array(
-      array('actions','task-schedule'),
-    ),
-    'places/folder-network'        => array(
-      array('places','folder-remote'),
-    ),
-  );
+  static public $fallbacks = [
+    'types/user-group'              => [
+      ['applications','system-users']
+    ],
+    'types/resource-group'          => [
+      ['actions','resource-group']
+    ],
+    'types/user'                    => [
+      ['places','user-identity'],
+      ['status','avatar-default'],
+    ],
+    'types/contact'                 => [
+      ['mimetypes','x-office-contact'],
+    ],
+    'types/certificate'             => [
+      ['mimetypes','stock_certificate'],
+      ['mimetypes','application-certificate'],
+      ['actions','view-certificate'],
+    ],
+    'applications/user-info'        => [
+      ['actions','user-properties'],
+      ['types','contact'],
+      ['mimetypes','x-office-contact'],
+      ['types','user'],
+      ['places','user-identity'],
+      ['status','avatar-default'],
+    ],
+    'applications/office-calendar'  => [
+      ['mimetypes','x-office-calendar'],
+    ],
+    'applications/os-linux'         => [
+      ['applications','linux'],
+    ],
+    'applications/os-windows'       => [
+      ['applications','windows'],
+    ],
+    'applications/samba'            => [
+      ['applications','os-windows'],
+      ['applications','windows'],
+    ],
+    'applications/config-language'  => [
+      ['applications','locale'],
+      ['applications','preferences-desktop-locale'],
+    ],
+    'mimetypes/text-csv'            => [
+      ['mimetypes','x-office-spreadsheet'],
+      ['mimetypes','text-x-generic'],
+    ],
+    'mimetypes/application-pdf'     => [
+      ['mimetypes','x-office-document'],
+    ],
+    'actions/application-exit'      => [
+      ['actions','system-log-out'],
+    ],
+    'actions/document-export'       => [
+      ['actions','document-send'],
+    ],
+    'actions/download'              => [
+      ['actions','document-save'],
+    ],
+    'actions/document-restore'      => [
+      ['actions','document-import'],
+      ['actions','document-open'],
+    ],
+    'actions/document-edit'         => [
+      ['actions','edit'],
+      ['applications','text-editor'],
+      ['applications','accessories-text-editor'],
+      ['actions','document-open'],
+    ],
+    'actions/snapshot'              => [
+      ['actions','document-save'],
+    ],
+    'actions/system-reboot'         => [
+      ['actions','view-refresh'],
+    ],
+    'actions/system-update'         => [
+      ['applications','system-software-update'],
+    ],
+    'actions/system-reinstall'      => [
+      ['applications','system-installer'],
+    ],
+    'actions/task-start'            => [
+      ['actions','media-playback-start'],
+    ],
+    'actions/task-stop'             => [
+      ['actions','media-playback-stop'],
+    ],
+    'actions/task-schedule'         => [
+      ['actions','chronometer'],
+      ['actions','smallclock'],
+    ],
+    'actions/up'                    => [
+      ['actions','go-up'],
+      ['actions','arrow-up'],
+    ],
+    'actions/upload'                => [
+      ['actions','document-import'],
+      ['actions','up'],
+    ],
+    'actions/down'                  => [
+      ['actions','go-down'],
+      ['actions','arrow-down'],
+    ],
+    'actions/previous'              => [
+      ['actions','go-previous'],
+      ['actions','arrow-left'],
+    ],
+    'actions/next'                  => [
+      ['actions','go-next'],
+      ['actions','arrow-right'],
+    ],
+    'actions/submit'                => [
+      ['actions','go-jump'],
+    ],
+    'categories/settings'           => [
+      ['categories','gnome-settings'],
+      ['categories','preferences-other'],
+      ['categories','preferences-system'],
+    ],
+    'categories/checks'             => [
+      ['actions','view-task'],
+      ['actions','view-calendar-tasks'],
+      ['actions','checkbox'],
+      ['status','task-complete'],
+    ],
+    'devices/server'                => [
+      ['places','server'],
+      ['places','network-server'],
+    ],
+    'devices/media-cdrom'           => [
+      ['devices','media-optical'],
+    ],
+    'devices/terminal'              => [
+      ['applications','utilities-terminal'],
+    ],
+    'devices/computer-windows'      => [
+      ['applications','os-windows'],
+      ['applications','windows'],
+    ],
+    'devices/template'              => [
+      ['actions','document-new'],
+    ],
+    'status/object-locked'          => [
+      ['status','changes-prevent'],
+    ],
+    'status/object-unlocked'        => [
+      ['status','changes-allow'],
+    ],
+    'status/task-waiting'        => [
+      ['actions','task-schedule'],
+    ],
+    'places/folder-network'        => [
+      ['places','folder-remote'],
+    ],
+  ];
 }
 
 ?>
diff --git a/include/class_Language.inc b/include/class_Language.inc
index bd99cb243..13bc7dff8 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -118,7 +118,7 @@ class Language
     $languages = static::getList();
 
     /* Move supported languages to flat list */
-    $langs = array();
+    $langs = [];
     foreach (array_keys($languages) as $lang) {
       $langs[] = $lang.'.UTF-8';
     }
@@ -135,7 +135,7 @@ class Language
   public static function getList($ownLanguage = FALSE)
   {
     /* locales in english */
-    $tmp_english = array(
+    $tmp_english = [
       'en_US' => 'English',
       'af_ZA' => 'Afrikaans',
       'ar_EG' => 'Arabic',
@@ -166,12 +166,12 @@ class Language
       'vi_VN' => 'Vietnamese',
       'zh_TW' => 'Taiwanese',
       'zh_CN' => 'Chinese',
-    );
+    ];
 
-    $ret = array();
+    $ret = [];
     if ($ownLanguage) {
       /* locales in their own language */
-      $tmp_ownlang = array(
+      $tmp_ownlang = [
         'en_US' => 'English',
         'ar_EG' => 'عربية',
         'af_ZA' => 'Afrikaans',
@@ -202,7 +202,7 @@ class Language
         'vi_VN' => 'Tiếng Việt',
         'zh_TW' => 'Taiwanese',
         'zh_CN' => '中文, 汉语, 漢語',
-      );
+      ];
 
       foreach ($tmp_english as $key => $name) {
         $ret[$key] = _($name).' ('.$tmp_ownlang[$key].')';
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index 034241092..ced9d6910 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -28,17 +28,17 @@ class SnapshotCreateDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName' => 'SnapshotCreateDialog',
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Creating an object snapshot'),
-        'attrs' => array(
+        'attrs' => [
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -53,9 +53,9 @@ class SnapshotCreateDialog extends simplePlugin
             '',
             'SnapshotHandler'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn, $parent, $aclCategory)
@@ -124,7 +124,7 @@ class SnapshotCreateDialog extends simplePlugin
  */
 class SnapshotsAttribute extends OrderedArrayAttribute
 {
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = FALSE;
@@ -138,18 +138,18 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     parent::setParent($plugin);
     if (is_object($this->plugin)) {
       if ($this->plugin->global) {
-        $this->setHeaders(array(
+        $this->setHeaders([
           _('DN'),
           _('Date'),
           _('Description'),
           ''
-        ));
+        ]);
       } else {
-        $this->setHeaders(array(
+        $this->setHeaders([
           _('Date'),
           _('Description'),
           ''
-        ));
+        ]);
       }
     }
   }
@@ -183,10 +183,10 @@ class SnapshotsAttribute extends OrderedArrayAttribute
 
   protected function getAttributeArrayValue($key, $value)
   {
-    $values = array(
+    $values = [
       date(_('Y-m-d, H:i:s'), preg_replace('/\-.*$/', '', $value['gosaSnapshotTimestamp'][0])),
       $value['description'][0]
-    );
+    ];
     if ($this->plugin->global) {
       array_unshift($values, $value['gosaSnapshotDN'][0]);
     }
@@ -199,16 +199,16 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     list ($img, $nbicons) = parent::genRowIcons($key, $value);
     $img = $this->renderInputField(
       'image', $id.'_restore_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
         'title' => _('Restore'),
         'alt'   => _('Restore'),
         'class' => 'center'
-      )
+      ]
     ).$img;
     $nbicons++;
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
   protected function handlePostValueActions($id, $postValue)
@@ -245,18 +245,18 @@ class SnapshotRestoreDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName' => 'SnapshotRestoreDialog',
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Restoring snapshots'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new DisplayAttribute (
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
@@ -264,12 +264,12 @@ class SnapshotRestoreDialog extends simplePlugin
           new SnapshotsAttribute (
             _('Snapshots'), _('Existing snapshots for this object'),
             'snapshots', FALSE,
-            array(),
+            [],
             'SnapshotHandler'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn, $parent, $global, $aclCategory)
@@ -298,28 +298,28 @@ class SnapshotRestoreDialog extends simplePlugin
   {
     global $ui;
     if ($this->dialog == 'delete') {
-      $objects = array(
-        array(
+      $objects = [
+        [
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        )
-      );
+        ]
+      ];
 
       // Display confirmation dialog.
       $smarty = get_smarty();
       $smarty->assign('objects', $objects);
       $str = $smarty->fetch(get_template_path('simple-remove.tpl'));
     } elseif ($this->dialog == 'restore') {
-      $objects = array(
-        array(
+      $objects = [
+        [
           'name'  => 'snapshot',
           'dn'    => $this->snapDn,
           'icon'  => 'geticon.php?context=actions&amp;icon=document-restore&amp;size=16',
           'type'  => 'Snapshot'
-        )
-      );
+        ]
+      ];
 
       // Display confirmation dialog.
       $smarty = get_smarty();
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 185fec9dd..08072cab8 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -30,23 +30,23 @@
  */
 class SnapshotHandler
 {
-  var $snapshotBases  = array();
+  var $snapshotBases  = [];
 
   protected $enabled;
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Snapshot'),
       'plDescription' => _('Snapshot handler'),
       /* Categories for snapshots are computed in config class */
-      'plCategory'    => array(),
+      'plCategory'    => [],
 
-      'plProvidedAcls' => array(
+      'plProvidedAcls' => [
         'restore_over'    => _('Restore over an existing object'),
         'restore_deleted' => _('Restore a deleted object'),
-      )
-    );
+      ]
+    ];
   }
 
   /*!
@@ -137,10 +137,10 @@ class SnapshotHandler
 
     /* Fetch all objects with */
     $ldap->cd($base);
-    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', array('gosaSnapshotDN'));
+    $ldap->search('(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=*))', ['gosaSnapshotDN']);
 
     /* Store for which object we have snapshots */
-    $this->snapshotsCache = array();
+    $this->snapshotsCache = [];
     while ($entry = $ldap->fetch()) {
       $this->snapshotsCache[$entry['gosaSnapshotDN'][0]] = TRUE;
     }
@@ -167,7 +167,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -181,12 +181,12 @@ class SnapshotHandler
     $ldap->cd($base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
 
     /* Put results into a list and add description if missing */
-    $objects = array();
+    $objects = [];
     while ($entry = $ldap->fetch()) {
       if (!isset($entry['description'][0])) {
         $entry['description'][0]  = "";
@@ -198,7 +198,7 @@ class SnapshotHandler
     if ($raw) {
       return $objects;
     } else {
-      $tmp = array();
+      $tmp = [];
       foreach ($objects as $entry) {
         $tmp[base64_encode($entry['dn'])] = $entry['description'][0];
       }
@@ -214,7 +214,7 @@ class SnapshotHandler
    *
    * \param array $description Snapshot description
    */
-  function createSnapshot($dn, $description = array())
+  function createSnapshot($dn, $description = [])
   {
     global $config;
     if (!$this->enabled()) {
@@ -226,7 +226,7 @@ class SnapshotHandler
       $dns  = $dn;
       $dn   = $dns[0];
     } else {
-      $dns = array($dn);
+      $dns = [$dn];
     }
 
     $ldap = $config->get_ldap_link();
@@ -252,9 +252,9 @@ class SnapshotHandler
       }
     }
 
-    $target   = array();
+    $target   = [];
 
-    $target['objectClass']            = array('top', 'gosaSnapshotObject');
+    $target['objectClass']            = ['top', 'gosaSnapshotObject'];
     $target['gosaSnapshotData']       = gzcompress($data, 6);
     $target['gosaSnapshotDN']         = $dn;
     $target['description']            = $description;
@@ -307,7 +307,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -315,13 +315,13 @@ class SnapshotHandler
     /* Prepare bases and some other infos */
     $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn);
     $new_base       = $this->snapshot_dn($base_of_object);
-    $tmp            = array();
+    $tmp            = [];
 
     /* Fetch all objects with  gosaSnapshotDN=$dn */
     $ldap->cd($new_base);
     $ldap->search(
       '(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN='.ldap_escape_f($dn).'))',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
 
@@ -345,7 +345,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
@@ -353,11 +353,11 @@ class SnapshotHandler
     /* Prepare bases */
     $new_base       = $this->snapshot_dn($base_of_object);
     /* Fetch all objects and check if they do not exist anymore */
-    $tmp  = array();
+    $tmp  = [];
     $ldap->cd($new_base);
     $ldap->search(
       '(objectClass=gosaSnapshotObject)',
-      array('gosaSnapshotTimestamp','gosaSnapshotDN','description'),
+      ['gosaSnapshotTimestamp','gosaSnapshotDN','description'],
       'one'
     );
     while ($entry = $ldap->fetch()) {
@@ -394,23 +394,23 @@ class SnapshotHandler
     global $config;
     if (!$this->enabled()) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to restore snapshot');
-      return array();
+      return [];
     }
 
     $ldap = $config->get_ldap_link();
 
     /* Get the snapshot */
-    $ldap->cat($dn, array('gosaSnapshotData'), '(gosaSnapshotData=*)');
+    $ldap->cat($dn, ['gosaSnapshotData'], '(gosaSnapshotData=*)');
     if ($attrs = $ldap->fetch()) {
       /* Prepare import string */
       $data = gzuncompress($attrs['gosaSnapshotData'][0]);
       if ($data === FALSE) {
         msg_dialog::display(_('Error'), _('There was a problem uncompressing snapshot data'), ERROR_DIALOG);
-        return array();
+        return [];
       }
     } else {
       msg_dialog::display(_('Error'), _('Snapshot data could not be fetched'), ERROR_DIALOG);
-      return array();
+      return [];
     }
 
     /* Import the given data */
diff --git a/include/class_acl.inc b/include/class_acl.inc
index 203b6adad..452eca871 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -31,19 +31,19 @@ class acl
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL'),
       'plDescription' => _('Manage access control lists'),
-      'plCategory'    => array(
-        'acl' => array(
+      'plCategory'    => [
+        'acl' => [
           'description'  => _('ACL').'&nbsp;&amp;&nbsp;'._('ACL roles'),
-          'objectClass'  => array('gosaAcl','gosaRole')
-        )
-      ),
-      'plObjectType'  => array(),
+          'objectClass'  => ['gosaAcl','gosaRole']
+        ]
+      ],
+      'plObjectType'  => [],
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   /*!
@@ -78,10 +78,10 @@ class acl
   static function explodeRole($role)
   {
     if (!is_array($role)) {
-      $role = array($role);
+      $role = [$role];
     }
     unset($role['count']);
-    $result = array();
+    $result = [];
     foreach ($role as $aclTemplate) {
       $list = explode(':', $aclTemplate, 2);
       $result[$list[0]] = static::extractACL($list[1]);
@@ -106,17 +106,17 @@ class acl
       list($index, $type,$role,$members) = $list;
     }
 
-    $a = array( $index => array(
+    $a = [ $index => [
       'type'    => $type,
       'filter'  => $filter,
       'members' => acl::extractMembers($members),
       'acl'     => base64_decode($role),
-    ));
+    ]];
 
     /* Handle unknown types */
-    if (!in_array($type, array('subtree', 'base'))) {
+    if (!in_array($type, ['subtree', 'base'])) {
       msg_dialog::display(_("Internal error"), sprintf(_("Unkown ACL type '%s'!\nYou might need to run \"fusiondirectory-setup --migrate-acls\" to migrate your acls to the new format."), $type), ERROR_DIALOG);
-      $a = array();
+      $a = [];
     }
     return $a;
   }
@@ -131,7 +131,7 @@ class acl
   static function extractMembers($ms)
   {
     global $config;
-    $a = array();
+    $a = [];
 
     /* Seperate by ',' and place it in an array */
     $ma = explode(',', $ms);
@@ -147,7 +147,7 @@ class acl
           continue;
         }
 
-        $ldap->cat($dn, array('cn', 'objectClass', 'description', 'uid'));
+        $ldap->cat($dn, ['cn', 'objectClass', 'description', 'uid']);
 
         /* Found entry... */
         if ($ldap->count()) {
@@ -187,7 +187,7 @@ class acl
     /* Rip acl off the string, seperate by ',' and place it in an array */
     $as = preg_replace('/^[^:]+:[^:]+:[^:]*:([^:]*).*$/', '\1', $acl);
     $aa = explode(',', $as);
-    $a  = array();
+    $a  = [];
 
     /* Dis-assemble single ACLs */
     foreach ($aa as $sacl) {
@@ -203,11 +203,11 @@ class acl
         if ($idx == 0) {
           /* Create hash for this object */
           $gobject      = $object;
-          $a[$gobject]  = array();
+          $a[$gobject]  = [];
 
           /* Append ACL if set */
           if ($gacl != "") {
-            $a[$gobject] = array($gacl);
+            $a[$gobject] = [$gacl];
           }
         } else {
           /* All other entries get appended... */
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 4acac0237..6a378ce82 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -119,7 +119,7 @@ class baseSelector
   {
     global $config;
 
-    $this->pathMapping = array();
+    $this->pathMapping = [];
 
     foreach ($bases as $base => $dummy) {
       // Build path style display
diff --git a/include/class_config.inc b/include/class_config.inc
index 1585daca9..81d3777ae 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -33,7 +33,7 @@ class config
   /* XML parser */
   var $parser;
   var $config_found     = FALSE;
-  var $tags             = array();
+  var $tags             = [];
   var $level            = 0;
   var $gpc              = 0;
   var $section          = '';
@@ -42,28 +42,28 @@ class config
   /*!
    * \brief Store configuration for current location
    */
-  var $current = array();
+  var $current = [];
 
   /* Link to LDAP-server */
   var $ldap       = NULL;
-  var $referrals  = array();
+  var $referrals  = [];
 
   /*
    * \brief Configuration data
    *
    * - $data['SERVERS'] contains server informations.
    */
-  var $data = array(
-    'LOCATIONS' => array(),
-    'SERVERS'   => array(),
-    'MAIN'      => array(),
-  );
+  var $data = [
+    'LOCATIONS' => [],
+    'SERVERS'   => [],
+    'MAIN'      => [],
+  ];
   var $basedir        = '';
 
   /* Keep a copy of the current department list */
-  var $departments      = array();
-  var $idepartments     = array();
-  var $department_info  = array();
+  var $departments      = [];
+  var $idepartments     = [];
+  var $department_info  = [];
   var $filename         = '';
   var $last_modified    = 0;
 
@@ -106,7 +106,7 @@ class config
     if (($this->filename != '') && ((filemtime($this->filename) != $this->last_modified) || $force)) {
 
       $this->config_found     = FALSE;
-      $this->tags             = array();
+      $this->tags             = [];
       $this->level            = 0;
       $this->gpc              = 0;
       $this->section          = '';
@@ -137,11 +137,11 @@ class config
 
   function parse_data ($xmldata)
   {
-    $this->data = array(
-      'LOCATIONS' => array(),
-      'SERVERS'   => array(),
-      'MAIN'      => array(),
-    );
+    $this->data = [
+      'LOCATIONS' => [],
+      'SERVERS'   => [],
+      'MAIN'      => [],
+    ];
 
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
@@ -223,7 +223,7 @@ class config
 
           /* Add location elements */
           if (!isset($this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'])) {
-            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = array();
+            $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'] = [];
           }
 
           $this->data['LOCATIONS'][$this->currentLocation]['REFERRAL'][$server] = $attrs;
@@ -271,7 +271,7 @@ class config
   {
     if (isset($_SERVER['HTTP_FDKEY'])) {
       if (!session::is_set('HTTP_FDKEY_CACHE')) {
-        session::set('HTTP_FDKEY_CACHE', array());
+        session::set('HTTP_FDKEY_CACHE', []);
       }
       $cache = session::get('HTTP_FDKEY_CACHE');
       if (!isset($cache[$creds])) {
@@ -328,7 +328,7 @@ class config
 
       /* Move referrals */
       if (!isset($this->current['REFERRAL'])) {
-        $this->ldap->referrals = array();
+        $this->ldap->referrals = [];
       } else {
         $this->ldap->referrals = $this->current['REFERRAL'];
       }
@@ -362,7 +362,7 @@ class config
 
     /* Sort referrals, if present */
     if (isset($this->current['REFERRAL'])) {
-      $servers  = array();
+      $servers  = [];
       foreach ($this->current['REFERRAL'] as $server => $ref) {
         $servers[$server] = strlen($ref['BASE']);
       }
@@ -424,12 +424,12 @@ class config
     $ldap = $this->get_ldap_link();
 
     /* Get samba servers from LDAP */
-    $this->data['SERVERS']['SAMBA'] = array();
+    $this->data['SERVERS']['SAMBA'] = [];
     if (class_available('sambaAccount')) {
       $ldap->cd($this->current['BASE']);
       $ldap->search('(objectClass=sambaDomain)');
       while ($attrs = $ldap->fetch()) {
-        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = array( 'SID' => '','RIDBASE' => '');
+        $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]] = [ 'SID' => '','RIDBASE' => ''];
         if (isset($attrs['sambaSID'][0])) {
           $this->data['SERVERS']['SAMBA'][$attrs['sambaDomainName'][0]]['SID'] = $attrs['sambaSID'][0];
         }
@@ -441,10 +441,10 @@ class config
       /* If no samba servers are found, look for configured sid/ridbase */
       if (count($this->data['SERVERS']['SAMBA']) == 0) {
         if (isset($this->current['SAMBASID']) && isset($this->current['SAMBARIDBASE'])) {
-          $this->data['SERVERS']['SAMBA']['DEFAULT'] = array(
+          $this->data['SERVERS']['SAMBA']['DEFAULT'] = [
             'SID'     => $this->get_cfg_value('SAMBASID'),
             'RIDBASE' => $this->get_cfg_value('SAMBARIDBASE')
-          );
+          ];
         }
       }
     }
@@ -459,7 +459,7 @@ class config
 
     if (!$forceReload) {
       $ldap = $this->get_ldap_link();
-      $ldap->cat($dn, array('fusionConfigMd5'));
+      $ldap->cat($dn, ['fusionConfigMd5']);
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs['fusionConfigMd5'][0]) && ($attrs['fusionConfigMd5'][0] == md5_file(CACHE_DIR.'/'.CLASS_CACHE))) {
           return;
@@ -488,10 +488,10 @@ class config
             $mode   = strtoupper($parts[1]);
             $cmd    = $parts[2];
             if (!isset($this->data['HOOKS'][$class])) {
-              $this->data['HOOKS'][$class] = array('CLASS' => $parts[0]);
+              $this->data['HOOKS'][$class] = ['CLASS' => $parts[0]];
             }
             if (!isset($this->data['HOOKS'][$class][$mode])) {
-              $this->data['HOOKS'][$class][$mode] = array();
+              $this->data['HOOKS'][$class][$mode] = [];
             }
             $this->data['HOOKS'][$class][$mode][] = $cmd;
           }
@@ -515,7 +515,7 @@ class config
   function get_departments()
   {
     /* Initialize result hash */
-    $result = array();
+    $result = [];
 
     $result['/'] = $this->current['BASE'];
 
@@ -528,7 +528,7 @@ class config
 
     /* Create a list of attributes to fetch */
     $filter       = '';
-    $ldap_values  = array('objectClass', 'description');
+    $ldap_values  = ['objectClass', 'description'];
     foreach ($types as $type) {
       $i = objects::infos($type);
       $filter         .= $i['filter'];
@@ -559,11 +559,11 @@ class config
 
       $dn   = $attrs['dn'];
       $data = objects::infos($oc);
-      $this->department_info[$dn] = array(
+      $this->department_info[$dn] = [
         'img'         => $data['icon'],
         'description' => (isset($attrs['description'][0]) ? $attrs['description'][0] : ''),
         'name'        => $attrs[$data['mainAttr']][0]
-      );
+      ];
 
       /* Only assign non-root departments */
       if ($dn != $result['/']) {
@@ -580,9 +580,9 @@ class config
     $base   = $this->current['BASE'];
     $qbase  = preg_quote($base, '/');
 
-    $arr  = array();
+    $arr  = [];
 
-    $this->idepartments = array();
+    $this->idepartments = [];
 
     /* Create multidimensional array, with all departments. */
     foreach ($this->departments as $key => $val) {
@@ -634,7 +634,7 @@ class config
    */
   function generateDepartmentArray($arr, $depth = -1, $max_size = 256)
   {
-    $ret = array();
+    $ret = [];
     $depth++;
 
     /* Walk through array */
@@ -691,7 +691,7 @@ class config
   {
     $class = strtoupper($class);
     $value = strtoupper($value);
-    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : array());
+    return (isset($this->data['HOOKS'][$class][$value]) ? $this->data['HOOKS'][$class][$value] : []);
   }
 
   /*!
@@ -725,7 +725,7 @@ class config
     }
 
     if (is_array($default) && !is_array($res)) {
-      $res = array($res);
+      $res = [$res];
     }
 
     return $res;
@@ -794,14 +794,14 @@ class config
 
   function loadPlist (pluglist $plist)
   {
-    $this->data['OBJECTS']    = array();
-    $this->data['SECTIONS']   = array();
-    $this->data['CATEGORIES'] = array();
-    $this->data['MENU']       = array();
-    $this->data['TABS']       = array();
+    $this->data['OBJECTS']    = [];
+    $this->data['SECTIONS']   = [];
+    $this->data['CATEGORIES'] = [];
+    $this->data['MENU']       = [];
+    $this->data['TABS']       = [];
     foreach ($plist->info as $class => &$plInfo) {
       if (isset($plInfo['plObjectType'])) {
-        $entry = array('CLASS' => $class,'NAME' => $plInfo['plShortName']);
+        $entry = ['CLASS' => $class,'NAME' => $plInfo['plShortName']];
         if (isset($plInfo['plSubTabs'])) {
           $entry['SUBTABS'] = strtoupper($plInfo['plSubTabs']);
         }
@@ -814,7 +814,7 @@ class config
             }
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class to tab list");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = array();
+              $this->data['TABS'][$tabclass] = [];
             }
             $this->data['TABS'][$tabclass][] = $entry;
           } else {
@@ -827,7 +827,7 @@ class config
             $value['mainTab']         = $class;
             $value['templateActive']  = FALSE;
             $value['snapshotActive']  = FALSE;
-            foreach (array('ou', 'tabClass') as $i) {
+            foreach (['ou', 'tabClass'] as $i) {
               if (!isset($value[$i])) {
                 $value[$i] = NULL;
               }
@@ -854,7 +854,7 @@ class config
             $this->data['OBJECTS'][strtoupper($key)] = $value;
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class as main tab of");
             if (!isset($this->data['TABS'][$tabclass])) {
-              $this->data['TABS'][$tabclass] = array();
+              $this->data['TABS'][$tabclass] = [];
             }
             array_unshift($this->data['TABS'][$tabclass], $entry);
           }
@@ -862,22 +862,22 @@ class config
       } elseif (class_available($class) && is_subclass_of($class, 'simpleService')) {
         @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, "Adding service");
         if (!isset($this->data['TABS']['SERVERSERVICE'])) {
-          $this->data['TABS']['SERVERSERVICE'] = array();
+          $this->data['TABS']['SERVERSERVICE'] = [];
         }
-        $this->data['TABS']['SERVERSERVICE'][] = array(
+        $this->data['TABS']['SERVERSERVICE'][] = [
           'CLASS' => $class,
           'NAME' => $plInfo['plShortName']
-        );
+        ];
       }
       /* Feed categories */
       if (isset($plInfo['plCategory'])) {
         /* Walk through supplied list and feed only translated categories */
-        $cats = array();
+        $cats = [];
         foreach ($plInfo['plCategory'] as $idx => $data) {
           $cat    = (is_numeric($idx) ? $data : $idx);
           $cats[] = $cat;
           if (!isset($this->data['CATEGORIES'][$cat])) {
-            $this->data['CATEGORIES'][$cat] = array( 'classes' => array('0') );
+            $this->data['CATEGORIES'][$cat] = [ 'classes' => ['0'] ];
           }
           if (!empty($plInfo['plProvidedAcls'])) {
             $this->data['CATEGORIES'][$cat]['classes'][] = $class;
@@ -886,7 +886,7 @@ class config
             /* Non numeric index means -> base object containing more informations */
             $this->data['CATEGORIES'][$cat]['description'] = $data['description'];
             if (!is_array($data['objectClass'])) {
-              $data['objectClass'] = array($data['objectClass']);
+              $data['objectClass'] = [$data['objectClass']];
             }
             $this->data['CATEGORIES'][$cat]['objectClass'] = $data['objectClass'];
           }
@@ -895,18 +895,18 @@ class config
       }
     }
     unset($plInfo);
-    $this->data['CATEGORIES']['all'] = array(
-      'classes'     => array('all'),
+    $this->data['CATEGORIES']['all'] = [
+      'classes'     => ['all'],
       'description' => '*&nbsp;'._('All categories'),
-      'objectClass' => array(),
-    );
+      'objectClass' => [],
+    ];
     /* Extract categories definitions from object types */
     foreach ($this->data['OBJECTS'] as $key => $infos) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['aclCategory'], "ObjectType $key category");
       if (strtoupper($infos['aclCategory']) == $key) {
         $cat = $infos['aclCategory'];
         if (!isset($this->data['CATEGORIES'][$cat])) {
-          $this->data['CATEGORIES'][$cat] = array('classes' => array('0'));
+          $this->data['CATEGORIES'][$cat] = ['classes' => ['0']];
         }
         if (!isset($this->data['CATEGORIES'][$cat]['description'])) {
           $this->data['CATEGORIES'][$cat]['description'] = $infos['name'];
@@ -917,11 +917,11 @@ class config
     }
     /* Now that OBJECTS are filled, place tabs in categories */
     foreach ($plist->info as $class => &$plInfo) {
-      $acl = array();
+      $acl = [];
       if (isset($plInfo['plCategory'])) {
         $acl = $plInfo['plCategory'];
         if (!is_array($acl)) {
-          $acl = array($acl);
+          $acl = [$acl];
         }
       }
       if (isset($plInfo['plObjectType'])) {
@@ -985,7 +985,7 @@ class config
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
         if (!is_array($acl)) {
-          $acl = array($acl);
+          $acl = [$acl];
         }
         if (!is_numeric(key($acl))) {
           $acl = array_keys($acl);
@@ -1004,9 +1004,9 @@ class config
           $this->data['SECTIONS'][$section] = array_change_key_case($plInfo['plSection'][$section], CASE_UPPER);
         }
         if (!isset($this->data['MENU'][$section])) {
-          $this->data['MENU'][$section] = array();
+          $this->data['MENU'][$section] = [];
         }
-        $attrs = array('CLASS' => $class);
+        $attrs = ['CLASS' => $class];
         if (!empty($acl)) {
           $attrs['ACL'] = $acl;
         }
@@ -1019,7 +1019,7 @@ class config
             $this->data['SECTIONS'][$section] = array_change_key_case($infos, CASE_UPPER);
           }
           if (!isset($this->data['MENU'][$section])) {
-            $this->data['MENU'][$section] = array();
+            $this->data['MENU'][$section] = [];
           }
         }
         foreach ($entries as $section => $section_entries) {
@@ -1035,15 +1035,15 @@ class config
       $infos['classes'] = array_unique($infos['classes']);
       if (!isset($infos['description'])) {
         $infos['description'] = $name;
-        $infos['objectClass'] = array();
+        $infos['objectClass'] = [];
       }
     }
     unset($infos);
-    $this->data['SECTIONS']['personal'] = array('NAME' => _('My account'), 'PRIORITY' => 40);
-    $personal = array();
+    $this->data['SECTIONS']['personal'] = ['NAME' => _('My account'), 'PRIORITY' => 40];
+    $personal = [];
     foreach ($this->data['TABS']['USERTABS'] as $tab) {
       if ($plist->info[$tab['CLASS']]['plSelfModify']) {
-        $personal[] = array('CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self');
+        $personal[] = ['CLASS' => $tab['CLASS'], 'ACL' => 'user/'.$tab['CLASS'].':self'];
       }
     }
     if (!isset($this->data['MENU']['personal'])) {
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 1964e81c9..1aa8908f3 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -47,7 +47,7 @@ class divSelectBox
   function __construct($id)
   {
     $this->s_summary  = '';
-    $this->a_entries  = array();
+    $this->a_entries  = [];
     $this->cols       = 0;
     $this->id         = $id;
   }
diff --git a/include/class_filter.inc b/include/class_filter.inc
index 964a390a9..ab7cc9c44 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -30,19 +30,19 @@
 class filter
 {
   var $xmlData;
-  var $elements         = array();
-  var $elementValues    = array();
-  var $alphabetElements = array();
-  var $autocompleter    = array();
+  var $elements         = [];
+  var $elementValues    = [];
+  var $alphabetElements = [];
+  var $autocompleter    = [];
   var $category         = '';
-  var $objectStorage    = array();
+  var $objectStorage    = [];
   var $base             = '';
   var $scope            = '';
   var $query;
   var $initial          = FALSE;
   var $scopeMode        = 'auto';
   var $alphabet         = NULL;
-  var $converter        = array();
+  var $converter        = [];
   var $pid;
   var $headpage;
 
@@ -79,7 +79,7 @@ class filter
 
     // Load filter
     if (!isset($this->xmlData['search']['query'][0])) {
-      $this->xmlData['search']['query'] = array($this->xmlData['search']['query']);
+      $this->xmlData['search']['query'] = [$this->xmlData['search']['query']];
     }
 
     // Move information
@@ -101,7 +101,7 @@ class filter
     // Generate formular data
     if (isset($this->xmlData['element'])) {
       if (!isset($this->xmlData['element'][0])) {
-        $this->xmlData['element'] = array($this->xmlData['element']);
+        $this->xmlData['element'] = [$this->xmlData['element']];
       }
       foreach ($this->xmlData['element'] as $element) {
         // Ignore elements without type
@@ -113,7 +113,7 @@ class filter
 
         // Fix arrays
         if (isset($element['value']) && !isset($element['value'][0])) {
-          $element['value'] = array($element['value']);
+          $element['value'] = [$element['value']];
         }
 
         // Store element for quick access
@@ -266,9 +266,9 @@ class filter
   function setComboBoxOptions($tag, $options)
   {
     if (isset($this->elements[$tag]) && ($this->elements[$tag]['type'] == "combobox")) {
-      $this->elements[$tag]['value'] = array();
+      $this->elements[$tag]['value'] = [];
       foreach ($options as $key => $label) {
-        $this->elements[$tag]['value'][] = array('label' => $label, 'key' => $key);
+        $this->elements[$tag]['value'][] = ['label' => $label, 'key' => $key];
       }
     }
   }
@@ -440,7 +440,7 @@ class filter
   function query()
   {
     global $class_mapping;
-    $result = array();
+    $result = [];
 
     // Return empty list if initial is not set
     if (!$this->initial) {
@@ -465,10 +465,10 @@ class filter
       $attributes = $query['attribute'];
 
       if ($attributes === '*') {
-        $attributes = array($attributes);
+        $attributes = [$attributes];
       } else {
         if (!is_array($attributes)) {
-          $attributes = array($attributes);
+          $attributes = [$attributes];
         }
         // ObjectClass is required to check permissions later.
         if (!in_array('objectClass', $attributes)) {
@@ -485,8 +485,8 @@ class filter
         // Handle converters if present
         if (isset($this->converter[$tag])) {
           preg_match('/([^:]+)::(.*)$/', $this->converter[$tag], $m);
-          $e_set    = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
-          $e_unset  = call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
+          $e_set    = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['set']) ? '' : $element['set']));
+          $e_unset  = call_user_func([$m[1], $m[2]], preg_replace('/\$/', $this->elementValues[$tag], is_array($element['unset']) ? '' : $element['unset']));
         } else {
           $e_set    = (is_array($element['set']) ? '' : $element['set']);
           $e_unset  = (is_array($element['unset']) ? '' : $element['unset']);
@@ -519,7 +519,7 @@ class filter
         );
       }
       // Now call filter method and merge resulting entries.
-      $result = array_merge($result, call_user_func(array($backend, 'query'),
+      $result = array_merge($result, call_user_func([$backend, 'query'],
             $this, $this->base, $this->scope, $filter, $attributes, $this->category, $objectStorage));
     }
 
@@ -596,7 +596,7 @@ class filter
   function getCompletitionList($cfg, $tag, $value = "*")
   {
     global $class_mapping;
-    $res = array();
+    $res = [];
 
     // Is backend available?
     $backend = "filter".$cfg['backend'];
@@ -608,7 +608,7 @@ class filter
     $filter     = $cfg['filter'];
     $attributes = $cfg['attribute'];
     if (!is_array($attributes)) {
-      $attributes = array($attributes);
+      $attributes = [$attributes];
     }
 
     // ObjectClass is required to check permissions later.
@@ -619,10 +619,10 @@ class filter
     // Make filter
     $filter = preg_replace("/\\$$tag/", ldap_escape_f($value), $filter);
     if (isset($cfg['base']) && isset($cfg['scope']) && isset($cfg['category'])) {
-      $result = call_user_func(array($backend, 'query'), $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
+      $result = call_user_func([$backend, 'query'], $this, $cfg['base'], $cfg['scope'], $filter, $attributes,
                            $cfg["category"], $cfg["objectStorage"]);
     } else {
-      $result = call_user_func(array($backend, 'query'), $this, $this->base, $this->scope, $filter, $attributes,
+      $result = call_user_func([$backend, 'query'], $this, $this->base, $this->scope, $filter, $attributes,
                            $this->category, $this->objectStorage);
     }
 
@@ -648,7 +648,7 @@ class filter
    */
   function processAutocomplete()
   {
-    $result = array();
+    $result = [];
 
     // Introduce maximum number of entries
     $max = 25;
diff --git a/include/class_filterLDAP.inc b/include/class_filterLDAP.inc
index 5e677b4bb..6e6cd13a4 100644
--- a/include/class_filterLDAP.inc
+++ b/include/class_filterLDAP.inc
@@ -48,7 +48,7 @@ class filterLDAP
    *
    * \param array $objectStorage
    */
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = array(""))
+  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = [""])
   {
     return static::get_list($parent, $base, $filter, $attributes, $category, $objectStorage, (($scope == 'sub') ? 'subtree' : 'one'), TRUE);
   }
@@ -80,11 +80,11 @@ class filterLDAP
 
     // Move to arrays for category and objectStorage
     if (!is_array($category)) {
-      $category = array($category);
+      $category = [$category];
     }
 
     // Initialize search bases
-    $bases = array();
+    $bases = [];
 
     foreach ($objectStorage as $oc) {
       $oc = preg_replace('/,$/', '', $oc);
@@ -103,7 +103,7 @@ class filterLDAP
         }
         $parts    = ldap_explode_dn($oc, 0);
         unset($parts['count']);
-        $dnFilter = array();
+        $dnFilter = [];
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -120,7 +120,7 @@ class filterLDAP
     $ldap = $config->get_ldap_link($sizelimit);
 
     // Do search for every base
-    $result = array();
+    $result = [];
     $limit_exceeded = FALSE;
     $ui->getSizeLimitHandler()->setLimitExceeded(FALSE);
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 0b18f481d..58e784ffb 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -40,13 +40,13 @@ class LDAP
   /* connection identifier */
   var $cid;
 
-  var $hasres         = array();
-  var $sr             = array();
-  var $re             = array();
+  var $hasres         = [];
+  var $sr             = [];
+  var $re             = [];
   var $basedn         = "";
 
   /* 0 if we are fetching the first entry, otherwise 1 */
-  var $start          = array();
+  var $start          = [];
 
   /* Any error messages to be returned can be put here */
   var $error          = "";
@@ -54,14 +54,14 @@ class LDAP
   var $srp            = 0;
 
   /* Information read from slapd.oc.conf */
-  var $objectClasses    = array();
+  var $objectClasses    = [];
   /* the dn for the bind */
   var $binddn           = "";
   /* the dn's password for the bind */
   var $bindpw           = "";
   var $hostname         = "";
   var $follow_referral  = FALSE;
-  var $referrals        = array();
+  var $referrals        = [];
 
   /* 0, empty or negative values will disable this check */
   var $max_ldap_query_time  = 0;
@@ -134,7 +134,7 @@ class LDAP
       @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3);
       if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) {
         @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
-        @ldap_set_rebind_proc($this->cid, array(&$this, "rebind"));
+        @ldap_set_rebind_proc($this->cid, [&$this, "rebind"]);
       }
       if (function_exists("ldap_start_tls") && $this->tls) {
         @ldap_start_tls($this->cid);
@@ -245,7 +245,7 @@ class LDAP
    *
    * \param string $scope Scope of the search: subtree/base/one
    */
-  function search($srp, $filter, $attrs = array(), $scope = 'subtree')
+  function search($srp, $filter, $attrs = [], $scope = 'subtree')
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -297,7 +297,7 @@ class LDAP
    *
    * \param array $attrs
    */
-  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = array("*"))
+  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = ["*"])
   {
     trigger_error('deprecated');
     $this->cd($basedn);
@@ -315,7 +315,7 @@ class LDAP
    *
    * \param string $filter Initialized at "(objectclass=*)"
    */
-  function cat($srp, $dn, $attrs = array("*"), $filter = "(objectclass=*)")
+  function cat($srp, $dn, $attrs = ["*"], $filter = "(objectclass=*)")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -347,7 +347,7 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $res  = @ldap_read($this->cid, $dn, $filter, array("objectClass"));
+      $res  = @ldap_read($this->cid, $dn, $filter, ["objectClass"]);
       $rv   = @ldap_count_entries($this->cid, $res);
       return $rv;
     } else {
@@ -381,7 +381,7 @@ class LDAP
    */
   function fetch($srp)
   {
-    $att = array();
+    $att = [];
     if ($this->hascon) {
       if ($this->hasres[$srp]) {
         if ($this->start[$srp] == 0) {
@@ -389,7 +389,7 @@ class LDAP
             $this->start[$srp]  = 1;
             $this->re[$srp]     = @ldap_first_entry($this->cid, $this->sr[$srp]);
           } else {
-            return array();
+            return [];
           }
         } else {
           $this->re[$srp] = @ldap_next_entry($this->cid, $this->re[$srp]);
@@ -400,7 +400,7 @@ class LDAP
         }
         $this->error = @ldap_error($this->cid);
         if (!isset($att)) {
-          $att = array();
+          $att = [];
         }
         return $att;
       } else {
@@ -621,11 +621,11 @@ class LDAP
       if ($this->reconnect) {
         $this->connect();
       }
-      $delarray = array();
+      $delarray = [];
 
       /* Get sorted list of dn's to delete */
       $this->cd($deletedn);
-      $this->search($srp, '(objectClass=*)', array('dn'));
+      $this->search($srp, '(objectClass=*)', ['dn']);
       while ($attrs = $this->fetch($srp)) {
         $delarray[$attrs['dn']] = strlen($attrs['dn']);
       }
@@ -658,7 +658,7 @@ class LDAP
       if (isset($attrs['objectClass'])) {
         $ocs = $attrs['objectClass'];
         if (!is_array($ocs)) {
-          $ocs = array($ocs);
+          $ocs = [$ocs];
         }
         if (isset($ocs[$m[1]])) {
           $str .= " - <b>objectClass: ".$ocs[$m[1]]."</b>";
@@ -733,7 +733,7 @@ class LDAP
     $real_path = substr($target, 0, strlen($target) - strlen($this->basedn) - 1);
 
     if ($target == $this->basedn) {
-      $l = array('dummy');
+      $l = ['dummy'];
     } else {
       $l = array_reverse(ldap_explode_dn($real_path, 0));
     }
@@ -767,29 +767,29 @@ class LDAP
 
       $type   = preg_replace('/^([^=]+)=.*$/', '\\1', $cdn);
       $param  = preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn);
-      $param  = preg_replace(array('/\\\\,/','/\\\\"/'), array(',','"'), $param);
+      $param  = preg_replace(['/\\\\,/','/\\\\"/'], [',','"'], $param);
 
-      $attrs = array($type => $param);
+      $attrs = [$type => $param];
 
       /* Hardcoded classes */
       switch ($type) {
         case 'ou':
-          $attrs['objectClass']  = array('organizationalUnit');
+          $attrs['objectClass']  = ['organizationalUnit'];
           break;
         case 'd':
-          $attrs['objectClass']  = array('domain');
+          $attrs['objectClass']  = ['domain'];
           break;
         case 'dc':
-          $attrs['objectClass']  = array('dcObject');
+          $attrs['objectClass']  = ['dcObject'];
           break;
         case 'o':
-          $attrs['objectClass']  = array('organization');
+          $attrs['objectClass']  = ['organization'];
           break;
         case 'l':
-          $attrs['objectClass']  = array('locality');
+          $attrs['objectClass']  = ['locality'];
           break;
         case 'c':
-          $attrs['objectClass']  = array('country');
+          $attrs['objectClass']  = ['country'];
           break;
         default:
           /* Fallback to autodetection of objectClass */
@@ -798,22 +798,22 @@ class LDAP
             exit();
           }
           /* Get name of first matching objectClass */
-          $attrs['objectClass']  = array();
+          $attrs['objectClass']  = [];
           foreach ($classes as $class) {
             if (isset($class['MUST']) && in_array($type, $class['MUST'])) {
               /* Look for first class that is structural... */
               if (isset($class['STRUCTURAL'])) {
-                $attrs['objectClass'] = array($class['NAME']);
+                $attrs['objectClass'] = [$class['NAME']];
                 break;
               }
 
               /* Look for class that is auxiliary... */
               if (empty($attrs['objectClass']) && isset($class['AUXILIARY'])) {
-                $attrs['objectClass'] = array($class['NAME']);
+                $attrs['objectClass'] = [$class['NAME']];
               }
             } elseif (empty($attrs['objectClass']) && isset($class['MAY']) && in_array($type, $class['MAY'])) {
               /* Better than nothing */
-              $attrs['objectClass'] = array($class['NAME']);
+              $attrs['objectClass'] = [$class['NAME']];
             }
           }
 
@@ -929,7 +929,7 @@ class LDAP
 
   function get_credentials($url, $referrals = NULL)
   {
-    $ret    = array();
+    $ret    = [];
     $url    = preg_replace('!\?\?.*$!', '', $url);
     $server = preg_replace('!^([^:]+://[^/]+)/.*$!', '\\1', $url);
 
@@ -970,7 +970,7 @@ class LDAP
 
     // Check scope values
     $scope = trim($scope);
-    if (!empty($scope) && !in_array($scope, array('base', 'one', 'sub', 'children'))) {
+    if (!empty($scope) && !in_array($scope, ['base', 'one', 'sub', 'children'])) {
         trigger_error(sprintf("Invalid parameter for scope '%s', please use 'base', 'one', 'sub' or 'children'."), $scope);
         return NULL;
     }
@@ -986,11 +986,11 @@ class LDAP
     $cmd = 'ldapsearch'.($this->tls ? ' -ZZ' : '')." -x -LLLL -D {$admin} {$filter} {$limit} {$scope} -H {$host} -b {$dn} -w {$pwd} ";
 
     // Create list of process pipes
-    $descriptorspec = array(
-      0 => array("pipe", "r"),  // stdin
-      1 => array("pipe", "w"),  // stdout
-      2 => array("pipe", "w")   // stderr
-    );
+    $descriptorspec = [
+      0 => ["pipe", "r"],  // stdin
+      1 => ["pipe", "w"],  // stdout
+      2 => ["pipe", "w"]   // stderr
+    ];
 
     // Try to open the process
     $process = proc_open($cmd, $descriptorspec, $pipes);
@@ -1017,7 +1017,7 @@ class LDAP
 
   function dn_exists($dn)
   {
-    return @ldap_read($this->cid, $dn, "(objectClass=*)", array("objectClass"));
+    return @ldap_read($this->cid, $dn, "(objectClass=*)", ["objectClass"]);
   }
 
   /*!
@@ -1049,8 +1049,8 @@ class LDAP
 
     /* Joining lines */
     $line       = NULL;
-    $entry      = array();
-    $entries    = array();
+    $entry      = [];
+    $entries    = [];
     $entryStart = -1;
     foreach ($fileLines as $lineNumber => $fileLine) {
       if (preg_match('/^ /', $fileLine)) {
@@ -1088,7 +1088,7 @@ class LDAP
               throw new LDIFImportException(sprintf(_('Error line %s, an entry bloc should start with the dn'), $lineNumber));
             } else {
               if (!isset($entry[$key])) {
-                $entry[$key] = array();
+                $entry[$key] = [];
               }
               $entry[$key][] = $value;
             }
@@ -1102,7 +1102,7 @@ class LDAP
             $entries[$entryStart] = $entry;
           }
           /* Start a new entry */
-          $entry      = array();
+          $entry      = [];
           $entryStart = -1;
           $line       = NULL;
         }
@@ -1184,11 +1184,11 @@ class LDAP
           $attrs = $this->fetch($srp);
           foreach (array_keys($attrs) as $name) {
             if (!is_numeric($name)) {
-              if (in_array($name, array('dn','count'))) {
+              if (in_array($name, ['dn','count'])) {
                 continue;
               }
               if (!isset($data[$name])) {
-                $data[$name] = array();
+                $data[$name] = [];
               }
             }
           }
@@ -1217,7 +1217,7 @@ class LDAP
    */
   function get_objectclasses($force_reload = FALSE)
   {
-    $objectclasses = array();
+    $objectclasses = [];
 
     /* Return the cached results. */
     if (class_available('session') && session::is_set('LDAP_CACHE::get_objectclasses') && !$force_reload) {
@@ -1226,19 +1226,19 @@ class LDAP
     }
 
     // Get base to look for schema
-    $sr   = @ldap_read($this->cid, '', 'objectClass=*', array('subschemaSubentry'));
+    $sr   = @ldap_read($this->cid, '', 'objectClass=*', ['subschemaSubentry']);
     $attr = @ldap_get_entries($this->cid, $sr);
     if (!isset($attr[0]['subschemasubentry'][0])) {
-      return array();
+      return [];
     }
 
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
-    $objectclasses = array();
-    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', array('objectclasses'));
+    $objectclasses = [];
+    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
-      return array();
+      return [];
     }
     foreach ($attrs[0]['objectclasses'] as $val) {
       if (preg_match('/^[0-9]+$/', $val)) {
@@ -1247,7 +1247,7 @@ class LDAP
       $name = "OID";
       $pattern = explode(' ', $val);
       $ocname = preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val);
-      $objectclasses[$ocname] = array();
+      $objectclasses[$ocname] = [];
 
       foreach ($pattern as $chunk) {
         switch ($chunk) {
@@ -1259,8 +1259,8 @@ class LDAP
           case ')':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, array('MUST', 'MAY')) && !is_array($v)) {
-                $v = array($v);
+              if (in_array($name, ['MUST', 'MAY']) && !is_array($v)) {
+                $v = [$v];
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1278,8 +1278,8 @@ class LDAP
           case 'MAY':
             if ($name != '') {
               $v = $this->value2container($value);
-              if (in_array($name, array('MUST','MAY')) && !is_array($v)) {
-                $v = array($v);
+              if (in_array($name, ['MUST','MAY']) && !is_array($v)) {
+                $v = [$v];
               }
               $objectclasses[$ocname][$name] = $v;
             }
@@ -1367,7 +1367,7 @@ class LDAP
     ldap_bind ($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read ($ds, '', 'objectClass=*', array('namingContexts'));
+    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index b9921b855..2d3bc3c1b 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -36,7 +36,7 @@
   */
 class ldapFilter
 {
-  static $operators = array('!', '&', '|');
+  static $operators = ['!', '&', '|'];
 
   protected $operator;
   protected $subparts;
@@ -82,7 +82,7 @@ class ldapFilter
     return $this->subparts;
   }
 
-  function listUsedAttributes(&$result = array())
+  function listUsedAttributes(&$result = [])
   {
     foreach ($this->subparts as $subpart) {
       $subpart->listUsedAttributes($result);
@@ -93,10 +93,10 @@ class ldapFilter
   static function parse($filter)
   {
     // Remove starting and ending parenthesis
-    $filter = preg_replace(array('/^\\s*\\(/', '/\\)\\s*$/'), '', $filter);
+    $filter = preg_replace(['/^\\s*\\(/', '/\\)\\s*$/'], '', $filter);
 
     if (in_array($filter[0], ldapFilter::$operators)) {
-      $subfilters = array();
+      $subfilters = [];
       /* We need an ending parenthesis in order to catch last subpart correctly */
       $filter .= ')';
       $offset = 0;
@@ -116,7 +116,7 @@ class ldapFilter
           }
         }
       }
-      if (in_array($filter[0], array('&', '|')) && (count($subfilters) == 1)) {
+      if (in_array($filter[0], ['&', '|']) && (count($subfilters) == 1)) {
         /* Avoid empty levels */
         return $subfilters[0];
       } else {
@@ -135,7 +135,7 @@ class ldapFilter
  */
 class ldapFilterLeaf extends ldapFilter
 {
-  static $operators = array('=','~=','>=','<=');
+  static $operators = ['=','~=','>=','<='];
 
   protected $pattern;
   protected $dnFilter = FALSE;
@@ -146,7 +146,7 @@ class ldapFilterLeaf extends ldapFilter
       $this->dnFilter = TRUE;
       $left = substr($left, 0, -4);
     }
-    parent::__construct($operator, array($left, $right));
+    parent::__construct($operator, [$left, $right]);
     if (($this->operator == '=') || ($this->operator == '~=')) {
       $prefix = '';
       $suffix = '';
@@ -156,7 +156,7 @@ class ldapFilterLeaf extends ldapFilter
       if (preg_match('/\\*$/', $this->subparts[1])) {
         $suffix = '.*';
       }
-      $search = preg_replace(array('/^\\*/','/\\*$/'), '', $this->subparts[1]);
+      $search = preg_replace(['/^\\*/','/\\*$/'], '', $this->subparts[1]);
       if ($this->dnFilter) {
         $this->pattern = '/'.$left.'='.$prefix.preg_quote($search, '/').$suffix.',/';
       } elseif ($this->subparts[1] == '*') {
@@ -192,7 +192,7 @@ class ldapFilterLeaf extends ldapFilter
     if (isset($array[$this->subparts[0]])) {
       $values = $array[$this->subparts[0]];
       if (!is_array($values)) {
-        $values = array($values);
+        $values = [$values];
       }
       foreach ($values as $value) {
         switch ($this->operator) {
@@ -221,7 +221,7 @@ class ldapFilterLeaf extends ldapFilter
     return FALSE;
   }
 
-  function listUsedAttributes(&$result = array())
+  function listUsedAttributes(&$result = [])
   {
     if ($this->dnFilter) {
       $result['dn'] = 'dn';
diff --git a/include/class_ldapMultiplexer.inc b/include/class_ldapMultiplexer.inc
index 5563720a8..03f1f0cda 100644
--- a/include/class_ldapMultiplexer.inc
+++ b/include/class_ldapMultiplexer.inc
@@ -60,11 +60,11 @@ class ldapMultiplexer {
   public function __call($methodName, $parameters)
   {
     /* Add resource pointer if the mentioned methods are used */
-    if (in_array($methodName, array('search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'))) {
+    if (in_array($methodName, ['search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'])) {
       array_unshift($parameters, $this->sr);
     }
 
-    return call_user_func_array(array($this->object, $methodName), $parameters);
+    return call_user_func_array([$this->object, $methodName], $parameters);
   }
 
   /*
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 2bd3d5178..4d1d6e890 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -32,7 +32,7 @@ class listing
 {
   var $xmlData;
   var $entries;
-  var $departments            = array();
+  var $departments            = [];
   var $departmentBrowser      = FALSE;
   var $departmentRootVisible  = FALSE;
   var $multiSelect            = FALSE;
@@ -45,24 +45,24 @@ class listing
   var $sortType;
   var $numColumns;
   var $baseMode = FALSE;
-  var $bases    = array();
-  var $header   = array();
-  var $colprops = array();
-  var $filters  = array();
+  var $bases    = [];
+  var $header   = [];
+  var $colprops = [];
+  var $filters  = [];
   var $filter   = NULL;
   var $pid;
-  protected $departmentTypes  = array();
-  var $objectTypes      = array();
-  var $objectTypeCount  = array();
-  protected $objectDnMapping  = array();
+  protected $departmentTypes  = [];
+  var $objectTypes      = [];
+  var $objectTypeCount  = [];
+  protected $objectDnMapping  = [];
   protected $copyPasteHandler = NULL;
   protected $snapshotHandler  = NULL;
-  var $exporter       = array();
-  var $exportColumns  = array();
+  var $exporter       = [];
+  var $exportColumns  = [];
   var $height         = 0;
   var $scrollPosition = 0;
   var $baseSelector;
-  protected $filterCache = array();
+  protected $filterCache = [];
 
   /*!
    * \brief Create a listing
@@ -110,7 +110,7 @@ class listing
     // Load exporters
     foreach (array_keys($class_mapping) as $class) {
       if (preg_match('/Exporter$/', $class)) {
-        $info = call_user_func(array($class, "getInfo"));
+        $info = call_user_func([$class, "getInfo"]);
         if ($info != NULL) {
           $this->exporter = array_merge($this->exporter, $info);
         }
@@ -207,7 +207,7 @@ class listing
       $this->xmlData = xml::xml2array($contents, 1);
     }
 
-    $this->filterCache = array();
+    $this->filterCache = [];
 
     if (!isset($this->xmlData['list'])) {
       return FALSE;
@@ -216,7 +216,7 @@ class listing
     $this->xmlData = $this->xmlData["list"];
 
     // Load some definition values
-    foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode") as $token) {
+    foreach (["departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode"] as $token) {
       if (isset($this->xmlData['definition'][$token]) &&
           $this->xmlData['definition'][$token] == "true") {
         $this->$token = TRUE;
@@ -227,19 +227,19 @@ class listing
     $types = departmentManagement::getDepartmentTypes();
     foreach ($types as $type) {
       $i = objects::infos($type);
-      $this->departmentTypes[strtoupper($type)] = array(
+      $this->departmentTypes[strtoupper($type)] = [
         'label'       => $i['name'],
         'image'       => $i['icon'],
         'category'    => $i['aclCategory'],
         'class'       => $i['mainTab'],
         'filter'      => objects::getFilterObject($type),
         'nameAttr'    => $i['nameAttr'],
-      );
+      ];
     }
-    $this->categories = array();
+    $this->categories = [];
     if (isset($this->xmlData['definition']['objectType'])) {
       if (isset($this->xmlData['definition']['objectType']['label'])) {
-        $this->xmlData['definition']['objectType'] = array($this->xmlData['definition']['objectType']);
+        $this->xmlData['definition']['objectType'] = [$this->xmlData['definition']['objectType']];
       }
       foreach ($this->xmlData['definition']['objectType'] as $index => $otype) {
         $this->objectTypes[$otype['objectClass']] = $otype;
@@ -259,7 +259,7 @@ class listing
     // Assign headline/Categories
     $this->headline = _($this->xmlData['definition']['label']);
     if (!is_array($this->categories)) {
-      $this->categories = array($this->categories);
+      $this->categories = [$this->categories];
     }
 
     // Evaluate columns to be exported
@@ -272,7 +272,7 @@ class listing
     }
 
     if (isset($this->xmlData['actiontriggers']['action']['type'])) {
-      $this->xmlData['actiontriggers']['action'] = array($this->xmlData['actiontriggers']['action']);
+      $this->xmlData['actiontriggers']['action'] = [$this->xmlData['actiontriggers']['action']];
     }
 
     return TRUE;
@@ -281,8 +281,8 @@ class listing
 
   function renderHeader()
   {
-    $this->header = array();
-    $this->plainHeader = array();
+    $this->header = [];
+    $this->plainHeader = [];
 
     // Initialize sort?
     $sortInit = FALSE;
@@ -293,7 +293,7 @@ class listing
       } else {
         $this->sortAttribute = "";
       }
-      $this->sortDirection = array();
+      $this->sortDirection = [];
       $sortInit = TRUE;
     }
 
@@ -540,8 +540,8 @@ class listing
     }
 
     // Reset object counter / DN mapping
-    $this->objectTypeCount = array();
-    $this->objectDnMapping = array();
+    $this->objectTypeCount = [];
+    $this->objectDnMapping = [];
 
     // Do not do anything if this is not our PID
     if ($refresh || !(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) {
@@ -566,12 +566,12 @@ class listing
           $exporter = $this->exporter[$_POST['act']];
           $userinfo = ", "._("created by")." ".$ui->cn." - ".strftime('%A, %d. %B %Y, %H:%M:%S');
           $entryIterator = new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType);
-          $sortedEntries = array();
+          $sortedEntries = [];
           foreach ($entryIterator as $entry) {
             $sortedEntries[] = $entry;
           }
           $instance = new $exporter['class']($this->headline.$userinfo, $this->plainHeader, $sortedEntries, $this->exportColumns);
-          $type = call_user_func(array($exporter['class'], "getInfo"));
+          $type = call_user_func([$exporter['class'], "getInfo"]);
           $type = $type[$_POST['act']];
           send_binary_content($instance->query(), $type['filename'], $type = $type['mime']);
         }
@@ -628,10 +628,10 @@ class listing
 
     // Fix filter if querie returns NULL
     if ($this->entries == NULL) {
-      $this->entries = array();
+      $this->entries = [];
     }
 
-    $this->dnToRow = array();
+    $this->dnToRow = [];
     foreach ($this->entries as $row => $entry) {
       $this->dnToRow[$entry['dn']] = $row;
     }
@@ -682,7 +682,7 @@ class listing
    */
   function parseLayout($layout)
   {
-    $result = array();
+    $result = [];
     $layout = preg_replace("/^\|/", "", $layout);
     $layout = preg_replace("/\|$/", "", $layout);
     $cols   = explode("|", $layout);
@@ -778,7 +778,7 @@ class listing
     } else {
       preg_match_all('/%{filter:([^(]+)\((.*)\)}/', $data, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
 
-      $filters = array();
+      $filters = [];
       foreach ($matches as $match) {
         $cl     = '';
         $method = '';
@@ -794,7 +794,7 @@ class listing
         // Prepare params for function call
         preg_match_all('/"[^"]+"|[^,]+/', $match[2][0], $parts);
 
-        $filters[$match[0][0]] = array($cl, $method, $parts[0], $match[0][1]);
+        $filters[$match[0][0]] = [$cl, $method, $parts[0], $match[0][1]];
       }
 
       $this->filterCache[$type.$index] = $filters;
@@ -802,7 +802,7 @@ class listing
 
     foreach ($filters as $filterstring => $filter) {
       list ($cl, $method, $parts, $offset) = $filter;
-      $params = array();
+      $params = [];
       foreach ($parts as $param) {
         switch ($param) {
           case 'row':
@@ -844,10 +844,10 @@ class listing
       // Replace information
       if ($cl == 'listing') {
         // Non static call
-        $data = substr_replace($data, call_user_func_array(array($this, $method), $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array([$this, $method], $params), $offset, strlen($filterstring));
       } else {
         // Static call
-        $data = substr_replace($data, call_user_func_array(array($cl, $method), $params), $offset, strlen($filterstring));
+        $data = substr_replace($data, call_user_func_array([$cl, $method], $params), $offset, strlen($filterstring));
       }
     }
 
@@ -897,7 +897,7 @@ class listing
       }
       $ocs = $objectType['objectClass'];
       if (!is_array($ocs)) {
-        $ocs = array($ocs);
+        $ocs = [$ocs];
       }
 
       $found = TRUE;
@@ -1114,7 +1114,7 @@ class listing
     $row    = func_get_arg(0);
     $pid    = $this->pid;
     $dn     = func_get_arg(1);
-    $params = array(func_get_arg(2));
+    $params = [func_get_arg(2)];
 
     // Collect sprintf params
     for ($i = 3;$i < func_num_args();$i++) {
@@ -1123,7 +1123,7 @@ class listing
         continue;
       }
       if (!is_array($val)) {
-        $val = array($val);
+        $val = [$val];
       }
       $val = array_map(
         function ($v)
@@ -1149,7 +1149,7 @@ class listing
 
   function renderNavigation()
   {
-    $result = array();
+    $result = [];
     $enableBack = TRUE;
     $enableRoot = TRUE;
     $enableHome = TRUE;
@@ -1217,7 +1217,7 @@ class listing
       $this->scrollPosition = $_POST['position_'.$this->pid];
     }
 
-    $result = array("targets" => array(), "action" => "");
+    $result = ["targets" => [], "action" => ""];
 
     // Filter GET with "act" attributes
     if (isset($_GET['act'])) {
@@ -1293,7 +1293,7 @@ class listing
         $target = preg_replace('/^listing_[a-zA-Z_]+_([0-9]+)(|_x)$/', '$1', $key);
         if (isset($this->entries[$target]['dn'])) {
           $result['action']   = preg_replace('/^listing_([a-zA-Z_]+)_[0-9]+(|_x)$/', '$1', $key);
-          $result['targets']  = array($this->entries[$target]['dn']);
+          $result['targets']  = [$this->entries[$target]['dn']];
         }
         break;
       }
@@ -1333,7 +1333,7 @@ class listing
 
     // Make sure we got an array of actions
     if (isset($this->xmlData['actionmenu']['action']['type'])) {
-      $this->xmlData['actionmenu']['action'] = array($this->xmlData['actionmenu']['action']);
+      $this->xmlData['actionmenu']['action'] = [$this->xmlData['actionmenu']['action']];
     }
 
     // Load shortcut
@@ -1374,7 +1374,7 @@ class listing
 
       // Skip entry if there're missing dependencies
       if (isset($action['depends'])) {
-        $deps = is_array($action['depends']) ? $action['depends'] : array($action['depends']);
+        $deps = is_array($action['depends']) ? $action['depends'] : [$action['depends']];
         foreach ($deps as $clazz) {
           if (!isset($class_mapping[$clazz])) {
             continue 2;
@@ -1400,7 +1400,7 @@ class listing
 
         // Ensure we've an array of actions, this enables sub menus with only one action.
         if (isset($action['action']['type'])) {
-          $action['action'] = array($action['action']);
+          $action['action'] = [$action['action']];
         }
 
         $result .= $this->recurseActions($action['action'])."</li>";
@@ -1469,14 +1469,14 @@ class listing
         }
         $acls = $action['acl'];
         if (!is_array($acls)) {
-          $acls = array($acls);
+          $acls = [$acls];
         }
-        $aclInfos = array();
+        $aclInfos = [];
 
         // Every ACL has to pass
         foreach ($acls as $acl) {
           $module   = $this->categories;
-          $aclList  = array();
+          $aclList  = [];
 
           // Replace %acl if available
           if ($otype) {
@@ -1486,12 +1486,12 @@ class listing
           // Split for category and plugins if needed
           if (preg_match('/^\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "[rw]" style entries
-            $aclList = array($match[1]);
+            $aclList = [$match[1]];
           } elseif (preg_match('/^([a-zA-Z0-9]+\/?[a-zA-Z0-9]+)\[([rwcdm]+)\]$/', $acl, $match)) {
             // match for "user[rw]" style entries
             // match for "user/user[rw]" style entries
             $module   = $match[1];
-            $aclList  = array($match[2]);
+            $aclList  = [$match[2]];
           } elseif (preg_match('/^([a-zA-Z0-9]+\/[a-zA-Z0-9]+)\[([a-zA-Z0-9]+:[rwcdm]+(,[a-zA-Z0-9]+:[rwcdm]+)*)\]$/', $acl, $match)) {
             // match "user/user[userPassword:rw(,...)*]" style entries
             $module   = $match[1];
@@ -1500,10 +1500,10 @@ class listing
 
           $modules = $module;
           if (!is_array($modules)) {
-            $modules = array($modules);
+            $modules = [$modules];
           }
 
-          $aclInfos[] = array($aclList, $modules);
+          $aclInfos[] = [$aclList, $modules];
         }
         $action['aclInfos'] = $aclInfos;
       }
@@ -1552,7 +1552,7 @@ class listing
     $ui = get_userinfo();
 
     // Fill internal bases list
-    $this->bases = array();
+    $this->bases = [];
     $deps = $ui->get_module_departments($this->categories);
     foreach ($config->idepartments as $key => $dep) {
       if (in_array_ics($key, $deps)) {
@@ -1575,7 +1575,7 @@ class listing
   /*! \brief Get the departments */
   function getDepartments()
   {
-    $departments = array();
+    $departments = [];
     $ui = get_userinfo();
 
     // Get list of supported department types
@@ -1589,12 +1589,12 @@ class listing
       $i    = objects::infos($type);
       $deps = objects::ls(
         $type,
-        array(
+        [
           'dn'            => 'raw',
           'objectClass'   => 'raw',
           'description'   => 'raw',
           $i['mainAttr']  => 'raw'
-        ),
+        ],
         $this->base,
         '',
         FALSE,
diff --git a/include/class_logging.inc b/include/class_logging.inc
index fb9ebb402..dbb91c114 100644
--- a/include/class_logging.inc
+++ b/include/class_logging.inc
@@ -34,7 +34,7 @@
  * \date    11.04.2007
  */
 class logging {
-  static $validActions = array('modify','create','remove','copy','snapshot','view','security','debug');
+  static $validActions = ['modify','create','remove','copy','snapshot','view','security','debug'];
 
   /*!
    * \brief logging method
@@ -49,7 +49,7 @@ class logging {
    *
    * \param $result         A status message, containing errors or success messages
    */
-  static function log ($action, $objecttype, $object, array $changes_array = array(), $result = '')
+  static function log ($action, $objecttype, $object, array $changes_array = [], $result = '')
   {
     global $config, $ui;
 
@@ -59,14 +59,14 @@ class logging {
     }
 
     /* Create data object */
-    $entry = array(
+    $entry = [
       'timestamp'   => microtime(TRUE),
       'action'      => $action,
       'objecttype'  => $objecttype,
       'object'      => $object,
       'changes'     => $changes_array,
       'result'      => $result
-    );
+    ];
     if (isset($ui->dn) && !empty($ui->dn)) {
       $entry['user']  = $ui->dn;
     } else {
@@ -83,7 +83,7 @@ class logging {
     } else {
       if (is_object($config) && preg_match('/true/i', $config->get_cfg_value('logging', ''))) {
         static::log_into_syslog($entry);
-        if (in_array($action, $config->get_cfg_value('auditActions', array()))) {
+        if (in_array($action, $config->get_cfg_value('auditActions', []))) {
           static::log_into_ldap($entry);
         }
       }
@@ -95,9 +95,9 @@ class logging {
    *
    * \param Array $entry to be checked
    */
-  static protected function check($entry = array())
+  static protected function check($entry = [])
   {
-    $msgs = array();
+    $msgs = [];
 
     if (!isset($entry['action']) || !in_array($entry['action'], static::$validActions)) {
       $msgs[] = sprintf(_('Invalid option "%s" specified!'), $entry['action']);
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index 5cd99f74a..a4284e99d 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -598,7 +598,7 @@ class msgPool {
    *
    * \param array $conflicts Tabs this tab conflicts with
    */
-  public static function featuresDisabled($name, array $depends = array(), array $conflicts = array())
+  public static function featuresDisabled($name, array $depends = [], array $conflicts = [])
   {
     if (empty($depends) && empty($conflicts)) {
       return sprintf(_('This account has %s settings disabled. You can enable them by clicking below.'), $name);
@@ -643,9 +643,9 @@ class msgPool {
    */
   public static function months()
   {
-    return array(_("January"), _("February"), _("March"), _("April"),
+    return [_("January"), _("February"), _("March"), _("April"),
         _("May"), _("June"), _("July"), _("August"), _("September"),
-        _("October"), _("November"), _("December"));
+        _("October"), _("November"), _("December")];
   }
 
   /*!
@@ -654,7 +654,7 @@ class msgPool {
    */
   public static function weekdays()
   {
-    return array( _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"));
+    return [ _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")];
   }
 
   /*!
@@ -671,8 +671,8 @@ class msgPool {
   public static function ldaperror($error, $dn = '', $type = 0, $plugin = '')
   {
     /* Assign headline depending on type */
-    $typemap = array(1 => _('read operation'), _('add operation'), _('modify operation'),
-        _('delete operation'), _('search operation'), _('authentication'));
+    $typemap = [1 => _('read operation'), _('add operation'), _('modify operation'),
+        _('delete operation'), _('search operation'), _('authentication')];
 
     if (isset($typemap[$type])) {
       $msg = sprintf(_('LDAP %s failed!'), $typemap[$type]);
@@ -724,7 +724,7 @@ class msgPool {
    *
    * \param array $objects
    */
-  public static function stillInUse($type, $objects = array())
+  public static function stillInUse($type, $objects = [])
   {
     if (!is_array($objects)) {
       return sprintf(_("This '%s' is still in use by this object: %s"), $type, "<br><br>".$objects);
diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index 800a3c28a..dcae37de2 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -41,7 +41,7 @@ class msg_dialog
   private $s_Message  = 'Undefined';
   private $i_Type     = INFO_DIALOG;
   private $i_ID       = 0;
-  private $a_Trace    = array();
+  private $a_Trace    = [];
 
   /*!
    * \brief Message dialog constructor
@@ -54,7 +54,7 @@ class msg_dialog
    */
   public function __construct($s_title, $s_message, $i_type)
   {
-    if (!in_array($i_type, array(INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG))) {
+    if (!in_array($i_type, [INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG])) {
       trigger_error('Invalid msg_dialog type.');
       $i_type = INFO_DIALOG;
     }
@@ -74,7 +74,7 @@ class msg_dialog
     }
 
     if ((!session::is_set('errorsAlreadyPosted')) || !is_array(session::get('errorsAlreadyPosted'))) {
-      session::set('errorsAlreadyPosted', array());
+      session::set('errorsAlreadyPosted', []);
     }
 
     $errorsAlreadyPosted = session::get('errorsAlreadyPosted');
@@ -103,7 +103,7 @@ class msg_dialog
       if (session::is_set('msg_dialogs')) {
         $msg_dialogs = session::get('msg_dialogs');
       } else {
-        $msg_dialogs = array();
+        $msg_dialogs = [];
       }
       $msg_dialogs[] = $this;
       session::set('msg_dialogs', $msg_dialogs);
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 4f6716d26..2c795c046 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -51,7 +51,7 @@ class objects
     }
 
     if (!is_array($types)) {
-      $types = array($types);
+      $types = [$types];
     }
 
     if ($checkAcl) {
@@ -62,9 +62,9 @@ class objects
       $acl = $infos['aclCategory'].'/'.$infos['mainTab'];
     }
 
-    $attrsAcls = array();
+    $attrsAcls = [];
     if ($attrs === NULL) {
-      $attrs = array();
+      $attrs = [];
       foreach ($types as $type) {
         $infos = static::infos($type);
         if ($infos['mainAttr']) {
@@ -75,13 +75,13 @@ class objects
       if (count($attrs) == 1) {
         $attrs = $attrs[0];
       } elseif (count($attrs) == 0) {
-        $attrs = array('dn' => 'raw');
+        $attrs = ['dn' => 'raw'];
       }
     } elseif ($checkAcl) {
       if (is_array($attrs)) {
         $search_attrs = array_keys($attrs);
       } else {
-        $search_attrs = array($attrs);
+        $search_attrs = [$attrs];
       }
       foreach ($search_attrs as $search_attr) {
         $category = $ui->getAttributeCategory($types[0], $search_attr);
@@ -92,7 +92,7 @@ class objects
           continue;
         }
         if (strpos($ui->get_permissions($ou, $category, $search_attr), 'r') === FALSE) {
-          $attrsAcls[$search_attr] = array($category, $search_attr);
+          $attrsAcls[$search_attr] = [$category, $search_attr];
         }
       }
     }
@@ -100,15 +100,15 @@ class objects
     if (is_array($attrs)) {
       $search_attrs = array_keys($attrs);
     } else {
-      $search_attrs = array($attrs);
+      $search_attrs = [$attrs];
     }
 
     try {
       $ldap = static::search($types, $search_attrs, $ou, $filter, $checkAcl, $scope, FALSE, $partialFilterAcls);
     } catch (NonExistingBranchException $e) {
-      return array();
+      return [];
     }
-    $result = array();
+    $result = [];
     while ($fetched_attrs = $ldap->fetch()) {
       $key = $fetched_attrs['dn'];
       if ($checkAcl) {
@@ -122,7 +122,7 @@ class objects
         }
       }
       if (is_array($attrs)) {
-        $result[$key] = array();
+        $result[$key] = [];
         foreach ($attrs as $attr => $mode) {
           if (isset($fetched_attrs[$attr])) {
             if (isset($attrsAcls[$attr]) &&
@@ -168,7 +168,7 @@ class objects
   static function count ($types, $ou = NULL, $filter = '', $checkAcl = FALSE)
   {
     try {
-      $ldap = static::search($types, array('dn'), $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
+      $ldap = static::search($types, ['dn'], $ou, $filter, $checkAcl, 'subtree', FALSE, $partialFilterAcls);
       if (!empty($partialFilterAcls)) {
         throw new FusionDirectoryException('Not enough rights to use "'.$partialFilterAcls[0][1].'" in filter');
       }
@@ -180,21 +180,21 @@ class objects
     return $ldap->count();
   }
 
-  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = array())
+  private static function search ($types, $search_attrs, $ou = NULL, $filter = '', $checkAcl = FALSE, $scope = 'subtree', $templateSearch = FALSE, &$partialFilterAcls = [])
   {
     global $config, $ui;
 
-    $partialFilterAcls = array();
+    $partialFilterAcls = [];
 
     if (!is_array($types)) {
-      $types = array($types);
+      $types = [$types];
     }
 
     if ($ou === NULL) {
       $ou = $config->current['BASE'];
     }
 
-    $typeFilters = array();
+    $typeFilters = [];
     foreach ($types as $type) {
       $infos = static::infos($type);
 
@@ -236,7 +236,7 @@ class objects
             continue;
           }
           if (strpos($ui->get_permissions($ou, $category, $acl), 'r') === FALSE) {
-            $partialFilterAcls[] = array($category, $acl);
+            $partialFilterAcls[] = [$category, $acl];
           }
         }
       }
@@ -248,10 +248,10 @@ class objects
     if ($templateSearch) {
       $templateFilterObject = new ldapFilter(
         '&',
-        array(
+        [
           new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
           fdTemplateFilter(ldapFilter::parse($filter)),
-        )
+        ]
       );
       $filter = "$templateFilterObject";
     }
@@ -301,7 +301,7 @@ class objects
 
     if ($text === NULL) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($dn, array($infos['nameAttr']));
+      $ldap->cat($dn, [$infos['nameAttr']]);
       if ($attrs = $ldap->fetch()) {
         if (isset($attrs[$infos['nameAttr']][0])) {
           $text = $attrs[$infos['nameAttr']][0];
@@ -343,7 +343,7 @@ class objects
       } else {
         $parts = ldap_explode_dn(preg_replace('/,$/', '', $infos['ou']), 0);
         unset($parts['count']);
-        $dnFilter = array();
+        $dnFilter = [];
         foreach ($parts as $part) {
           preg_match('/([^=]+)=(.*)$/', $part, $m);
           $dnFilter[] = '('.$m[1].':dn:='.$m[2].')';
@@ -396,11 +396,11 @@ class objects
 
     $infos = static::infos($type);
 
-    $templates = array();
+    $templates = [];
     foreach ($config->departments as $key => $value) {
       // Search all templates from the current dn.
       try {
-        $ldap = static::search($type, array('cn'), $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
+        $ldap = static::search($type, ['cn'], $infos['ou'].$value, $filter, FALSE, 'subtree', TRUE);
       } catch (NonExistingBranchException $e) {
         continue;
       }
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index efadea480..499dde5aa 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -40,23 +40,23 @@ class pluglist {
    * \brief The plInfo result for all plugin, using class as key.
    * Contains the plugin index in 'INDEX' and the path in 'PATH'
    */
-  var $info             = array();
+  var $info             = [];
 
   /*!
    * \brief Foreign references on DNs
    */
-  var $dnForeignRefs = array();
+  var $dnForeignRefs = [];
 
   /*!
    * \brief Using the plugin index as a key, the class of the plugin.
    */
-  var $dirlist          = array();
+  var $dirlist          = [];
 
   /*!
    * \brief List plugin indexes of all plugin that the user have acl for
    */
-  var $allowed_plugins  = array();
-  var $silly_cache      = array();
+  var $allowed_plugins  = [];
+  var $silly_cache      = [];
 
   /*!
    * \brief List the plugins
@@ -71,13 +71,13 @@ class pluglist {
     sort($classes);
 
     $index = 0;
-    $depends_infos    = array();
-    $conflicts_infos  = array();
-    $foreign_refs     = array();
+    $depends_infos    = [];
+    $conflicts_infos  = [];
+    $foreign_refs     = [];
     foreach ($classes as $cname) {
       $cmethods = get_class_methods($cname);
       if (in_array_ics('plInfo', $cmethods)) {
-        $infos = call_user_func(array($cname, 'plInfo'));
+        $infos = call_user_func([$cname, 'plInfo']);
         if (empty($infos)) {
           continue;
         }
@@ -85,7 +85,7 @@ class pluglist {
           $infos['plSelfModify']  = FALSE;
           /* services are not part of any objectType */
           unset($infos['plObjectType']);
-          $infos['plCategory']    = array('server');
+          $infos['plCategory']    = ['server'];
         } else {
           if (!isset($infos['plSelfModify'])) {
             $infos['plSelfModify'] = FALSE;
@@ -103,10 +103,10 @@ class pluglist {
         if (isset($infos['plForeignKeys'])) {
           foreach ($infos['plForeignKeys'] as $ofield => &$pfks) {
             if (!is_array($pfks)) {
-              $pfks = array($pfks);
+              $pfks = [$pfks];
             }
             if (!is_array($pfks[0])) {
-              $pfks = array($pfks);
+              $pfks = [$pfks];
             }
             foreach ($pfks as &$pfk) {
               $class = $pfk[0];
@@ -125,32 +125,32 @@ class pluglist {
               }
               $pfk[2] = $filter;
               if (!isset($foreign_refs[$class])) {
-                $foreign_refs[$class] = array();
+                $foreign_refs[$class] = [];
               }
               if (!isset($foreign_refs[$class][$field])) {
-                $foreign_refs[$class][$field] = array();
+                $foreign_refs[$class][$field] = [];
               }
-              $foreign_refs[$class][$field][] = array($cname, $ofield, $filter);
+              $foreign_refs[$class][$field][] = [$cname, $ofield, $filter];
               if ($field == 'dn') {
-                $this->dnForeignRefs[] = array($cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%"));
+                $this->dnForeignRefs[] = [$cname, $ofield, $filter, (isset($pfk[3]) ? $pfk[3] : "$ofield=*%oldvalue%")];
               }
             }
             unset($pfk);
           }
           unset($pfks);
         } else {
-          $infos['plForeignKeys'] = array();
+          $infos['plForeignKeys'] = [];
         }
         if (!isset($infos['plProvidedAcls'])) {
-          $infos['plProvidedAcls'] = array();
+          $infos['plProvidedAcls'] = [];
         }
         if (!isset($infos['plCategory'])) {
-          $infos['plCategory'] = array();
+          $infos['plCategory'] = [];
         }
         if (!isset($infos['plTitle']) && isset($infos['plShortName'])) {
           $infos['plTitle'] = $infos['plShortName'];
         }
-        $infos['plForeignRefs']         = array();
+        $infos['plForeignRefs']         = [];
         $infos['INDEX']                 = $index;
         $this->info[$cname]             = $infos;
         $this->dirlist[$index++]        = $cname;
@@ -163,7 +163,7 @@ class pluglist {
           if (isset($this->info[$depend]['plDepending'])) {
             $this->info[$depend]['plDepending'][] = $cname;
           } else {
-            $this->info[$depend]['plDepending'] = array($cname);
+            $this->info[$depend]['plDepending'] = [$cname];
           }
         } else {
           trigger_error("$cname depends of the inexisting plugin $depend");
@@ -178,7 +178,7 @@ class pluglist {
               $this->info[$conflict]['plConflicts'][] = $cname;
             }
           } else {
-            $this->info[$conflict]['plConflicts'] = array($cname);
+            $this->info[$conflict]['plConflicts'] = [$cname];
           }
         }
       }
@@ -190,9 +190,9 @@ class pluglist {
     }
 
     /* Provide field for 'all' */
-    $this->info['all'] = array();
+    $this->info['all'] = [];
 
-    $this->info['all']['plProvidedAcls']  = array();
+    $this->info['all']['plProvidedAcls']  = [];
     $this->info['all']['plDescription']   = _("All objects in this category");
     $this->info['all']['plSelfModify']    = FALSE;
 
@@ -248,11 +248,11 @@ class pluglist {
     /* Split given acl string into an array.
       e.g. "user,systems" => array("user","systems");
          */
-    $acls_to_check = array();
+    $acls_to_check = [];
     if (preg_match("/,/", $aclname)) {
       $acls_to_check = explode(",", $aclname);
     } else {
-      $acls_to_check = array($aclname);
+      $acls_to_check = [$aclname];
     }
 
     foreach ($acls_to_check as $acl_to_check) {
@@ -309,7 +309,7 @@ class pluglist {
         $plDescription = $this->info[$cname]['plDescription'];
       }
       if ($plHeadline && $plIcon && $plDescription) {
-        return array($plHeadline,$plDescription,$href,$plIcon);
+        return [$plHeadline,$plDescription,$href,$plIcon];
       }
     }
     $vars = get_class_vars($cname);
@@ -329,7 +329,7 @@ class pluglist {
     if (!$plIcon) {
       $plIcon = "icon.png";
     }
-    return array($plHeadline,$plDescription,$href,$plIcon);
+    return [$plHeadline,$plDescription,$href,$plIcon];
   }
 
   /*!
diff --git a/include/class_template.inc b/include/class_template.inc
index 3dab9c506..62ca74cbe 100644
--- a/include/class_template.inc
+++ b/include/class_template.inc
@@ -35,25 +35,25 @@ class template
 
   protected $applied = FALSE;
 
-  static protected $uiSpecialAttributes = array('dn','cn','uid','sn','givenName');
+  static protected $uiSpecialAttributes = ['dn','cn','uid','sn','givenName'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Template'),
       'plDescription' => _('Object template, used to create several objects with similar values'),
       /* Categories for templates are computed in config class */
-      'plCategory'    => array(),
+      'plCategory'    => [],
 
-      'plProvidedAcls' => array(
+      'plProvidedAcls' => [
         'template_cn' => _('Template name')
-      )
-    );
+      ]
+    ];
   }
 
   static function getTemplatedTypes()
   {
-    $result = array();
+    $result = [];
     $types  = objects::types();
     foreach ($types as $type) {
       if (in_array($type, departmentManagement::getDepartmentTypes())) {
@@ -82,11 +82,11 @@ class template
       $this->tabObject  = objects::open($this->dn, $this->type);
     }
     $tempTabObject    = objects::open($this->dn, $this->type); /* Used to know which tab is activated */
-    $this->attributes = array();
+    $this->attributes = [];
     $tempTabObject->setActiveTabs($this->tabObject);
     foreach ($this->tabObject->by_object as $class => $tab) {
       if ($tab->is_account || $tab->ignore_account) {
-        $this->attributes[$class] = array();
+        $this->attributes[$class] = [];
         $attrs = array_unique(array_merge($tab->getRequiredAttributes(), $this->needed));
         foreach (array_keys($tab->attributesAccess) as $attr) {
           if (!$tab->showInTemplate($attr, $this->attrs)) {
@@ -140,12 +140,12 @@ class template
 
   function serialize()
   {
-    $attributes = array();
+    $attributes = [];
     foreach ($this->tabObject->by_object as $class => $plugin) {
       if (!isset($this->attributes[$class])) {
         continue;
       }
-      $attributes[$class] = array('name' => $this->tabObject->by_name[$class], 'attrs' => array());
+      $attributes[$class] = ['name' => $this->tabObject->by_name[$class], 'attrs' => []];
       foreach ($this->attributes[$class] as $attr) {
         $plugin->attributesAccess[$attr]->serializeAttribute($attributes[$class]['attrs'], FALSE);
       }
@@ -181,8 +181,8 @@ class template
   function execute()
   {
     $smarty   = get_smarty();
-    $sections = array();
-    $posted   = array();
+    $sections = [];
+    $posted   = [];
     $smarty->assign('baseACL', 'rw');
     foreach ($this->tabObject->by_object as $class => &$plugin) {
       if (!isset($this->attributes[$class])) {
@@ -197,7 +197,7 @@ class template
           return $dialogResult;
         }
       }
-      $attributes = array();
+      $attributes = [];
       foreach ($this->attributes[$class] as $attr) {
         if ($plugin->attributesAccess[$attr]->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -262,7 +262,7 @@ class template
     unset($plugin);
     foreach ($this->attrs as &$array) {
       if (!is_array($array)) {
-        $array = array($array);
+        $array = [$array];
       }
       if (!isset($array['count'])) {
         $array['count'] = count($array);
@@ -271,7 +271,7 @@ class template
     unset($array);
 
     $ui           = get_userinfo();
-    $specialAttrs = array();
+    $specialAttrs = [];
     foreach (static::$uiSpecialAttributes as $attr) {
       $specialAttrs['caller'.strtoupper($attr)] = $ui->$attr;
     }
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 2b56786c2..ae4059eea 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -39,7 +39,7 @@ class templateHandling
     list($depends, $errors) = static::attributesDependencies($attrs);
     msg_dialog::displayChecks($errors);
     $attrs    = static::sortAttributes($attrs, $depends);
-    return array($attrs, $depends);
+    return [$attrs, $depends];
   }
 
   /*! \brief Translate template attrs into $attrs as if taken from LDAP */
@@ -47,14 +47,14 @@ class templateHandling
   {
     unset($template_attrs['fdTemplateField']['count']);
     sort($template_attrs['fdTemplateField']);
-    $attrs = array();
+    $attrs = [];
     foreach ($template_attrs['fdTemplateField'] as $field) {
       preg_match('/^([^:]+):(.*)$/s', $field, $m);
       if (isset($attrs[$m[1]])) {
         $attrs[$m[1]][] = $m[2];
         $attrs[$m[1]]['count']++;
       } else {
-        $attrs[$m[1]]           = array($m[2]);
+        $attrs[$m[1]]           = [$m[2]];
         $attrs[$m[1]]['count']  = 1;
       }
     }
@@ -119,16 +119,16 @@ class templateHandling
   public static function parseMask($mask, array $attrs)
   {
     if ($mask == '|') {
-      return array('%');
+      return ['%'];
     }
     $modifiers = '';
     if (preg_match('/^([^|]+)\|/', $mask, $m)) {
       $modifiers = $m[1];
       $mask = substr($mask, strlen($m[0]));
     }
-    $result = array('');
+    $result = [''];
     if (isset($attrs[$mask])) {
-      $result = array($attrs[$mask]);
+      $result = [$attrs[$mask]];
       if (is_array($result[0])) {
         unset($result[0]['count']);
       }
@@ -137,14 +137,14 @@ class templateHandling
     }
     $len    = strlen($modifiers);
     for ($i = 0; $i < $len; ++$i) {
-      $args     = array();
+      $args     = [];
       $modifier = $modifiers[$i];
       if (preg_match('/^\[([^\]]+)\].*$/', substr($modifiers, $i + 1), $m)) {
         /* get modifier args */
         $args = explode(',', $m[1]);
         $i += strlen($m[1]) + 2;
       }
-      $result_tmp = array();
+      $result_tmp = [];
       foreach ($result as $r) {
         $result_tmp = array_merge($result_tmp, static::applyModifier($modifier, $args, $r));
       }
@@ -166,7 +166,7 @@ class templateHandling
    */
   public static function neededAttrs(array &$attrs, array $flatdepends)
   {
-    $needed = array();
+    $needed = [];
     foreach ($flatdepends as $attr => $depends) {
       if ((isset($depends[0])) && ($depends[0] == 'askme')) {
         $needed[] = $attr;
@@ -233,7 +233,7 @@ class templateHandling
    */
   public static function listFields($string)
   {
-    $fields = array();
+    $fields = [];
     $offset = 0;
     while (preg_match('/%([^%]+)%/', $string, $m, PREG_OFFSET_CAPTURE, $offset)) {
       $mask   = $m[1][0];
@@ -257,15 +257,15 @@ class templateHandling
     // handle ligatures
     $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
     // delete unhandled characters
-    return array(preg_replace('#&[^;]+;#', '', $str));
+    return [preg_replace('#&[^;]+;#', '', $str)];
   }
 
   private static function modifierTranslit(array $args, $str)
   {
     $localesaved = setlocale(LC_CTYPE, 0);
-    $ret = array();
+    $ret = [];
     foreach ($args as $arg) {
-      setlocale(LC_CTYPE, array($arg,"$arg.UTF8"));
+      setlocale(LC_CTYPE, [$arg,"$arg.UTF8"]);
       $ret[] = iconv('UTF8', 'ASCII//TRANSLIT', $str);
     }
     setlocale(LC_CTYPE, $localesaved);
@@ -283,7 +283,7 @@ class templateHandling
       }
     }
 
-    return array(preg_replace($pattern.'u', $replace, $str));
+    return [preg_replace($pattern.'u', $replace, $str)];
   }
 
   private static function modifierSubString(array $args, $str)
@@ -295,13 +295,13 @@ class templateHandling
       array_unshift($args, 0);
     }
     if (preg_match('/^(\d+)-(\d+)$/', $args[1], $m)) {
-      $res = array();
+      $res = [];
       for ($i = $m[1];$i < $m[2]; ++$i) {
         $res[] = mb_substr($str, $args[0], $i);
       }
       return array_unique($res);
     } else {
-      return array(mb_substr($str, $args[0], $args[1]));
+      return [mb_substr($str, $args[0], $args[1])];
     }
   }
 
@@ -366,9 +366,9 @@ class templateHandling
     $dateObject = new DateTime($args[0], new DateTimeZone('UTC'));
     if ($args[1] == 'epoch') {
       /* Special handling for shadowExpire: days since epoch */
-      return array(floor($dateObject->format('U') / 86400));
+      return [floor($dateObject->format('U') / 86400)];
     }
-    return array($dateObject->format($args[1]));
+    return [$dateObject->format($args[1])];
   }
 
   /*! \brief Apply a modifier
@@ -387,27 +387,27 @@ class templateHandling
       /* $str is an array and $m is lowercase, so it's a string modifier */
       $str = reset($str);
     }
-    $result = array($str);
+    $result = [$str];
     switch ($m) {
       case 'F':
         // First
-        $result = array(reset($str));
+        $result = [reset($str)];
         break;
       case 'L':
         // Last
-        $result = array(end($str));
+        $result = [end($str)];
         break;
       case 'J':
         // Join
         if (isset($args[0])) {
-          $result = array(join($args[0], $str));
+          $result = [join($args[0], $str)];
         } else {
-          $result = array(join($str));
+          $result = [join($str)];
         }
         break;
       case 'C':
         // Count
-        $result = array(count($str));
+        $result = [count($str)];
         break;
       case 'M':
         // Match
@@ -415,40 +415,40 @@ class templateHandling
           trigger_error('Missing "M" match modifier parameter');
           $args[] = '/.*/';
         }
-        $result = array(array_filter(
+        $result = [array_filter(
           $str,
           function ($s) use ($args)
           {
             return preg_match($args[0], $s);
           }
-        ));
+        )];
         break;
       case '4':
         // IPv4
-        $result = array(array_filter($str, 'tests::is_ipv4'));
+        $result = [array_filter($str, 'tests::is_ipv4')];
         break;
       case '6':
         // IPv6
-        $result = array(array_filter($str, 'tests::is_ipv6'));
+        $result = [array_filter($str, 'tests::is_ipv6')];
         break;
       case 'c':
         // comment
-        $result = array('');
+        $result = [''];
         break;
       case 'b':
         // base64
         if (isset($args[0]) && ($args[0] == 'd')) {
-          $result = array(base64_decode($str));
+          $result = [base64_decode($str)];
         }
-        $result = array(base64_encode($str));
+        $result = [base64_encode($str)];
         break;
       case 'u':
         // uppercase
-        $result = array(mb_strtoupper($str, 'UTF-8'));
+        $result = [mb_strtoupper($str, 'UTF-8')];
         break;
       case 'l':
         // lowercase
-        $result = array(mb_strtolower($str, 'UTF-8'));
+        $result = [mb_strtolower($str, 'UTF-8')];
         break;
       case 'a':
         // remove accent
@@ -468,22 +468,22 @@ class templateHandling
         break;
       case 'r':
         // random string
-        $result = array(static::modifierRandomString($args));
+        $result = [static::modifierRandomString($args)];
         break;
       case 'd':
         // date
-        $result = array(static::modifierDate($args));
+        $result = [static::modifierDate($args)];
         break;
       default:
         trigger_error("Unkown modifier '$m'");
-        $result = array($str);
+        $result = [$str];
         break;
     }
     return $result;
   }
 
   /*! \brief Flattens dependencies (if a depends of b which depends of c then a depends of c) */
-  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = array())
+  protected static function flatDepends (&$cache, &$errors, $depends, $key, array $forbidden = [])
   {
     if (isset($cache[$key])) {
       return $cache[$key];
@@ -501,7 +501,7 @@ class templateHandling
               $key,
               $a
             );
-            return array();
+            return [];
           }
           $deps = static::flatDepends ($cache, $errors, $depends, $a, $forbidden);
           if (($askmeKey = array_search('askme', $deps)) !== FALSE) {
@@ -521,11 +521,11 @@ class templateHandling
   protected static function attributesDependencies(array $attrs)
   {
     /* Compute dependencies of each attr */
-    $depends = array();
+    $depends = [];
     foreach ($attrs as $key => $values) {
-      $depends[$key] = array();
+      $depends[$key] = [];
       if (!is_array($values))  {
-        $values = array($values);
+        $values = [$values];
       }
       unset ($values['count']);
       foreach ($values as $value) {
@@ -535,19 +535,19 @@ class templateHandling
           $depends[$key][] = $m[2][0];
           if (!isset($attrs[$m[2][0]])) {
             /* Dependency which has no value might be missing */
-            $attrs[$m[2][0]]    = array();
-            $depends[$m[2][0]]  = array();
+            $attrs[$m[2][0]]    = [];
+            $depends[$m[2][0]]  = [];
           }
         }
       }
     }
     /* Flattens dependencies */
-    $flatdepends  = array();
-    $errors       = array();
+    $flatdepends  = [];
+    $errors       = [];
     foreach ($depends as $key => $value) {
       static::flatDepends($flatdepends, $errors, $depends, $key);
     }
-    return array($flatdepends, $errors);
+    return [$flatdepends, $errors];
   }
 
   /*! \brief Sort attrs depending of dependencies */
diff --git a/include/class_tests.inc b/include/class_tests.inc
index 80d61e696..a74a0e8d8 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -179,7 +179,7 @@ class tests
   public static function is_ip_with_subnetmask($ip)
   {
     /* Generate list of valid submasks */
-    $res = array();
+    $res = [];
     for ($e = 0; $e <= 32; $e++) {
       $res[$e] = $e;
     }
@@ -291,7 +291,7 @@ class tests
   public static function is_department_name_reserved($name)
   {
     global $config;
-    $reservedNames = array();
+    $reservedNames = [];
     foreach ($config->data['OBJECTS'] as $infos) {
       if (isset($infos['ou'])) {
         if ($infos['ou'] != '') {
diff --git a/include/class_timezone.inc b/include/class_timezone.inc
index 315b1b5ca..2b8991aaf 100644
--- a/include/class_timezone.inc
+++ b/include/class_timezone.inc
@@ -77,9 +77,9 @@ class timezone
       $tz       = $config->get_cfg_value('timezone');
       $tz_delta = date('Z', $stamp);
       $tz_delta = $tz_delta / 3600;
-      return array('name' => $tz, 'value' => $tz_delta);
+      return ['name' => $tz, 'value' => $tz_delta];
     } else {
-      return array('name' => 'unconfigured', 'value' => 0);
+      return ['name' => 'unconfigured', 'value' => 0];
     }
   }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 430e8c000..55a0eac87 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -39,15 +39,15 @@ class userinfo
   var $givenName    = '';
   var $gidNumber    = -1;
   var $language     = "";
-  var $subtreeACL   = array();
-  var $ACL          = array();
-  var $groups       = array();
-  var $roles        = array();
-  var $result_cache = array();
+  var $subtreeACL   = [];
+  var $ACL          = [];
+  var $groups       = [];
+  var $roles        = [];
+  var $result_cache = [];
   var $ignoreACL    = FALSE;
 
-  var $ACLperPath             = array();
-  var $ACLperPath_usesFilter  = array();
+  var $ACLperPath             = [];
+  var $ACLperPath_usesFilter  = [];
 
   /*! \brief LDAP size limit handler */
   protected $sizeLimitHandler;
@@ -73,7 +73,7 @@ class userinfo
   {
     global $config;
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, array('cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage'));
+    $ldap->cat($this->dn, ['cn', 'sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage']);
     $attrs = $ldap->fetch();
 
     $this->uid = $attrs['uid'][0];
@@ -107,7 +107,7 @@ class userinfo
   public function reset_acl_cache()
   {
     /* Initialize ACL_CACHE */
-    session::set('ACL_CACHE', array());
+    session::set('ACL_CACHE', []);
   }
 
   /*!
@@ -116,42 +116,42 @@ class userinfo
   function loadACL()
   {
     global $config;
-    $this->ACL          = array();
-    $this->groups       = array();
-    $this->roles        = array();
-    $this->result_cache = array();
+    $this->ACL          = [];
+    $this->groups       = [];
+    $this->roles        = [];
+    $this->result_cache = [];
     $this->reset_acl_cache();
     $ldap = $config->get_ldap_link();
     $ldap->cd($config->current['BASE']);
 
     /* Get member groups... */
-    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', array('dn'));
+    $ldap->search('(&(objectClass=groupOfNames)(member='.ldap_escape_f($this->dn).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member POSIX groups... */
-    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', array('dn'));
+    $ldap->search('(&(objectClass=posixGroup)(memberUid='.ldap_escape_f($this->uid).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->groups[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Get member roles... */
-    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', array('dn'));
+    $ldap->search('(&(objectClass=organizationalRole)(roleOccupant='.ldap_escape_f($this->dn).'))', ['dn']);
     while ($attrs = $ldap->fetch()) {
       $this->roles[$attrs['dn']] = $attrs['dn'];
     }
 
     /* Crawl through ACLs and move relevant to the tree */
-    $ldap->search("(objectClass=gosaACL)", array('dn', 'gosaAclEntry'));
-    $aclp = array();
-    $aclc = array();
+    $ldap->search("(objectClass=gosaACL)", ['dn', 'gosaAclEntry']);
+    $aclp = [];
+    $aclc = [];
     while ($attrs = $ldap->fetch()) {
 
       /* Insert links in ACL array */
       $aclp[$attrs['dn']] = substr_count($attrs['dn'], ',');
-      $aclc[$attrs['dn']] = array();
-      $ol = array();
+      $aclc[$attrs['dn']] = [];
+      $ol = [];
       for ($i = 0; $i < $attrs['gosaAclEntry']['count']; $i++) {
         $ol = array_merge($ol, acl::explodeAcl($attrs['gosaAclEntry'][$i]));
       }
@@ -163,18 +163,18 @@ class userinfo
       foreach ($data as $prio => $aclc_value) {
         unset($aclc[$dn][$prio]);
 
-        $ldap->cat($aclc_value['acl'], array("gosaAclTemplate"));
+        $ldap->cat($aclc_value['acl'], ["gosaAclTemplate"]);
         $attrs = $ldap->fetch();
 
         if (isset($attrs['gosaAclTemplate'])) {
           $roleAcls = acl::explodeRole($attrs['gosaAclTemplate']);
           foreach ($roleAcls as $roleAcl) {
-            $aclc[$dn][]  = array(
+            $aclc[$dn][]  = [
               'acl'     => $roleAcl,
               'type'    => $aclc_value['type'],
               'members' => $aclc_value['members'],
               'filter'  => $aclc_value['filter']
-            );
+            ];
           }
         }
       }
@@ -219,7 +219,7 @@ class userinfo
 
         if ($interresting) {
           if (!isset($this->ACL[$dn])) {
-            $this->ACL[$dn] = array();
+            $this->ACL[$dn] = [];
           }
           $this->ACL[$dn][$idx] = $type;
         }
@@ -240,7 +240,7 @@ class userinfo
       For object located in 'ou=dep1,ou=base' we have to both ACLs,
        for objects in 'ou=base' we only have to apply on ACL.
      */
-    $without_self_acl = $all_acl = array();
+    $without_self_acl = $all_acl = [];
     foreach ($this->ACL as $dn => $acl) {
       $sdn = $dn;
       do {
@@ -403,11 +403,11 @@ class userinfo
   function get_snapshot_permissions($dn, $categories)
   {
     if (!is_array($categories)) {
-      $categories = array($categories);
+      $categories = [$categories];
     }
     /* Possible permissions for snapshots */
-    $objectPermissions    = array('r', 'c', 'd');
-    $attributePermissions = array('restore_over', 'restore_deleted');
+    $objectPermissions    = ['r', 'c', 'd'];
+    $attributePermissions = ['restore_over', 'restore_deleted'];
     foreach ($categories as $category) {
       $acl = $this->get_permissions($dn, $category.'/SnapshotHandler');
       foreach ($objectPermissions as $i => $perm) {
@@ -455,7 +455,7 @@ class userinfo
     if (isset($ACL_CACHE["$dn+$object+$attribute"])) {
       $ret = $ACL_CACHE["$dn+$object+$attribute"];
       if ($skip_write) {
-        $ret = str_replace(array('w','c','d','m'), '', $ret);
+        $ret = str_replace(['w','c','d','m'], '', $ret);
       }
       return $ret;
     }
@@ -485,7 +485,7 @@ class userinfo
           $ACL_CACHE["$orig_dn+$object+$attribute"] = $ret;
         }
         if ($skip_write) {
-          $ret = str_replace(array('w','c','d','m'), '', $ret);
+          $ret = str_replace(['w','c','d','m'], '', $ret);
         }
         return $ret;
       }
@@ -494,7 +494,7 @@ class userinfo
     /* Get ldap object, for later filter checks */
     $ldap = $config->get_ldap_link();
 
-    $acl = array('r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => '');
+    $acl = ['r' => '', 'w' => '', 'c' => '', 'd' => '', 'm' => '', 'a' => ''];
 
     /* Build dn array */
     $path = explode(',', $dn);
@@ -630,7 +630,7 @@ class userinfo
 
     /* Remove write if needed */
     if ($skip_write) {
-      $ret = str_replace(array('w','c','d','m'), '', $ret);
+      $ret = str_replace(['w','c','d','m'], '', $ret);
     }
     return $ret;
   }
@@ -661,17 +661,17 @@ class userinfo
     $ACL_CACHE = &session::get_ref('ACL_CACHE');
 
     if (!is_array($module)) {
-      $module = array($module);
+      $module = [$module];
     }
 
-    $res = array();
+    $res = [];
     foreach ($module as $mod) {
       if (isset($ACL_CACHE['MODULE_DEPARTMENTS'][$mod])) {
         $res = array_merge($res, $ACL_CACHE['MODULE_DEPARTMENTS'][$mod]);
         continue;
       }
 
-      $deps = array();
+      $deps = [];
 
       /* Search for per object ACLs */
       foreach ($this->ACL as $dn => $infos) {
@@ -733,7 +733,7 @@ class userinfo
    */
   function mergeACL($acl, $type, $newACL)
   {
-    $at = array("subtree" => "s", "one" => "1");
+    $at = ["subtree" => "s", "one" => "1"];
 
     if ((strpos($newACL, 'w') !== FALSE) && (strpos($newACL, 'r') === FALSE)) {
       $newACL .= "r";
@@ -897,8 +897,8 @@ class userinfo
     $current  = floor(date("U") / 60 / 60 / 24);
 
     // Fetch required attributes
-    foreach (array('shadowExpire','shadowLastChange','shadowMax','shadowMin',
-                'shadowInactive','shadowWarning','sambaKickoffTime') as $attr) {
+    foreach (['shadowExpire','shadowLastChange','shadowMax','shadowMin',
+                'shadowInactive','shadowWarning','sambaKickoffTime'] as $attr) {
       $$attr = (isset($attrs[$attr][0]) ? $attrs[$attr][0] : NULL);
     }
 
@@ -1002,7 +1002,7 @@ class userinfo
   function isBlacklisted($plugin)
   {
     global $config;
-    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', array());
+    $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', []);
     foreach ($blacklist as $item) {
       list ($group, $p) = explode('|', $item, 2);
       if ($plugin == $p) {
@@ -1023,7 +1023,7 @@ class userinfo
   {
     global $config;
 
-    if (in_array_ics($attribute, array('objectClass', 'dn'))) {
+    if (in_array_ics($attribute, ['objectClass', 'dn'])) {
       return TRUE;
     }
 
diff --git a/include/class_xml.inc b/include/class_xml.inc
index aeec46690..93b549ee3 100644
--- a/include/class_xml.inc
+++ b/include/class_xml.inc
@@ -41,12 +41,12 @@ class xml {
   static function xml2array($contents, $get_attributes = 1, $priority = 'tag')
   {
     if (!$contents) {
-      return array();
+      return [];
     }
 
     if (!function_exists('xml_parser_create')) {
       trigger_error('xml_parser_create function does not exists');
-      return array();
+      return [];
     }
 
     //Get the XML parser of PHP - PHP must have this module for the parser to work
@@ -62,12 +62,12 @@ class xml {
     }
 
     //Initializations
-    $xml_array    = array();
+    $xml_array    = [];
 
     $current = &$xml_array; //Refference
 
     //Go through the tags.
-    $repeated_tag_index = array();//Multiple tags with same name will be turned into an array
+    $repeated_tag_index = [];//Multiple tags with same name will be turned into an array
     foreach ($xml_values as $data) {
       unset($attributes, $value);//Remove existing values, or there will be trouble
 
@@ -75,8 +75,8 @@ class xml {
       // tag(string), type(string), level(int), attributes(array).
       extract($data);//We could use the array by itself, but this cooler.
 
-      $result = array();
-      $attributes_data = array();
+      $result = [];
+      $attributes_data = [];
 
       if (isset($value)) {
         if ($priority == 'tag') {
@@ -117,7 +117,7 @@ class xml {
             $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
             $repeated_tag_index[$tag.'_'.$level]++;
           } else {//This section will make the value an array if multiple tags with the same name appear together
-            $current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array
+            $current[$tag] = [$current[$tag],$result];//This will combine the existing item and the new item together to make an array
             $repeated_tag_index[$tag.'_'.$level] = 2;
 
             if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
@@ -148,7 +148,7 @@ class xml {
             $repeated_tag_index[$tag.'_'.$level]++;
 
           } else { //If it is not an array...
-            $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
+            $current[$tag] = [$current[$tag],$result]; //...Make it an array using using the existing value and the new value
             $repeated_tag_index[$tag.'_'.$level] = 1;
             if ($priority == 'tag' and $get_attributes) {
               if (isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
diff --git a/include/exporter/class_cvsExporter.inc b/include/exporter/class_cvsExporter.inc
index 10f011720..284fa361b 100644
--- a/include/exporter/class_cvsExporter.inc
+++ b/include/exporter/class_cvsExporter.inc
@@ -43,7 +43,7 @@ class csvExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = array())
+  function __construct($headline, $header, $entries, $columns = [])
   {
     // If no preset, render all columns
     if (!count($columns)) {
@@ -90,7 +90,7 @@ class csvExporter
    */
   static function getInfo()
   {
-    return array("exportCSV" => array( "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ));
+    return ["exportCSV" => [ "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ]];
   }
 
 }
diff --git a/include/exporter/class_pdfExporter.inc b/include/exporter/class_pdfExporter.inc
index 75d3c396f..56cd04ce8 100644
--- a/include/exporter/class_pdfExporter.inc
+++ b/include/exporter/class_pdfExporter.inc
@@ -51,7 +51,7 @@ class pdfExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = array())
+  function __construct($headline, $header, $entries, $columns = [])
   {
     // Bail out if no FPDF available
     if (!class_exists('FPDF')) {
@@ -141,7 +141,7 @@ class pdfExporter
    */
   function calcWidth($header, $entries, $columns)
   {
-    $width = array();
+    $width = [];
 
     // Locate longest value for each column
     foreach ($columns as $index) {
@@ -193,7 +193,7 @@ class pdfExporter
     // Check if class defined
     $classes = get_declared_classes();
     if (in_array('FPDF', $classes)) {
-      return array("exportPDF" => array( "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ));
+      return ["exportPDF" => [ "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ]];
     } else {
       return NULL;
     }
diff --git a/include/functions.inc b/include/functions.inc
index 1a9bd6138..fb4e41a80 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -53,7 +53,7 @@ define ('POSIX_DISALLOW_PASSWORD_CHANGE', 8);
 
 /* Rewrite german 'umlauts' and spanish 'accents'
    to get better results */
-$REWRITE = array( "ä" => "ae",
+$REWRITE = [ "ä" => "ae",
     "ö" => "oe",
     "ü" => "ue",
     "Ä" => "Ae",
@@ -71,7 +71,7 @@ $REWRITE = array( "ä" => "ae",
     "Ó" => "O",
     "Ú" => "U",
     "ñ" => "ny",
-    "Ñ" => "Ny" );
+    "Ñ" => "Ny" ];
 
 
 /*!
@@ -274,14 +274,14 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
     } else {
       $nf = preg_replace('!^'.$BASE_DIR.'/!', '', $path);
     }
-    $paths = array(
+    $paths = [
       "$BASE_DIR/ihtml/themes/$theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/$default_theme/$nf/$filename",
       "$BASE_DIR/ihtml/themes/default/$nf/$filename",
       $path."/$filename"
-    );
+    ];
   } else {
-    $paths = array(
+    $paths = [
       "themes/$theme/$filename",
       "$BASE_DIR/ihtml/themes/$theme/$filename",
       "themes/$default_theme/$filename",
@@ -289,7 +289,7 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
       "themes/default/$filename",
       "$BASE_DIR/ihtml/themes/default/$filename",
       $filename
-    );
+    ];
   }
 
   foreach ($paths as $path) {
@@ -441,8 +441,8 @@ function ldap_get_user ($username)
     exit();
   }
 
-  $allowed_attributes = array('uid','mail');
-  $verify_attr = array();
+  $allowed_attributes = ['uid','mail'];
+  $verify_attr = [];
   $tmp = explode(',', $config->get_cfg_value('loginAttribute'));
   foreach ($tmp as $attr) {
     if (in_array($attr, $allowed_attributes)) {
@@ -451,7 +451,7 @@ function ldap_get_user ($username)
   }
 
   if (count($verify_attr) == 0) {
-    $verify_attr = array('uid');
+    $verify_attr = ['uid'];
   }
   $tmp    = $verify_attr;
   $tmp[]  = 'uid';
@@ -526,7 +526,7 @@ function ldap_login_user ($username, $password)
   }
   if (class_available('ppolicyAccount')) {
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(objectClass=*)', array(), 'one');
+    $ldap->search('(objectClass=*)', [], 'one');
     if (!$ldap->success()) {
       msg_dialog::display(
         _('Authentication error'),
@@ -561,7 +561,7 @@ function add_lock($object, $user)
       don't need to remove any locks for them later.
    */
   if (!session::is_set('LOCK_CACHE')) {
-    session::set('LOCK_CACHE', array(''));
+    session::set('LOCK_CACHE', ['']);
   }
   if (is_array($object)) {
     foreach ($object as $obj) {
@@ -589,7 +589,7 @@ function add_lock($object, $user)
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
   $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($user).')(fdObjectDn='.base64_encode($object).'))',
-      array('fdUserDn'));
+      ['fdUserDn']);
   if (!$ldap->success()) {
     msg_dialog::display(_('Configuration error'), sprintf(_('Cannot create locking information in LDAP tree. Please contact your administrator!').'<br><br>'._('LDAP server returned: %s'), '<br><br><i>'.$ldap->get_error().'</i>'), ERROR_DIALOG);
     return;
@@ -597,16 +597,16 @@ function add_lock($object, $user)
 
   /* Add lock if none present */
   if ($ldap->count() == 0) {
-    $attrs  = array();
+    $attrs  = [];
     $name   = md5($object);
     $ldap->cd('cn='.$name.','.get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-    $attrs = array(
+    $attrs = [
       'objectClass'     => 'fdLockEntry',
       'fdUserDn'        => $user,
       'fdObjectDn'      => base64_encode($object),
       'cn'              => $name,
       'fdLockTimestamp' => LdapGeneralizedTime::toString(new DateTime('now')),
-    );
+    ];
     $ldap->add($attrs);
     if (!$ldap->success()) {
       msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), "cn=$name,".get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'], 0), LDAP_ERROR);
@@ -653,7 +653,7 @@ function del_lock ($object)
   /* Check for existance and remove the entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', array('fdObjectDn'));
+  $ldap->search('(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($object).'))', ['fdObjectDn']);
   $attrs = $ldap->fetch();
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), $ldap->getDN(), LDAP_DEL, ERROR_DIALOG));
@@ -681,7 +681,7 @@ function del_user_locks($userdn)
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
 
   /* Remove all objects of this user, drop errors silently in this case. */
-  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', array('fdUserDn'));
+  $ldap->search('(&(objectClass=fdLockEntry)(fdUserDn='.ldap_escape_f($userdn).'))', ['fdUserDn']);
   while ($attrs = $ldap->fetch()) {
     $ldap->rmdir($attrs['dn']);
   }
@@ -754,7 +754,7 @@ function get_locks($objects, $allow_readonly = FALSE)
   } else {
     if ($allow_readonly && isset($_POST['open_readonly'])) {
       /* If readonly is allowed and asked and there is only one object, bypass lock detection */
-      return array();
+      return [];
     }
     $filter = '(&(objectClass=fdLockEntry)(fdObjectDn='.base64_encode($objects).'))';
   }
@@ -762,20 +762,20 @@ function get_locks($objects, $allow_readonly = FALSE)
   /* Get LDAP link, check for presence of the lock entry */
   $ldap = $config->get_ldap_link();
   $ldap->cd(get_ou('lockRDN').get_ou('fusiondirectoryRDN').$config->current['BASE']);
-  $ldap->search($filter, array('fdUserDn','fdObjectDn', 'fdLockTimestamp'));
+  $ldap->search($filter, ['fdUserDn','fdObjectDn', 'fdLockTimestamp']);
   if (!$ldap->success()) {
     msg_dialog::display(_('LDAP error'), msgPool::ldaperror($ldap->get_error(), '', LDAP_SEARCH), LDAP_ERROR);
     return FALSE;
   }
 
-  $locks = array();
+  $locks = [];
   while ($attrs = $ldap->fetch()) {
-    $locks[] = array(
+    $locks[] = [
       'dn'        => $attrs['dn'],
       'object'    => base64_decode($attrs['fdObjectDn'][0]),
       'user'      => $attrs['fdUserDn'][0],
       'timestamp' => LdapGeneralizedTime::fromString($attrs['fdLockTimestamp'][0]),
-    );
+    ];
   }
 
   if (!is_array($objects) && (count($locks) > 1)) {
@@ -881,7 +881,7 @@ function get_ou($name)
 {
   global $config;
 
-  $map = array(
+  $map = [
     'fusiondirectoryRDN'      => 'ou=fusiondirectory,',
     'lockRDN'                 => 'ou=locks,',
     'recoveryTokenRDN'        => 'ou=recovery,',
@@ -931,7 +931,7 @@ function get_ou($name)
     'dsaRDN'    => 'ou=dsa,',
 
     'mimetypeRDN' => 'ou=mime,'
-  );
+  ];
 
   /* Preset ou... */
   if ($config->get_cfg_value($name, '_not_set_') != '_not_set_') {
@@ -1054,9 +1054,9 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
   /* Save variables from LOCK_VARS_TO_USE in session - for further editing */
   if ( session::is_set('LOCK_VARS_TO_USE') && count(session::get('LOCK_VARS_TO_USE'))) {
 
-    $LOCK_VARS_USED_GET       = array();
-    $LOCK_VARS_USED_POST      = array();
-    $LOCK_VARS_USED_REQUEST   = array();
+    $LOCK_VARS_USED_GET       = [];
+    $LOCK_VARS_USED_POST      = [];
+    $LOCK_VARS_USED_REQUEST   = [];
     $LOCK_VARS_TO_USE         = session::get('LOCK_VARS_TO_USE');
 
     foreach ($LOCK_VARS_TO_USE as $name) {
@@ -1083,7 +1083,7 @@ function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
         }
       }
     }
-    session::set('LOCK_VARS_TO_USE',        array());
+    session::set('LOCK_VARS_TO_USE',        []);
     session::set('LOCK_VARS_USED_GET',      $LOCK_VARS_USED_GET);
     session::set('LOCK_VARS_USED_POST',     $LOCK_VARS_USED_POST);
     session::set('LOCK_VARS_USED_REQUEST',  $LOCK_VARS_USED_REQUEST);
@@ -1335,10 +1335,10 @@ function netmask_to_bits($netmask)
  */
 function _recurse_gen_uids($rule, array $variables)
 {
-  $result = array();
+  $result = [];
 
   if (!count($variables)) {
-    return array($rule);
+    return [$rule];
   }
 
   reset($variables);
@@ -1373,13 +1373,13 @@ function gen_uids($rule, $attributes)
 
   // Attributes should be arrays
   foreach ($attributes as $name => $value) {
-      $attributes[$name] = array($value);
+      $attributes[$name] = [$value];
   }
 
   /* Search for keys and fill the variables array with all
      possible values for that key. */
   $stripped   = $rule;
-  $variables  = array();
+  $variables  = [];
 
   for ($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
     $variables[$pos]  = templateHandling::parseMask($m[1][0], $attributes);
@@ -1396,7 +1396,7 @@ function gen_uids($rule, $attributes)
   $ldap->cd($config->current['BASE']);
 
   /* Remove used uids and watch out for id tags */
-  $ret = array();
+  $ret = [];
   foreach ($proposed as $uid) {
     /* Check for id tag and modify uid if needed */
     if (preg_match('/\{id(:|!)(\d+)}/', $uid, $m)) {
@@ -1411,7 +1411,7 @@ function gen_uids($rule, $attributes)
         }
         $res = preg_replace('/{id(:|!)\d+}/', $number, $uid);
 
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1428,7 +1428,7 @@ function gen_uids($rule, $attributes)
       while (TRUE) {
         $number = sprintf("%0".$size."d", random_int(0, pow(10, $size) - 1));
         $res    = preg_replace('/{id#(\d+)}/', $number, $uid);
-        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', array('dn'));
+        $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $res)).')', ['dn']);
         if ($ldap->count() == 0) {
           $uid = $res;
           break;
@@ -1440,7 +1440,7 @@ function gen_uids($rule, $attributes)
     }
 
     /* Don't assign used ones */
-    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', array('dn'));
+    $ldap->search('(uid='.ldap_escape_f(preg_replace('/[{}]/', '', $uid)).')', ['dn']);
     if ($ldap->count() == 0) {
       /* Add uid, but remove {} first. These are invalid anyway. */
       $uid = preg_replace('/[{}]/', '', $uid);
@@ -1501,7 +1501,7 @@ function to_byte($value)
  */
 function humanReadableSize ($bytes, $precision = 2)
 {
-  $format = array(
+  $format = [
     _('%sB'),
     _('%sKiB'),
     _('%sMiB'),
@@ -1511,7 +1511,7 @@ function humanReadableSize ($bytes, $precision = 2)
     _('%sEiB'),
     _('%sZiB'),
     _('%sYiB')
-  );
+  ];
   if ($bytes == 0) {
     return sprintf($format[0], '0');
   }
@@ -1632,7 +1632,7 @@ function scan_directory($path, $sort_desc = FALSE)
     if (is_readable($path)) {
 
       /* Get contents and write it into an array */
-      $ret = array();
+      $ret = [];
 
       $dir = opendir($path);
 
@@ -1857,7 +1857,7 @@ function normalizeLdap($input)
  */
 function check_schema($cfg)
 {
-  $checks = array();
+  $checks = [];
 
   /* Get objectclasses */
   $ldapObj = new LDAP($cfg['admin'], $cfg['password'], $cfg['connection'], FALSE, $cfg['tls']);
@@ -1871,14 +1871,14 @@ function check_schema($cfg)
   /* This is the default block used for each entry.
    *  to avoid unset indexes.
    */
-  $def_check = array(
+  $def_check = [
     'SCHEMA_FILE'       => '',
-    'CLASSES_REQUIRED'  => array(),
+    'CLASSES_REQUIRED'  => [],
     'STATUS'            => FALSE,
     'IS_MUST_HAVE'      => FALSE,
     'MSG'               => '',
     'INFO'              => ''
-  );
+  ];
 
   /* FusionDirectory core schemas */
 
@@ -1886,7 +1886,7 @@ function check_schema($cfg)
   $checks['core-fd'] = $def_check;
 
   $checks['core-fd']['SCHEMA_FILE']       = 'core-fd.schema';
-  $checks['core-fd']['CLASSES_REQUIRED']  = array('fdLockEntry');
+  $checks['core-fd']['CLASSES_REQUIRED']  = ['fdLockEntry'];
   $checks['core-fd']['IS_MUST_HAVE']      = TRUE;
   $checks['core-fd']['INFO']              = _('Main FusionDirectory schema');
 
@@ -1894,7 +1894,7 @@ function check_schema($cfg)
   $checks['core-fd-conf'] = $def_check;
 
   $checks['core-fd-conf']['SCHEMA_FILE']      = 'core-fd-conf.schema';
-  $checks['core-fd-conf']['CLASSES_REQUIRED'] = array('fusionDirectoryConf');
+  $checks['core-fd-conf']['CLASSES_REQUIRED'] = ['fusionDirectoryConf'];
   $checks['core-fd-conf']['IS_MUST_HAVE']     = TRUE;
   $checks['core-fd-conf']['INFO']             = _('Schema used to store FusionDirectory configuration');
 
@@ -1902,7 +1902,7 @@ function check_schema($cfg)
   $checks['ldapns'] = $def_check;
 
   $checks['ldapns']['SCHEMA_FILE']      = 'ldapns.schema';
-  $checks['ldapns']['CLASSES_REQUIRED'] = array('hostObject');
+  $checks['ldapns']['CLASSES_REQUIRED'] = ['hostObject'];
   $checks['ldapns']['IS_MUST_HAVE']     = FALSE;
   $checks['ldapns']['INFO']             = _('Used to store trust mode information in users or groups.');
 
@@ -1910,7 +1910,7 @@ function check_schema($cfg)
   $checks['template-fd'] = $def_check;
 
   $checks['template-fd']['SCHEMA_FILE']      = 'template-fd.schema';
-  $checks['template-fd']['CLASSES_REQUIRED'] = array('fdTemplate');
+  $checks['template-fd']['CLASSES_REQUIRED'] = ['fdTemplate'];
   $checks['template-fd']['IS_MUST_HAVE']     = FALSE;
   $checks['template-fd']['INFO']             = _('Used to store templates.');
 
@@ -1919,7 +1919,7 @@ function check_schema($cfg)
     $checks['nis'] = $def_check;
 
     $checks['nis']['SCHEMA_FILE']       = 'nis.schema';
-    $checks['nis']['CLASSES_REQUIRED']  = array('posixAccount');
+    $checks['nis']['CLASSES_REQUIRED']  = ['posixAccount'];
     $checks['nis']['IS_MUST_HAVE']      = FALSE;
     $checks['nis']['INFO']              = _('Used to store POSIX information.');
   }
@@ -1943,7 +1943,7 @@ function check_schema($cfg)
   $checks['posixGroup'] = $def_check;
 
   $checks['posixGroup']['SCHEMA_FILE']      = 'nis.schema';
-  $checks['posixGroup']['CLASSES_REQUIRED'] = array('posixGroup');
+  $checks['posixGroup']['CLASSES_REQUIRED'] = ['posixGroup'];
   $checks['posixGroup']['STATUS']           = TRUE;
   $checks['posixGroup']['MSG']              = '';
   $checks['posixGroup']['INFO']             = '';
@@ -2022,13 +2022,13 @@ function change_password ($dn, $password, $hash = "")
 {
   $userTabs = objects::open($dn, 'user');
   $userTab  = $userTabs->getBaseObject();
-  $userTab->userPassword = array(
+  $userTab->userPassword = [
     $hash,
     $password,
     $password,
     $userTab->userPassword,
     $userTab->attributesAccess['userPassword']->isLocked()
-  );
+  ];
   $userTabs->save_object();
   $error = $userTabs->save();
   if (!empty($error)) {
@@ -2043,13 +2043,13 @@ function lock_samba_account($mode, array $attrs)
 {
   global $config;
   if (!isset($attrs['sambaNTPassword'][0])) {
-    return array();
+    return [];
   }
-  $modify = array('sambaNTPassword' => $attrs['sambaNTPassword'][0]);
+  $modify = ['sambaNTPassword' => $attrs['sambaNTPassword'][0]];
   if ($config->get_cfg_value("sambaGenLMPassword", "FALSE") == "TRUE") {
     $modify['sambaLMPassword'] = $attrs['sambaLMPassword'][0];
   } else {
-    $modify['sambaLMPassword'] = array();
+    $modify['sambaLMPassword'] = [];
   }
   foreach ($modify as &$pwd) {
     if (is_array($pwd)) {
@@ -2075,7 +2075,7 @@ function lock_ssh_account($mode, array $attrs, &$modify)
   if (!isset($attrs['sshPublicKey'])) {
     return;
   }
-  $modify['sshPublicKey'] = array();
+  $modify['sshPublicKey'] = [];
   for ($i = 0; $i < $attrs['sshPublicKey']['count']; ++$i) {
     if ($mode == 'LOCK') {
       $modify['sshPublicKey'][] = preg_replace('/^/', 'disabled-', $attrs['sshPublicKey'][$i]);
@@ -2109,7 +2109,7 @@ function getEntryCSN($dn)
   $attr = $config->get_cfg_value('modificationDetectionAttribute');
   if ($attr != '') {
     $ldap = $config->get_ldap_link();
-    $ldap->cat($dn, array($attr));
+    $ldap->cat($dn, [$attr]);
     $csn = $ldap->fetch();
     if (isset($csn[$attr][0])) {
       return $csn[$attr][0];
@@ -2293,7 +2293,7 @@ function mark($needle, $haystack)
 function reset_errors()
 {
   session::set('errors', '');
-  session::set('errorsAlreadyPosted', array());
+  session::set('errorsAlreadyPosted', []);
   session::set('LastError', '');
 }
 
@@ -2324,14 +2324,14 @@ if (!function_exists('ldap_escape')) {
   /* PHP version of ldap_escape for PHP<5.6 */
   function ldap_escape($subject, $ignore = '', $flags = 0)
   {
-    static $charMaps = array(
-      LDAP_ESCAPE_FILTER => array('\\', '*', '(', ')', "\x00"),
-      LDAP_ESCAPE_DN     => array('\\', ',', '=', '+', '<', '>', ';', '"', '#'),
-    );
+    static $charMaps = [
+      LDAP_ESCAPE_FILTER => ['\\', '*', '(', ')', "\x00"],
+      LDAP_ESCAPE_DN     => ['\\', ',', '=', '+', '<', '>', ';', '"', '#'],
+    ];
 
     // Pre-process the char maps on first call
     if (!isset($charMaps[0])) {
-      $charMaps[0] = array();
+      $charMaps[0] = [];
       for ($i = 0; $i < 256; $i++) {
         $charMaps[0][chr($i)] = sprintf('\\%02x', $i);
       }
@@ -2351,7 +2351,7 @@ if (!function_exists('ldap_escape')) {
 
     // Create the base char map to escape
     $flags = (int)$flags;
-    $charMap = array();
+    $charMap = [];
     if ($flags & LDAP_ESCAPE_FILTER) {
       $charMap += $charMaps[LDAP_ESCAPE_FILTER];
     }
@@ -2467,7 +2467,7 @@ function mail_utf8($to, $from_user, $from_email, $subject, $message, $replyto_us
 function fopenWithErrorHandling()
 {
   $args   = func_get_args();
-  $errors = array();
+  $errors = [];
   set_error_handler(
     function ($errno, $errstr, $errfile, $errline, $errcontext) use (&$errors)
     {
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index e0a29422d..73d2761d0 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -154,8 +154,8 @@ class printAClass {
 
         case 'string':
           if ($this->look_for_leading_tabs && preg_match('/^\t/m', $value)) {
-            $search       = array('/\t/', "/\n/");
-            $replace      = array('&nbsp;&nbsp;&nbsp;','<br />');
+            $search       = ['/\t/', "/\n/"];
+            $replace      = ['&nbsp;&nbsp;&nbsp;','<br />'];
             $value        = preg_replace( $search, $replace, htmlspecialchars($value));
             $value_style  = 'color:black;border:1px gray dotted;';
           } else {
diff --git a/include/password-methods/class_password-methods-crypt.inc b/include/password-methods/class_password-methods-crypt.inc
index 935ae1f7d..ac7c99793 100644
--- a/include/password-methods/class_password-methods-crypt.inc
+++ b/include/password-methods/class_password-methods-crypt.inc
@@ -116,7 +116,7 @@ class passwordMethodCrypt extends passwordMethod
    */
   static function get_hash_name()
   {
-    $hashes = array();
+    $hashes = [];
     if (CRYPT_STD_DES == 1) {
       $hashes[] = "crypt/standard-des";
     }
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index 3f3f5ef2f..e84c20362 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -57,7 +57,7 @@ class passwordMethodsasl extends passwordMethod
     } else {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
-      $ldap->cat($dn, array($attr));
+      $ldap->cat($dn, [$attr]);
       if ($ldap->count() == 1) {
         $attrs = $ldap->fetch();
         $this->uid = $attrs[$attr][0];
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index 713f7adc1..acc7541e9 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -29,7 +29,7 @@
  */
 class passwordMethod
 {
-  var $attrs    = array();
+  var $attrs    = [];
   var $display  = FALSE;
   var $hash     = '';
 
@@ -170,7 +170,7 @@ class passwordMethod
 
       // Call pre hooks
       $userClass = new user($dn);
-      $errors = $userClass->callHook('PRE'.$mode, array(), $ret);
+      $errors = $userClass->callHook('PRE'.$mode, [], $ret);
       if (!empty($errors)) {
         msg_dialog::displayChecks($errors);
         return FALSE;
@@ -191,7 +191,7 @@ class passwordMethod
       // Call the password post-lock hook, if defined.
       if ($ldap->success()) {
         $userClass = new user($dn);
-        $errors = $userClass->callHook('POST'.$mode, array(), $ret);
+        $errors = $userClass->callHook('POST'.$mode, [], $ret);
         if (!empty($errors)) {
           msg_dialog::displayChecks($errors);
         }
@@ -221,7 +221,7 @@ class passwordMethod
           if ($test->is_available()) {
             $plugs = $test->get_hash_name();
             if (!is_array($plugs)) {
-              $plugs = array($plugs);
+              $plugs = [$plugs];
             }
 
             foreach ($plugs as $plugname) {
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 2bc9c961e..52531b460 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -44,15 +44,15 @@ function htmlunescape ($html)
 
 function html_trace($errstr = "")
 {
-  static $hideArgs = array(
-    'ldap_init'         => array(3),
-    'ldap_login_user'   => array(1),
-    'change_password'   => array(1),
-    'cred_decrypt'      => array(0,1),
-    'LDAP/__construct'  => array(1),
-  );
+  static $hideArgs = [
+    'ldap_init'         => [3],
+    'ldap_login_user'   => [1],
+    'change_password'   => [1],
+    'cred_decrypt'      => [0,1],
+    'LDAP/__construct'  => [1],
+  ];
   if (!function_exists('debug_backtrace')) {
-    return array ('', '');
+    return  ['', ''];
   }
   $trace = array_slice(debug_backtrace(), 1);
 
@@ -104,7 +104,7 @@ function html_trace($errstr = "")
       if (isset($hideArgs[$func])) {
         $hideArgsIndexes = $hideArgs[$func];
       } else {
-        $hideArgsIndexes = array();
+        $hideArgsIndexes = [];
       }
       $f = function ($index, $arg) use(&$f, $hideArgsIndexes) {
         static $i = 0;
@@ -161,7 +161,7 @@ function html_trace($errstr = "")
   $return_html    .= "</table>";
   $return_mailto  .= rawurlencode("=== /Trace ===");
 
-  return array($return_html, $return_mailto);
+  return [$return_html, $return_mailto];
 }
 
 /*!
@@ -207,7 +207,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
     /* Write to syslog */
     if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-      logging::log('view', 'error', '', array(), "PHP error: $errstr ($errfile, line $errline)");
+      logging::log('view', 'error', '', [], "PHP error: $errstr ($errfile, line $errline)");
     }
 
     set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
@@ -216,7 +216,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 
   /* Send all errors to logging class, except "Ldap : No such object" messages*/
   if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-    logging::log('debug', 'all', $errfile, array(), 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
+    logging::log('debug', 'all', $errfile, [], 'Type:'.$errno.', Message:'.$errstr.', File:'.$errfile.', Line: '.$errline);
   }
 
   /* Create header as needed */
@@ -358,8 +358,8 @@ $smarty = new Smarty;
 
 $smarty->template_dir = $BASE_DIR.'/ihtml/';
 $smarty->caching      = FALSE;
-$smarty->assign('css_files', array());
-$smarty->assign('js_files', array());
+$smarty->assign('css_files', []);
+$smarty->assign('js_files', []);
 
 $smarty->php_handling = Smarty::PHP_REMOVE;
 
diff --git a/include/select/class_filterLDAPBlacklist.inc b/include/select/class_filterLDAPBlacklist.inc
index 6f533ebf7..4603e41b5 100644
--- a/include/select/class_filterLDAPBlacklist.inc
+++ b/include/select/class_filterLDAPBlacklist.inc
@@ -57,7 +57,7 @@ class filterLDAPBlacklist {
             if (isset($entry[$attr_name])) {
               $test = $entry[$attr_name];
               if (!is_array($test)) {
-                $test = array($test);
+                $test = [$test];
               }
               if (in_array($match, $test)) {
                 unset($entries[$id]);
diff --git a/include/select/groupSelect/class_groupSelect.inc b/include/select/groupSelect/class_groupSelect.inc
index d1bc7a529..5234796a0 100644
--- a/include/select/groupSelect/class_groupSelect.inc
+++ b/include/select/groupSelect/class_groupSelect.inc
@@ -23,7 +23,7 @@
  */
 class groupSelect extends simpleSelectManagement
 {
-  protected $objectTypes  = array('group');
+  protected $objectTypes  = ['group'];
   protected $autoFilter   = FALSE;
 
   function __construct()
diff --git a/include/select/objectSelect/class_objectSelect.inc b/include/select/objectSelect/class_objectSelect.inc
index f76215238..4c805485f 100644
--- a/include/select/objectSelect/class_objectSelect.inc
+++ b/include/select/objectSelect/class_objectSelect.inc
@@ -23,12 +23,12 @@
  */
 class objectSelect extends userSelect
 {
-  protected $objectTypes = array(
+  protected $objectTypes = [
     'user', 'ogroup',
     'application',
     'terminal', 'workstation', 'server', 'printer', 'phone',
     'simpleSecurityObject'
-  );
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  ];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 }
 ?>
diff --git a/include/select/systemSelect/class_systemSelect.inc b/include/select/systemSelect/class_systemSelect.inc
index 0ba3bf30e..3c65d2264 100644
--- a/include/select/systemSelect/class_systemSelect.inc
+++ b/include/select/systemSelect/class_systemSelect.inc
@@ -23,9 +23,9 @@
  */
 class systemSelect extends simpleSelectManagement
 {
-  protected $autoFilterAttributes = array('dn', 'cn', 'ipHostNumber', 'macAddress');
-  protected $objectTypes = array(
+  protected $autoFilterAttributes = ['dn', 'cn', 'ipHostNumber', 'macAddress'];
+  protected $objectTypes = [
     'terminal', 'workstation', 'server'
-  );
+  ];
 }
 ?>
diff --git a/include/select/userGroupSelect/class_userGroupSelect.inc b/include/select/userGroupSelect/class_userGroupSelect.inc
index 70667205b..4052d7a5e 100644
--- a/include/select/userGroupSelect/class_userGroupSelect.inc
+++ b/include/select/userGroupSelect/class_userGroupSelect.inc
@@ -23,13 +23,13 @@
  */
 class userGroupSelect extends userSelect
 {
-  protected $objectTypes = array('user', 'group');
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  protected $objectTypes = ['user', 'group'];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 
   function __construct()
   {
     if (class_available('mixedGroup')) {
-      $this->objectTypes = array('user', 'ogroup');
+      $this->objectTypes = ['user', 'ogroup'];
     }
     parent::__construct();
   }
@@ -40,6 +40,6 @@ class userGroupSelect extends userSelect
  */
 class userGroupRoleSelect extends userGroupSelect
 {
-  protected $objectTypes = array('user', 'group', 'role', 'ogroup');
+  protected $objectTypes = ['user', 'group', 'role', 'ogroup'];
 }
 ?>
diff --git a/include/select/userSelect/class_userSelect.inc b/include/select/userSelect/class_userSelect.inc
index 536f9adb7..2d9640afa 100644
--- a/include/select/userSelect/class_userSelect.inc
+++ b/include/select/userSelect/class_userSelect.inc
@@ -23,22 +23,22 @@
  */
 class userSelect extends simpleSelectManagement
 {
-  protected $objectTypes          = array('user');
-  protected $autoFilterAttributes = array('dn', 'cn', 'uid', 'description', 'mail');
+  protected $objectTypes          = ['user'];
+  protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     $data['list']['table']['layout'] = '|20px;c||||';
-    $columns = array (
-      array (
+    $columns = [
+       [
         'label'         => _('Login'),
         'sortAttribute' => 'uid',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,uid)}',
         'export'        => 'true',
-      ),
-    );
+       ],
+    ];
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index 668edb68c..2ee2c567d 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -155,9 +155,9 @@ class BaseSelectorAttribute extends Attribute
     if ($this->disabled) {
       $display = $this->renderInputField(
         'text', '',
-        array(
+        [
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        )
+        ]
       );
     } else {
       $display = '{literal}'.$this->baseSelector->render().'{/literal}';
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index 4930296bb..e9a8f6f6c 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -93,7 +93,7 @@ class BooleanAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = ($this->value ? array('checked' => 'checked') : array());
+    $attributes = ($this->value ? ['checked' => 'checked'] : []);
     if ($this->submitForm) {
       $js       = 'document.mainform.submit();';
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -174,7 +174,7 @@ class ObjectClassBooleanAttribute extends BooleanAttribute
     if (is_array($objectclasses)) {
       $this->objectclasses = $objectclasses;
     } else {
-      $this->objectclasses = array($objectclasses);
+      $this->objectclasses = [$objectclasses];
     }
     parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->setInLdap(FALSE);
diff --git a/include/simpleplugin/attributes/class_CompositeAttribute.inc b/include/simpleplugin/attributes/class_CompositeAttribute.inc
index b21936fba..d24033911 100644
--- a/include/simpleplugin/attributes/class_CompositeAttribute.inc
+++ b/include/simpleplugin/attributes/class_CompositeAttribute.inc
@@ -95,7 +95,7 @@ class CompositeAttribute extends Attribute
     $res = preg_match($this->readFormat, $value, $m);
     if ($res === 1) {
       $m = array_slice($m, 1);
-      $values = array();
+      $values = [];
       foreach (array_keys($this->attributes) as $name) {
         if (isset($m[$name])) {
           $values[] = $m[$name];
@@ -250,7 +250,7 @@ class CompositeAttribute extends Attribute
       }
     } else {
       parent::serializeAttribute($attributes, $form);
-      $subattributes = array();
+      $subattributes = [];
       foreach ($this->attributes as &$attribute) {
         $attribute->setDisabled($this->disabled);
         $attribute->serializeAttribute($subattributes, $form);
@@ -276,7 +276,7 @@ class CompositeAttribute extends Attribute
 
   public function htmlIds()
   {
-    $ret = array();
+    $ret = [];
     foreach ($this->attributes as &$attribute) {
       $ret = array_merge($ret, $attribute->htmlIds());
     }
diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 3f573223f..5e104bcf6 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -143,10 +143,10 @@ class DateAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      array(
+      [
         'value' => '{literal}'.$this->getValue().'{/literal}',
         'class' => 'date'
-      )
+      ]
     );
     $display  .= '{if $'.$this->getAcl().'ACL|regex_replace:"/[cdmr]/":"" == "w"}'.
         '<script type="text/javascript">
@@ -195,7 +195,7 @@ class TimeHisAttribute extends CompositeAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = array(
+    $attributes = [
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -211,7 +211,7 @@ class TimeHisAttribute extends CompositeAttribute
         $ldapName.'_seconds', TRUE,
         0, 59, 0
       )
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)(\d\d)$/', '%02d%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -269,7 +269,7 @@ class TimeHiAttribute extends TimeHisAttribute
   function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
-    $attributes = array(
+    $attributes = [
       new IntAttribute (
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
@@ -280,7 +280,7 @@ class TimeHiAttribute extends TimeHisAttribute
         $ldapName.'_minutes', TRUE,
         0, 59, 0
       )
-    );
+    ];
     CompositeAttribute::__construct($description, $ldapName, $attributes, '/^(\d\d)(\d\d)$/', '%02d%02d', $acl, $label);
     $this->setLinearRendering(TRUE);
   }
@@ -293,7 +293,7 @@ class DateTimeAttribute extends CompositeAttribute
 {
   function __construct($label, $description, $ldapName, $required, $acl = '')
   {
-    $attributes = array(
+    $attributes = [
       new DateAttribute(
         _('Date'), '',
         $ldapName.'_date', $required,
@@ -305,7 +305,7 @@ class DateTimeAttribute extends CompositeAttribute
         $ldapName.'_time', $required,
         FALSE
       )
-    );
+    ];
     parent::__construct($description, $ldapName, $attributes, '/^(\d{8})(\d{6})$/', '%s%s', $acl, $label);
   }
 }
diff --git a/include/simpleplugin/attributes/class_FileAttribute.inc b/include/simpleplugin/attributes/class_FileAttribute.inc
index a9475f781..54ff0aa08 100644
--- a/include/simpleplugin/attributes/class_FileAttribute.inc
+++ b/include/simpleplugin/attributes/class_FileAttribute.inc
@@ -162,17 +162,17 @@ class FileDownloadAttribute extends FileAttribute
     $display = '';
     if ($this->upload) {
       $display  .= $this->renderInputField('file', $id);
-      $display  .= $this->renderInputField('submit', 'upload'.$id, array('value' => _('Upload')));
+      $display  .= $this->renderInputField('submit', 'upload'.$id, ['value' => _('Upload')]);
     }
     if ($this->download) {
       $display  .= $this->renderInputField(
         'image', 'download'.$id,
-        array(
+        [
           'title' => _('Download'),
           'alt'   => _('Download'),
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-save&amp;size=16',
-        )
+        ]
       );
     }
     return $this->renderAcl($display);
@@ -181,7 +181,7 @@ class FileDownloadAttribute extends FileAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array();
+    $ids  = [];
     if ($this->download) {
       $ids[] = 'download'.$id;
     }
@@ -250,7 +250,7 @@ class FileTextAreaAttribute extends FileDownloadAttribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars */
-    return str_replace(array("\r\n", "\r"), "\n", $value);
+    return str_replace(["\r\n", "\r"], "\n", $value);
   }
 
   function renderFormInput ()
@@ -412,22 +412,22 @@ class ImageAttribute extends FileAttribute
     $display  .= $this->renderInputField('file', $id);
     $display .= $this->renderInputField(
       'image', $id.'_upload',
-      array(
+      [
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=upload&amp;size=16',
         'title' => _('Upload'),
         'alt'   => _('Upload')
-      )
+      ]
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        )
+        ]
       );
     }
     if (($this->getValue() == '') && ($this->placeholder != '')) {
@@ -442,7 +442,7 @@ class ImageAttribute extends FileAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array($id.'_img',$id,'upload'.$id);
+    return [$id.'_img',$id,'upload'.$id];
   }
 
   /*! \brief Fill LDAP value in the attrs array
@@ -458,7 +458,7 @@ class ImageAttribute extends FileAttribute
         }
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = array();
+        $attrs[$this->getLdapName()] = [];
       }
     }
   }
diff --git a/include/simpleplugin/attributes/class_IntAttribute.inc b/include/simpleplugin/attributes/class_IntAttribute.inc
index fe851ad2a..9ab048fca 100644
--- a/include/simpleplugin/attributes/class_IntAttribute.inc
+++ b/include/simpleplugin/attributes/class_IntAttribute.inc
@@ -92,9 +92,9 @@ class IntAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = array(
+    $attributes = [
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    );
+    ];
     if ($this->min !== FALSE) {
       $attributes['min'] = $this->min;
     }
@@ -117,9 +117,9 @@ class IntAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'text', $id,
-      array(
+      [
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-      )
+      ]
     );
     return $this->renderAcl($display);
   }
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index 8b63d683c..c08350d28 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -24,23 +24,23 @@
 class phoneSelect extends simpleSelectManagement
 {
   protected $multiSelect          = FALSE;
-  protected $autoFilterAttributes = array('dn','cn','ipHostNumber','macAddress','telephoneNumber');
-  protected $objectTypes          = array('phone');
+  protected $autoFilterAttributes = ['dn','cn','ipHostNumber','macAddress','telephoneNumber'];
+  protected $objectTypes          = ['phone'];
 
   function parseXML ($file)
   {
     $data = parent::parseXML($file);
     /* Add column for phone number */
     $data['list']['table']['layout'] .= '|';
-    $columns = array (
-      array (
+    $columns = [
+       [
         'label'         => _('Number'),
         'sortAttribute' => 'telephoneNumber',
         'sortType'      => 'string',
         'value'         => '%{filter:selectLink(pid,row,dn,telephoneNumber)}',
         'export'        => 'true',
-      ),
-    );
+       ],
+    ];
     array_splice($data['list']['table']['column'], 2, 0, $columns);
     return $data;
   }
@@ -58,7 +58,7 @@ class phoneSelect extends simpleSelectManagement
  */
 class mobilePhoneSelect extends phoneSelect
 {
-  protected $objectTypes = array('mobilePhone');
+  protected $objectTypes = ['mobilePhone'];
 }
 
 /*!
@@ -66,7 +66,7 @@ class mobilePhoneSelect extends phoneSelect
  */
 class anyPhoneSelect extends phoneSelect
 {
-  protected $objectTypes = array('phone','mobilePhone');
+  protected $objectTypes = ['phone','mobilePhone'];
 }
 
 /*!
@@ -138,12 +138,12 @@ class PhoneNumberButtonAttribute extends PhoneNumberAttribute
     if ($this->type !== FALSE) {
       $display .= $this->renderAcl($this->renderInputField(
         'image', $id.'_edit',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit')
-        )
+        ]
       ));
     }
     return $display;
diff --git a/include/simpleplugin/attributes/class_SelectAttribute.inc b/include/simpleplugin/attributes/class_SelectAttribute.inc
index 58eeb1f00..b3ac11de3 100644
--- a/include/simpleplugin/attributes/class_SelectAttribute.inc
+++ b/include/simpleplugin/attributes/class_SelectAttribute.inc
@@ -43,7 +43,7 @@ class SelectAttribute extends Attribute
    *  \param array $outputs The labels corresponding to the choices, leave to NULL if you want to display the choices themselves
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = array(), $defaultValue = "", $outputs = NULL, $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $choices = [], $defaultValue = "", $outputs = NULL, $acl = "")
   {
     if (!in_array($defaultValue, $choices, TRUE) && isset($choices[0])) {
       $defaultValue = $choices[0];
@@ -90,7 +90,7 @@ class SelectAttribute extends Attribute
    */
   function setDisplayChoices ($values)
   {
-    $this->outputs = array();
+    $this->outputs = [];
     $values = array_values($values);
     $i = 0;
     foreach ($this->choices as $choice) {
@@ -234,7 +234,7 @@ class ObjectSelectAttribute extends SelectAttribute
 
   function __construct ($label, $description, $ldapName, $required, $objectType, $objectAttrs = NULL, $objectFilter = '', $acl = "")
   {
-    parent::__construct($label, $description, $ldapName, $required, array(), "", NULL, $acl);
+    parent::__construct($label, $description, $ldapName, $required, [], "", NULL, $acl);
     $this->objectType   = $objectType;
     $this->objectAttrs  = $objectAttrs;
     $this->objectFilter = $objectFilter;
diff --git a/include/simpleplugin/attributes/class_SetAttribute.inc b/include/simpleplugin/attributes/class_SetAttribute.inc
index 0101290fc..d206b8d1c 100644
--- a/include/simpleplugin/attributes/class_SetAttribute.inc
+++ b/include/simpleplugin/attributes/class_SetAttribute.inc
@@ -35,7 +35,7 @@ class SetAttribute extends Attribute
    *  \param array $values The default values
    *  \param boolean $valueUnicity Should the value unicity be checked
    */
-  function __construct ($attribute, $values = array(), $valueUnicity = TRUE)
+  function __construct ($attribute, $values = [], $valueUnicity = TRUE)
   {
     parent::__construct(
       $attribute->getLabel(),     $attribute->getDescription(),
@@ -60,7 +60,7 @@ class SetAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -222,20 +222,20 @@ class SetAttribute extends Attribute
       if ($this->linearRendering || $readOnly) {
         parent::renderAttribute($attributes, $readOnly);
       } else {
-        $attributes[$this->getLdapName()] = array(
+        $attributes[$this->getLdapName()] = [
           'htmlid'      => $this->getForHtmlId(),
           'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
           'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
           'input'       => $this->renderAcl($this->renderOnlyFormInput()),
-        );
+        ];
         $this->handleEditingValue();
         $this->attribute->renderAttribute($attributes, $readOnly);
-        $attributes[$this->getLdapName().'_buttons'] = array(
+        $attributes[$this->getLdapName().'_buttons'] = [
           'htmlid'      => 'add'.$this->getHtmlId(),
           'label'       => '',
           'description' => '',
           'input'       => $this->renderAcl($this->renderButtons()),
-        );
+        ];
       }
     }
   }
@@ -249,7 +249,7 @@ class SetAttribute extends Attribute
     if ($form) {
       return;
     } else {
-      $subattributes = array();
+      $subattributes = [];
       $this->attribute->setDisabled($this->disabled);
       $this->attribute->serializeAttribute($subattributes, $form);
       $attributes[$this->getLdapName()]['attributes']       = $subattributes;
@@ -270,8 +270,8 @@ class SetAttribute extends Attribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons  = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
-    $buttons .= $this->renderInputField('submit', 'del'.$id, array('value' => '{msgPool type=delButton}'));
+    $buttons  = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
+    $buttons .= $this->renderInputField('submit', 'del'.$id, ['value' => '{msgPool type=delButton}']);
     return $buttons;
   }
 
@@ -283,7 +283,7 @@ class SetAttribute extends Attribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array_merge(array('add'.$id,'del'.$id,'row'.$id), $this->attribute->htmlIds());
+    return array_merge(['add'.$id,'del'.$id,'row'.$id], $this->attribute->htmlIds());
   }
 
   /*! \brief Set the parent plugin for this attribute
@@ -300,10 +300,10 @@ class SetAttribute extends Attribute
 
   function getArrayValues()
   {
-    $result = array();
+    $result = [];
     foreach ($this->value as $value) {
       $this->attribute->setValue($value);
-      $row = array();
+      $row = [];
       foreach ($this->attribute->getArrayValue() as $val) {
         $row[] = $val;
       }
@@ -371,7 +371,7 @@ class OrderedArrayAttribute extends SetAttribute
    *  \param array $values The default values
    *  \param boolean $edit_enabled Can the values be edited
    */
-  function __construct ($attribute, $order = TRUE, $values = array(), $edit_enabled = FALSE)
+  function __construct ($attribute, $order = TRUE, $values = [], $edit_enabled = FALSE)
   {
     parent::__construct($attribute, $values);
     $this->order        = $order;
@@ -408,7 +408,7 @@ class OrderedArrayAttribute extends SetAttribute
 
   function computeLdapValue ()
   {
-    $ldapValue = array();
+    $ldapValue = [];
     foreach ($this->value as $key => $value) {
       $ldapValue[] = $this->writeValue($key, $value);
     }
@@ -418,7 +418,7 @@ class OrderedArrayAttribute extends SetAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]["count"])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]["count"]; $i++) {
         $value = $this->readValue($attrs[$this->getLdapName()][$i]);
         if (is_array($value)) {
@@ -441,12 +441,12 @@ class OrderedArrayAttribute extends SetAttribute
     $div->SetHeight($this->height);
     $div->SetHeaders($this->headers);
     foreach ($this->value as $key => $value) {
-      $fields = array();
+      $fields = [];
       foreach ($this->getAttributeArrayValue($key, $value) as $field) {
         if (is_array($field)) {
           $fields[] = $field;
         } else {
-          $fields[] = array('string' => $field);
+          $fields[] = ['string' => $field];
         }
       }
       if (empty($fields)) {
@@ -455,7 +455,7 @@ class OrderedArrayAttribute extends SetAttribute
 
       list ($img, $nbicons) = $this->genRowIcons($key, $value);
 
-      $fields[] = array("html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"');
+      $fields[] = ["html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"'];
       $div->AddEntry($fields);
     }
     $smarty->assign("div_$id", $div->DrawList());
@@ -474,12 +474,12 @@ class OrderedArrayAttribute extends SetAttribute
       if ($key != 0) {
         $img .= $this->renderInputField(
           'image', $id.'_up_'.$key,
-          array(
+          [
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-descending&amp;size=16',
             'title' => _('Sort up'),
             'alt'   => _('Sort up'),
             'class' => 'center'
-          )
+          ]
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -487,12 +487,12 @@ class OrderedArrayAttribute extends SetAttribute
       if (($key + 1) < count($this->value)) {
         $img .= $this->renderInputField(
           'image', $id.'_down_'.$key,
-          array(
+          [
             'src'   => 'geticon.php?context=actions&amp;icon=view-sort-ascending&amp;size=16',
             'title' => _('Sort down'),
             'alt'   => _('Sort down'),
             'class' => 'center'
-          )
+          ]
         );
       } else {
         $img .= '<img src="images/empty.png" alt="" style="width:16px;"/>';
@@ -502,25 +502,25 @@ class OrderedArrayAttribute extends SetAttribute
       $nbicons++;
       $img .= $this->renderInputField(
         'image', $id.'_edit_'.$key,
-        array(
+        [
           'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
           'title' => _('Edit'),
           'alt'   => _('Edit'),
           'class' => 'center'
-        )
+        ]
       );
     }
     $img .= $this->renderInputField(
       'image', $id.'_del_'.$key,
-      array(
+      [
         'src'   => 'geticon.php?context=actions&amp;icon=edit-delete&amp;size=16',
         'title' => _('Delete'),
         'alt'   => _('Delete'),
         'class' => 'center'
-      )
+      ]
     );
 
-    return array ($img, $nbicons);
+    return  [$img, $nbicons];
   }
 
   protected function getAttributeArrayValue($key, $value)
@@ -627,7 +627,7 @@ class OrderedArrayAttribute extends SetAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array('add'.$id);
+    $ids  = ['add'.$id];
     if ($this->attribute !== FALSE) {
       $ids  = array_merge($ids, $this->attribute->htmlIds());
     }
@@ -649,7 +649,7 @@ class OrderedArrayAttribute extends SetAttribute
   function renderButtons ()
   {
     $id = $this->getHtmlId();
-    $buttons = $this->renderInputField('submit', 'add'.$id, array('value' => '{msgPool type=addButton}'));
+    $buttons = $this->renderInputField('submit', 'add'.$id, ['value' => '{msgPool type=addButton}']);
     return $buttons;
   }
 }
@@ -662,9 +662,9 @@ class SubNodesAttribute extends OrderedArrayAttribute
   protected $objectClass;
   protected $objectClasses;
 
-  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = array(), $edit_enabled = FALSE, $acl = "")
+  function __construct ($label, $description, $ldapName, $objectClass, $attributes, $order = FALSE, $values = [], $edit_enabled = FALSE, $acl = "")
   {
-    $attributes_keys = array();
+    $attributes_keys = [];
     foreach ($attributes as $attribute) {
       $attributes_keys[$attribute->getLdapName()] = $attribute;
       $attributes_keys[$attribute->getLdapName()]->htmlid_prefix = $ldapName.'_';
@@ -681,7 +681,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
       $this->objectClasses  = $objectClass;
     } else {
       $this->objectClass    = $objectClass;
-      $this->objectClasses  = array($objectClass);
+      $this->objectClasses  = [$objectClass];
     }
   }
 
@@ -692,8 +692,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
     if (isset($attrs['dn'])) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($attrs['dn']);
-      $ldap->search('objectClass='.$this->objectClass, array('*'), 'one');
-      $this->value = array();
+      $ldap->search('objectClass='.$this->objectClass, ['*'], 'one');
+      $this->value = [];
       while ($subattrs = $ldap->fetch()) {
         $this->attribute->resetToDefault();
         foreach ($this->attribute->attributes as &$attribute) {
@@ -715,8 +715,8 @@ class SubNodesAttribute extends OrderedArrayAttribute
   {
     /* First delete all old nodes */
     $ldap->cd($this->plugin->dn);
-    $ldap->search('objectClass='.$this->objectClass, array('dn'), 'one');
-    $delete = array();
+    $ldap->search('objectClass='.$this->objectClass, ['dn'], 'one');
+    $delete = [];
     while ($attrs = $ldap->fetch()) {
       $delete[] = $attrs['dn'];
     }
@@ -725,7 +725,7 @@ class SubNodesAttribute extends OrderedArrayAttribute
     }
     /* Then add our values */
     foreach ($this->value as $val) {
-      $attrs = array('objectClass' => $this->objectClasses);
+      $attrs = ['objectClass' => $this->objectClasses];
       $this->attribute->setValue($val);
       foreach ($this->attribute->attributes as &$attribute) {
         $attribute->fillLdapValue($attrs);
diff --git a/include/simpleplugin/attributes/class_StringAttribute.inc b/include/simpleplugin/attributes/class_StringAttribute.inc
index 19906142b..452239369 100644
--- a/include/simpleplugin/attributes/class_StringAttribute.inc
+++ b/include/simpleplugin/attributes/class_StringAttribute.inc
@@ -59,9 +59,9 @@ class StringAttribute extends Attribute
   function renderFormInput ()
   {
     $id = $this->getHtmlId();
-    $attributes = array(
+    $attributes = [
       'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-    );
+    ];
     if (!empty($this->managedAttributes)) {
       $js       = $this->managedAttributesJS();
       $attributes['onChange'] = 'javascript:'.htmlentities($js, ENT_COMPAT, 'UTF-8');
@@ -76,7 +76,7 @@ class StringAttribute extends Attribute
   function fixPostValue ($value)
   {
     /* Replace CRLF by LF, to avoid non-ASCII chars in multiline values (mainly useful for textarea) */
-    return str_replace(array("\r\n", "\r"), "\n", $value);
+    return str_replace(["\r\n", "\r"], "\n", $value);
   }
 
   function check ()
@@ -160,10 +160,10 @@ class PasswordAttribute extends StringAttribute
     $id = $this->getHtmlId();
     $display  = $this->renderInputField(
       'password', $id,
-      array(
+      [
         'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}',
         'autocomplete' => ($this->autocomplete ? 'on' : 'off'),
-      )
+      ]
     );
     if ($this->autocomplete === FALSE) {
       $display = '{literal}<input autocomplete="off" value="foolautocompleteworkaround" type="text" style="display:none;"/>{/literal}'.$display;
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index 45c49ad0f..be4b7a959 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -75,12 +75,12 @@ class Attribute
   protected $plugin;
   /* \brief Array of attributes to manage (prefix => value => attribute)
    * Prefix should be 'erase' or 'disable' */
-  protected $managedAttributes = array();
+  protected $managedAttributes = [];
   /* \brief Array of multiple values groups for managed attributes */
-  protected $managedAttributesMultipleValues = array();
+  protected $managedAttributesMultipleValues = [];
 
   /* \bried Array of booleans telling for each managing attributes if he's disabling us */
-  protected $managingAttributesOrders = array();
+  protected $managingAttributesOrders = [];
 
   /*! \brief The constructor of Attribute
    *
@@ -201,7 +201,7 @@ class Attribute
   /* Return the value as an array of values to be displayed in a table columns */
   function getArrayValue ()
   {
-    return array($this->displayValue($this->getValue()));
+    return [$this->displayValue($this->getValue())];
   }
 
   function getLdapName ()
@@ -352,7 +352,7 @@ class Attribute
       $this->managedAttributesMultipleValues = $mAttributes['multiplevalues'];
       unset($mAttributes['multiplevalues']);
     } else {
-      $this->managedAttributesMultipleValues = array();
+      $this->managedAttributesMultipleValues = [];
     }
     $this->managedAttributes = $mAttributes;
     $this->manageAttributes($this->getValue());
@@ -420,7 +420,7 @@ class Attribute
       if ($value !== '') {
         $attrs[$this->getLdapName()] = $value;
       } else {
-        $attrs[$this->getLdapName()] = array();
+        $attrs[$this->getLdapName()] = [];
       }
     }
   }
@@ -440,7 +440,7 @@ class Attribute
           continue;
         }
         foreach ($attributes as $attribute) {
-          $attrs[$attribute] = array();
+          $attrs[$attribute] = [];
         }
       }
     }
@@ -452,11 +452,11 @@ class Attribute
   {
     global $config;
     $value = $this->getValue();
-    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === array()))) {
+    if ($this->isRequired() && !$this->disabled && (($value === "") || ($value === []))) {
       return msgPool::required($this->getLabel());
     } elseif (($this->unique !== FALSE) && !$this->disabled) {
       $value = $this->computeLdapValue();
-      if (($value === "") || ($value === array())) {
+      if (($value === "") || ($value === [])) {
         return;
       }
       $ldap = $config->get_ldap_link();
@@ -497,10 +497,10 @@ class Attribute
           $filters[] = $pluginFilter;
         }
       } else {
-        $filters = array($this->uniqueFilter);
+        $filters = [$this->uniqueFilter];
       }
       $filter = '(&'.$filter.implode($filters).')';
-      $ldap->search($filter, array($this->getLdapName()));
+      $ldap->search($filter, [$this->getLdapName()]);
       $branches = array_filter(
         array_map(
           function ($key, $ot)
@@ -588,12 +588,12 @@ class Attribute
       } else {
         $input = $this->renderFormInput();
       }
-      $attributes[$this->getLdapName()] = array(
+      $attributes[$this->getLdapName()] = [
         'htmlid'      => $this->getForHtmlId(),
         'label'       => '{literal}'.$this->getLabel().'{/literal}'.($this->isRequired() ? '{$must}' : ''),
         'description' => ($this->isRequired() ? sprintf(_("%s (required)"), $this->getDescription()) : $this->getDescription()),
         'input'       => $input,
-      );
+      ];
     }
   }
 
@@ -612,7 +612,7 @@ class Attribute
       }
       /* Avoid empty array */
       $type[] = 'Attribute';
-      $infos = array(
+      $infos = [
         'htmlid'      => $this->getHtmlId(),
         'label'       => $this->getLabel(),
         'required'    => $this->isRequired(),
@@ -621,7 +621,7 @@ class Attribute
         'value'       => $this->getValue(),
         'default'     => $this->defaultValue,
         'type'        => $type,
-      );
+      ];
       if (!$form) {
         $infos['inldap']   = $this->isInLdap();
         $infos['visible']  = $this->visible;
@@ -657,10 +657,10 @@ class Attribute
   function getAclInfo ()
   {
     if (empty($this->acl)) {
-      return array(
+      return [
         'name' => $this->getHtmlId(),
         'desc' => $this->getDescription()
-      );
+      ];
     } else {
       /* If acl is not empty, we use an acl that is not ours, we have no acl to create */
       return FALSE;
@@ -679,7 +679,7 @@ class Attribute
 
   public function htmlIds()
   {
-    return array($this->getHtmlId());
+    return [$this->getHtmlId()];
   }
 
   protected function managedAttributesJS ()
@@ -728,7 +728,7 @@ class Attribute
     return ($this->getValue() == $value);
   }
 
-  protected function renderInputField($type, $name, $attributes = array())
+  protected function renderInputField($type, $name, $attributes = [])
   {
     $input  = '<input type="'.$type.'" '.
               'name="'.$name.'" id="'.$name.'"'.
@@ -773,7 +773,7 @@ class HiddenArrayAttribute extends HiddenAttribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
@@ -853,7 +853,7 @@ class DisplayLDAPArrayAttribute extends Attribute
   protected function loadAttrValue ($attrs)
   {
     if (isset($attrs[$this->getLdapName()]['count'])) {
-      $this->value = array();
+      $this->value = [];
       for ($i = 0; $i < $attrs[$this->getLdapName()]['count']; $i++) {
         $this->value[] = $attrs[$this->getLdapName()][$i];
       }
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index 9188182b8..6f0dadf7a 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -176,7 +176,7 @@ class DialogAttribute extends SetAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->attribute = FALSE;
@@ -217,7 +217,7 @@ class DialogAttribute extends SetAttribute
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 
   function loadPostValue ()
@@ -245,21 +245,21 @@ class DialogAttribute extends SetAttribute
     if ($this->isTemplate()) {
       $buttons  .= $this->renderInputField(
         'text', $id,
-        array('value' => $this->editingValue)
+        ['value' => $this->editingValue]
       );
       $buttons  .= $this->renderInputField(
         'submit', 'add'.$id,
-        array('value' => '{msgPool type=addButton}')
+        ['value' => '{msgPool type=addButton}']
       );
       $dialogButtonValue = _('Add (dialog)');
     }
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => $dialogButtonValue)
+      ['value' => $dialogButtonValue]
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      array('value' => '{msgPool type=delButton}')
+      ['value' => '{msgPool type=delButton}']
     );
     return $buttons;
   }
@@ -267,7 +267,7 @@ class DialogAttribute extends SetAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    $ids = array('add'.$id.'_dialog','del'.$id,'row'.$id);
+    $ids = ['add'.$id.'_dialog','del'.$id,'row'.$id];
     if ($this->isTemplate()) {
       $ids[] = $id;
       $ids[] = 'add'.$id;
@@ -283,7 +283,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 {
   protected $dialogClass;
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     Attribute::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->edit_enabled = TRUE;
@@ -297,7 +297,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 
   function loadPostValue ()
@@ -333,7 +333,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
     $id = $this->getHtmlId();
     return $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => '{msgPool type=addButton}')
+      ['value' => '{msgPool type=addButton}']
     );
   }
 
@@ -356,11 +356,11 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
  */
 class GenericDialogAttribute extends DialogAttribute
 {
-  protected $displays     = array();
+  protected $displays     = [];
   protected $store_attr   = 'dn';
   protected $display_attr = 'cn';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $store_attr = 'dn', $display_attr = 'cn', $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $store_attr = 'dn', $display_attr = 'cn', $acl = '')
   {
     $this->store_attr   = $store_attr;
     $this->display_attr = $display_attr;
@@ -369,7 +369,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return array($this->store_attr => $this->getValue());
+    return [$this->store_attr => $this->getValue()];
   }
 
   function addValue ($dn, $attrs)
@@ -432,7 +432,7 @@ class GenericDialogAttribute extends DialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return array($this->display_attr);
+    return [$this->display_attr];
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -503,7 +503,7 @@ class UsersGroupsAttribute extends GenericDialogAttribute
 
   protected function ldapAttributesToGet ()
   {
-    return array('cn', 'uid', 'objectClass');
+    return ['cn', 'uid', 'objectClass'];
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -546,7 +546,7 @@ class GroupsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass = 'GroupSelectDialog';
 
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = '')
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
     parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', 'cn', $acl);
   }
@@ -583,14 +583,14 @@ class MailsAttribute extends DialogAttribute
    *  \param array $defaultValue The default value for this attribute
    *  \param string $acl The name of the acl for this attribute if he does not use its own. (Leave empty if he should use its own like most attributes do)
    */
-  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = array(), $acl = "")
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = "")
   {
     SetAttribute::__construct(new MailAttribute($label, $description, $ldapName, $required, "", $acl), $defaultValue);
   }
 
   function getFilterBlackList ()
   {
-    return array('mail' => $this->getValue());
+    return ['mail' => $this->getValue()];
   }
 
   function addValue ($dn, $attrs)
@@ -606,15 +606,15 @@ class MailsAttribute extends DialogAttribute
     $id = $this->getHtmlId();
     $buttons  = $this->renderInputField(
       'submit', 'add'.$id,
-      array('value' => '{msgPool type=addButton}')
+      ['value' => '{msgPool type=addButton}']
     );
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
-      array('value' => '{msgPool type=addButton} (from list)')
+      ['value' => '{msgPool type=addButton} (from list)']
     );
     $buttons  .= $this->renderInputField(
       'submit', 'del'.$id,
-      array('value' => '{msgPool type=delButton}')
+      ['value' => '{msgPool type=delButton}']
     );
     return $buttons;
   }
@@ -622,7 +622,7 @@ class MailsAttribute extends DialogAttribute
   public function htmlIds()
   {
     $id = $this->getHtmlId();
-    return array('add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id);
+    return ['add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id];
   }
 }
 
@@ -643,7 +643,7 @@ class SystemsAttribute extends DialogAttribute
 
   function getFilterBlackList ()
   {
-    return array('cn' => $this->getValue());
+    return ['cn' => $this->getValue()];
   }
 }
 
@@ -670,7 +670,7 @@ class ButtonAttribute extends Attribute
     $id = $this->getHtmlId();
     $display = $this->renderInputField(
       'submit', $id,
-      array('value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}')
+      ['value' => '{literal}'.htmlentities($this->buttonText, ENT_COMPAT, 'UTF-8').'{/literal}']
     );
     return $this->renderAcl($display);
   }
@@ -716,12 +716,12 @@ class DialogButtonAttribute extends ButtonAttribute
 
   function getFilterBlackList ()
   {
-    return array();
+    return [];
   }
 
   function getFilterWhiteList ()
   {
-    return array();
+    return [];
   }
 }
 
@@ -748,9 +748,9 @@ class UserAttribute extends DialogButtonAttribute
     if ($this->isTemplate()) {
       $display = $this->renderInputField(
         'text', $id,
-        array(
+        [
           'value' => '{literal}'.htmlentities($this->getValue(), ENT_COMPAT, 'UTF-8').'{/literal}'
-        )
+        ]
       );
     } else {
       $display  = '<img src="geticon.php?context=types&amp;icon=user&amp;size=16" alt="user icon" class="center"/>';
@@ -764,22 +764,22 @@ class UserAttribute extends DialogButtonAttribute
     }
     $display .= $this->renderInputField(
       'image', $id.'_dialog',
-      array(
+      [
         'class' => 'center',
         'src'   => 'geticon.php?context=actions&amp;icon=document-edit&amp;size=16',
         'title' => _('Edit'),
         'alt'   => _('Edit')
-      )
+      ]
     );
     if (!$this->isRequired()) {
       $display .= $this->renderInputField(
         'image', $id.'_remove',
-        array(
+        [
           'class' => 'center',
           'src'   => 'geticon.php?context=actions&amp;icon=remove&amp;size=16',
           'title' => _('Remove'),
           'alt'   => _('Remove')
-        )
+        ]
       );
     }
     return $this->renderAcl($display);
@@ -833,7 +833,7 @@ class UserAttribute extends DialogButtonAttribute
   public function htmlIds()
   {
     $id   = $this->getHtmlId();
-    $ids  = array($id.'_dialog');
+    $ids  = [$id.'_dialog'];
     if ($this->isTemplate()) {
       $ids[] = $id;
     }
@@ -851,7 +851,7 @@ class GenericSimplePluginDialog extends GenericDialog
 {
   protected $initialDialogValue = NULL;
 
-  function __construct($simplePlugin, $attribute, $value = array())
+  function __construct($simplePlugin, $attribute, $value = [])
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass('new');
@@ -895,7 +895,7 @@ class GenericSimplePluginDialog extends GenericDialog
       return $this->dialog->execute().$this->buttons();
     }
 
-    $value = array();
+    $value = [];
     foreach ($this->dialog->attributes as $attr) {
       $value[$attr] = $this->dialog->$attr;
     }
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index 01170c186..987ab3850 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -182,9 +182,9 @@ class CommaListAttribute extends CompositeAttribute
   {
     parent::__construct(
       $attribute->getDescription(), $ldapName,
-      array(
+      [
         $attribute
-      ), '', ''
+      ], '', ''
     );
     $this->sep = $sep;
   }
@@ -192,9 +192,9 @@ class CommaListAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value == '') {
-      return array(array());
+      return [[]];
     } else {
-      return array(explode($this->sep, $value));
+      return [explode($this->sep, $value)];
     }
   }
 
@@ -213,10 +213,10 @@ class UnitIntAttribute extends CompositeAttribute
   function __construct ($label, $description, $ldapName, $required, $units, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
     parent::__construct($description, $ldapName,
-      array(
+      [
         new IntAttribute('', '', $ldapName.'_int', $required, $min, $max, $defaultValue),
         new SelectAttribute('', '', $ldapName.'_select', TRUE, array_keys($units), '', array_values($units)),
-      ), '', '',
+      ], '', '',
       $acl, $label
     );
     $this->setLinearRendering(TRUE);
@@ -226,12 +226,12 @@ class UnitIntAttribute extends CompositeAttribute
   function readValues($value)
   {
     if ($value === '') {
-      return array('', 0);
+      return ['', 0];
     }
     $choices = $this->attributes[1]->getChoices();
     sort($choices);
     if ($value == 0) {
-      return array($value, $choices[0]);
+      return [$value, $choices[0]];
     }
     /* Find the appropriate unit */
     for (
@@ -239,7 +239,7 @@ class UnitIntAttribute extends CompositeAttribute
       ($value % $choices[$i] != 0) && ($i > 0);
       $i--
     );
-    return array($value / $choices[$i], $choices[$i]);
+    return [$value / $choices[$i], $choices[$i]];
   }
 
   function writeValues($values)
@@ -264,13 +264,13 @@ class BytesSizeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = array(
+    $units = [
       1             => _('B'),
       pow(1024, 1)  => _('KiB'),
       pow(1024, 2)  => _('MiB'),
       pow(1024, 3)  => _('GiB'),
       pow(1024, 4)  => _('TiB'),
-    );
+    ];
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
@@ -282,12 +282,12 @@ class TimeAttribute extends UnitIntAttribute
 {
   function __construct ($label, $description, $ldapName, $required, $min = FALSE, $max = FALSE, $defaultValue = "", $acl = "")
   {
-    $units = array(
+    $units = [
       1     => _('seconds'),
       60    => _('minutes'),
       3600  => _('hours'),
       86400 => _('days'),
-    );
+    ];
     parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index b6787011f..dc3d03d4e 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -26,15 +26,15 @@
 class multiPlugin extends simplePlugin
 {
   /* attribute list for save action */
-  var $objectclasses  = array();
+  var $objectclasses  = [];
   var $ignore_account = TRUE;
-  var $plugin         = array();
+  var $plugin         = [];
 
   var $tabClass = '';
 
   static function getAttributesInfo ()
   {
-    return array();
+    return [];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL)
@@ -156,7 +156,7 @@ class multiPlugin extends simplePlugin
   /* Save to LDAP */
   function save()
   {
-    $errors = array();
+    $errors = [];
     /* Save objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -175,7 +175,7 @@ class multiPlugin extends simplePlugin
 
   function remove($fulldelete = FALSE)
   {
-    $errors = array();
+    $errors = [];
     /* Remove objects */
     foreach ($this->plugin as &$plug) {
       $plug->dn = $this->dn;
@@ -188,7 +188,7 @@ class multiPlugin extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     /* Adapt objects */
     foreach ($this->plugin as &$plug) {
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index b372dbfe3..a25077180 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -132,14 +132,14 @@ class simpleManagement
   // The currently used object(s) (e.g. in edit, removal)
   // $dn is public due to some compatibility problems with class plugin..
   public $dn      = '';
-  protected $dns  = array();
+  protected $dns  = [];
 
   // The last used object(s).
   protected $last_dn  = '';
-  protected $last_dns = array();
+  protected $last_dns = [];
 
   // The common places the displayed objects are stored in. (e.g. array("ou=groups,",".."))
-  protected $storagePoints = array();
+  protected $storagePoints = [];
 
   // The opened object.
   protected $tabObject    = NULL;
@@ -172,14 +172,14 @@ class simpleManagement
   protected $filter   = NULL;
 
   // A list of configured actions/events
-  protected $actions = array();
+  protected $actions = [];
 
   // Some management classes are used in tab groups and needs this
   public $is_template = FALSE;
-  public $attributes  = array();
+  public $attributes  = [];
 
   /* Attributes that child classes should override */
-  protected $objectTypes  = array();
+  protected $objectTypes  = [];
 
   /* Attributes that child classes can override */
   protected $departmentBrowser      = TRUE;
@@ -193,7 +193,7 @@ class simpleManagement
   protected $autoActions      = TRUE;
   protected $skipCpHandler    = FALSE;
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description'];
 
   protected $headpageClass = "listing";
 
@@ -216,7 +216,7 @@ class simpleManagement
     }
     unset($object);
 
-    $this->storagePoints = array();
+    $this->storagePoints = [];
     foreach ($this->objectTypes as $key => $object) {
       try {
         $i = objects::infos($object);
@@ -286,22 +286,22 @@ class simpleManagement
   {
     if ($this->autoActions) {
       if (static::$skipTemplates) {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array();
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [];
       } else {
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = array(
-          array(
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'] = [
+          [
             'type'    => 'sub',
             'image'   => 'geticon.php?context=devices&icon=template&size=16',
             'label'   => _('Template'),
-            'action'  => array(),
-          ),
-          array(
+            'action'  => [],
+          ],
+          [
             'type'    => 'sub',
             'image'   => 'geticon.php?context=actions&icon=document-new&size=16',
             'label'   => _('From template'),
-            'action'  => array(),
-          ),
-        );
+            'action'  => [],
+          ],
+        ];
       }
     }
     $this->configureHeadline();
@@ -315,17 +315,17 @@ class simpleManagement
 
       $filterObject = objects::getFilterObject($object);
       $this->headpage->objectTypes[$object] =
-        array(
+        [
           'label'       => $i['name'],
           'category'    => $i['aclCategory'],
           'class'       => $i['mainTab'],
           'image'       => $i['icon'],
           'filter'      => $filterObject,
           'nameAttr'    => $i['nameAttr'],
-        );
+        ];
       if (!static::$skipTemplates) {
         $this->headpage->objectTypes['template_'.$object] =
-          array(
+          [
             'label'       => sprintf(_('%s template'), $i['name']),
             'category'    => $i['aclCategory'],
             'class'       => 'template',
@@ -333,13 +333,13 @@ class simpleManagement
             'filter'      =>
               new ldapFilter(
                 '&',
-                array(
+                [
                   new ldapFilterLeaf('objectClass', '=', 'fdTemplate'),
                   fdTemplateFilter($filterObject),
-                )
+                ]
               ),
             'nameAttr'    => $i['nameAttr'],
-          );
+          ];
       }
       $this->headpage->categories[] = $i['aclCategory'];
       if ($this->autoActions) {
@@ -353,30 +353,30 @@ class simpleManagement
             $icon = $infos['plIcon'];
           }
         }
-        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][0]['action'][] = [
           'name'  => 'new_'.$object,
           'type'  => 'entry',
           'image' => $icon,
           'label' => $i['name'],
           'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-        );
+        ];
         if (!static::$skipTemplates) {
           $this->registerAction('new_template_'.$object, 'newEntryTemplate');
           $this->registerAction('template_apply_'.$object, 'newEntryFromTemplate');
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = array(
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][0]['action'][] = [
             'name'  => 'new_template_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/template[c]',
-          );
-          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = array(
+          ];
+          $this->headpage->xmlData['actionmenu']['action'][0]['action'][1]['action'][] = [
             'name'  => 'template_apply_'.$object,
             'type'  => 'entry',
             'image' => $icon,
             'label' => $i['name'],
             'acl'   => $i['aclCategory'].'/'.$i['mainTab'].'[c]',
-          );
+          ];
         }
       }
     }
@@ -426,13 +426,13 @@ class simpleManagement
         $tag    = 'FILTER'.$object;
         $filter .= '$'.$tag;
         $i      = objects::infos($object);
-        $this->filter->elements[$tag] = array(
+        $this->filter->elements[$tag] = [
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => array(),
+          'unset'   => [],
           'set'     => preg_replace('/\$/', '\\\$', $i['filter'])
-        );
+        ];
         $this->filter->elementValues[$tag] = TRUE;
 
         if ($i['mainAttr']) {
@@ -445,13 +445,13 @@ class simpleManagement
       if (!static::$skipTemplates) {
         $tag    = 'FILTERTEMPLATE';
         $filter .= '$'.$tag;
-        $this->filter->elements[$tag] = array(
+        $this->filter->elements[$tag] = [
           'type'    => 'checkbox',
           'tag'     => $tag,
           'default' => TRUE,
-          'unset'   => array(),
+          'unset'   => [],
           'set'     => '(objectClass=fdTemplate)'
-        );
+        ];
         $this->filter->elementValues[$tag] = TRUE;
 
         $attributes[] = 'fdTemplateField';
@@ -472,7 +472,7 @@ class simpleManagement
   {
     $contents = file_get_contents($file);
     $data     = xml::xml2array($contents, 1);
-    foreach (array('departmentBrowser','departmentRootVisible','baseMode','multiSelect') as $var) {
+    foreach (['departmentBrowser','departmentRootVisible','baseMode','multiSelect'] as $var) {
       $data['list']['definition']["$var"] = ($this->$var ? 'true' : 'false');
     }
     return $data;
@@ -519,18 +519,18 @@ class simpleManagement
   {
     global $config;
     $smarty = get_smarty();
-    $filters = array();
+    $filters = [];
     foreach ($this->objectTypes as $object) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTER'.$object,
         'label' => sprintf(_('Show %s'), $config->data['OBJECTS'][$object]['name'])
-      );
+      ];
     }
     if (!static::$skipTemplates) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      );
+      ];
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
@@ -545,7 +545,7 @@ class simpleManagement
   function execute()
   {
     // Ensure that html posts and gets are kept even if we see a 'Entry islocked' dialog.
-    $vars = array('/^act$/','/^listing/','/^PID$/');
+    $vars = ['/^act$/','/^listing/','/^PID$/'];
     session::set('LOCK_VARS_TO_USE', $vars);
 
     /* Display the copy & paste dialog, if it is currently open */
@@ -593,7 +593,7 @@ class simpleManagement
 
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = array();
+      $bases = [];
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -757,7 +757,7 @@ class simpleManagement
       return;
     }
     if ($cancel) {
-      $msgs = array();
+      $msgs = [];
     } else {
       $msgs = $this->tabObject->save();
     }
@@ -910,7 +910,7 @@ class simpleManagement
   {
     if (!is_object($this->headpage)) {
       trigger_error("No valid headpage given....!");
-      return array();
+      return [];
     }
     $action = $this->headpage->getAction();
     if (isset($_POST['edit_cancel'])) {
@@ -941,7 +941,7 @@ class simpleManagement
     if (isset($this->actions[$action['action']])) {
       $func = $this->actions[$action['action']];
       if (!isset($action['targets'])) {
-        $action['targets'] = array();
+        $action['targets'] = [];
       }
       return $this->$func($action['action'], $action['targets'], $action);
     }
@@ -977,7 +977,7 @@ class simpleManagement
     $this->last_dn  = $this->dn;
     $this->dn       = "";
     $this->last_dns = $this->dns;
-    $this->dns      = array();
+    $this->dns      = [];
 
     $this->last_tabObject     = $this->tabObject;
     $this->tabObject          = NULL;
@@ -1015,8 +1015,8 @@ class simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $ui;
-    $disallowed = array();
-    $this->dns  = array();
+    $disallowed = [];
+    $this->dns  = [];
 
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal requested!");
 
@@ -1051,7 +1051,7 @@ class simpleManagement
       }
 
       // Add locks
-      $objects = array();
+      $objects = [];
       foreach ($this->dns as $dn) {
         $type   = $this->getType($dn);
         if (preg_match('/^template_/', $type) && !static::$skipTemplates) {
@@ -1062,12 +1062,12 @@ class simpleManagement
           $info = objects::infos($type);
         }
         $entry  = $this->getHeadpage()->getEntry($dn);
-        $objects[] = array(
+        $objects[] = [
           'name'  => $entry[$info['mainAttr']][0],
           'dn'    => $dn,
           'icon'  => $info['icon'],
           'type'  => $info['name']
-        );
+        ];
       }
       add_lock ($this->dns, $ui->dn);
 
@@ -1105,7 +1105,7 @@ class simpleManagement
         del_lock($this->dn);
       } else {
         msg_dialog::display(_('Permission error'), msgPool::permDelete($dn), ERROR_DIALOG);
-        logging::log('security', 'simpleManagement/'.get_class($this), $dn, array(), 'Tried to trick deletion.');
+        logging::log('security', 'simpleManagement/'.get_class($this), $dn, [], 'Tried to trick deletion.');
       }
     }
 
@@ -1155,7 +1155,7 @@ class simpleManagement
     global $config, $ui;
     // Set current restore base for snapshot handling.
     if (is_object($this->snapHandler)) {
-      $bases = array();
+      $bases = [];
       foreach ($this->storagePoints as $sp) {
         $bases[] = $sp.$this->headpage->getBase();
       }
@@ -1196,7 +1196,7 @@ class simpleManagement
    *  @param  array   $target  A list of object dns, which should be affected by this method.
    *  @param  array   $all     A combination of both 'action' and 'target'.
    */
-  function copyPasteHandler($action = '', array $target = array(), array $all = array())
+  function copyPasteHandler($action = '', array $target = [], array $all = [])
   {
     global $ui;
     // Return without any actions while copy&paste handler is disabled.
@@ -1293,7 +1293,7 @@ class simpleManagement
    */
   function getAllDeletedSnapshots()
   {
-    $tmp = array();
+    $tmp = [];
     $snapshotBases = $this->snapHandler->getSnapshotBases();
     if (is_array($snapshotBases)) {
       foreach ($snapshotBases as $base) {
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 40aba6b15..19d85044c 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -35,7 +35,7 @@ class simplePlugin
    *
    * associative array that stores attributeLdapName => reference on object
    */
-  public $attributesAccess = array();
+  public $attributesAccess = [];
 
   /*!
     \brief Mark plugin as account
@@ -87,13 +87,13 @@ class simplePlugin
 
     This should only be used internally.
    */
-  public $attrs = array();
+  public $attrs = [];
 
   /*! \brief The objectClasses set by this tab */
-  protected $objectclasses = array();
+  protected $objectclasses = [];
 
   /*! \brief The state of the attributes when we opened the object */
-  protected $saved_attributes = array();
+  protected $saved_attributes = [];
 
   /*! \brief Do we want a header allowing to able/disable this plugin */
   protected $displayHeader = FALSE;
@@ -112,14 +112,14 @@ class simplePlugin
   protected $needEditMode = FALSE;
 
   /*! \brief Attributes that needs to be initialized before the others */
-  protected $preInitAttributes = array();
+  protected $preInitAttributes = [];
 
   /*! \brief FALSE to disable inheritance. Array like array ('objectClass' => 'attribute') to specify oc of the groups it might be inherited from
    */
   protected $inheritance      = FALSE;
   protected $member_of_group  = FALSE;
   protected $editing_group    = NULL;
-  protected $group_attrs      = array();
+  protected $group_attrs      = [];
 
   /*! \brief Used when the entry is opened as "readonly" due to locks */
   protected $read_only = FALSE;
@@ -163,9 +163,9 @@ class simplePlugin
       $this->ignore_account = TRUE;
     }
 
-    $this->attributesInfo = array();
+    $this->attributesInfo = [];
     foreach ($attributesInfo as $section => $sectionInfo) {
-      $attrs = array();
+      $attrs = [];
       foreach ($sectionInfo['attrs'] as $attr) {
         $name = $attr->getLdapName();
         if (isset($attrs[$name])) {
@@ -339,24 +339,24 @@ class simplePlugin
     if ($this->is_template && $this->mainTab) {
       /* Unshift special section for template infos */
       $this->attributesInfo = array_merge(
-        array(
-          '_template' => array(
-            'class' => array('fullwidth'),
+        [
+          '_template' => [
+            'class' => ['fullwidth'],
             'name'  => _('Template settings'),
-            'attrs' => array(
+            'attrs' => [
               '_template_cn' => new StringAttribute(
                 _('Template name'), _('This is the name of the template'),
                 '_template_cn', TRUE,
                 '', 'template_cn'
               )
-            )
-          ),
-          '_template_dummy' => array(
-            'class' => array('invisible'),
+            ]
+          ],
+          '_template_dummy' => [
+            'class' => ['invisible'],
             'name'  => '_template_dummy',
-            'attrs' => array()
-          )
-        ),
+            'attrs' => []
+          ]
+        ],
         $this->attributesInfo
       );
       $this->attributesAccess['_template_cn'] =& $this->attributesInfo['_template']['attrs']['_template_cn'];
@@ -385,10 +385,10 @@ class simplePlugin
       if (!$this->mainTab) {
         trigger_error('It seems main tab has not been saved.');
       }
-      $template_attrs = array(
-        'objectClass'     => array('fdTemplate'),
-        'fdTemplateField' => array()
-      );
+      $template_attrs = [
+        'objectClass'     => ['fdTemplate'],
+        'fdTemplateField' => []
+      ];
     }
     $template_attrs = templateHandling::fieldsToLDAP($template_attrs, $this->attrs);
     if ($this->mainTab) {
@@ -532,7 +532,7 @@ class simplePlugin
   function get_allowed_bases()
   {
     global $config;
-    $deps = array();
+    $deps = [];
 
     /* Is this a new object ? Or just an edited existing object */
     foreach ($config->idepartments as $dn => $name) {
@@ -596,7 +596,7 @@ class simplePlugin
     $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn));
     if (!$ldap->rename_dn($src_dn, $dst_dn)) {
       logging::log('debug', 'Ldap Protocol v3 implementation error, ldap_rename failed.',
-        "FROM: $src_dn  -- TO: $dst_dn", array(), $ldap->get_error());
+        "FROM: $src_dn  -- TO: $dst_dn", [], $ldap->get_error());
       @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, "Rename failed FROM: $src_dn  -- TO:  $dst_dn",
         'Ldap Protocol v3 implementation error. Error:'.$ldap->get_error());
       return $ldap->get_error();
@@ -605,13 +605,13 @@ class simplePlugin
     /* Update userinfo if necessary */
     if (preg_match('/'.preg_quote($src_dn, '/').'$/i', $ui->dn)) {
       $ui_dn = preg_replace('/'.preg_quote($src_dn, '/').'$/i', $dst_dn, $ui->dn);
-      logging::log('view', 'acl/'.get_class($this), $this->dn, array(), 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
+      logging::log('view', 'acl/'.get_class($this), $this->dn, [], 'Updated userinfo dn from "'.$ui->dn.'" to "'.$ui_dn.'"');
       $ui->dn = $ui_dn;
     }
 
     /* Check if departments were moved. If so, force the reload of config->departments */
     $ldap->cd($dst_dn);
-    $ldap->search('(objectClass=gosaDepartment)', array('dn'));
+    $ldap->search('(objectClass=gosaDepartment)', ['dn']);
     if ($ldap->count()) {
       $config->get_departments();
       $config->make_idepartments();
@@ -624,7 +624,7 @@ class simplePlugin
 
   function getRequiredAttributes()
   {
-    $tmp = array();
+    $tmp = [];
     foreach ($this->attributesAccess as $attr) {
       if ($attr->isRequired()) {
         $tmp[] = $attr->getLdapName();
@@ -658,10 +658,10 @@ class simplePlugin
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "execute");
 
     /* Reset Lock message POST/GET check array, to prevent preg_match errors */
-    session::set('LOCK_VARS_TO_USE', array());
-    session::set('LOCK_VARS_USED_GET', array());
-    session::set('LOCK_VARS_USED_POST', array());
-    session::set('LOCK_VARS_USED_REQUEST', array());
+    session::set('LOCK_VARS_TO_USE', []);
+    session::set('LOCK_VARS_USED_GET', []);
+    session::set('LOCK_VARS_USED_POST', []);
+    session::set('LOCK_VARS_USED_REQUEST', []);
 
     $this->displayPlugin  = TRUE;
     $this->header         = "";
@@ -721,7 +721,7 @@ class simplePlugin
     $plInfo   = pluglist::pluginInfos(get_class($this));
     $disabled = $this->acl_skip_write();
     if ($this->is_account) {
-      $depends = array();
+      $depends = [];
       if (isset($plInfo['plDepending'])) {
         foreach ($plInfo['plDepending'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -735,8 +735,8 @@ class simplePlugin
       $buttonText = msgPool::removeFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresEnabled($plInfo['plShortName'], $depends);
     } else {
-      $depends    = array();
-      $conflicts  = array();
+      $depends    = [];
+      $conflicts  = [];
       if (isset($plInfo['plDepends'])) {
         foreach ($plInfo['plDepends'] as $plugin) {
           if (isset($this->parent->by_object[$plugin]) &&
@@ -760,7 +760,7 @@ class simplePlugin
       $buttonText = msgPool::addFeaturesButton($plInfo['plShortName']);
       $text       = msgPool::featuresDisabled($plInfo['plShortName'], $depends, $conflicts);
     }
-    return array($disabled,$buttonText,$text);
+    return [$disabled,$buttonText,$text];
   }
 
   /*!
@@ -826,7 +826,7 @@ class simplePlugin
       }
     }
 
-    $sections = array();
+    $sections = [];
     foreach ($this->attributesInfo as $section => $sectionInfo) {
       $legend = $sectionInfo['name'];
       if (isset($sectionInfo['icon'])) {
@@ -842,7 +842,7 @@ class simplePlugin
       } else {
         $smarty->assign("sectionClasses", '');
       }
-      $attributes = array();
+      $attributes = [];
       foreach ($sectionInfo['attrs'] as $attr) {
         if ($attr->getAclInfo() !== FALSE) {
           // We assign ACLs so that attributes can use them in their template code
@@ -970,18 +970,18 @@ class simplePlugin
   function remove($fulldelete = FALSE)
   {
     if (!$this->initially_was_account) {
-      return array();
+      return [];
     }
 
     if (!$fulldelete && !$this->acl_is_removeable()) {
       trigger_error('remove was called on a tab without enough ACL rights');
-      return array();
+      return [];
     }
 
     $this->prepare_remove();
     if ($this->is_template && (!defined('_OLD_TEMPLATES_') || !_OLD_TEMPLATES_)) {
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = array();
+      $this->saved_attributes = [];
     }
     /* Pre hooks */
     $errors = $this->pre_remove();
@@ -993,14 +993,14 @@ class simplePlugin
       return $errors;
     }
     $this->post_remove();
-    return array();
+    return [];
   }
 
   /* Remove FusionDirectory attributes */
   protected function prepare_remove ()
   {
     global $config;
-    $this->attrs = array();
+    $this->attrs = [];
 
     if (!$this->mainTab) {
       /* include global link_info */
@@ -1009,7 +1009,7 @@ class simplePlugin
       /* Get current objectClasses in order to add the required ones */
       $ldap->cat($this->dn);
       $tmp  = $ldap->fetch ();
-      $oc   = array();
+      $oc   = [];
       if ($this->is_template) {
         if (isset($tmp['fdTemplateField'])) {
           foreach ($tmp['fdTemplateField'] as $tpl_field) {
@@ -1030,7 +1030,7 @@ class simplePlugin
 
       /* Unset attributes from entry */
       foreach ($this->attributes as $val) {
-        $this->attrs["$val"] = array();
+        $this->attrs["$val"] = [];
       }
     }
   }
@@ -1056,9 +1056,9 @@ class simplePlugin
     $this->ldap_error = $ldap->get_error();
 
     if ($ldap->success()) {
-      return array();
+      return [];
     } else {
-      return array(msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class()));
+      return [msgPool::ldaperror($this->ldap_error, $this->dn, LDAP_MOD, get_class())];
     }
   }
 
@@ -1211,11 +1211,11 @@ class simplePlugin
         return $errors;
       }
       $this->attrs = $this->templateSaveAttrs();
-      $this->saved_attributes = array();
+      $this->saved_attributes = [];
     }
     $this->cleanup();
     if (!$this->shouldSave()) {
-      return array(); /* Nothing to do here */
+      return []; /* Nothing to do here */
     }
     /* Pre hooks */
     $errors = $this->pre_save();
@@ -1230,7 +1230,7 @@ class simplePlugin
     $this->prepareNextCleanup();
     /* Post hooks and logging */
     $this->post_save();
-    return array();
+    return [];
   }
 
   protected function shouldSave()
@@ -1256,13 +1256,13 @@ class simplePlugin
     $this->entryCSN = '';
 
     /* Start with empty array */
-    $this->attrs = array();
+    $this->attrs = [];
 
     /* Get current objectClasses in order to add the required ones */
-    $ldap->cat($this->dn, array('fdTemplateField', 'objectClass'));
+    $ldap->cat($this->dn, ['fdTemplateField', 'objectClass']);
 
     $tmp  = $ldap->fetch();
-    $oc   = array();
+    $oc   = [];
 
     if ($this->is_template) {
       if (isset($tmp['fdTemplateField'])) {
@@ -1294,7 +1294,7 @@ class simplePlugin
       }
     }
 
-    return array();
+    return [];
   }
 
   protected function pre_save ()
@@ -1313,17 +1313,17 @@ class simplePlugin
 
     /* Check if this is a new entry ... add/modify */
     $ldap = $config->get_ldap_link();
-    $ldap->cat($this->dn, array("objectClass"));
+    $ldap->cat($this->dn, ["objectClass"]);
     if ($this->mainTab && !$this->initially_was_account) {
       if ($ldap->count()) {
-        return array(sprintf(_('There is already an entry with the same dn : %s'), $this->dn));
+        return [sprintf(_('There is already an entry with the same dn : %s'), $this->dn)];
       }
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
       $action = "add";
     } else {
       if (!$ldap->count()) {
-        return array(sprintf(_('The entry %s is not existing'), $this->dn));
+        return [sprintf(_('The entry %s is not existing'), $this->dn)];
       }
       $action = "modify";
     }
@@ -1334,9 +1334,9 @@ class simplePlugin
 
     /* Check for errors */
     if (!$ldap->success()) {
-      return array(msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class()));
+      return [msgPool::ldaperror($this->ldap_error, $this->dn, 0, get_class())];
     }
-    return array();
+    return [];
   }
 
   /*! \brief This function is called after LDAP save to do some post operations and logging
@@ -1367,7 +1367,7 @@ class simplePlugin
    *
    * \param  array  $addAttrs
    */
-  protected function handle_hooks($when, $mode, array $addAttrs = array())
+  protected function handle_hooks($when, $mode, array $addAttrs = [])
   {
     switch ($mode) {
       case 'add':
@@ -1388,7 +1388,7 @@ class simplePlugin
   /*! \brief Forward command execution requests
    *         to the post hook execution method.
    */
-  function handle_post_events($mode, array $addAttrs = array())
+  function handle_post_events($mode, array $addAttrs = [])
   {
     /* Update foreign keys */
     if ($mode == 'remove') {
@@ -1403,7 +1403,7 @@ class simplePlugin
    *  \brief Forward command execution requests
    *         to the pre hook execution method.
    */
-  function handle_pre_events($mode, array $addAttrs = array())
+  function handle_pre_events($mode, array $addAttrs = [])
   {
     global $config;
 
@@ -1412,7 +1412,7 @@ class simplePlugin
       /* Store information if there was subobjects before deletion */
       $ldap = $config->get_ldap_link();
       $ldap->cd($this->dn);
-      $ldap->search('(objectClass=*)', array('dn'), 'one');
+      $ldap->search('(objectClass=*)', ['dn'], 'one');
       $this->hadSubobjects = ($ldap->count() > 0);
     }
     return $this->handle_hooks('PRE', $mode, $addAttrs);
@@ -1423,15 +1423,15 @@ class simplePlugin
    *           Replaces placeholder by class values of this plugin instance.
    *       Allows to a add special replacements.
    */
-  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
+  function callHook($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     if ($this->is_template) {
-      return array();
+      return [];
     }
     global $config;
 
     $commands = $config->searchHooks(get_class($this), $cmd);
-    $messages = array();
+    $messages = [];
 
     foreach ($commands as $command) {
       // Walk trough attributes list and add the plugins attributes.
@@ -1494,7 +1494,7 @@ class simplePlugin
   function check ()
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'check');
-    $messages = array();
+    $messages = [];
 
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
@@ -1509,7 +1509,7 @@ class simplePlugin
       }
     }
 
-    $error = $this->callHook('CHECK', array('nbCheckErrors' => count($messages)), $returnOutput);
+    $error = $this->callHook('CHECK', ['nbCheckErrors' => count($messages)], $returnOutput);
     if (!empty($error)) {
       $messages = array_merge($messages, $error);
     }
@@ -1552,14 +1552,14 @@ class simplePlugin
     if (preg_match('/^handle_/', $mode)) {
       $olddn    = $param1;
       $newdn    = $param2;
-      $classes  = array(get_class($this));
+      $classes  = [get_class($this)];
       if (($olddn != $newdn) && $this->mainTab) {
         if ($newdn === NULL) {
           $subobjects = $this->hadSubobjects;
         } else {
           $ldap = $config->get_ldap_link();
           $ldap->cd($newdn);
-          $ldap->search('(objectClass=*)', array('dn'), 'one');
+          $ldap->search('(objectClass=*)', ['dn'], 'one');
           $subobjects = ($ldap->count() > 0);
         }
       }
@@ -1567,7 +1567,7 @@ class simplePlugin
       $classes = array_keys($this->parent->by_object);
     }
     // We group by objectType concerned
-    $foreignRefs = array();
+    $foreignRefs = [];
     if ($subobjects) {
       $field = 'dn';
       /* Special treatment for foreign keys on DN when moving an object
@@ -1586,11 +1586,11 @@ class simplePlugin
         }
         if ($class == 'aclAssignment') {
           /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-          $objectTypes = array('ACLASSIGNMENT');
+          $objectTypes = ['ACLASSIGNMENT'];
         } elseif (is_subclass_of($class, 'simpleService')) {
-          $objectTypes = array('SERVER');
+          $objectTypes = ['SERVER'];
         } else {
-          $objectTypes = array();
+          $objectTypes = [];
           $cinfos = pluglist::pluginInfos($class);
           foreach ($cinfos['plObjectType'] as $key => $objectType) {
             if (!is_numeric($key)) {
@@ -1608,13 +1608,13 @@ class simplePlugin
           $newvalue = $newdn;
 
           $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-            array(
+            [
               'tab'       => $classes[0],
               'field'     => $field,
               'oldvalue'  => $oldvalue,
               'newvalue'  => $newvalue,
-            );
-          $filter = templateHandling::parseString($filtersub, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
+            ];
+          $filter = templateHandling::parseString($filtersub, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
           if (!preg_match('/^\(.*\)$/', $filter)) {
             $filter = '('.$filter.')';
           }
@@ -1642,11 +1642,11 @@ class simplePlugin
           $cinfos = pluglist::pluginInfos($class);
           if ($class == 'aclAssignment') {
             /* Special case: aclAssignment foreignKey is ignored on department types as it’s handled by the aclAssignment objectType */
-            $objectTypes = array('ACLASSIGNMENT');
+            $objectTypes = ['ACLASSIGNMENT'];
           } elseif (is_subclass_of($class, 'simpleService')) {
-            $objectTypes = array('SERVER');
+            $objectTypes = ['SERVER'];
           } else {
-            $objectTypes = array();
+            $objectTypes = [];
             foreach ($cinfos['plObjectType'] as $key => $objectType) {
               if (!is_numeric($key)) {
                 $objectType = $key;
@@ -1671,24 +1671,24 @@ class simplePlugin
                 $newvalue = $this->attributeValue($field);
               }
               $foreignRefs[$objectType]['refs'][$class][$ofield][$field] =
-                array(
+                [
                   'tab'       => $tabclass,
                   'field'     => $field,
                   'oldvalue'  => $oldvalue,
                   'newvalue'  => $newvalue,
-                );
-              $filter = templateHandling::parseString($filter, array('oldvalue' => $oldvalue, 'newvalue' => $newvalue), 'ldap_escape_f');
+                ];
+              $filter = templateHandling::parseString($filter, ['oldvalue' => $oldvalue, 'newvalue' => $newvalue], 'ldap_escape_f');
             } elseif ($mode == 'references') {
               $foreignRefs[$objectType]['refs'][$class]['name'] = $cinfos['plShortName'];
 
               $foreignRefs[$objectType]['refs'][$class]['fields'][$ofield][$field] =
-                array(
+                [
                   'tab'     => $tabclass,
                   'field'   => $field,
                   'tabname' => $this->parent->by_name[$tabclass],
                   'value'   => $this->parent->by_object[$tabclass]->$field,
-                );
-              $filter = templateHandling::parseString($filter, array('oldvalue' => $this->parent->by_object[$tabclass]->$field), 'ldap_escape_f');
+                ];
+              $filter = templateHandling::parseString($filter, ['oldvalue' => $this->parent->by_object[$tabclass]->$field], 'ldap_escape_f');
             }
             if (!preg_match('/^\(.*\)$/', $filter)) {
               $filter = '('.$filter.')';
@@ -1701,7 +1701,7 @@ class simplePlugin
 
     /* Back up POST content */
     $SAVED_POST = $_POST;
-    $refs = array();
+    $refs = [];
     // For each concerned objectType
     foreach ($foreignRefs as $objectType => $tabRefs) {
       // Compute filter
@@ -1709,7 +1709,7 @@ class simplePlugin
       $filter = '(|'.join($filters).')';
       // Search objects
       try {
-        $objects = objects::ls($objectType, array('dn' => 'raw'), NULL, $filter);
+        $objects = objects::ls($objectType, ['dn' => 'raw'], NULL, $filter);
       } catch (NonExistingObjectTypeException $e) {
         continue;
       } catch (EmptyFilterException $e) {
@@ -1718,7 +1718,7 @@ class simplePlugin
       // For each object of this type
       foreach (array_keys($objects) as $dn) {
         /* Avoid sending POST to opened objects */
-        $_POST = array();
+        $_POST = [];
         // Build the object
         $tabobject = objects::open($dn, $objectType);
         if (preg_match('/^handle_/', $mode)) {
@@ -1735,12 +1735,12 @@ class simplePlugin
                     $ofield,
                     $field['oldvalue'],
                     $field['newvalue'],
-                    array(
+                    [
                       'CLASS' => $field['tab'],
                       'FIELD' => $field['field'],
                       'MODE'  => preg_replace('/^handle_/', '', $mode),
                       'DN'    => $this->dn,
-                    )
+                    ]
                   );
                 }
               }
@@ -1761,17 +1761,17 @@ class simplePlugin
                   if ($pluginobject->foreignKeyCheck(
                         $ofield,
                         $field['value'],
-                        array(
+                        [
                           'CLASS' => $field['tab'],
                           'FIELD' => $field['field'],
                           'DN'    => $this->dn,
-                        )
+                        ]
                       )) {
                     if (!isset($refs[$dn])) {
-                      $refs[$dn] = array(
+                      $refs[$dn] = [
                         'link'  => '',
-                        'tabs'  => array(),
-                      );
+                        'tabs'  => [],
+                      ];
                       try {
                         $refs[$dn]['link'] = objects::link($dn, $objectType);
                       } catch (FusionDirectoryException $e) {
@@ -1780,10 +1780,10 @@ class simplePlugin
                       }
                     }
                     if (!isset($refs[$dn]['tabs'][$tab])) {
-                      $refs[$dn]['tabs'][$tab] = array(
+                      $refs[$dn]['tabs'][$tab] = [
                         'link'    => '',
-                        'fields'  => array(),
-                      );
+                        'fields'  => [],
+                      ];
                       try {
                         if (is_subclass_of($tab, 'simpleService')) {
                           $refs[$dn]['tabs'][$tab]['link'] = objects::link($dn, $objectType, "service_$tab", sprintf(_('Service "%s"'), $tab_infos['name']));
@@ -1831,7 +1831,7 @@ class simplePlugin
     }
 
     /* Build DN with multiple attributes */
-    $usableAttributes = array();
+    $usableAttributes = [];
     foreach ($this->attributes as $attr) {
       if (($attr != $attribute) && is_scalar($this->$attr) && ($this->$attr != '')) {
         $usableAttributes[] = (string)$attr;
@@ -1861,7 +1861,7 @@ class simplePlugin
    *
    * \param array $skip A new array
    */
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     $this->attrs = $attrs;
 
@@ -1888,7 +1888,7 @@ class simplePlugin
     $this->dn       = 'new';
     $this->orig_dn  = $this->dn;
 
-    $this->saved_attributes       = array();
+    $this->saved_attributes       = [];
     $this->initially_was_account  = FALSE;
   }
 
@@ -1970,7 +1970,7 @@ class simplePlugin
    */
   static function plInfo()
   {
-    return array();
+    return [];
   }
 
   /*! \brief This function generate the needed ACLs for a given attribtues array
@@ -1979,7 +1979,7 @@ class simplePlugin
    */
   static function generatePlProvidedAcls ($attributesInfo)
   {
-    $plProvidedAcls = array();
+    $plProvidedAcls = [];
     foreach ($attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
         $aclInfo = $attr->getAclInfo();
@@ -2019,7 +2019,7 @@ class simplePlugin
       }
       $objectType = $key;
     }
-    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : array('user'));
+    $plCategory = (isset($plInfo['plCategory']) ? $plInfo['plCategory'] : ['user']);
     $key = key($plCategory);
     if (is_numeric($key)) {
       $plCategory = $plCategory[$key];
@@ -2081,7 +2081,7 @@ class simplePlugin
           /* Check locking */
           if ($locks = get_locks($entry_dn)) {
             session::set('back_plugin', $plug);
-            session::set('LOCK_VARS_TO_USE', array("/^edit$/", "/^plug$/"));
+            session::set('LOCK_VARS_TO_USE', ["/^edit$/", "/^plug$/"]);
             $lock_msg = gen_locked_message($locks, $entry_dn);
           } else {
             /* Lock the current entry */
diff --git a/include/simpleplugin/class_simpleService.inc b/include/simpleplugin/class_simpleService.inc
index 580492891..65d06ac7f 100644
--- a/include/simpleplugin/class_simpleService.inc
+++ b/include/simpleplugin/class_simpleService.inc
@@ -27,7 +27,7 @@ class simpleService extends simplePlugin
 
   protected $status = '';
 
-  public $conflicts   = array();
+  public $conflicts   = [];
   public $DisplayName = '';
 
   /*! \brief constructor
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index edc6049a3..57ccbb831 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -35,13 +35,13 @@ class simpleTabs
 
   public $objectType      = FALSE;
   protected $specialTabs  = TRUE;
-  protected $plNotify     = array();
+  protected $plNotify     = [];
 
   var $last       = "";
   var $current    = "";
   var $disabled   = "";
-  var $by_name    = array();
-  var $by_object  = array();
+  var $by_name    = [];
+  var $by_object  = [];
   var $acl_category;
 
   /* A parent object if available, e.g. a management class. */
@@ -69,7 +69,7 @@ class simpleTabs
     $this->dn           = $dn;
 
     if (!count($data)) {
-      $data[] = array('CLASS' => 'plugin','NAME' => 'Error');
+      $data[] = ['CLASS' => 'plugin','NAME' => 'Error'];
       msg_dialog::display(_('Error'),
         sprintf(_('No plugin definitions found to initialize "%s", please check your configuration file.'), get_class($this)),
         ERROR_DIALOG);
@@ -124,7 +124,7 @@ class simpleTabs
     $baseobject = NULL;
     foreach ($this->by_object as $name => $object) {
       $class = get_class($object);
-      if (in_array($class, array("reference","acl"))) {
+      if (in_array($class, ["reference","acl"])) {
         continue;
       }
       if ($baseobject === NULL) {
@@ -251,7 +251,7 @@ class simpleTabs
     }
     $display  .= '<table class="tabs-header"><tbody><tr>';
     $index    = 0;
-    $style    = array('tab-left', 'tab-active', 'tab-right');
+    $style    = ['tab-left', 'tab-active', 'tab-right'];
     foreach ($this->by_name as $class => $name) {
 
       /* Activate right tabs with style "tab-right" */
@@ -334,13 +334,13 @@ class simpleTabs
   protected function check()
   {
     global $config;
-    $messages = array();
+    $messages = [];
 
     if ($this->getBaseObject()->is_template) {
       $ldap = $config->get_ldap_link();
       $ldap->cd($config->current['BASE']);
       $filter = '(&(objectClass=fdTemplate)(cn='.ldap_escape_f($this->getBaseObject()->_template_cn).'))';
-      $ldap->search($filter, array('dn'));
+      $ldap->search($filter, ['dn']);
       while ($attrs = $ldap->fetch()) {
         if ($attrs['dn'] != $this->getBaseObject()->dn) {
           $messages[] = msgPool::duplicated($this->getBaseObject()->attributesAccess['_template_cn']->getLabel(), $attrs['dn']);
@@ -392,12 +392,12 @@ class simpleTabs
       $new_dn     = $baseobject->compute_dn();
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $new_dn, 'Saving');
     } catch (FusionDirectoryException $e) {
-      return array(
+      return [
         sprintf(_('Failed to compute DN for object: %s'), $e->getMessage())
-      );
+      ];
     }
 
-    $errors   = array();
+    $errors   = [];
     $creation = ($this->dn == 'new');
 
     /* Move ? */
@@ -467,7 +467,7 @@ class simpleTabs
    * \param array $attrs an LDAP-like values array
    * \param array $skip Attributes to skip
    */
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template($attrs, $skip = [])
   {
     foreach ($this->by_object as $key => &$obj) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index 4ba70276f..cef03948f 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -23,36 +23,36 @@ class dashboard extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Dashboard'),
       'plTitle'       => _('Dashboard'),
       'plDescription' => _('Statistics and various information'),
       'plIcon'        => 'geticon.php?context=applications&icon=utilities-system-monitor&size=48',
-      'plObjectType'  => array(
-        'dashboard' => array(
+      'plObjectType'  => [
+        'dashboard' => [
           'name'      => _('Dashboard'),
           'tabClass'  => 'tabs_dashboard',
           'mainAttr'  => FALSE
-        )
-      ),
-      'plSection'     => array('reporting' => array('name' => _('Reporting'), 'priority' => 30)),
+        ]
+      ],
+      'plSection'     => ['reporting' => ['name' => _('Reporting'), 'priority' => 30]],
       'plPriority'    => 0,
 
-      'plProvidedAcls'  => array(
+      'plProvidedAcls'  => [
         'dashboard' => _('See dashboard')
-      )
-    );
+      ]
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'stats' => array(
+    return [
+      'stats' => [
         'name'  => _('Statistics'),
-        'attrs' => array(new FakeAttribute('stats')),
+        'attrs' => [new FakeAttribute('stats')],
         'template' => get_template_path('main_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -66,7 +66,7 @@ class dashboard extends simplePlugin
   function overview_stats()
   {
     global $config;
-    $stats = array();
+    $stats = [];
     foreach ($config->data['OBJECTS'] as $type => $infos) {
       try {
         $nb = count(objects::ls($type, NULL, NULL, '', TRUE));
@@ -83,10 +83,10 @@ class dashboard extends simplePlugin
       if ($nb == 0) {
         continue;
       }
-      $node = array(
+      $node = [
         'name'  => $infos['name'],
         'nb'    => $nb
-      );
+      ];
       if (isset($infos['icon'])) {
         $node['img'] = $infos['icon'];
       } else {
diff --git a/plugins/addons/dashboard/class_dashBoardPasswords.inc b/plugins/addons/dashboard/class_dashBoardPasswords.inc
index fe43bf1b0..229a61beb 100644
--- a/plugins/addons/dashboard/class_dashBoardPasswords.inc
+++ b/plugins/addons/dashboard/class_dashBoardPasswords.inc
@@ -22,25 +22,25 @@ class dashboardPassword extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Passwords'),
       'plDescription' => _('Statistics about passwords'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 12,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'pwds' => array(
+    return [
+      'pwds' => [
         'name'  => _('Passwords statistics'),
-        'attrs' => array(new FakeAttribute('pwds_stats')),
+        'attrs' => [new FakeAttribute('pwds_stats')],
         'template' => get_template_path('pwd_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -64,11 +64,11 @@ class dashboardPassword extends simplePlugin
         sprintf(_('Password statistics could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     }
     $nb_accounts = count($users);
     $nb_locked_accounts = 0;
-    $methods_stats = array();
+    $methods_stats = [];
     foreach ($users as $userPassword) {
       if (!empty($userPassword)) {
         if (preg_match("/^\{[^\}]+\}!/", $userPassword)) {
@@ -77,10 +77,10 @@ class dashboardPassword extends simplePlugin
         $method = passwordMethod::get_method($userPassword);
         $methodClass = get_class($method);
         if (!isset($methods_stats[$methodClass])) {
-          $methods_stats[$methodClass] = array(
+          $methods_stats[$methodClass] = [
             'nb' => 0,
             'name' => $method->get_hash()
-          );
+          ];
           if ($method->get_hash() == $defaultMethod) {
             $methods_stats[$methodClass]['style'] = 'default';
           } elseif ($method->get_hash() == 'clear') {
@@ -95,15 +95,15 @@ class dashboardPassword extends simplePlugin
       }
     }
 
-    return array(
+    return [
       'methods'         => $methods_stats,
       'nb'              => $nb_accounts,
       'img'             => 'geticon.php?context=types&icon=user&size=16',
-      'locked_accounts' => array(
+      'locked_accounts' => [
         'nb'  => $nb_locked_accounts,
         'img' => 'geticon.php?context=status&icon=object-locked&size=16'
-      ),
-    );
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/addons/dashboard/class_dashBoardUsers.inc b/plugins/addons/dashboard/class_dashBoardUsers.inc
index e3d72351f..0a80119a2 100644
--- a/plugins/addons/dashboard/class_dashBoardUsers.inc
+++ b/plugins/addons/dashboard/class_dashBoardUsers.inc
@@ -23,54 +23,54 @@ class dashboardUsers extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Users'),
       'plDescription' => _('Statistics about users'),
-      'plObjectType'  => array('dashboard'),
+      'plObjectType'  => ['dashboard'],
       'plPriority'    => 10,
 
-      'plProvidedAcls'    => array()
-    );
+      'plProvidedAcls'    => []
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'userstats' => array(
+    return [
+      'userstats' => [
         'name'  => _('Users statistics'),
-        'attrs' => array(new FakeAttribute('users_stats')),
+        'attrs' => [new FakeAttribute('users_stats')],
         'template' => get_template_path('users_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'groupstats' => array(
+      ],
+      'groupstats' => [
         'name'  => _('Groups statistics'),
-        'attrs' => array(new FakeAttribute('groups_stats')),
+        'attrs' => [new FakeAttribute('groups_stats')],
         'template' => get_template_path('groups_stats.tpl', TRUE, dirname(__FILE__)),
-      ),
-      'expired_accounts' => array(
+      ],
+      'expired_accounts' => [
         'name'  => _('Expired accounts'),
-        'attrs' => array(new FakeAttribute('expired')),
+        'attrs' => [new FakeAttribute('expired')],
         'template' => get_template_path('users_accounts.tpl', TRUE, dirname(__FILE__)),
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $this->expiredAccountsColumns = array(
-      'user' => array(
+    $this->expiredAccountsColumns = [
+      'user' => [
         'uid'             => _('Login'),
         'cn'              => _('Name'),
         'telephoneNumber' => _('Phone number'),
         'expirationDate'  => _('Expiration date'),
-      ),
-      'manager' => array(
+      ],
+      'manager' => [
         'manager_cn'      => _('Name'),
         'manager_mail'    => _('Email'),
         'manager_phone'   => _('Phone number'),
-      )
-    );
+      ]
+    ];
     $this->users_stats  = $this->computeUsersStats();
     $this->groups_stats = $this->computeGroupsStats();
     $this->expired      = $this->expired_accounts_info();
@@ -97,15 +97,15 @@ class dashboardUsers extends simplePlugin
       $nb_samba_accounts  = 0;
     }
 
-    return array(
-      'accounts' => array(
-        array('name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
-        array('name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'),
-        array('name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
-      ),
+    return [
+      'accounts' => [
+        ['name' => 'mail',   'nb' => $nb_mail_accounts,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
+        ['name' => 'posix',  'nb' => $nb_posix_accounts, 'img' => 'geticon.php?context=applications&icon=os-linux&size=16'],
+        ['name' => 'samba',  'nb' => $nb_samba_accounts, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
+      ],
       'nb'  => $nb_accounts,
       'img' => 'geticon.php?context=types&icon=user&size=16',
-    );
+    ];
   }
 
   function computeGroupsStats ()
@@ -132,14 +132,14 @@ class dashboardUsers extends simplePlugin
       $nb_samba_groups  = 0;
     }
 
-    return array(
-      'groups' => array(
-        array('name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'),
-        array('name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16')
-      ),
+    return [
+      'groups' => [
+        ['name' => 'mail',   'nb' => $nb_mail_groups,  'img' => 'geticon.php?context=applications&icon=internet-mail&size=16'],
+        ['name' => 'samba',  'nb' => $nb_samba_groups, 'img' => 'geticon.php?context=applications&icon=os-windows&size=16']
+      ],
       'nb'  => $nb_groups,
       'img' => 'geticon.php?context=types&icon=user-group&size=16',
-    );
+    ];
   }
 
   function expired_accounts_info ()
@@ -158,24 +158,24 @@ class dashboardUsers extends simplePlugin
 
     if (!class_available('posixAccount')) {
       /* if shadowExpire is not available no way to check expiration */
-      return array(
+      return [
         'columns'             => $this->expiredAccountsColumns,
-        'accounts'            => array(),
-        'accounts_next_days'  => array(),
+        'accounts'            => [],
+        'accounts_next_days'  => [],
         'next_days'           => $next_expired_days,
-      );
+      ];
     }
 
     /* search all account with all date, mail, telephone */
     try {
-      $attributes = array(
+      $attributes = [
         'dn'                    => 'raw',
         'uid'                   => '*',
         'cn'                    => '*',
         'telephoneNumber'       => '*',
         'manager'               => '*',
         'shadowExpire'          => '*',
-      );
+      ];
       if (class_available('mailAccount')) {
         $attributes['mail'] = 'raw';
       }
@@ -186,18 +186,18 @@ class dashboardUsers extends simplePlugin
         sprintf(_('Expired user information could not be computed because of the following LDAP error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     } catch (FusionDirectoryException $e) {
       msg_dialog::display(
         _('Error'),
         sprintf(_('Expired user information could not be computed because of the following error: %s'), $e->getMessage()),
         ERROR_DIALOG
       );
-      $users = array();
+      $users = [];
     }
 
-    $expired_accounts       = array();
-    $next_expired_accounts  = array();
+    $expired_accounts       = [];
+    $next_expired_accounts  = [];
     foreach ($users as $user) {
       // Test if account is expired now
       if ($user['shadowExpire'][0] <= $today) {
@@ -207,15 +207,15 @@ class dashboardUsers extends simplePlugin
       }
     }
 
-    uasort($expired_accounts,       array('dashboardUsers','compareUsers'));
-    uasort($next_expired_accounts,  array('dashboardUsers','compareUsers'));
+    uasort($expired_accounts,       ['dashboardUsers','compareUsers']);
+    uasort($next_expired_accounts,  ['dashboardUsers','compareUsers']);
 
-    return array(
+    return [
       'columns'             => $this->expiredAccountsColumns,
       'accounts'            => $expired_accounts,
       'accounts_next_days'  => $next_expired_accounts,
       'next_days'           => $next_expired_days,
-    );
+    ];
   }
 
   static function get_user_infos($attrs)
@@ -224,7 +224,7 @@ class dashboardUsers extends simplePlugin
 
     if (isset($attrs['manager'][0])) {
       $ldap = $config->get_ldap_link();
-      $ldap->cat($attrs['manager'][0], array('cn', 'mail', 'telephoneNumber'));
+      $ldap->cat($attrs['manager'][0], ['cn', 'mail', 'telephoneNumber']);
       if ($manager_attrs = $ldap->fetch()) {
         $manager_cn     = (isset($manager_attrs['cn'][0]) ? $manager_attrs['cn'][0] : '');
         $manager_mail   = (isset($manager_attrs['mail'][0]) ? $manager_attrs['mail'][0] : '');
@@ -247,7 +247,7 @@ class dashboardUsers extends simplePlugin
       $human_shadowExpire = '';
     }
 
-    return array(
+    return [
       'uid'             => $attrs['uid'][0],
       'cn'              => $attrs['cn'][0],
       'telephoneNumber' => (isset($attrs['telephoneNumber'][0]) ? $attrs['telephoneNumber'][0] : ''),
@@ -256,7 +256,7 @@ class dashboardUsers extends simplePlugin
       'manager_mail'    => $manager_mail,
       'manager_phone'   => $manager_phone,
       'expirationDate'  => $human_shadowExpire,
-    );
+    ];
   }
 
   static function compareUsers ($a, $b)
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index a28f52420..1c6655f81 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -22,31 +22,31 @@ class aclAssignmentDialogWindow extends simplePlugin
 {
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL Assignment Dialog'),
       'plDescription' => _('Access control roles assignment dialog'),
-      'plCategory'    => array('acl'),
+      'plCategory'    => ['acl'],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'properties' => array(
+    return [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Mode'), _('Is this applying on complete subtree or only the base?'),
             'aclMode', TRUE,
-            array('subtree',    'base'), 'base',
-            array(_('Subtree'), _('Base only'))
+            ['subtree',    'base'], 'base',
+            [_('Subtree'), _('Base only')]
           ),
           new SelectAttribute(
             _('Role'), _('Role to apply'),
             'aclRole', TRUE,
-            array()
+            []
           ),
           new BooleanAttribute(
             _('For all users'), _('Apply this ACL for all LDAP users'),
@@ -56,9 +56,9 @@ class aclAssignmentDialogWindow extends simplePlugin
             _('Members'), _('Users or groups to assign this role to.'),
             'aclMembers', TRUE
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($value, $isContainer = FALSE)
@@ -75,11 +75,11 @@ class aclAssignmentDialogWindow extends simplePlugin
     $this->attributesAccess['aclRole']->setChoices(array_keys($roles), array_values($roles));
     $this->attributesAccess['allUsers']->setInLdap(FALSE);
     $this->attributesAccess['allUsers']->setManagedAttributes(
-      array(
-        'disable' => array(
-          TRUE => array('aclMembers')
-        )
-      )
+      [
+        'disable' => [
+          TRUE => ['aclMembers']
+        ]
+      ]
     );
 
     if ($value !== NULL) {
@@ -109,13 +109,13 @@ class aclAssignmentDialogWindow extends simplePlugin
 
   function getAclEntry()
   {
-    $entry = array(
+    $entry = [
       'scope'   => $this->aclMode,
       'role'    => $this->aclRole,
       'members' => $this->aclMembers,
-    );
+    ];
     if ($this->allUsers) {
-      $entry['members'] = array('*');
+      $entry['members'] = ['*'];
     }
     return $entry;
   }
@@ -134,7 +134,7 @@ class ACLsAssignmentDialog extends GenericDialog
     if (isset($simplePlugin->attrs['objectClass'])) {
       if (count(array_intersect(
                   $simplePlugin->attrs['objectClass'],
-                  array('organizationalUnit', 'organization', 'domain', 'country', 'locality'))
+                  ['organizationalUnit', 'organization', 'domain', 'country', 'locality'])
                 )) {
         $isContainer = TRUE;
       }
@@ -196,11 +196,11 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
   function readValue($value)
   {
     $acl = explode(':', $value);
-    return array($acl[0], array(
+    return [$acl[0], [
       'scope'   => $acl[1],
       'role'    => base64_decode($acl[2]),
       'members' => array_map('base64_decode', explode(',', $acl[3])),
-    ));
+    ]];
   }
 
   function writeValue($key, $value)
@@ -248,9 +248,9 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     foreach ($this->value as $value) {
       if (($source['CLASS'] == 'aclRole') && ($value['role'] == $oldvalue)) {
         return TRUE;
-      } elseif (in_array($source['CLASS'], array('user','posixGroup','roleGeneric')) && in_array($oldvalue, $value['members'])) {
+      } elseif (in_array($source['CLASS'], ['user','posixGroup','roleGeneric']) && in_array($oldvalue, $value['members'])) {
         return TRUE;
-      } elseif (!in_array($source['CLASS'], array('aclRole','user','posixGroup','roleGeneric'))) {
+      } elseif (!in_array($source['CLASS'], ['aclRole','user','posixGroup','roleGeneric'])) {
         trigger_error('unknown source '.$source['CLASS']);
       }
     }
@@ -259,13 +259,13 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
 
 class aclAssignment extends simplePlugin
 {
-  var $objectclasses  = array('gosaAcl');
+  var $objectclasses  = ['gosaAcl'];
 
   static function plInfo()
   {
     global $config;
-    $oc = array(
-      'aclAssignment' => array(
+    $oc = [
+      'aclAssignment' => [
         'aclCategory' => 'acl',
         'name'        => _('ACL assignment'),
         'filter'      => 'objectClass=gosaAcl',
@@ -273,44 +273,44 @@ class aclAssignment extends simplePlugin
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
         'tabClass'    => 'simpleTabs_noSpecial',
         'mainAttr'    => FALSE
-      ),
-    );
+      ],
+    ];
     if ($config->get_cfg_value('aclTabOnObjects') == 'TRUE') {
       $oc[] = 'special';
     } else {
       $oc = array_merge($oc, departmentManagement::getDepartmentTypes());
     }
-    return array(
+    return [
       'plShortName'   => _('ACL Assignment'),
       'plDescription' => _('Access control roles assignment'),
       'plObjectType'  => $oc,
-      'plForeignKeys'  => array(
-        'gosaAclEntry' => array(
-          array('aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'),
-          array('user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-          array('posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-          array('roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'),
-        )
-      ),
+      'plForeignKeys'  => [
+        'gosaAclEntry' => [
+          ['aclRole',      'dn', 'gosaAclEntry=*:*:%b|oldvalue%:*',    'gosaAclEntry=*'],
+          ['user',         'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+          ['posixGroup',   'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+          ['roleGeneric',  'dn', 'gosaAclEntry=*:*:*:*%b|oldvalue%*',  'gosaAclEntry=*'],
+        ]
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Assignments'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new ACLsAssignmentAttribute(
             '', _('ACL role assignments for this base'),
             'gosaAclEntry', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index dea452766..3e949b9a2 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -27,24 +27,24 @@ class aclAssignmentCreationDialog extends simplePlugin
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL assignment creation'),
       'plShortName'   => _('ACL assignment creation'),
       'plDescription' => _('Create an ACL assignment on an arbitrary dn'),
-      'plCategory'    => array('acl'),
+      'plCategory'    => ['acl'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('ACL assignment creation'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new StringAttribute (
             _('Dn'), _('DN you wish to add assignments for'),
             'baseDn', TRUE,
@@ -52,9 +52,9 @@ class aclAssignmentCreationDialog extends simplePlugin
             '/^([^=,]+=[^=,]+,)+'.preg_quote($config->current['BASE'], '/').'$/',
             'ou=people,'.$config->current['BASE']
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($parent)
@@ -107,7 +107,7 @@ class aclAssignmentCreationDialog extends simplePlugin
     try {
       $this->simpleManagement->newEntryConfirmed($this->baseDn);
     } catch (NonExistingLdapNodeException $e) {
-      msg_dialog::displayChecks(array(_('The dn you entered could not be found in the LDAP')));
+      msg_dialog::displayChecks([_('The dn you entered could not be found in the LDAP')]);
       return TRUE;
     }
     return FALSE;
@@ -122,9 +122,9 @@ class aclAssignmentCreationDialog extends simplePlugin
 
 class aclManagement extends simpleManagement
 {
-  protected $objectTypes  = array('aclAssignment');
+  protected $objectTypes  = ['aclAssignment'];
 
-  protected $autoFilterAttributes = array('dn', 'cn', 'description', 'ou', 'dc');
+  protected $autoFilterAttributes = ['dn', 'cn', 'description', 'ou', 'dc'];
 
   protected $departmentBrowser      = FALSE;
   protected $departmentRootVisible  = FALSE;
@@ -136,17 +136,17 @@ class aclManagement extends simpleManagement
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL assignments'),
       'plTitle'       => _('ACL assignments management'),
       'plDescription' => _('Manage ACL roles assignments to users'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 28,
-      'plManages'     => array('aclAssignment'),
+      'plManages'     => ['aclAssignment'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function configureFilter()
@@ -168,7 +168,7 @@ class aclManagement extends simpleManagement
   function configureHeadpage ()
   {
     /* Remove department types so that we don't mistake assignments with them */
-    $this->headpage->objectTypes = array();
+    $this->headpage->objectTypes = [];
     $this->headpage->registerElementFilter('filterLabel', 'aclManagement::filterLabel');
     parent::configureHeadpage();
   }
@@ -213,7 +213,7 @@ class aclManagement extends simpleManagement
           continue;
         }
         if (!is_array($val)) {
-          $val = array($val);
+          $val = [$val];
         }
         $ou = htmlentities(reset($val), ENT_COMPAT, 'UTF-8');
       }
diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc
index 9f7801390..b4c579236 100644
--- a/plugins/admin/aclrole/class_aclEditionDialog.inc
+++ b/plugins/admin/aclrole/class_aclEditionDialog.inc
@@ -25,8 +25,8 @@ class ACLEditionDialog extends GenericDialog
   protected $initialAclValue;
   protected $dialogState      = 'create';
   protected $aclObject        = '';
-  protected $aclContents      = array();
-  protected $savedAclContents = array();
+  protected $aclContents      = [];
+  protected $savedAclContents = [];
 
   function __construct($simplePlugin, $attribute, $acl = NULL)
   {
@@ -35,7 +35,7 @@ class ACLEditionDialog extends GenericDialog
 
     /* New entry gets presets... */
     if ($acl === NULL) {
-      $this->aclContents  = array();
+      $this->aclContents  = [];
     } else {
       $this->aclContents  = $acl;
     }
@@ -59,7 +59,7 @@ class ACLEditionDialog extends GenericDialog
   {
     global $config;
 
-    $new_acl = array();
+    $new_acl = [];
 
     foreach ($_POST as $name => $post) {
       /* Actions... */
@@ -98,7 +98,7 @@ class ACLEditionDialog extends GenericDialog
 
         /* Ordinary ACL */
         if (!isset($new_acl[$object])) {
-          $new_acl[$object] = array();
+          $new_acl[$object] = [];
         }
         if (isset($new_acl[$object][$attribute])) {
           $new_acl[$object][$attribute] .= $value;
@@ -164,7 +164,7 @@ class ACLEditionDialog extends GenericDialog
           /* Hide empty categories */
           continue;
         }
-        $summary = array();
+        $summary = [];
         foreach ($infos['classes'] as $oc) {
           if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) &&
               $this->aclContents[$oc][0] != '') {
@@ -193,17 +193,17 @@ class ACLEditionDialog extends GenericDialog
                   '<input class="center" type="image" src="geticon.php?context=actions&amp;icon=edit-delete&amp;size=16"
                     alt="'._('Delete').'" name="cat_del_'.$section.'" title="'._('Reset category ACL').'"/>';
 
-        $field1 = array('html' => $infos['description'], 'attach' => 'style="width:140px"');
-        $field2 = array('html' => $summary);
-        $field3 = array('html' => $action, 'attach' => 'style="border-right:0px;width:40px"');
-        $aclList->AddEntry(array($field1, $field2, $field3));
+        $field1 = ['html' => $infos['description'], 'attach' => 'style="width:140px"'];
+        $field2 = ['html' => $summary];
+        $field3 = ['html' => $action, 'attach' => 'style="border-right:0px;width:40px"'];
+        $aclList->AddEntry([$field1, $field2, $field3]);
       }
 
       $smarty->assign('headline', _('List of available ACL categories'));
       $smarty->assign('aclEdition', $aclList->DrawList());
     } elseif ($this->dialogState == 'edit') {
       /* Collect objects for selected category */
-      $aclObjects = array();
+      $aclObjects = [];
       foreach ($config->data['CATEGORIES'][$this->aclObject]['classes'] as $idx => $class) {
         if ($idx == 0) {
           continue;
@@ -310,7 +310,7 @@ class ACLEditionDialog extends GenericDialog
     foreach ($list as $key => $name) {
       /* Create sub acl if it does not exist */
       if (!isset($this->aclContents[$key])) {
-        $this->aclContents[$key] = array();
+        $this->aclContents[$key] = [];
       }
       if (!isset($this->aclContents[$key][0])) {
         $this->aclContents[$key][0] = '';
diff --git a/plugins/admin/aclrole/class_aclRole.inc b/plugins/admin/aclrole/class_aclRole.inc
index a435a5099..1856c7e77 100644
--- a/plugins/admin/aclrole/class_aclRole.inc
+++ b/plugins/admin/aclrole/class_aclRole.inc
@@ -36,13 +36,13 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
       }
     }
     $summary = sprintf(_('Contains settings for these objects: %s'), preg_replace('/, $/', '', $summary));
-    return array($summary);
+    return [$summary];
   }
 
   function readValue($value)
   {
     $acl = explode(':', $value, 2);
-    return array($acl[0], acl::extractACL($acl[1]));
+    return [$acl[0], acl::extractACL($acl[1])];
   }
 
   function writeValue($key, $value)
@@ -69,31 +69,31 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
 
 class aclRole extends simplePlugin
 {
-  var $objectclasses  = array('top','gosaRole');
+  var $objectclasses  = ['top','gosaRole'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Role'),
       'plDescription' => _('Access control roles'),
-      'plObjectType'  => array('aclRole' => array(
+      'plObjectType'  => ['aclRole' => [
         'aclCategory' => 'acl',
         'name'        => _('ACL role'),
         'filter'      => 'objectClass=gosaRole',
         'ou'          => get_ou('aclRoleRDN'),
         'icon'        => 'geticon.php?context=categories&icon=acl&size=16',
-      )),
+      ]],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
   {
-    return array(
-      'properties' => array(
+    return [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('aclRoleRDN')),
           new HostNameAttribute(
             _('Name'), _('A name for this role'),
@@ -103,19 +103,19 @@ class aclRole extends simplePlugin
             _('Description'), _('Short description of this role'),
             'description', FALSE
           ),
-        )
-      ),
-      'acls' => array(
+        ]
+      ],
+      'acls' => [
         'name'  => _('ACLs'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new ACLsAttribute(
             '', _('ACLs which are part of this group'),
             'gosaAclTemplate', TRUE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/admin/aclrole/class_aclRoleManagement.inc b/plugins/admin/aclrole/class_aclRoleManagement.inc
index ca6ccda6b..3d135fe2b 100644
--- a/plugins/admin/aclrole/class_aclRoleManagement.inc
+++ b/plugins/admin/aclrole/class_aclRoleManagement.inc
@@ -21,7 +21,7 @@
 class aclRoleManagement extends simpleManagement
 {
   // Tab definition
-  protected $objectTypes  = array('aclRole');
+  protected $objectTypes  = ['aclRole'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = TRUE;
@@ -30,18 +30,18 @@ class aclRoleManagement extends simpleManagement
   /* Return plugin informations for acl handling  */
   public static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('ACL roles'),
       'plTitle'       => _('ACL roles management'),
       'plDescription' => _('Manage ACL roles'),
       'plIcon'        => 'geticon.php?context=categories&icon=acl&size=48',
       'plSection'     => 'accounts',
       'plPriority'    => 27,
-      'plCategory'    => array('acl'),
-      'plManages'     => array('aclRole'),
+      'plCategory'    => ['acl'],
+      'plManages'     => ['aclRole'],
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_country.inc b/plugins/admin/departments/class_country.inc
index f9ed6aa35..8ce3ee17e 100644
--- a/plugins/admin/departments/class_country.inc
+++ b/plugins/admin/departments/class_country.inc
@@ -21,14 +21,14 @@
 class country extends department
 {
   static $namingAttr  = "c";
-  var $structuralOC   = array("country");
+  var $structuralOC   = ["country"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Country'),
       'plDescription' => _('Country'),
-      'plObjectType'  => array('country' => array(
+      'plObjectType'  => ['country' => [
         'aclCategory' => 'department',
         'name'        => _('Country'),
         'filter'      => '(&(objectClass=country)(objectClass=gosaDepartment))',
@@ -36,13 +36,13 @@ class country extends department
         'icon'        => 'geticon.php?context=types&icon=country&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_dcObject.inc b/plugins/admin/departments/class_dcObject.inc
index 63f5e0248..e73bd6f6e 100644
--- a/plugins/admin/departments/class_dcObject.inc
+++ b/plugins/admin/departments/class_dcObject.inc
@@ -21,15 +21,15 @@
 class dcObject extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = array("top", "dcObject", "gosaDepartment");
-  var $structuralOC   = array("locality");
+  var $objectclasses  = ["top", "dcObject", "gosaDepartment"];
+  var $structuralOC   = ["locality"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Domain Component'),
       'plDescription' => _('Domain Component'),
-      'plObjectType'  => array('dcObject' => array(
+      'plObjectType'  => ['dcObject' => [
         'aclCategory' => 'department',
         'name'        => _('Domain Component'),
         'filter'      => '(&(objectClass=dcObject)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class dcObject extends department
         'icon'        => 'geticon.php?context=types&icon=dc&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc
index c907951a3..1a23f53d3 100644
--- a/plugins/admin/departments/class_department.inc
+++ b/plugins/admin/departments/class_department.inc
@@ -24,32 +24,32 @@ class department extends simplePlugin
   static $namingAttr = 'ou';
 
   /* Do not append the structural object classes here, they are added dynamically in the constructor */
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("organizationalUnit");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["organizationalUnit"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Department'),
       'plDescription' => _('Departments'),
-      'plCategory'    => array('department' => array('objectClass' => 'gosaDepartment', 'description' => _('Departments'))),
+      'plCategory'    => ['department' => ['objectClass' => 'gosaDepartment', 'description' => _('Departments')]],
       'plObjectType'  =>
-        array(
-          'department' => array(
+        [
+          'department' => [
             'name'      => _('Department'),
             'filter'    => '(&(objectClass=organizationalUnit)(objectClass=gosaDepartment))',
             'ou'        => '',
             'icon'      => 'geticon.php?context=places&icon=folder&size=16',
             'tabClass'  => 'deptabs',
             'mainAttr'  => static::$namingAttr,
-          )
-        ),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+          ]
+        ],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo()
@@ -58,10 +58,10 @@ class department extends simplePlugin
   }
   static function getDepartmentAttributesInfo($name)
   {
-    $attributesInfo = array(
-      'properties' => array(
+    $attributesInfo = [
+      'properties' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(''),
           new StringAttribute(
             sprintf(_('Name of %s'), $name), sprintf(_('A name for this %s'), $name),
@@ -84,11 +84,11 @@ class department extends simplePlugin
             _('Manager'), sprintf(_('Manager of this %s'), $name),
             'manager', FALSE
           )
-        )
-      ),
-      'location' => array(
+        ]
+      ],
+      'location' => [
         'name'  => _('Location'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute(
             _('State'), _('State'), 'st', FALSE
           ),
@@ -112,9 +112,9 @@ class department extends simplePlugin
             _('Fax'), _('Facsimile telephone number'),
             'facsimileTelephoneNumber', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
     if (static::$namingAttr != 'ou') {
       $attributesInfo['properties']['attrs'][] = new HiddenAttribute('ou');
     }
@@ -130,7 +130,7 @@ class department extends simplePlugin
     if ($dn == "" || $dn == "new" || !$ldap->dn_exists($dn)) {
       $this->objectclasses = array_merge($this->structuralOC, $this->objectclasses);
     } else {
-      $ldap->cat($dn, array("structuralObjectClass"));
+      $ldap->cat($dn, ["structuralObjectClass"]);
       $attrs = $ldap->fetch();
       if (isset($attrs['structuralObjectClass']['count'])) {
         for ($i = 0; $i < $attrs['structuralObjectClass']['count']; $i++) {
@@ -146,7 +146,7 @@ class department extends simplePlugin
 
     parent::__construct($dn, $object, $parent, $mainTab);
 
-    $categoriesList = $config->get_cfg_value('DepartmentCategories', array());
+    $categoriesList = $config->get_cfg_value('DepartmentCategories', []);
 
     /* Insert current value to possibilities */
     if (isset($this->attributesAccess['businessCategory'])) {
diff --git a/plugins/admin/departments/class_departmentManagement.inc b/plugins/admin/departments/class_departmentManagement.inc
index e5e349f03..6d81d0155 100644
--- a/plugins/admin/departments/class_departmentManagement.inc
+++ b/plugins/admin/departments/class_departmentManagement.inc
@@ -29,17 +29,17 @@ class departmentManagement extends simpleManagement
   /* Return plugin information for acl handling */
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Departments'),
       'plTitle'       => _('Manage departments'),
       'plDescription' => _('Manage departments, countries, domain components, domains, localities and organization nodes,'),
       'plIcon'        => 'geticon.php?context=places&icon=folder&size=48',
-      'plSection'     => array('accounts' => array('name' => _('Users and groups'), 'priority' => 0)),
+      'plSection'     => ['accounts' => ['name' => _('Users and groups'), 'priority' => 0]],
       'plPriority'    => 0,
       'plManages'     => static::getDepartmentTypes(),
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function __construct()
@@ -83,7 +83,7 @@ class departmentManagement extends simpleManagement
   protected function removeEntryRequested($action, array $target, array $all)
   {
     global $config;
-    $target = array_remove_entries(array($config->current['BASE']), $target);
+    $target = array_remove_entries([$config->current['BASE']], $target);
     return parent::removeEntryRequested($action, $target, $all);
   }
 
@@ -106,7 +106,7 @@ class departmentManagement extends simpleManagement
 
   static function getDepartmentTypes()
   {
-    return array('DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION');
+    return ['DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION'];
   }
 }
 ?>
diff --git a/plugins/admin/departments/class_domain.inc b/plugins/admin/departments/class_domain.inc
index 8cf7d844b..abc4eae16 100644
--- a/plugins/admin/departments/class_domain.inc
+++ b/plugins/admin/departments/class_domain.inc
@@ -21,15 +21,15 @@
 class domain extends department
 {
   static $namingAttr  = "dc";
-  var $objectclasses  = array("top", "domain", "gosaDepartment");
-  var $structuralOC   = array("domain");
+  var $objectclasses  = ["top", "domain", "gosaDepartment"];
+  var $structuralOC   = ["domain"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Domain'),
       'plDescription' => _('Domain'),
-      'plObjectType'  => array('domain' => array(
+      'plObjectType'  => ['domain' => [
         'aclCategory' => 'department',
         'name'        => _('Domain'),
         'filter'      => '(&(objectClass=domain)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class domain extends department
         'icon'        => 'geticon.php?context=types&icon=domain&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_locality.inc b/plugins/admin/departments/class_locality.inc
index af8873e27..db2b137f8 100644
--- a/plugins/admin/departments/class_locality.inc
+++ b/plugins/admin/departments/class_locality.inc
@@ -21,15 +21,15 @@
 class locality extends department
 {
   static $namingAttr  = "l";
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("locality");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["locality"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Locality'),
       'plDescription' => _('Locality'),
-      'plObjectType'  => array('locality' => array(
+      'plObjectType'  => ['locality' => [
         'aclCategory' => 'department',
         'name'        => _('Locality'),
         'filter'      => '(&(!(objectClass=dcObject))(objectClass=locality)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class locality extends department
         'icon'        => 'geticon.php?context=types&icon=locality&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/departments/class_organization.inc b/plugins/admin/departments/class_organization.inc
index 93e82ff29..960cf5f6b 100644
--- a/plugins/admin/departments/class_organization.inc
+++ b/plugins/admin/departments/class_organization.inc
@@ -21,15 +21,15 @@
 class organization extends department
 {
   static $namingAttr  = "o";
-  var $objectclasses  = array("top", "gosaDepartment");
-  var $structuralOC   = array("organization");
+  var $objectclasses  = ["top", "gosaDepartment"];
+  var $structuralOC   = ["organization"];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Organization'),
       'plDescription' => _('Organization'),
-      'plObjectType'  => array('organization' => array(
+      'plObjectType'  => ['organization' => [
         'aclCategory' => 'department',
         'name'        => _('Organization'),
         'filter'      => '(&(objectClass=organization)(objectClass=gosaDepartment))',
@@ -37,13 +37,13 @@ class organization extends department
         'icon'        => 'geticon.php?context=types&icon=organization&size=16',
         'tabClass'    => 'deptabs',
         'mainAttr'    => static::$namingAttr,
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 75155b3c0..9f4a7f464 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -21,7 +21,7 @@
 
 class groupManagement extends simpleManagement
 {
-  protected $objectTypes  = array('ogroup', 'role', 'group');
+  protected $objectTypes  = ['ogroup', 'role', 'group'];
 
   protected $autoFilter = FALSE;
 
@@ -31,17 +31,17 @@ class groupManagement extends simpleManagement
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Groups and roles'),
       'plTitle'       => _('Manage groups and roles'),
       'plDescription' => _('Allows you to manage object groups, POSIX groups and roles'),
       'plIcon'        => 'geticon.php?context=types&icon=resource-group&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => array('ogroup', 'group', 'role'),
+      'plManages'     => ['ogroup', 'group', 'role'],
       'plPriority'    => 20,
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
   function __construct()
@@ -89,24 +89,24 @@ class groupManagement extends simpleManagement
 
     // Register Daemon Events
     if ($this->siActive) {
-      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = array();
-      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = array();
+      $this->headpage->xmlData['actionmenu']['action'][4]['action'] = [];
+      $this->headpage->xmlData['actionmenu']['action'][5]['action'] = [];
       $events = argonautEventTypes::get_event_types();
       foreach ($events as $name => $data) {
         $this->registerAction('T_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][4]['action'][] = [
         'name' => 'T_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
         $this->registerAction('S_'.$name, 'handleEvent');
-        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = array(
+        $this->headpage->xmlData['actionmenu']['action'][5]['action'][] = [
         'name' => 'S_'.$name,
         'type' => 'entry',
         'image' => $data['img'],
         'label' => $data['name'],
-        );
+        ];
       }
     } else {
       unset($this->headpage->xmlData['actionmenu']['action'][3]);
@@ -139,7 +139,7 @@ class groupManagement extends simpleManagement
     $event = preg_replace('/^[TS]_/', '', $action);
 
     // Now send FAI/Argonaut events here.
-    $mac = array();
+    $mac = [];
 
     // Collect target mac addresses
     $ldap = $config->get_ldap_link();
@@ -170,12 +170,12 @@ class groupManagement extends simpleManagement
     /* Skip installation or update trigerred events,
      *  if this entry is currently processing.
      */
-    if ($triggered && in_array($event, array('reinstall','update'))) {
+    if ($triggered && in_array($event, ['reinstall','update'])) {
       foreach ($mac as $key => $mac_address) {
         if ($o_queue->is_currently_installing($mac_address)) {
           msg_dialog::display(_('Action canceled'), sprintf(_('System %s is currently installing'), $dn), ERROR_DIALOG);
           unset($mac[$key]);
-          logging::log('security', 'systems/'.get_class($this), '', array(), 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
+          logging::log('security', 'systems/'.get_class($this), '', [], 'Skip adding "argonautAction::'.$event.'" for mac "'.$mac_address.'", there is already a job in progress.');
         }
       }
     }
@@ -246,7 +246,7 @@ class groupManagement extends simpleManagement
   static function filterProperties($row, $dn, $objectType, $attrs, $gosaGroupObjects = NULL)
   {
     global $config;
-    static $grouptabs = array();
+    static $grouptabs = [];
 
     // Load information if needed
     $result = '&nbsp;';
@@ -318,42 +318,42 @@ class groupManagement extends simpleManagement
   function renderList()
   {
     $smarty = get_smarty();
-    $filters = array(
-      array('id'  => 'USER',        'label'  => _('Show user groups')),
-      array('id'  => 'ROLE',        'label'  => _('Show organizational roles')),
-      array('id'  => 'APPLICATION', 'label'  => _('Show application groups')),
-      array('id'  => 'GROUP',       'label'  => _('Show groups of groups')),
-      array('id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')),
-    );
+    $filters = [
+      ['id'  => 'USER',        'label'  => _('Show user groups')],
+      ['id'  => 'ROLE',        'label'  => _('Show organizational roles')],
+      ['id'  => 'APPLICATION', 'label'  => _('Show application groups')],
+      ['id'  => 'GROUP',       'label'  => _('Show groups of groups')],
+      ['id'  => 'UNKNOWN',     'label'  => _('Show unidentified groups')],
+    ];
     if (class_available('posixGroup')) {
-      $filters[] = array('id'  => 'PRIMARY',  'label'  => _('Show primary groups'));
+      $filters[] = ['id'  => 'PRIMARY',  'label'  => _('Show primary groups')];
       if (class_available('mailAccount')) {
-        $filters[] = array('id'  => 'MAIL',  'label'  => _('Show mail groups'));
+        $filters[] = ['id'  => 'MAIL',  'label'  => _('Show mail groups')];
       }
       if (class_available('sambaAccount')) {
-        $filters[] = array('id'  => 'SAMBA', 'label'  => _('Show samba groups'));
+        $filters[] = ['id'  => 'SAMBA', 'label'  => _('Show samba groups')];
       }
     }
     if (class_available('simpleSecurityObject')) {
-      $filters[] = array('id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries'));
+      $filters[] = ['id'  => 'SIMPLESECURITYOBJECT',  'label'  => _('Show DSA entries')];
     }
     if (class_available('systemManagement')) {
       $filters = array_merge(
         $filters,
-        array(
-          array('id'  => 'SERVER',      'label'  => _('Show server groups')),
-          array('id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')),
-          array('id'  => 'TERMINAL',    'label'  => _('Show terminal groups')),
-          array('id'  => 'PRINTER',     'label'  => _('Show printer groups')),
-          array('id'  => 'PHONE',       'label'  => _('Show phone groups')),
-        )
+        [
+          ['id'  => 'SERVER',      'label'  => _('Show server groups')],
+          ['id'  => 'WORKSTATION', 'label'  => _('Show workstation groups')],
+          ['id'  => 'TERMINAL',    'label'  => _('Show terminal groups')],
+          ['id'  => 'PRINTER',     'label'  => _('Show printer groups')],
+          ['id'  => 'PHONE',       'label'  => _('Show phone groups')],
+        ]
       );
     }
     if (!static::$skipTemplates) {
-      $filters[] = array(
+      $filters[] = [
         'id'    => 'FILTERTEMPLATE',
         'label' => sprintf(_('Show %s'), _('Template'))
-      );
+      ];
     }
     $smarty->assign('objectFilters', $filters);
     $this->headpage->update();
diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc
index c1e277151..55f8fab2b 100644
--- a/plugins/admin/groups/class_roleGeneric.inc
+++ b/plugins/admin/groups/class_roleGeneric.inc
@@ -28,48 +28,48 @@ class RoleMembersAttribute extends UsersAttribute
     if ($config->get_cfg_value('RestrictRoleMembers') == 'TRUE') {
       if ($this->whitelistDns === NULL) {
         /* Computes a list of members of all groups within our branch */
-        $groups = objects::ls('ogroup', array('member' => '*'), $this->plugin->base);
+        $groups = objects::ls('ogroup', ['member' => '*'], $this->plugin->base);
         if (empty($groups)) {
-          $this->whitelistDns = array();
+          $this->whitelistDns = [];
         } else {
           $this->whitelistDns = call_user_func_array('array_merge_recursive', $groups)['member'];
         }
       }
-      return array(
-        'branches'  => array($this->plugin->base),
+      return [
+        'branches'  => [$this->plugin->base],
         'dn'        => $this->whitelistDns,
-      );
+      ];
     } else {
-      return array();
+      return [];
     }
   }
 }
 
 class roleGeneric extends simplePlugin
 {
-  var $objectclasses = array('organizationalRole');
+  var $objectclasses = ['organizationalRole'];
 
   static function plInfo()
   {
-    return array(
+    return [
       'plShortName'   => _('Role'),
       'plDescription' => _('Role information'),
-      'plObjectType'  => array('role' =>
-        array(
+      'plObjectType'  => ['role' =>
+        [
           'name'        => _('Role'),
           'description' => _('Organizational role'),
           'ou'          => get_ou('roleRDN'),
           'filter'      => '(&(objectClass=organizationalRole)(!(objectClass=simpleSecurityObject)))',
           'icon'        => 'geticon.php?context=types&icon=role&size=16',
           'mainAttr'    => 'cn',
-        )
-      ),
-      'plForeignKeys'  => array(
-        'roleOccupant' => array('user','dn','roleOccupant=%oldvalue%','*')
-      ),
+        ]
+      ],
+      'plForeignKeys'  => [
+        'roleOccupant' => ['user','dn','roleOccupant=%oldvalue%','*']
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
    /*!
@@ -77,10 +77,10 @@ class roleGeneric extends simplePlugin
    */
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Information'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute (get_ou('roleRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
@@ -99,25 +99,25 @@ class roleGeneric extends simplePlugin
             _('Fax number'), _('Fax number'),
             'facsimileTelephoneNumber'
           )
-        )
-      ),
-      'members' => array(
+        ]
+      ],
+      'members' => [
         'name'  => _('Role members'),
-        'attrs' => array(
+        'attrs' => [
           new RoleMembersAttribute (
             '', _('Add users for the role'),
             'roleOccupant', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function ldap_save()
   {
     global $ui;
 
-    $errors = array();
+    $errors = [];
 
     if (isset($this->attrs['roleOccupant'])) {
       $savedOccupants     = $this->attributesAccess['roleOccupant']->getInitialValue();
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 5c26b4389..55bec8e42 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -21,16 +21,16 @@
 class ogrouptabs extends simpleTabs_noSpecial
 {
   protected $groupObjects = NULL;
-  protected $removed_tabs = array();
+  protected $removed_tabs = [];
 
-  function __construct($type, $dn, $copied_object = NULL)
+  function __construct ($type, $dn, $copied_object = NULL)
   {
     parent::__construct($type, $dn, $copied_object);
 
     $this->loadtabs($this->getBaseObject()->gosaGroupObjects);
   }
 
-  function loadtabs($gosaGroupObjects)
+  function loadtabs ($gosaGroupObjects)
   {
     global $config;
     if ($this->groupObjects == $gosaGroupObjects) {
@@ -39,21 +39,21 @@ class ogrouptabs extends simpleTabs_noSpecial
     $this->groupObjects = $gosaGroupObjects;
     $objects = preg_replace('/[\[\]]/', '', $gosaGroupObjects);
 
-    $tabs = array();
+    $tabs = [];
     if (strlen($objects)) {
       if (isset($config->data['TABS']['OGROUP-DYNAMICTABS'])) {
         $dtabs  = $config->data['TABS']['OGROUP-DYNAMICTABS'];
       } else {
-        $dtabs  = array();
+        $dtabs  = [];
       }
       $tabs   = FALSE;
       for ($i = 0; $i < strlen($objects); $i++) {
-        if (in_array($objects[$i], array('I','G'))) {
+        if (in_array($objects[$i], ['I','G'])) {
           /* Ignore unknown objects and groups */
           continue;
         }
         $otype = ogroup::$objectTypes[$objects[$i]];
-        $otabs = array();
+        $otabs = [];
         if (isset($config->data['TABS'][strtoupper($otype).'TABS'])) {
           $otabs = array_uintersect(
             $dtabs,
@@ -129,7 +129,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     unset($this->plNotify["$class"]);
   }
 
-  function gen_tabs($disabled = FALSE)
+  function gen_tabs ($disabled = FALSE)
   {
     $this->loadtabs($this->getBaseObject()->getGroupObjectTypes());
     return parent::gen_tabs($disabled);
@@ -138,7 +138,7 @@ class ogrouptabs extends simpleTabs_noSpecial
   /*!
    * \brief Sets the active tabs from this instance to an other one. Used by templates
    */
-  function setActiveTabs(&$tabObject)
+  function setActiveTabs (&$tabObject)
   {
     $tabObject->loadtabs($this->groupObjects);
     foreach ($this->by_object as $class => $plugin) {
@@ -148,12 +148,12 @@ class ogrouptabs extends simpleTabs_noSpecial
     }
   }
 
-  function check($ignore_account = FALSE)
+  function check ($ignore_account = FALSE)
   {
     return parent::check(FALSE);
   }
 
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
@@ -174,7 +174,7 @@ class ogrouptabs extends simpleTabs_noSpecial
     return $errors;
   }
 
-  function save_object($save_current = FALSE)
+  function save_object ($save_current = FALSE)
   {
     parent::save_object($save_current);
 
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 3424dc787..fe034506e 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -22,7 +22,7 @@
 
 class userManagement extends simpleManagement
 {
-  protected $objectTypes  = array('user');
+  protected $objectTypes  = ['user'];
 
   protected $departmentBrowser      = TRUE;
   protected $departmentRootVisible  = FALSE;
@@ -36,22 +36,22 @@ class userManagement extends simpleManagement
 
   public static $skipTemplates = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Users'),
       'plTitle'       => _('Manage users'),
       'plDescription' => _('Manage user accounts and their properties'),
       'plIcon'        => 'geticon.php?context=types&icon=user&size=48',
       'plSection'     => 'accounts',
-      'plManages'     => array('user'),
+      'plManages'     => ['user'],
       'plPriority'    => 10,
 
-      'plProvidedAcls' => array()
-    );
+      'plProvidedAcls' => []
+    ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath  = get_template_path('user-filter.xml',  TRUE, dirname(__FILE__));
     $this->listXMLPath    = get_template_path('user-list.xml',    TRUE, dirname(__FILE__));
@@ -80,7 +80,7 @@ class userManagement extends simpleManagement
   {
     parent::configureFilter();
 
-    $classes = array();
+    $classes = [];
     if (class_available('posixAccount')) {
       $classes[] = 'posixAccount';
     } else {
@@ -121,7 +121,7 @@ class userManagement extends simpleManagement
 
   /* !\brief  Lock/unlock multiple users.
    */
-  function lockUsers($action, array $target, array $all)
+  function lockUsers ($action, array $target, array $all)
   {
     if (!count($target)) {
       return;
@@ -136,12 +136,12 @@ class userManagement extends simpleManagement
 
   /* !\brief  Locks/unlocks the given user(s).
    */
-  function lockEntry($action, $entry, $all, $type = 'toggle')
+  function lockEntry ($action, $entry, $all, $type = 'toggle')
   {
     global $config, $ui;
     // Filter out entries we are not allowed to modify
-    $disallowed = array();
-    $allowed    = array();
+    $disallowed = [];
+    $allowed    = [];
     foreach ($entry as $dn) {
       if (!preg_match('/w/', $ui->get_permissions($dn, 'user/user', 'userLock'))) {
         $disallowed[] = $dn;
@@ -156,7 +156,7 @@ class userManagement extends simpleManagement
     // Try to lock/unlock the rest of the entries.
     $ldap = $config->get_ldap_link();
     foreach ($allowed as $dn) {
-      $ldap->cat($dn, array('userPassword'));
+      $ldap->cat($dn, ['userPassword']);
       if ($ldap->count() == 1) {
 
         // We can't lock empty passwords.
@@ -207,7 +207,7 @@ class userManagement extends simpleManagement
     }
   }
 
-  static function filterLockImage($userPassword)
+  static function filterLockImage ($userPassword)
   {
     $image = 'images/empty.png';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -220,7 +220,7 @@ class userManagement extends simpleManagement
     return $image;
   }
 
-  static function filterLockLabel($userPassword)
+  static function filterLockLabel ($userPassword)
   {
     $label = '';
     if (isset($userPassword[0]) && preg_match('/^\{[^\}]/', $userPassword[0])) {
@@ -233,10 +233,10 @@ class userManagement extends simpleManagement
     return $label;
   }
 
-  static function filterProperties($row, $dn, $attrs)
+  static function filterProperties ($row, $dn, $attrs)
   {
     global $config;
-    static $usertabs = array();
+    static $usertabs = [];
     if (empty($usertabs)) {
       foreach ($config->data['TABS']['USERTABS'] as $plug) {
         if ($plug['CLASS'] == 'user') {
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index c8e193537..a309d0f17 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -25,7 +25,7 @@ class DebugLevelAttribute extends SetAttribute
   {
     if (isset($attrs[$this->getLdapName()])) {
       $value = $attrs[$this->getLdapName()][0];
-      $this->value = array();
+      $this->value = [];
       foreach ($this->attribute->getChoices() as $choice) {
         if ($value & $choice) {
           $this->value[] = $choice;
@@ -36,7 +36,7 @@ class DebugLevelAttribute extends SetAttribute
     }
   }
 
-  function computeLdapValue()
+  function computeLdapValue ()
   {
     $value = 0;
     foreach ($this->value as $v) {
@@ -48,49 +48,49 @@ class DebugLevelAttribute extends SetAttribute
 
 class configInLdap extends simplePlugin
 {
-  var $objectclasses  = array("fusionDirectoryConf");
+  var $objectclasses  = ["fusionDirectoryConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Configuration'),
       'plTitle'         => _('FusionDirectory configuration'),
       'plDescription'   => _('Configuration screen of FusionDirectory'),
       'plIcon'          => 'geticon.php?context=categories&icon=settings&size=48',
-      'plObjectType'    => array(
-        'configuration' => array(
+      'plObjectType'    => [
+        'configuration' => [
           'name'      => _('FusionDirectory configuration'),
           'filter'    => 'objectClass=fusionDirectoryConf',
           'tabClass'  => 'tabs_configInLdap',
           'icon'      => 'geticon.php?context=categories&icon=settings&size=16',
           'mainAttr'  => FALSE,
           'ou'        => preg_replace('/^[^,]+,/', '', CONFIGRDN)
-        )
-      ),
-      'plSection'       => array('conf' => array('name' => _('Configuration'), 'priority' => 20)),
-      'plManages'       => array('configuration'),
+        ]
+      ],
+      'plSection'       => ['conf' => ['name' => _('Configuration'), 'priority' => 20]],
+      'plManages'       => ['configuration'],
       'plPriority'      => 0,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
     global $config;
-    $plugins = array();
+    $plugins = [];
     if (session::is_set('plist')) {
       $plugins = array_keys(session::get('plist')->info);
     }
     sort($plugins);
-    return array(
-      'look_n_feel' => array(
+    return [
+      'look_n_feel' => [
         'name'  => _('Look and feel'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Language'), _('Language of the application. If \'automatic\' or not available, the one asked by the browser will be used. This setting can be overriden per user.'),
             'fdLanguage', FALSE,
-            array('')
+            ['']
           ),
           new SelectAttribute (
             _('Theme'), _('Theme to be used'),
@@ -101,14 +101,14 @@ class configInLdap extends simplePlugin
           new SelectAttribute (
             _('Timezone'), _('Timezone to be used'),
             'fdTimezone', TRUE,
-            array('America/New_York')
+            ['America/New_York']
           ),
           new HiddenAttribute ('fusionConfigMd5'),
-        )
-      ),
-      'core_settings' => array(
+        ]
+      ],
+      'core_settings' => [
         'name'  => _('Core settings'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('LDAP size limit'), _('Defines the number of entries to get from LDAP by default.'),
             'fdLdapSizeLimit', FALSE,
@@ -118,7 +118,7 @@ class configInLdap extends simplePlugin
             _('Edit locking'),
             _('Check if a entry currently being edited has been modified outside of FusionDirectory in the meantime.'),
             'fdModificationDetectionAttribute', FALSE,
-            array('', 'entryCSN', 'contextCSN'), 'entryCSN'
+            ['', 'entryCSN', 'contextCSN'], 'entryCSN'
           ),
           new BooleanAttribute (
             _('Enable logging'),
@@ -147,15 +147,15 @@ class configInLdap extends simplePlugin
             'fdWildcardForeignKeys', FALSE,
             TRUE
           ),
-        )
-      ),
-      'password' => array(
+        ]
+      ],
+      'password' => [
         'name'  => _('Password settings'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Password default hash'), _('Default hash to be used'),
             'fdPasswordDefaultHash', TRUE,
-            array('ssha')
+            ['ssha']
           ),
           new BooleanAttribute (
             _('Force default hash'), _('Force the use of the default password hash'),
@@ -184,17 +184,17 @@ class configInLdap extends simplePlugin
             _('SASL Exop'), _('Attribute to be stored in the userPassword attribute'),
             'fdSaslExop'
           ),
-        )
-      ),
-      'login' => array(
+        ]
+      ],
+      'login' => [
         'name'  => _('Login and session'),
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute (
             _('Login attribute'),
             _('Which LDAP attribute should be used as the login name during login.'),
             'fdLoginAttribute', TRUE,
-            array('uid', 'mail', 'uid,mail'), 'uid',
-            array('uid', 'mail', 'both')
+            ['uid', 'mail', 'uid,mail'], 'uid',
+            ['uid', 'mail', 'both']
           ),
           new BooleanAttribute (
             _('Enforce encrypted connections'),
@@ -227,11 +227,11 @@ class configInLdap extends simplePlugin
             'fdHttpHeaderAuthHeaderName', FALSE,
             'AUTH_USER'
           ),
-        )
-      ),
-      'ssl' => array(
+        ]
+      ],
+      'ssl' => [
         'name'  => _('SSL'),
-        'attrs' => array(
+        'attrs' => [
           new TrimmedStringAttribute (
             _('Key path'), _('Path to FusionDirectory private key. Unused for now.'),
             'fdSslKeyPath', FALSE,
@@ -247,11 +247,11 @@ class configInLdap extends simplePlugin
             'fdSslCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-        )
-      ),
-      'cas' => array(
+        ]
+      ],
+      'cas' => [
         'name'  => _('CAS'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Enable CAS'), _('CAS login will be used instead of LDAP bind'),
             'fdCasActivated', FALSE,
@@ -277,16 +277,16 @@ class configInLdap extends simplePlugin
             'fdCasContext', FALSE,
             '/cas'
           ),
-        )
-      ),
-      'people_and_group' => array(
+        ]
+      ],
+      'people_and_group' => [
         'name'  => _('People and group storage'),
-        'class' => array('critical'),
-        'attrs' => array(
+        'class' => ['critical'],
+        'attrs' => [
           new SelectAttribute (
             _('People DN attribute'), _('Attribute to use at the beginning of users dn'),
             'fdAccountPrimaryAttribute', TRUE,
-            array('uid', 'cn')
+            ['uid', 'cn']
           ),
           new StringAttribute (
             _('CN pattern'), _('The pattern to use to build the common name field'),
@@ -321,11 +321,11 @@ class configInLdap extends simplePlugin
             _('Postal address pattern'), _('When using separate address fields, you can use a pattern to fill postalAddress field.'),
             'fdPostalAddressPattern'
           ),
-        )
-      ),
-      'debug' => array(
+        ]
+      ],
+      'debug' => [
         'name'  => _('Debugging'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Display errors'),
             _('Shows PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some passwords in it.'),
@@ -346,18 +346,18 @@ class configInLdap extends simplePlugin
               _('Debug level'),
               _('Display certain information on each page load.'),
               'fdDebugLevel', FALSE,
-              array(DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
-                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL),
+              [DEBUG_TRACE,  DEBUG_LDAP, DEBUG_DB,   DEBUG_SHELL,  DEBUG_POST,
+                    DEBUG_SESSION,  DEBUG_ACL,  DEBUG_SI, DEBUG_MAIL],
                     DEBUG_TRACE,
-              array('Trace',      'LDAP',     'Database', 'Shell',      'POST',
-                    'SESSION',      'ACL',      'SI',     'Mail')
+              ['Trace',      'LDAP',     'Database', 'Shell',      'POST',
+                    'SESSION',      'ACL',      'SI',     'Mail']
             )
           ),
-        )
-      ),
-      'miscellaneous' => array(
+        ]
+      ],
+      'miscellaneous' => [
         'name'  => _('Miscellaneous'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Display summary in listings'),
             _('Determines whether a status bar will be shown on the bottom of lists, displaying a short summary of type and number of elements in the list.'),
@@ -374,42 +374,42 @@ class configInLdap extends simplePlugin
               _('Available department categories'), _('Available categories in the departments dropdown'),
               'fdDepartmentCategories', FALSE
             ),
-            array()
+            []
           ),
           new OrderedArrayAttribute(
             new PipeSeparatedCompositeAttribute(
               _('Use this to hide some menu entry to specific groups of users'),
               'fdPluginsMenuBlacklist',
-              array(
+              [
                 new SelectAttribute(
                   '', _('Group or role'),
                   'blacklistGroup', TRUE,
-                  array()
+                  []
                 ),
                 new SelectAttribute(
                   '', _('Plugin to blacklist'),
                   'blacklistPlugin', TRUE,
-                  array()
+                  []
                 ),
-              ),
+              ],
               '',
               _('Plugin menu blacklist')
             ),
             // no order
             FALSE,
-            array()
+            []
           )
-        )
-      ),
-      'hooks' => array(
+        ]
+      ],
+      'hooks' => [
         'name'  => _('Hooks'),
-        'class' => array('fullwidth'),
-        'attrs' => array(
+        'class' => ['fullwidth'],
+        'attrs' => [
           new OrderedArrayAttribute (
             new CompositeAttribute (
               _('Hooks that are called when specific actions happens'),
               'fdTabHook',
-              array(
+              [
                 new SelectAttribute(
                   _('Tab'), _('The tab that this hook concerns'),
                   'hookTab', TRUE,
@@ -418,22 +418,22 @@ class configInLdap extends simplePlugin
                 new SelectAttribute(
                   _('Mode'), _('When to call this command'),
                   'hookMode', TRUE,
-                  array('postcreate', 'postremove', 'postmodify',
+                  ['postcreate', 'postremove', 'postmodify',
                         'precreate', 'preremove', 'premodify', 'check',
-                        'prelock', 'postlock', 'preunlock', 'postunlock')
+                        'prelock', 'postlock', 'preunlock', 'postunlock']
                 ),
                 new TextAreaAttribute(
                   _('Command'), _('The command that will be called'),
                   'hookCmd', TRUE
                 )
-              ),
+              ],
               '/^([^\\|]+)\\|([^\\|]+)\\|(.*)$/',
               '%s|%s|%s',
               '', // acl
               _('Hooks')
             ),
             FALSE, // non-ordered
-            array(),
+            [],
             TRUE // edition
           ),
           new BooleanAttribute (
@@ -441,9 +441,9 @@ class configInLdap extends simplePlugin
             _('When enabled successful hook execution output is displayed to the user using a dialog.'),
             'fdDisplayHookOutput'
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE, $attributesInfo = NULL)
@@ -453,7 +453,7 @@ class configInLdap extends simplePlugin
     /* Languages */
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array("" => _("Automatic")), $languages);
+    $languages = array_merge(["" => _("Automatic")], $languages);
     $attributesInfo['look_n_feel']['attrs'][0]->setChoices(array_keys($languages), array_values($languages));
     /* Timezones */
     $attributesInfo['look_n_feel']['attrs'][2]->setChoices(timezone::_get_tz_zones());
@@ -485,7 +485,7 @@ class configInLdap extends simplePlugin
       array_keys($groupsAndRoles),
       array_values($groupsAndRoles)
     );
-    $menuPlugins = array();
+    $menuPlugins = [];
     $plist = session::get('plist');
     foreach ($config->data['SECTIONS'] as $section => $section_infos) {
       foreach ($config->data['MENU'][$section] as $info) {
@@ -511,73 +511,73 @@ class configInLdap extends simplePlugin
     $this->fusionConfigMd5 = md5_file(CACHE_DIR."/".CLASS_CACHE);
 
     $this->attributesAccess['fdHttpAuthActivated']->setManagedAttributes(
-      array(
-        'erase' => array (
-          TRUE => array (
+      [
+        'erase' => [
+          TRUE => [
             'fdCasActivated',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdEnableSnapshots']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdSnapshotBase',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
 
     $this->attributesAccess['fdTabHook']->setLinearRendering(FALSE);
 
     $this->attributesAccess['fdForceSSL']->setManagedAttributes(
-      array(
-        'disable' => array (
-          TRUE => array (
+      [
+        'disable' => [
+          TRUE => [
             'fdWarnSSL',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdCasActivated']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdCasServerCaCertPath',
             'fdCasHost',
             'fdCasPort',
             'fdCasContext',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdHttpHeaderAuthActivated']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdHttpHeaderAuthHeaderName',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
     $this->attributesAccess['fdSplitPostalAddress']->setManagedAttributes(
-      array(
-        'disable' => array (
-          FALSE => array (
+      [
+        'disable' => [
+          FALSE => [
             'fdPostalAddressPattern',
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return $this->dn;
   }
 
-  function check()
+  function check ()
   {
     $messages = parent::check();
     if (($this->fdPasswordDefaultHash == 'sasl') && ($this->fdSaslRealm == '') && ($this->fdSaslExop == '')) {
@@ -586,7 +586,7 @@ class configInLdap extends simplePlugin
     return $messages;
   }
 
-  static function get_themes()
+  static function get_themes ()
   {
     $themesdir  = '../ihtml/themes/';
     $themes     = array_keys(session::get(IconTheme::$session_var));
diff --git a/plugins/config/class_dashBoardConfig.inc b/plugins/config/class_dashBoardConfig.inc
index 38b094ad8..09993901b 100644
--- a/plugins/config/class_dashBoardConfig.inc
+++ b/plugins/config/class_dashBoardConfig.inc
@@ -20,27 +20,27 @@
 
 class dashboardConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdDashboardPluginConf');
+  var $objectclasses  = ['fdDashboardPluginConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Dashboard configuration'),
       'plDescription'   => _('FusionDirectory dashboard plugin configuration'),
       'plSelfModify'    => FALSE,
-      'plCategory'      => array('configuration'),
-      'plObjectType'    => array('smallConfig'),
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'systems' => array(
+    return [
+      'systems' => [
         'name'  => _('Dashboard name schema'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('Number of digits'), _('Number of digits to use after prefix'),
             'fdDashboardNumberOfDigit', FALSE,
@@ -51,21 +51,21 @@ class dashboardConfig extends simplePlugin
               _('Prefixes'), _('Prefixes to be used for computer ids'),
               'fdDashboardPrefix', TRUE
             ),
-            array("PC")
+            ["PC"]
           )
-        )
-      ),
-      'users' => array(
+        ]
+      ],
+      'users' => [
         'name'  => _('Dashboard expired users'),
-        'attrs' => array(
+        'attrs' => [
           new IntAttribute (
             _('Number of days'), _('Number of days before expiration needed for an account to show in the dashboard next expired accounts list'),
             'fdDashboardExpiredAccountsDays', FALSE,
             1, FALSE, 15
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/config/class_mainPluginsConfig.inc b/plugins/config/class_mainPluginsConfig.inc
index a00e598f0..dec365b7e 100644
--- a/plugins/config/class_mainPluginsConfig.inc
+++ b/plugins/config/class_mainPluginsConfig.inc
@@ -20,45 +20,45 @@
 
 class mainPluginsConfig extends simplePlugin
 {
-  var $objectclasses  = array("fusionDirectoryPluginsConf");
+  var $objectclasses  = ["fusionDirectoryPluginsConf"];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       "plShortName"     => _("Plugins configuration"),
       "plDescription"   => _("FusionDirectory plugins configuration"),
       "plSelfModify"    => FALSE,
-      "plCategory"      => array("configuration"),
-      "plObjectType"    => array("smallConfig"),
+      "plCategory"      => ["configuration"],
+      "plObjectType"    => ["smallConfig"],
 
       "plProvidedAcls"  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'ogroups' => array(
+    return [
+      'ogroups' => [
         'name'  => _('Object groups'),
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Groups RDN'), _('Branch in which object groups will be stored'),
             'fdOGroupRDN', TRUE,
             'ou=groups'
           ),
-        )
-      ),
-      'sasl' => array(
+        ]
+      ],
+      'sasl' => [
         'name'  => _('SASL'),
-        'attrs' => array(
+        'attrs' => [
           new BooleanAttribute (
             _('Force to ask for password'), _('Useful if you add a hook using password value when SASL user passwords are edited'),
             'fdForceSaslPasswordAsk', TRUE,
             FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 }
 ?>
diff --git a/plugins/config/class_pluginsConfigInLdap.inc b/plugins/config/class_pluginsConfigInLdap.inc
index 676fa318d..daea9f313 100644
--- a/plugins/config/class_pluginsConfigInLdap.inc
+++ b/plugins/config/class_pluginsConfigInLdap.inc
@@ -22,16 +22,16 @@ class pluginsConfigInLdap extends multiPlugin
 {
   var $tabClass = 'SMALLCONFIGTABS';
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Plugins'),
       'plDescription' => _('Configuration for plugins'),
       'plPriority'    => 20,
-      'plObjectType'  => array('configuration'),
+      'plObjectType'  => ['configuration'],
       'plSubTabs'     => 'SMALLCONFIGTABS',
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 }
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index ff252c0de..799ea261a 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -20,27 +20,27 @@
 
 class recoveryConfig extends simplePlugin
 {
-  var $objectclasses  = array('fdPasswordRecoveryConf');
+  var $objectclasses  = ['fdPasswordRecoveryConf'];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Password recovery'),
       'plDescription'   => _('Settings for the password recovery feature'),
-      'plObjectType'    => array('configuration'),
+      'plObjectType'    => ['configuration'],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array (
-      'settings' => array (
+    return  [
+      'settings' => [
         'name'      => _('Password recovery settings'),
-        'class'     => array ('alone'),
+        'class'     => ['alone'],
         'template'  => get_template_path('simpleplugin_section_alone.tpl'),
-        'attrs'     => array (
+        'attrs'     => [
           new BooleanAttribute (
             _('Activate password recovery'),
             _('Whether to activate or not password recovery feature'),
@@ -79,11 +79,11 @@ class recoveryConfig extends simplePlugin
             'fdPasswordRecoveryLoginAttribute', TRUE,
             'uid'
           ),
-        )
-      ),
-      'first_email' => array (
+        ]
+      ],
+      'first_email' => [
         'name' => _('First email'),
-        'attrs' => array (
+        'attrs' => [
           new StringAttribute (
             _('Subject'),
             _('Subject of the first email'),
@@ -98,11 +98,11 @@ class recoveryConfig extends simplePlugin
             TRUE,
             _("Hello,\n\nHere is your information: \n - Login : %s\n - Link : %s\n\nThis link is only valid for 10 minutes.")
           )
-        )
-      ),
-      'second_email' => array (
+        ]
+      ],
+      'second_email' => [
         'name' => _('Second email'),
-        'attrs' => array (
+        'attrs' => [
           new StringAttribute (
             _('Subject'),
             _('Subject of the second email'),
@@ -117,9 +117,9 @@ class recoveryConfig extends simplePlugin
             TRUE,
            _("Hello,\n\nYour password has been changed.\nYour login is still %s.")
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -128,7 +128,7 @@ class recoveryConfig extends simplePlugin
     // Check if token branch is here
     $ldap = $config->get_ldap_link();
     $tokenBranch = get_ou('recoveryTokenRDN').get_ou('fusiondirectoryRDN').$config->current['BASE'];
-    $ldap->cat($tokenBranch, array('dn'));
+    $ldap->cat($tokenBranch, ['dn']);
     if (!$ldap->count()) {
       $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($tokenBranch);
@@ -145,15 +145,15 @@ class recoveryConfig extends simplePlugin
     parent::__construct($dn, $object, $parent, $mainTab);
 
     $this->attributesAccess['fdPasswordRecoveryActivated']->setManagedAttributes(
-      array(
-        'disable' => array(
-          FALSE => array(
+      [
+        'disable' => [
+          FALSE => [
             'fdPasswordRecoveryEmail','fdPasswordRecoveryValidity','fdPasswordRecoverySalt',
             'fdPasswordRecoveryMailSubject','fdPasswordRecoveryMailBody',
             'fdPasswordRecoveryMail2Subject','fdPasswordRecoveryMail2Body'
-          )
-        )
-      )
+          ]
+        ]
+      ]
     );
   }
 }
diff --git a/plugins/generic/references/class_reference.inc b/plugins/generic/references/class_reference.inc
index c67a5a8f2..b398f82cf 100644
--- a/plugins/generic/references/class_reference.inc
+++ b/plugins/generic/references/class_reference.inc
@@ -20,35 +20,35 @@
 
 class reference extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('References'),
       'plDescription' => _('References'),
-      'plCategory'    => array('acl'),
-      'plObjectType'  => array(
-        'special' => array(
+      'plCategory'    => ['acl'],
+      'plObjectType'  => [
+        'special' => [
           'name' => 'special'
-        )
-      ),
+        ]
+      ],
       'plPriority'    => 10,
 
-      'plProvidedAcls'  => array()
-    );
+      'plProvidedAcls'  => []
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'      => _('References'),
-        'class'     => array('fullwidth'),
-        'attrs'     => array(
+        'class'     => ['fullwidth'],
+        'attrs'     => [
           new FakeAttribute('refs')
-        ),
+        ],
         'template'  => get_template_path('contents.tpl', TRUE, dirname(__FILE__))
-      ),
-    );
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -58,7 +58,7 @@ class reference extends simplePlugin
     $this->refs = NULL;
   }
 
-  function execute()
+  function execute ()
   {
     if ($this->refs === NULL) {
       $this->fillRefs();
@@ -68,7 +68,7 @@ class reference extends simplePlugin
     return parent::execute();
   }
 
-  function fillRefs()
+  function fillRefs ()
   {
     if (!isset($this->parent)) {
       $this->refs = NULL;
@@ -77,18 +77,18 @@ class reference extends simplePlugin
     $this->refs = $this->browseForeignKeys('references');
   }
 
-  function check()
+  function check ()
   {
   }
 
-  function save()
+  function save ()
   {
-    return array();
+    return [];
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
-    return array();
+    return [];
   }
 }
 
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 7ce7c6681..1c7cdccff 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -29,8 +29,8 @@ class UserPasswordAttribute extends CompositeAttribute
     $temp = passwordMethod::get_available_methods();
 
     /* Create password methods array */
-    $pwd_methods = array();
-    $this->needPassword = array();
+    $pwd_methods = [];
+    $this->needPassword = [];
     foreach ($temp['name'] as $id => $name) {
       $this->needPassword[$name] = $temp[$id]['object']->need_password();
       $pwd_methods[$name] = $name;
@@ -41,7 +41,7 @@ class UserPasswordAttribute extends CompositeAttribute
 
     parent::__construct (
       $description, $ldapName,
-      array(
+      [
         new SelectAttribute(
           _('Password method'), _('Password hash method to use'),
           $ldapName.'_pwstorage', TRUE,
@@ -62,13 +62,13 @@ class UserPasswordAttribute extends CompositeAttribute
           $ldapName.'_locked', FALSE,
           FALSE
         )
-      ),
+      ],
       '', '', $acl, $label
     );
     $this->attributes[0]->setSubmitForm(TRUE);
   }
 
-  public function setParent(&$plugin)
+  public function setParent (&$plugin)
   {
     global $config;
     parent::setParent($plugin);
@@ -84,7 +84,7 @@ class UserPasswordAttribute extends CompositeAttribute
   }
 
   /* We need to handle method select disabling manually */
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     global $config;
     if ($this->visible) {
@@ -143,7 +143,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->checkIfMethodNeedsPassword();
   }
 
-  function checkIfMethodNeedsPassword()
+  function checkIfMethodNeedsPassword ()
   {
     $method = $this->attributes[0]->getValue();
     if ($method != $this->previousMethod) {
@@ -160,7 +160,7 @@ class UserPasswordAttribute extends CompositeAttribute
     $this->previousMethod = $method;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     global $config;
     $pw_storage = $config->get_cfg_value('passwordDefaultHash', 'ssha');
@@ -183,10 +183,10 @@ class UserPasswordAttribute extends CompositeAttribute
         $pw_storage = 'clear';
       }
     }
-    return array($pw_storage, $password, $password, $value, $locked);
+    return [$pw_storage, $password, $password, $value, $locked];
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($this->needPassword[$values[0]] && ($values[1] == '')) {
       if ($this->plugin->is_template) {
@@ -209,7 +209,7 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function check()
+  function check ()
   {
     $method = $this->attributes[0]->getValue();
     if (!$this->needPassword[$method]) {
@@ -225,17 +225,17 @@ class UserPasswordAttribute extends CompositeAttribute
     }
   }
 
-  function getMethod()
+  function getMethod ()
   {
     return $this->attributes[0]->getValue();
   }
 
-  function getClear()
+  function getClear ()
   {
     return $this->attributes[1]->getValue();
   }
 
-  function isLocked()
+  function isLocked ()
   {
     return $this->attributes[4]->getValue();
   }
@@ -246,8 +246,8 @@ class PostalAddressAttribute extends TextAreaAttribute
   function inputValue ($ldapValue)
   {
     return str_replace(
-      array('$',  '\24','\5C'),
-      array("\n", '$',  '\\'),
+      ['$',  '\24','\5C'],
+      ["\n", '$',  '\\'],
       $ldapValue
     );
   }
@@ -255,11 +255,11 @@ class PostalAddressAttribute extends TextAreaAttribute
   function computeLdapValue ()
   {
     return str_replace(
-      array("\r\n", "\n", "\r"),
+      ["\r\n", "\n", "\r"],
       '$',
       str_replace(
-        array('\\', '$'),
-        array('\5C','\24'),
+        ['\\', '$'],
+        ['\5C','\24'],
         $this->getValue()
       )
     );
@@ -268,19 +268,19 @@ class PostalAddressAttribute extends TextAreaAttribute
 
 class user extends simplePlugin
 {
-  var $objectclasses  = array('inetOrgPerson','organizationalPerson','person');
+  var $objectclasses  = ['inetOrgPerson','organizationalPerson','person'];
 
   private $was_locked;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('User'),
       'plDescription' => _('User account information'),
       'plIcon'        => 'geticon.php?context=applications&icon=user-info&size=48',
       'plSmallIcon'   => 'geticon.php?context=applications&icon=user-info&size=16',
       'plSelfModify'  => TRUE,
-      'plObjectType'  => array('user' => array(
+      'plObjectType'  => ['user' => [
         'name'        => _('User'),
         'description' => _('User account'),
         'filter'      => '(objectClass=inetOrgPerson)',
@@ -288,16 +288,16 @@ class user extends simplePlugin
         'nameAttr'    => 'cn',
         'icon'        => 'geticon.php?context=types&icon=user&size=16',
         'ou'          => get_ou('userRDN'),
-      )),
-      'plForeignKeys'  => array(
-        'manager' => array('user','dn','manager=%oldvalue%','*')
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'manager' => ['user','dn','manager=%oldvalue%','*']
+      ],
 
       'plProvidedAcls' => array_merge(
         parent::generatePlProvidedAcls(static::getAttributesInfo()),
-        array('userLock' => _('User lock status'))
+        ['userLock' => _('User lock status')]
       )
-    );
+    ];
   }
 
   // The main function : information about attributes
@@ -306,12 +306,12 @@ class user extends simplePlugin
     global $config;
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array('' => ''), $languages);
-    $attributesInfo = array(
-      'perso' => array(
+    $languages = array_merge(['' => ''], $languages);
+    $attributesInfo = [
+      'perso' => [
         'name'  => _('Personal information'),
         'icon'  => 'geticon.php?context=types&icon=user&size=16',
-        'attrs' => array(
+        'attrs' => [
           new HiddenAttribute('cn'),
           new StringAttribute (
             _('Last name'), _('Last name of this user'),
@@ -332,12 +332,12 @@ class user extends simplePlugin
             'jpegPhoto', FALSE,
             150, 200, 'jpeg'
           ),
-        )
-      ),
-      'contact' => array(
+        ]
+      ],
+      'contact' => [
         'name'  => _('Organizational contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Location'), _('Location'),
             'l', FALSE
@@ -378,12 +378,12 @@ class user extends simplePlugin
             _('Homepage'), _('Personal homepage'),
             'labeledURI', FALSE
           ),
-        )
-      ),
-      'account' => array(
+        ]
+      ],
+      'account' => [
         'name'  => _('Account information'),
         'icon'  => 'geticon.php?context=applications&icon=ldap&size=16',
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute (get_ou("userRDN")),
           new UidAttribute (
             _('Login'), _('Login of this user'),
@@ -398,12 +398,12 @@ class user extends simplePlugin
             _('Password'), _('Password of the user'),
             'userPassword', FALSE
           ),
-        )
-      ),
-      'homecontact' => array(
+        ]
+      ],
+      'homecontact' => [
         'name'  => _('Personal contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
-        'attrs' => array(
+        'attrs' => [
           new StringAttribute (
             _('Display name'), _('Name this user should appear as. Used by Exchange.'),
             'displayName', FALSE
@@ -416,12 +416,12 @@ class user extends simplePlugin
             _('Private phone'), _('Home phone number'),
             'homePhone', FALSE
           ),
-        )
-      ),
-      'organization' => array(
+        ]
+      ],
+      'organization' => [
         'name'  => _('Organizational information'),
         'icon'  => 'geticon.php?context=places&icon=folder&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute (
             new StringAttribute (
               _('Title'), _('Title of a person in their organizational context. Each title is one value of this multi-valued attribute'),
@@ -452,12 +452,12 @@ class user extends simplePlugin
             _('Manager'), _('Manager'),
             'manager', FALSE
           ),
-        )
-      ),
-    );
+        ]
+      ],
+    ];
     if ($config->get_cfg_value('SplitPostalAddress') == 'TRUE') {
       $attributesInfo['contact']['attrs'][2]->setVisible(FALSE);
-      array_splice($attributesInfo['contact']['attrs'], 3, 0, array(
+      array_splice($attributesInfo['contact']['attrs'], 3, 0, [
         new StringAttribute (
           _('Street'), _('Street part of the address'),
           'street', FALSE
@@ -471,7 +471,7 @@ class user extends simplePlugin
           'postalCode', FALSE,
           0, FALSE
         ),
-      ));
+      ]);
     }
     return $attributesInfo;
   }
@@ -491,13 +491,13 @@ class user extends simplePlugin
     $this->was_locked = $this->attributesAccess['userPassword']->isLocked();
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     /* Only inetOrgPerson is needed, it has the two others as SUP classes */
     return (isset($attrs['objectClass']) && in_array_ics('inetOrgPerson', $attrs['objectClass']));
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     parent::resetCopyInfos();
     $this->attributesAccess['uid']->setDisabled($this->initially_was_account && !$this->is_template);
@@ -513,7 +513,7 @@ class user extends simplePlugin
   private function applyPattern ($pattern)
   {
     $fields   = templateHandling::listFields($pattern);
-    $attrs    = array();
+    $attrs    = [];
     foreach ($fields as $field) {
       if (in_array($field, $this->attributes)) {
         $attrs[$field] = $this->$field;
@@ -534,7 +534,7 @@ class user extends simplePlugin
     return templateHandling::parseString($pattern, $attrs);
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     global $config;
     if ($this->is_template) {
@@ -548,14 +548,14 @@ class user extends simplePlugin
     return $this->create_unique_dn($attribute, get_ou('userRDN').$this->base);
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->append('css_files', 'plugins/users/style/user_tab.css');
     return parent::execute();
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if ($this->attributesAccess['userPassword']->getClear() != '') {
       /* There may be hooks using this even if LDAP object is not modified */
@@ -577,7 +577,7 @@ class user extends simplePlugin
     return parent::prepare_save();
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -594,7 +594,7 @@ class user extends simplePlugin
     return $errors;
   }
 
-  function post_save()
+  function post_save ()
   {
     global $ui;
 
@@ -608,7 +608,7 @@ class user extends simplePlugin
     return parent::post_save();
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     if ($this->uid != '') {
       $skip[] = 'uid';
@@ -622,17 +622,17 @@ class user extends simplePlugin
           $hash = $tmp->generate_hash($password);
         }
       }
-      $this->userPassword = array(
+      $this->userPassword = [
         '',
         $password,
         $password,
         $hash,
         $this->attributesAccess['userPassword']->isLocked()
-      );
+      ];
     }
   }
 
-  function callHook($cmd, array $addAttrs = array(), &$returnOutput = array(), &$returnCode = NULL)
+  function callHook ($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     $addAttrs['passwordMethod'] = $this->attributesAccess['userPassword']->getMethod();
     $addAttrs['userLocked']     = $this->attributesAccess['userPassword']->isLocked();
@@ -656,7 +656,7 @@ class user extends simplePlugin
     $length       = $config->get_cfg_value('passwordMinLength', 0);
 
     $ldap = $config->get_ldap_link();
-    $ldap->cat($user, array('pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword'));
+    $ldap->cat($user, ['pwdPolicySubentry', 'pwdHistory', 'pwdChangedTime', 'userPassword']);
     $attrs = $ldap->fetch();
     $ppolicydn = '';
     if (isset($attrs['pwdPolicySubentry'][0])) {
@@ -668,7 +668,7 @@ class user extends simplePlugin
       }
     }
     if (!empty($ppolicydn)) {
-      $ldap->cat($ppolicydn, array('pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify'));
+      $ldap->cat($ppolicydn, ['pwdAllowUserChange', 'pwdMinLength', 'pwdMinAge', 'pwdSafeModify']);
       $policy = $ldap->fetch();
       if (!$policy) {
         return sprintf(_('Ppolicy "%s" could not be found in the LDAP!'), $ppolicydn);
diff --git a/plugins/personal/roles/class_userRoles.inc b/plugins/personal/roles/class_userRoles.inc
index 95be4ba93..db3078c9a 100644
--- a/plugins/personal/roles/class_userRoles.inc
+++ b/plugins/personal/roles/class_userRoles.inc
@@ -20,54 +20,54 @@
 
 class userRoles extends simplePlugin
 {
-  var $objectclasses = array();
+  var $objectclasses = [];
 
-  protected $savedGroupsMembership  = array();
-  protected $savedRolesMembership   = array();
-  protected $templateGroups         = array();
-  protected $templateRoles          = array();
+  protected $savedGroupsMembership  = [];
+  protected $savedRolesMembership   = [];
+  protected $templateGroups         = [];
+  protected $templateRoles          = [];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'     => _('Groups and roles'),
       'plDescription'   => _('Edit user\'s groups and roles'),
       'plIcon'          => 'geticon.php?context=types&icon=role&size=48',
       'plSmallIcon'     => 'geticon.php?context=types&icon=role&size=16',
       'plSelfModify'    => FALSE,
-      'plObjectType'    => array('user'),
+      'plObjectType'    => ['user'],
       'plPriority'      => 5,
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'groups' => array(
+    return [
+      'groups' => [
         'name'  => _('Groups membership'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               '', _('Groups membership'),
               'groupsMembership', FALSE
             )
           )
-        )
-      ),
-      'roles' => array(
+        ]
+      ],
+      'roles' => [
         'name'  => _('Roles membership'),
-        'attrs' => array(
+        'attrs' => [
           new SetAttribute(
             new SelectAttribute(
               '', _('Roles membership'),
               'rolesMembership', FALSE
             )
           )
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -76,8 +76,8 @@ class userRoles extends simplePlugin
     $this->ignore_account = FALSE;
 
     /* Groups handling */
-    $groups      = array();
-    $groupsattrs = objects::ls('ogroup', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
+    $groups      = [];
+    $groupsattrs = objects::ls('ogroup', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
     foreach ($groupsattrs as $dn => $groupattr) {
       $groupDisplay = $groupattr['cn'];
       if (isset($groupattr['description'])) {
@@ -94,7 +94,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userGroups']['count']);
         $myGroups = array_combine($this->attrs['userGroups'], $this->attrs['userGroups']);
       } else {
-        $myGroups = array();
+        $myGroups = [];
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -103,7 +103,7 @@ class userRoles extends simplePlugin
           '(member='.$this->dn.')'
         );
       } else {
-        $myGroups = array();
+        $myGroups = [];
       }
       $this->savedGroupsMembership = array_keys($myGroups);
     }
@@ -113,8 +113,8 @@ class userRoles extends simplePlugin
     $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
 
     /* Roles handling */
-    $roles        = array();
-    $rolesattrs  = objects::ls('role', array('cn' => 1,  'description' => 1), NULL, '', TRUE);
+    $roles        = [];
+    $rolesattrs  = objects::ls('role', ['cn' => 1,  'description' => 1], NULL, '', TRUE);
     foreach ($rolesattrs as $dn => $roleattr) {
       $roleDisplay = $roleattr['cn'];
       if (isset($roleattr['description'])) {
@@ -131,7 +131,7 @@ class userRoles extends simplePlugin
         unset($this->attrs['userRoles']['count']);
         $myRoles = array_combine($this->attrs['userRoles'], $this->attrs['userRoles']);
       } else {
-        $myRoles = array();
+        $myRoles = [];
       }
     } else {
       if (($this->dn != '') && ($this->dn != 'new')) {
@@ -140,7 +140,7 @@ class userRoles extends simplePlugin
           '(roleOccupant='.$this->dn.')'
         );
       } else {
-        $myRoles = array();
+        $myRoles = [];
       }
       $this->savedRolesMembership = array_keys($myRoles);
     }
@@ -153,7 +153,7 @@ class userRoles extends simplePlugin
     $this->initially_was_account = $this->is_account;
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     if (!isset($attrs['dn'])) {
       if (isset($attrs['userGroups'])) { /* Template groups field */
@@ -167,7 +167,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  protected function ldap_remove()
+  protected function ldap_remove ()
   {
     if ($this->is_template) {
       return parent::ldap_remove();
@@ -191,16 +191,16 @@ class userRoles extends simplePlugin
         }
       }
     }
-    return array();
+    return [];
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if (parent::shouldSave()) {
       return TRUE;
@@ -214,7 +214,7 @@ class userRoles extends simplePlugin
     return FALSE;
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     $errors = parent::prepare_save();
     if ($this->is_template) {
@@ -224,16 +224,16 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function prepare_remove()
+  function prepare_remove ()
   {
     parent::prepare_remove();
     if ($this->is_template) {
-      $this->attrs['userGroups']  = array();
-      $this->attrs['userRoles']   = array();
+      $this->attrs['userGroups']  = [];
+      $this->attrs['userRoles']   = [];
     }
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     $errors = parent::ldap_save();
 
@@ -243,12 +243,12 @@ class userRoles extends simplePlugin
 
     if (!$this->is_template) {
       /* We need to give an array which looks like an ldap fetch and match user filter */
-      $fake_attrs = array(
-        'objectClass' => array('inetOrgPerson','organizationalPerson','person'),
-        'cn'          => array($this->dn),
-        'uid'         => array($this->dn),
+      $fake_attrs = [
+        'objectClass' => ['inetOrgPerson','organizationalPerson','person'],
+        'cn'          => [$this->dn],
+        'uid'         => [$this->dn],
         'dn'          => $this->dn
-      );
+      ];
 
       /* Take care about groupsMembership values: add to groups */
       $groupsMembership = $this->attributesAccess['groupsMembership']->getValue();
@@ -344,7 +344,7 @@ class userRoles extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = array())
+  function adapt_from_template ($attrs, $skip = [])
   {
     parent::adapt_from_template($attrs, $skip);
 
@@ -358,7 +358,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['groupsMembership']->setValue(array_keys($myGroups));
       $this->templateGroups = array_keys($myGroups);
     } else {
-      $this->templateGroups = array();
+      $this->templateGroups = [];
     }
 
     $this->savedRolesMembership = $this->rolesMembership;
@@ -371,7 +371,7 @@ class userRoles extends simplePlugin
       $this->attributesAccess['rolesMembership']->setValue(array_keys($myRoles));
       $this->templateRoles = array_keys($myRoles);
     } else {
-      $this->templateRoles = array();
+      $this->templateRoles = [];
     }
 
     $this->is_account = ((count($this->rolesMembership) > 0) || (count($this->groupsMembership) > 0));
diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index 6d90d8a69..a1b881127 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -23,7 +23,7 @@ require_once("class_setupStep.inc");
 
 class fake_userinfo extends userinfo
 {
-  function __construct()
+  function __construct ()
   {
     $this->cn   = 'fake_cn';
     $this->dn   = 'fake_dn';
@@ -50,12 +50,12 @@ class setup
   var $i_previous       = 0;
 
   var $i_config         = 4;
-  var $o_steps          = array();
-  var $captured_values  = array();
+  var $o_steps          = [];
+  var $captured_values  = [];
 
-  function __construct()
+  function __construct ()
   {
-    $this->o_steps = array(
+    $this->o_steps = [
       new setupStepWelcome($this),
       new setupStepLanguage($this),
       new setupStepChecks($this),
@@ -63,7 +63,7 @@ class setup
       new setupStepConfig_before_init($this),
       new setupStepMigrate($this),
       new setupStepFinish($this),
-    );
+    ];
 
     $this->i_steps = count($this->o_steps);
 
@@ -75,7 +75,7 @@ class setup
     }
   }
 
-  function execute()
+  function execute ()
   {
     /* Display phpinfo() dialog when $_GET['info'] is set,
      *  but only do this, if user is allowed to use the setup.
@@ -96,7 +96,7 @@ class setup
 
 
   /* Save posted attributes  */
-  function save_object()
+  function save_object ()
   {
     /* Call save_object for current setup step */
     $this->o_steps[$this->i_current]->save_object();
@@ -167,7 +167,7 @@ class setup
   }
 
 
-  function disable_steps_from($start)
+  function disable_steps_from ($start)
   {
     for ($i = $start; $i < $this->i_steps; $i++) {
       $this->o_steps[$i]->set_enabled(FALSE);
@@ -177,7 +177,7 @@ class setup
 
 
   /* Create navigation menu */
-  function get_navigation_html()
+  function get_navigation_html ()
   {
     $str = '<ul class="menu"><li><a>FusionDirectory Setup</a><ul>';
     foreach ($this->o_steps as $key => $step) {
@@ -219,7 +219,7 @@ class setup
   }
 
 
-  function get_bottom_html()
+  function get_bottom_html ()
   {
     /* Skip adding forward/backward button,
      *  if the currently opened step is a sub dialog
@@ -241,20 +241,20 @@ class setup
   }
 
   /* Create header entry */
-  function get_header_text()
+  function get_header_text ()
   {
     return $this->o_steps[$this->i_current]->get_title();
   }
 
   /* Create header entry */
-  function get_header_image()
+  function get_header_image ()
   {
     return $this->o_steps[$this->i_current]->header_image;
   }
 
 
   /* Check if the given step id is valid and selectable */
-  function selectable_step($id)
+  function selectable_step ($id)
   {
     if (isset($this->o_steps[$id]) && $this->o_steps[$id]->is_enabled()) {
       return TRUE;
@@ -262,7 +262,7 @@ class setup
     return FALSE;
   }
 
-  function step_name_to_id($name)
+  function step_name_to_id ($name)
   {
     foreach ($this->o_steps as $id => $class) {
       if (get_class($class) == $name) {
@@ -273,7 +273,7 @@ class setup
   }
 
   /* Called when LDAP is configured */
-  function read_ldap_config()
+  function read_ldap_config ()
   {
     global $config;
     /* Get attributes from current ldap step */
diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc
index 2554fd386..1d9017b95 100644
--- a/setup/class_setupStep.inc
+++ b/setup/class_setupStep.inc
@@ -31,63 +31,63 @@ class setupStep extends simplePlugin
 
   var $header_image = '';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array();
+    return [];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct(NULL, NULL, $parent);
     $this->update_strings();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     die('abstract method');
   }
 
-  function get_short_name()
+  function get_short_name ()
   {
     return $this->s_short_name;
   }
 
-  function get_title()
+  function get_title ()
   {
     return $this->s_title;
   }
 
-  function get_description()
+  function get_description ()
   {
     return $this->s_description;
   }
 
-  function is_active()
+  function is_active ()
   {
     return $this->is_active;
   }
 
-  function is_enabled()
+  function is_enabled ()
   {
     return $this->is_enabled;
   }
 
-  function is_completed()
+  function is_completed ()
   {
     return $this->is_completed;
   }
 
-  function set_active($value = TRUE)
+  function set_active ($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled($value = TRUE)
+  function set_enabled ($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed($value = TRUE)
+  function set_completed ($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
@@ -95,7 +95,7 @@ class setupStep extends simplePlugin
   /* Return attributes handled by this setup step */
   public function get_attributes ()
   {
-    $tmp = array();
+    $tmp = [];
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
@@ -103,7 +103,7 @@ class setupStep extends simplePlugin
   }
 
   /* bypass LDAP loading */
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     foreach ($this->attributesInfo as $sectionInfo) {
       foreach ($sectionInfo['attrs'] as $attr) {
diff --git a/setup/class_setupStepChecks.inc b/setup/class_setupStepChecks.inc
index 081645f53..f901d9e32 100644
--- a/setup/class_setupStepChecks.inc
+++ b/setup/class_setupStepChecks.inc
@@ -23,27 +23,27 @@ class setupStepChecks extends setupStep
 {
   var $header_image = 'geticon.php?context=categories&icon=checks&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'modules' => array(
+    return [
+      'modules' => [
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('basic_checks')
-        )
-      ),
-      'setup' => array(
+        ]
+      ],
+      'setup' => [
         'name'      => _('PHP setup configuration'),
         'template'  => get_template_path("setup_checks.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('config_checks')
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Installation check');
     $this->s_title        = _('Installation check');
@@ -51,17 +51,17 @@ class setupStepChecks extends setupStep
   }
 
   /* Execute and display template */
-  function execute()
+  function execute ()
   {
     $this->run_checks();
     return parent::execute();
   }
 
   /* Execute all checks */
-  function run_checks()
+  function run_checks ()
   {
-    $basic_checks   = array();
-    $config_checks  = array();
+    $basic_checks   = [];
+    $config_checks  = [];
 
     /* PHP version check */
     $N = _('Checking PHP version');
@@ -69,7 +69,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to a supported version.');
     $R = version_compare(phpversion(), PHP_MIN_VERSION, '>=');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for LDAP extension */
     $N = msgPool::checkingFor("LDAP");
@@ -77,7 +77,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("LDAP");
     $R = is_callable("ldap_bind");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for gettext support */
     $N = msgPool::checkingFor("gettext");
@@ -85,7 +85,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("gettext");
     $R = is_callable("bindtextdomain");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for curl support */
     $N = msgPool::checkingFor('curl');
@@ -93,7 +93,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('curl');
     $R = is_callable('curl_init');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Pseudo-random check */
     $N = _('Checking cryptographically secure pseudo-random integers');
@@ -101,7 +101,7 @@ class setupStepChecks extends setupStep
     $S = _('Please upgrade to PHP7 or activate openssl module.');
     $R = (is_callable('random_int') || is_callable('openssl_random_pseudo_bytes'));
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for json support */
     $N = msgPool::checkingFor('json');
@@ -109,7 +109,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('json');
     $R = is_callable('json_encode');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for filter support */
     $N = msgPool::checkingFor('filter');
@@ -117,7 +117,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule('filter');
     $R = is_callable('filter_var');
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     /* Check for iconv */
     $N = msgPool::checkingFor("iconv");
@@ -125,7 +125,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("iconv");
     $R = is_callable("iconv");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check for installed mhash module */
     $N = msgPool::checkingFor("hash method");
@@ -133,7 +133,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mhash/sha1");
     $R = is_callable('mhash') || is_callable('sha1');
     $M = FALSE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if imap module is available */
     $N = msgPool::checkingFor("IMAP");
@@ -141,7 +141,7 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("IMAP");
     $R = is_callable("imap_open");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if mbstring module is available */
     $N = msgPool::checkingFor(_("mbstring"));
@@ -149,21 +149,21 @@ class setupStepChecks extends setupStep
     $S = msgPool::installPhpModule("mbstring");
     $R = is_callable("mb_strlen");
     $M = TRUE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     $N = msgPool::checkingFor(_('imagick'));
     $D = _('FusionDirectory requires this extension to handle images.');
     $S = msgPool::installPhpModule('imagick');
     $R = class_exists('Imagick', FALSE);
     $M = TRUE;
-    $basic_checks[] = array('NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M );
+    $basic_checks[] = ['NAME' => $N , 'DESC' => $D , 'RESULT' => $R , 'SOLUTION' => $S , 'MUST' => $M ];
 
     $N = msgPool::checkingFor(_("compression module"));
     $D = _("FusionDirectory requires this extension to handle snapshots.");
     $S = msgPool::installPhpModule("compile with --with-zlib");
     $R = is_callable("gzcompress");
     $M = FALSE;
-    $basic_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $basic_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* PHP Configuration checks */
 
@@ -174,7 +174,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or higher.");
     $R = ini_get("session.gc_maxlifetime") >= 86400;
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Session auto start must be turned off */
     $session_auto_start = ini_get('session.auto_start');
@@ -183,7 +183,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'session.auto_start' in your php.ini and set it to 'Off'.");
     $R = !$session_auto_start;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if memory limit is set to 128 or > */
     $N = "memory_limit &gt;= <b>128</b>";
@@ -191,7 +191,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'memory_limit' in your php.ini and set it to '128M' or higher.");
     $R = ini_get('memory_limit') >= 128;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Implicit Flush disabled can increase performance */
     $N = "implicit_flush = <b>"._("Off")."</b>";
@@ -199,7 +199,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'implicit_flush' in your php.ini and set it to 'Off'.");
     $R = !ini_get('implicit_flush');
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Check if execution time is set to 30 */
     $N = "max_execution_time &gt;= <b>30</b>";
@@ -207,7 +207,7 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'max_execution_time' in your php.ini and set it to '30' or higher.");
     $R = ini_get("max_execution_time") >= 30;
     $M = TRUE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     /* Expose php should be set to off */
     $N = "expose_php = <b>"._("Off")."</b>";
@@ -215,19 +215,19 @@ class setupStepChecks extends setupStep
     $S = _("Search for 'expose_php' in your php.ini and set if to 'Off'.");
     $R = !ini_get("expose_php");
     $M = FALSE;
-    $config_checks[] = array("NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M );
+    $config_checks[] = ["NAME" => $N , "DESC" => $D , "RESULT" => $R , "SOLUTION" => $S , "MUST" => $M ];
 
     $this->basic_checks   = $basic_checks;
     $this->config_checks  = $config_checks;
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
      /* If everything is fine, set this step to completed
      *  and allow switching to next setup step */
     $failed = FALSE;
-    foreach (array('basic_checks','config_checks') as $type) {
+    foreach (['basic_checks','config_checks'] as $type) {
       foreach ($this->$type as $obj) {
         if ($obj['MUST'] && !$obj['RESULT']) {
           $failed = TRUE;
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index a62e80c6e..d83c73764 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -21,7 +21,7 @@
 
 class setupStepConfig_before_init extends setupStep
 {
-  function update_strings()
+  function update_strings ()
   {
     global $config;
     if (!isset($config->current['BASE'])) {
@@ -42,57 +42,57 @@ class setupStepConfig extends configInLdap
   var $is_completed = FALSE;
   var $header_image;
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array();
+    return [];
   }
 
-  function __construct($parent, $cv)
+  function __construct ($parent, $cv)
   {
     global $config;
     parent::__construct(CONFIGRDN.$config->current['BASE'], NULL, $parent, TRUE);
 
-    $this->attributesInfo['miscellaneous']['class'] = array('invisible');
-    $this->attributesInfo['debug']['class'] = array('invisible');
+    $this->attributesInfo['miscellaneous']['class'] = ['invisible'];
+    $this->attributesInfo['debug']['class'] = ['invisible'];
 
     $this->fdLanguage     = $cv['lang_selected'];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $infos = parent::plInfo();
     $this->header_image = $infos['plIcon'];
   }
 
-  function get_short_name()
+  function get_short_name ()
   {
     $infos = parent::plInfo();
     return $infos['plTitle'];
   }
 
-  function get_title()
+  function get_title ()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
-  function get_description()
+  function get_description ()
   {
     $infos = parent::plInfo();
     return $infos['plDescription'];
   }
 
   /* Return attributes handled by this setup step */
-  function get_attributes()
+  function get_attributes ()
   {
-    $tmp = array();
+    $tmp = [];
     foreach (array_keys($this->attributesAccess) as $attr) {
       $tmp[$attr] = $this->$attr;
     }
     return $tmp;
   }
 
-  function save_object()
+  function save_object ()
   {
     global $config;
     parent::save_object();
@@ -126,58 +126,58 @@ class setupStepConfig extends configInLdap
     }
   }
 
-  function is_active()
+  function is_active ()
   {
     return $this->is_active;
   }
 
-  function is_enabled()
+  function is_enabled ()
   {
     return $this->is_enabled;
   }
 
-  function is_completed()
+  function is_completed ()
   {
     return $this->is_completed;
   }
 
-  function set_active($value = TRUE)
+  function set_active ($value = TRUE)
   {
     $this->is_active = ($value == TRUE);
   }
 
-  function set_enabled($value = TRUE)
+  function set_enabled ($value = TRUE)
   {
     $this->is_enabled = ($value == TRUE);
   }
 
-  function set_completed($value = TRUE)
+  function set_completed ($value = TRUE)
   {
     $this->is_completed = ($value == TRUE);
   }
 
   /* bypass acl system as there is no user login */
-  function acl_is_writeable($attribute, $skip_write = FALSE)
+  function acl_is_writeable ($attribute, $skip_write = FALSE)
   {
     return TRUE;
   }
-  function acl_is_readable($attribute)
+  function acl_is_readable ($attribute)
   {
     return TRUE;
   }
-  function acl_is_createable($base = "")
+  function acl_is_createable ($base = "")
   {
     return TRUE;
   }
-  function acl_is_removeable($base = "")
+  function acl_is_removeable ($base = "")
   {
     return TRUE;
   }
-  function acl_is_moveable($base = "")
+  function acl_is_moveable ($base = "")
   {
     return TRUE;
   }
-  function aclGetPermissions($attribute = '0', $base = NULL, $skipWrite = FALSE)
+  function aclGetPermissions ($attribute = '0', $base = NULL, $skipWrite = FALSE)
   {
     return 'cmdrw';
   }
diff --git a/setup/class_setupStepFinish.inc b/setup/class_setupStepFinish.inc
index 0e2fe373b..ab93fab18 100644
--- a/setup/class_setupStepFinish.inc
+++ b/setup/class_setupStepFinish.inc
@@ -23,26 +23,26 @@ class setupStepFinish extends setupStep
 {
   var $header_image = 'geticon.php?context=devices&icon=server&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'welcome' => array(
+    return [
+      'welcome' => [
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_finish.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
-        )
-      )
-    );
+        'attrs'     => [
+        ]
+      ]
+    ];
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Finish');
     $this->s_title        = _('Finish - write the configuration file');
     $this->s_description  = _('Write configuration file');
   }
 
-  function get_conf_data()
+  function get_conf_data ()
   {
     $smarty           = get_smarty();
     $cv               = $this->parent->captured_values;
@@ -52,7 +52,7 @@ class setupStepFinish extends setupStep
     return $smarty->fetch(CONFIG_TEMPLATE_DIR.CONFIG_FILE);
   }
 
-  function insertConfigDefaults()
+  function insertConfigDefaults ()
   {
     /* Insert default config values, even for installed plugin */
     global $config, $ui, $plist, $BASE_DIR;
@@ -79,7 +79,7 @@ class setupStepFinish extends setupStep
     $config->checkLdapConfig(TRUE);
   }
 
-  function execute()
+  function execute ()
   {
     /* Check if there is currently an active fusiondirectory.conf */
     $exists   = file_exists(CONFIG_DIR."/".CONFIG_FILE);
@@ -98,7 +98,7 @@ class setupStepFinish extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $exists = file_exists(CONFIG_DIR.'/'.CONFIG_FILE);
@@ -121,7 +121,7 @@ class setupStepFinish extends setupStep
   }
 
   /* check if given file is world readable */
-  function is_world_readable($file)
+  function is_world_readable ($file)
   {
     clearstatcache();
     $p = fileperms($file);
diff --git a/setup/class_setupStepLanguage.inc b/setup/class_setupStepLanguage.inc
index 767f11930..de0fc6093 100644
--- a/setup/class_setupStepLanguage.inc
+++ b/setup/class_setupStepLanguage.inc
@@ -23,13 +23,13 @@ class setupStepLanguage extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-language&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'lang' => array(
+    return [
+      'lang' => [
         'name'      => _('Preferred language'),
-        'class'     => array('fullwidth', 'setup-language'),
-        'attrs'     => array(
+        'class'     => ['fullwidth', 'setup-language'],
+        'attrs'     => [
           new DisplayAttribute(
             '', '',
             'msg', FALSE
@@ -42,19 +42,19 @@ class setupStepLanguage extends setupStep
             'lang', FALSE,
             'en_EN'
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->lang = Language::detect();
     $this->attributesAccess['lang_selected']->setSize(20);
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Language setup');
     $this->s_title        = _('Language setup');
@@ -62,16 +62,16 @@ class setupStepLanguage extends setupStep
     $this->msg            = _('At this point, you can select the site wide default language. Choosing "automatic" will use the language requested by the browser. This setting can be overriden per user.');
   }
 
-  function execute()
+  function execute ()
   {
     $languages = Language::getList(TRUE);
     asort($languages);
-    $languages = array_merge(array("" => _("Automatic")), $languages);
+    $languages = array_merge(["" => _("Automatic")], $languages);
     $this->attributesAccess['lang_selected']->setChoices(array_keys($languages), array_values($languages));
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->is_completed   = TRUE;
diff --git a/setup/class_setupStepLdap.inc b/setup/class_setupStepLdap.inc
index f08c07acc..f931da121 100644
--- a/setup/class_setupStepLdap.inc
+++ b/setup/class_setupStepLdap.inc
@@ -31,10 +31,10 @@ class setupStepLdap extends setupStep
 
   static function getAttributesInfo ()
   {
-    return array(
-      'connection' => array(
+    return [
+      'connection' => [
         'name'      => _('LDAP connection'),
-        'attrs'     => array(
+        'attrs'     => [
           new StringAttribute(
             _('Location name'), _('Name of this connexion to show in the LDAP server list'),
             'location', TRUE,
@@ -53,15 +53,15 @@ class setupStepLdap extends setupStep
             _('Base'), _('The LDAP directory base'),
             'base', TRUE
           )
-        )
-      ),
-      'auth' => array(
+        ]
+      ],
+      'auth' => [
         'name'      => _('Authentication'),
-        'attrs'     => array(
+        'attrs'     => [
           new CompositeAttribute(
             _('DN of the admin account to use for binding to the LDAP. Base is automatically appended.'),
             'admin',
-            array(
+            [
               new StringAttribute(
                 '', '',
                 'admin_given', TRUE,
@@ -70,7 +70,7 @@ class setupStepLdap extends setupStep
               new DisplayAttribute(
                 '', '', 'base_append'
               )
-            ),
+            ],
             '^(.+)(.*)$',
             '%s%s',
             '',
@@ -80,21 +80,21 @@ class setupStepLdap extends setupStep
             _('Admin password'), _('Password for the admin account to use for binding to the LDAP'),
             'password', TRUE
           ),
-        )
-      ),
-      'status' => array(
+        ]
+      ],
+      'status' => [
         'name'      => _('Status'),
-        'attrs'     => array(
+        'attrs'     => [
           new DisplayAttribute(
             _('Current status'), _('Result of last attempt at checking LDAP binding and basic schemas'),
             'status', FALSE
           ),
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->update_strings();
@@ -105,14 +105,14 @@ class setupStepLdap extends setupStep
     $this->status = $this->get_connection_status();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('LDAP setup');
     $this->s_title        = _('LDAP connection setup');
     $this->s_description  = _('This dialog performs the basic configuration of the LDAP connectivity for FusionDirectory.');
   }
 
-  function update_base_choices()
+  function update_base_choices ()
   {
     $attr = @LDAP::get_naming_contexts($this->connection);
     unset($attr['count']);
@@ -135,7 +135,7 @@ class setupStepLdap extends setupStep
     $this->lastBase       = $this->base;
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $this->connection = preg_replace('/\/$/', '', $this->connection);
@@ -158,7 +158,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function get_connection_status()
+  function get_connection_status ()
   {
     $this->connect_id = FALSE;
     $this->bind_id    = FALSE;
@@ -199,7 +199,7 @@ class setupStepLdap extends setupStep
     }
   }
 
-  function check()
+  function check ()
   {
     $error = parent::check();
     if (!empty($error)) {
@@ -207,7 +207,7 @@ class setupStepLdap extends setupStep
       return $error;
     } elseif ($this->is_completed) {
       $checked  = check_schema($this->parent->captured_values);
-      $error    = array();
+      $error    = [];
       foreach ($checked as $check) {
         if (!$check['STATUS']) {
           if ($check['IS_MUST_HAVE']) {
diff --git a/setup/class_setupStepMigrate.inc b/setup/class_setupStepMigrate.inc
index cfda33456..f99ada78c 100644
--- a/setup/class_setupStepMigrate.inc
+++ b/setup/class_setupStepMigrate.inc
@@ -48,13 +48,13 @@ class CheckFailedException extends FusionDirectoryException
 {
   private $error;
 
-  public function __construct($msg, $error)
+  public function __construct ($msg, $error)
   {
     parent::__construct($msg);
     $this->error = $error;
   }
 
-  public function getError()
+  public function getError ()
   {
     return $this->error;
   }
@@ -69,7 +69,7 @@ class StepMigrateDialog extends GenericDialog
   private $tplfile;
   private $check;
 
-  public function __construct(&$check, $tpl, $infos)
+  public function __construct (&$check, $tpl, $infos)
   {
     $this->attribute  = NULL;
     $this->dialog     = NULL;
@@ -78,7 +78,7 @@ class StepMigrateDialog extends GenericDialog
     $this->check      = $check;
   }
 
-  public function dialog_execute()
+  public function dialog_execute ()
   {
     if (
       isset($_POST['dialog_showchanges']) ||
@@ -121,7 +121,7 @@ class StepMigrateCheck
   public $fnc;
   private $step;
 
-  public function __construct($step, $name, $title)
+  public function __construct ($step, $name, $title)
   {
     $this->name   = $name;
     $this->title  = $title;
@@ -129,7 +129,7 @@ class StepMigrateCheck
     $this->step   = $step;
   }
 
-  public function run($fnc = NULL)
+  public function run ($fnc = NULL)
   {
     if ($fnc === NULL) {
       $fnc          = $this->fnc;
@@ -145,7 +145,7 @@ class StepMigrateCheck
     }
   }
 
-  public function save_object()
+  public function save_object ()
   {
     if (isset($_POST[$this->name.'_create'])) {
       $fnc = $this->fnc.'_create';
@@ -164,7 +164,7 @@ class StepMigrateCheck
     return '<input type="submit" name="'.$this->name.'_'.$id.'" value="'.$value.'"/>';
   }
 
-  public function migrate_confirm()
+  public function migrate_confirm ()
   {
     $fnc = $this->fnc.'_migrate'.'_confirm';
     $res = $this->step->$fnc($this);
@@ -174,7 +174,7 @@ class StepMigrateCheck
     return $res;
   }
 
-  public function dialog_refresh()
+  public function dialog_refresh ()
   {
     $fnc = $this->fnc.'_migrate'.'_refresh';
     return $this->step->$fnc($this);
@@ -186,80 +186,80 @@ class setupStepMigrate extends setupStep
   var $header_image   = "geticon.php?context=applications&icon=utilities-system-monitor&size=48";
 
   /* Root object classes */
-  var $rootOC_details = array();
+  var $rootOC_details = [];
 
   /* Entries needing migration */
-  var $orgUnits_toMigrate       = array();
-  var $accounts_toMigrate       = array();
-  var $outsideUsers_toMigrate   = array();
-  var $outsideGroups_toMigrate  = array();
+  var $orgUnits_toMigrate       = [];
+  var $accounts_toMigrate       = [];
+  var $outsideUsers_toMigrate   = [];
+  var $outsideGroups_toMigrate  = [];
 
   /* check for multiple use of same uidNumber */
-  var $check_uidNumbers = array();
+  var $check_uidNumbers = [];
 
   /* check for multiple use of same gidNumber */
-  var $check_gidNumbers = array();
+  var $check_gidNumbers = [];
 
   /* Defaults ACL roles */
   var $defaultRoles;
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'checks' => array(
-        'class'     => array('fullwidth'),
+    return [
+      'checks' => [
+        'class'     => ['fullwidth'],
         'name'      => _('PHP module and extension checks'),
         'template'  => get_template_path("setup_migrate.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
+        'attrs'     => [
           new FakeAttribute('checks')
-        )
-      ),
-    );
+        ]
+      ],
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
     $this->fill_defaultRoles();
   }
 
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('LDAP inspection');
     $this->s_title        = _('LDAP inspection');
     $this->s_description  = _('Analyze your current LDAP for FusionDirectory compatibility');
   }
 
-  function fill_defaultRoles()
+  function fill_defaultRoles ()
   {
-    $this->defaultRoles = array(
-      array(
+    $this->defaultRoles = [
+      [
         'cn'              => 'manager',
         'description'     => _('Give all rights on users in the given branch'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;cmdrw,user/posixAccount;cmdrw'
-      ),
-      array(
+      ],
+      [
         'cn'              => 'editowninfos',
         'description'     => _('Allow users to edit their own information (main tab and posix use only on base)'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;srw,user/posixAccount;srw'
-      ),
-      array(
+      ],
+      [
         'cn'              => 'editownpwd',
         'description'     => _('Allow users to edit their own password (use only on base)'),
-        'objectclass'     => array('top', 'gosaRole'),
+        'objectclass'     => ['top', 'gosaRole'],
         'gosaAclTemplate' => '0:user/user;s#userPassword;rw'
-      ),
-    );
+      ],
+    ];
   }
 
-  function initialize_checks()
+  function initialize_checks ()
   {
     global $config;
     $config->get_departments();
 
-    $checks = array(
+    $checks = [
       'baseOC'        => new StepMigrateCheck($this, 'baseOC',        _('Inspecting object classes in root object')),
       'permissions'   => new StepMigrateCheck($this, 'permissions',   _('Checking permission for LDAP database')),
       'accounts'      => new StepMigrateCheck($this, 'accounts',      _('Checking for invisible users')),
@@ -270,13 +270,13 @@ class setupStepMigrate extends setupStep
       'orgUnits'      => new StepMigrateCheck($this, 'orgUnits',      _('Checking for invisible departments')),
       'uidNumber'     => new StepMigrateCheck($this, 'uidNumber',     _('Checking for duplicated UID numbers')),
       'gidNumber'     => new StepMigrateCheck($this, 'gidNumber',     _('Checking for duplicated GID numbers')),
-    );
+    ];
 
     $this->checks = $checks;
   }
 
   /* Return ldif information for a given attribute array */
-  function array_to_ldif($attrs)
+  function array_to_ldif ($attrs)
   {
     $ret = '';
     unset($attrs['count']);
@@ -297,7 +297,7 @@ class setupStepMigrate extends setupStep
     return preg_replace("/\n$/", '', $ret);
   }
 
-  function execute()
+  function execute ()
   {
     if (empty($this->checks) || isset($_POST['reload'])) {
       $this->initialize_checks();
@@ -308,7 +308,7 @@ class setupStepMigrate extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     $this->is_completed = TRUE;
     parent::save_object();
@@ -321,7 +321,7 @@ class setupStepMigrate extends setupStep
    * If the parameter just_check is TRUE, then just check for the OCs.
    * If the Parameter is FALSE, try to add the required object classes.
    */
-  function check_baseOC(&$checkobj)
+  function check_baseOC (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -340,8 +340,8 @@ class setupStepMigrate extends setupStep
 
     /* Root object doesn't exists */
     if (!in_array("gosaDepartment", $attrs['objectClass'])) {
-      $this->rootOC_details = array();
-      $mods = array();
+      $this->rootOC_details = [];
+      $mods = [];
 
       /* Get list of possible container objects, to be able to detect naming
        *  attributes and missing attribute types.
@@ -472,7 +472,7 @@ class setupStepMigrate extends setupStep
    * Create and remove a dummy object,
    *  to ensure that we have the necessary permissions
    */
-  function check_permissions(&$checkobj)
+  function check_permissions (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -480,7 +480,7 @@ class setupStepMigrate extends setupStep
     /* Create dummy entry */
     $name       = 'GOsa_setup_text_entry_'.session_id().random_int(0, 999999);
     $dn         = 'ou='.$name.','.$config->current['BASE'];
-    $testEntry  = array();
+    $testEntry  = [];
 
     $testEntry['objectClass'][] = 'top';
     $testEntry['objectClass'][] = 'organizationalUnit';
@@ -498,11 +498,11 @@ class setupStepMigrate extends setupStep
     }
 
     /* Try to create dummy object */
-    $ldap->cd ($dn);
+    $ldap->cd($dn);
     $res = $ldap->add($testEntry);
     $ldap->cat($dn);
     if (!$ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your LDAP database.'), $config->current['ADMINDN'])
@@ -513,7 +513,7 @@ class setupStepMigrate extends setupStep
     $res = $ldap->rmDir($dn);
     $ldap->cat($dn);
     if ($ldap->count()) {
-      logging::log('view', 'setup/'.get_class($this), $dn, array(), $ldap->get_error());
+      logging::log('view', 'setup/'.get_class($this), $dn, [], $ldap->get_error());
       throw new CheckFailedException(
         _('Failed'),
         sprintf(_('The specified user "%s" does not have full access to your ldap database.'), $config->current['ADMINDN'])
@@ -527,7 +527,7 @@ class setupStepMigrate extends setupStep
   /* Check if there are users which will
    *  be invisible for FusionDirectory
    */
-  function check_accounts(&$checkobj)
+  function check_accounts (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -536,7 +536,7 @@ class setupStepMigrate extends setupStep
      *  the 'html checked' status for the checkboxes again
      */
     $old    = $this->accounts_toMigrate;
-    $this->accounts_toMigrate = array();
+    $this->accounts_toMigrate = [];
 
     /* Get all invisible users */
     $ldap->cd($config->current['BASE']);
@@ -550,7 +550,7 @@ class setupStepMigrate extends setupStep
         '(!(objectClass=inetOrgPerson))'.
         '(uid=*)'.
       ')',
-      array('sn','givenName','cn','uid')
+      ['sn','givenName','cn','uid']
     );
 
     while ($attrs = $ldap->fetch()) {
@@ -590,10 +590,10 @@ class setupStepMigrate extends setupStep
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'   => _('User migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
@@ -601,19 +601,19 @@ class setupStepMigrate extends setupStep
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'   => _('User migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_accounts_migrate_confirm(&$checkobj, $only_ldif = FALSE)
+  function check_accounts_migrate_confirm (&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      array('inetOrgPerson','organizationalPerson','person'),
-      array(),
+      ['inetOrgPerson','organizationalPerson','person'],
+      [],
       $only_ldif
     );
   }
@@ -649,7 +649,7 @@ class setupStepMigrate extends setupStep
     return $infos;
   }
 
-  function check_multipleGeneric_migrate_confirm(&$checkobj, $oc, $mandatory, $only_ldif)
+  function check_multipleGeneric_migrate_confirm (&$checkobj, $oc, $mandatory, $only_ldif)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -660,11 +660,11 @@ class setupStepMigrate extends setupStep
       $entry['checked'] = isset($_POST['migrate_'.$key]);
       if ($entry['checked']) {
         /* Get old objectClasses */
-        $ldap->cat($entry['dn'], array_merge(array('objectClass'), array_keys($mandatory)));
+        $ldap->cat($entry['dn'], array_merge(['objectClass'], array_keys($mandatory)));
         $attrs = $ldap->fetch();
 
         /* Create new objectClass array */
-        $new_attrs  = array();
+        $new_attrs  = [];
         $new_attrs['objectClass'] = $oc;
         for ($i = 0; $i < $attrs['objectClass']['count']; $i++) {
           if (!in_array_ics($attrs['objectClass'][$i], $new_attrs['objectClass'])) {
@@ -706,7 +706,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check Acls if there is at least one object with acls defined */
-  function check_adminAccount(&$checkobj)
+  function check_adminAccount (&$checkobj)
   {
     global $config;
 
@@ -726,8 +726,8 @@ class setupStepMigrate extends setupStep
       $attrs = $ldap->fetch();
 
       /* Collect a list of available FusionDirectory users and groups */
-      $users = array();
-      $ldap->search('(objectClass=inetOrgPerson)', array('uid','dn'));
+      $users = [];
+      $ldap->search('(objectClass=inetOrgPerson)', ['uid','dn']);
       while ($user_attrs = $ldap->fetch()) {
         if (isset($user_attrs['uid'][0])) {
           $users[$user_attrs['dn']]       = $user_attrs['uid'][0];
@@ -736,13 +736,13 @@ class setupStepMigrate extends setupStep
           $users[$user_attrs['dn']] = $user_attrs['dn'];
         }
       }
-      $groups = array();
-      $ldap->search('(objectClass=posixGroup)', array('cn','dn'));
+      $groups = [];
+      $ldap->search('(objectClass=posixGroup)', ['cn','dn']);
       while ($group_attrs = $ldap->fetch()) {
         $groups[$group_attrs['dn']] = $group_attrs['cn'][0];
       }
-      $roles = array();
-      $ldap->search('(objectClass=organizationalRole)', array('cn','dn'));
+      $roles = [];
+      $ldap->search('(objectClass=organizationalRole)', ['cn','dn']);
       while ($role_attrs = $ldap->fetch()) {
         $roles[$role_attrs['dn']] = $role_attrs['cn'][0];
       }
@@ -761,7 +761,7 @@ class setupStepMigrate extends setupStep
 
           if ($tmp[1] == 'subtree') {
             /* Check if acl owner is a valid FusionDirectory user account */
-            $ldap->cat(base64_decode($tmp[2]), array('gosaAclTemplate'), '(gosaAclTemplate=*:all;cmdrw)');
+            $ldap->cat(base64_decode($tmp[2]), ['gosaAclTemplate'], '(gosaAclTemplate=*:all;cmdrw)');
             if ($ldap->count()) {
               $members = explode(',', $tmp[3]);
               foreach ($members as $member) {
@@ -836,17 +836,17 @@ class setupStepMigrate extends setupStep
     return '';
   }
 
-  function check_adminAccount_create(&$checkobj)
+  function check_adminAccount_create (&$checkobj)
   {
-    $infos = array(
+    $infos = [
       'uid'       => 'fd-admin',
       'password'  => '',
       'password2' => '',
-    );
+    ];
     $this->openDialog(new StepMigrateDialog($checkobj, 'setup_migrate_adminAccount.tpl', $infos));
   }
 
-  function check_adminAccount_migrate_confirm(&$checkobj)
+  function check_adminAccount_migrate_confirm (&$checkobj)
   {
     global $config;
     session::set('CurrentMainBase', $config->current['BASE']);
@@ -855,7 +855,7 @@ class setupStepMigrate extends setupStep
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', array('dn'));
+    $ldap->search('(&(objectClass=gosaRole)(gosaAclTemplate=*:all;cmdrw))', ['dn']);
     if ($attrs = $ldap->fetch()) {
       $roledn = $attrs['dn'];
     } else {
@@ -864,7 +864,7 @@ class setupStepMigrate extends setupStep
 
       $baseObject->cn               = 'admin';
       $baseObject->description      = _('Gives all rights on all objects');
-      $baseObject->gosaAclTemplate  = array(array('all' => array('0' => 'cmdrw')));
+      $baseObject->gosaAclTemplate  = [['all' => ['0' => 'cmdrw']]];
 
       $tabObject->save();
       $roledn = $tabObject->dn;
@@ -891,11 +891,11 @@ class setupStepMigrate extends setupStep
     $assignments = $baseObject->gosaAclEntry;
     array_unshift(
       $assignments,
-      array(
+      [
         'scope'   => 'subtree',
         'role'    => $roledn,
-        'members' => array($admindn),
-      )
+        'members' => [$admindn],
+      ]
     );
     $baseObject->gosaAclEntry = $assignments;
     $tabObject->save();
@@ -903,17 +903,17 @@ class setupStepMigrate extends setupStep
     return TRUE;
   }
 
-  function check_adminAccount_migrate_refresh(&$checkobj)
+  function check_adminAccount_migrate_refresh (&$checkobj)
   {
-    return array(
+    return [
       'uid'       => $_POST['uid'],
       'password'  => $_POST['userPassword_password'],
       'password2' => $_POST['userPassword_password2'],
-    );
+    ];
   }
 
   /* Check if default roles and groupes have been inserted */
-  function check_defaultACLs(&$checkobj)
+  function check_defaultACLs (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -930,7 +930,7 @@ class setupStepMigrate extends setupStep
     $existings = 0;
     foreach ($this->defaultRoles as $role) {
       $dn = 'cn='.$role['cn'].','.get_ou('aclRoleRDN').$config->current['BASE'];
-      $ldap->cat($dn, array('dn'));
+      $ldap->cat($dn, ['dn']);
       if ($ldap->count() > 0) {
         $existings++;
       }
@@ -953,7 +953,7 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_defaultACLs_migrate(&$checkobj)
+  function check_defaultACLs_migrate (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -985,7 +985,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for users outside the people ou */
-  function check_outsideUsers(&$checkobj)
+  function check_outsideUsers (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -995,7 +995,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Search for all users
      ***********/
-    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', array('dn'));
+    $res = $ldap->search('(&(objectClass=inetOrgPerson)(!(uid=*$)))', ['dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1006,7 +1006,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Check if returned users are within a valid department. (peopleou,gosaDepartment,base)
      ***********/
-    $this->outsideUsers_toMigrate = array();
+    $this->outsideUsers_toMigrate = [];
     $people_ou = trim(get_ou('userRDN'));
 
     while ($attrs = $ldap->fetch()) {
@@ -1034,35 +1034,35 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideUsers_migrate(&$checkobj)
+  function check_outsideUsers_migrate (&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideUsers_migrate_refresh(&$checkobj)
+  function check_outsideUsers_migrate_refresh (&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'       => _('Move users into configured user tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideUsers_migrate_confirm(&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
+  function check_outsideUsers_migrate_confirm (&$checkobj, $only_ldif = FALSE, $ou = 'userRDN')
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1087,7 +1087,7 @@ class setupStepMigrate extends setupStep
           $entry['ldif'] = _('Entry will be moved from').":<br/>\t".($ldap->fix($dn)).'<br/>'._('to').":<br/>\t".($ldap->fix($d_dn));
 
           /* Check if there are references to this object */
-          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', array('dn'));
+          $ldap->search('(&(member='.ldap_escape_f($dn).')(|(objectClass=gosaGroupOfNames)(objectClass=groupOfNames)))', ['dn']);
           $refs = '';
           while ($attrs = $ldap->fetch()) {
             $ref_dn = $attrs['dn'];
@@ -1107,7 +1107,7 @@ class setupStepMigrate extends setupStep
   }
 
   /* Search for groups outside the group ou */
-  function check_outsideGroups(&$checkobj)
+  function check_outsideGroups (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1118,7 +1118,7 @@ class setupStepMigrate extends setupStep
     /***********
      * Get all groups
      ***********/
-    $res = $ldap->search('(objectClass=posixGroup)', array('dn'));
+    $res = $ldap->search('(objectClass=posixGroup)', ['dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1126,7 +1126,7 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->outsideGroups_toMigrate = array();
+    $this->outsideGroups_toMigrate = [];
     while ($attrs = $ldap->fetch()) {
       $group_db_base = preg_replace('/^[^,]+,'.preg_quote($group_ou, '/').'/i', '', $attrs['dn']);
 
@@ -1153,55 +1153,55 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_outsideGroups_migrate(&$checkobj)
+  function check_outsideGroups_migrate (&$checkobj)
   {
     global $config;
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideGroups_migrate_refresh(&$checkobj)
+  function check_outsideGroups_migrate_refresh (&$checkobj)
   {
     global $config;
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'       => _('Move groups into configured groups tree'),
         'outside'     => TRUE,
         'ous'         => $config->departments,
         'destination' => (isset($_POST['destination']) ? $_POST['destination'] : ''),
-      )
+      ]
     );
   }
 
-  function check_outsideGroups_migrate_confirm(&$checkobj, $only_ldif = FALSE)
+  function check_outsideGroups_migrate_confirm (&$checkobj, $only_ldif = FALSE)
   {
     return $this->check_outsideUsers_migrate_confirm($checkobj, $only_ldif, 'groupRDN');
   }
 
   /* Check if there are invisible organizational Units */
-  function check_orgUnits(&$checkobj)
+  function check_orgUnits (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $old                      = $this->orgUnits_toMigrate;
-    $this->orgUnits_toMigrate = array();
+    $this->orgUnits_toMigrate = [];
 
     /* Skip FusionDirectory internal departments */
-    $skip_dns = array(
+    $skip_dns = [
       '/ou=fusiondirectory,'.preg_quote($config->current['BASE']).'$/',
       '/dc=addressbook,/',
       '/ou=systems,'.preg_quote($config->current['BASE']).'$/',
       '/ou=snapshots,/'
-    );
+    ];
     foreach (objects::types() as $type) {
       $infos = objects::infos($type);
       if (isset($infos['ou']) && ($infos['ou'] != '')) {
@@ -1211,7 +1211,7 @@ class setupStepMigrate extends setupStep
 
     /* Get all invisible departments */
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', array('ou','description','dn'));
+    $res = $ldap->search('(&(objectClass=organizationalUnit)(!(objectClass=gosaDepartment)))', ['ou','description','dn']);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1262,46 +1262,46 @@ class setupStepMigrate extends setupStep
     }
   }
 
-  function check_orgUnits_migrate(&$checkobj)
+  function check_orgUnits_migrate (&$checkobj)
   {
     $this->check_multipleGeneric_migrate(
       $checkobj,
-      array(
+      [
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_orgUnits_migrate_refresh(&$checkobj)
+  function check_orgUnits_migrate_refresh (&$checkobj)
   {
     return $this->check_multipleGeneric_migrate_refresh(
       $checkobj,
-      array(
+      [
         'title'   => _('Department migration'),
         'outside' => FALSE,
-      )
+      ]
     );
   }
 
-  function check_orgUnits_migrate_confirm(&$checkobj, $only_ldif)
+  function check_orgUnits_migrate_confirm (&$checkobj, $only_ldif)
   {
     return $this->check_multipleGeneric_migrate_confirm(
       $checkobj,
-      array('gosaDepartment'),
-      array('description' => 'FusionDirectory department'),
+      ['gosaDepartment'],
+      ['description' => 'FusionDirectory department'],
       $only_ldif
     );
   }
 
   /* Check if there are uidNumbers which are used more than once */
-  function check_uidNumber(&$checkobj)
+  function check_uidNumber (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", array("dn","uidNumber"));
+    $res = $ldap->search("(&(objectClass=posixAccount)(uidNumber=*))", ["dn","uidNumber"]);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1309,8 +1309,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_uidNumbers = array();
-    $tmp = array();
+    $this->check_uidNumbers = [];
+    $tmp = [];
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['uidNumber'][0]][] = $attrs;
     }
@@ -1339,13 +1339,13 @@ class setupStepMigrate extends setupStep
   }
 
   /* Check if there are duplicated gidNumbers present in ldap */
-  function check_gidNumber(&$checkobj)
+  function check_gidNumber (&$checkobj)
   {
     global $config;
     $ldap = $config->get_ldap_link();
 
     $ldap->cd($config->current['BASE']);
-    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", array("dn","gidNumber"));
+    $res = $ldap->search("(&(objectClass=posixGroup)(gidNumber=*))", ["dn","gidNumber"]);
     if (!$res) {
       throw new CheckFailedException(
         _('LDAP query failed'),
@@ -1353,8 +1353,8 @@ class setupStepMigrate extends setupStep
       );
     }
 
-    $this->check_gidNumbers = array();
-    $tmp = array();
+    $this->check_gidNumbers = [];
+    $tmp = [];
     while ($attrs = $ldap->fetch()) {
       $tmp[$attrs['gidNumber'][0]][] = $attrs;
     }
diff --git a/setup/class_setupStepWelcome.inc b/setup/class_setupStepWelcome.inc
index d8f87295b..d73e23a46 100644
--- a/setup/class_setupStepWelcome.inc
+++ b/setup/class_setupStepWelcome.inc
@@ -23,19 +23,19 @@ class setupStepWelcome extends setupStep
 {
   var $header_image = 'geticon.php?context=applications&icon=config-welcome&size=48';
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
-    return array(
-      'welcome' => array(
+    return [
+      'welcome' => [
         'name'      => _('Welcome'),
         'template'  => get_template_path("setup_welcome.tpl", TRUE, dirname(__FILE__)),
-        'attrs'     => array(
-        )
-      )
-    );
+        'attrs'     => [
+        ]
+      ]
+    ];
   }
 
-  function __construct($parent)
+  function __construct ($parent)
   {
     parent::__construct($parent);
 
@@ -45,14 +45,14 @@ class setupStepWelcome extends setupStep
   }
 
   /* We need to init them with a method to be able to use _() */
-  function update_strings()
+  function update_strings ()
   {
     $this->s_short_name   = _('Welcome');
     $this->s_title        = _('Welcome to FusionDirectory setup wizard');
     $this->s_description  = _('The welcome message');
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $smarty->assign('auth_id', session_id());
@@ -61,7 +61,7 @@ class setupStepWelcome extends setupStep
     return parent::execute();
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     $id = "";
-- 
GitLab


From 681f1539f8772935766d3190fab8fadfd02d37d2 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Thu, 14 Jul 2022 11:54:18 +0100
Subject: [PATCH 098/117] :ambulance: Fix(codestyle) first part of codestyle
 correction

Fixing codestyle to align with 1.4, part 1.
---
 plugins/admin/groups/class_roleGeneric.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc
index 55f8fab2b..5a3e090f3 100644
--- a/plugins/admin/groups/class_roleGeneric.inc
+++ b/plugins/admin/groups/class_roleGeneric.inc
@@ -22,7 +22,7 @@ class RoleMembersAttribute extends UsersAttribute
 {
   protected $whitelistDns = NULL;
 
-  function getFilterWhiteList()
+  function getFilterWhiteList ()
   {
     global $config;
     if ($config->get_cfg_value('RestrictRoleMembers') == 'TRUE') {
@@ -49,7 +49,7 @@ class roleGeneric extends simplePlugin
 {
   var $objectclasses = ['organizationalRole'];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Role'),
@@ -113,7 +113,7 @@ class roleGeneric extends simplePlugin
     ];
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     global $ui;
 
-- 
GitLab


From a02916c648678e1a42bc706c18c669c8163b2d83 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Mon, 18 Jul 2022 19:45:34 +0100
Subject: [PATCH 099/117] :sparkles: Feat(1.3.1) - Space Parenthesis after fc
 name

Space parenthesis after fnc name fixed
On function creation
---
 contrib/smarty/plugins/block.render.php       |   2 +-
 contrib/smarty/plugins/function.filePath.php  |   2 +-
 contrib/smarty/plugins/function.iconPath.php  |   2 +-
 contrib/smarty/plugins/function.msgPool.php   |   2 +-
 html/class_passwordRecovery.inc               |  44 ++---
 html/index.php                                |  28 ++--
 html/main.php                                 |   4 +-
 html/progress.php                             |   2 +-
 include/accept-to-gettext.inc                 |   2 +-
 include/class_CSRFProtection.inc              |   6 +-
 include/class_Combinations.inc                |  14 +-
 include/class_CopyPasteHandler.inc            |  24 +--
 include/class_IconTheme.inc                   |   4 +-
 include/class_Language.inc                    |  10 +-
 include/class_SnapshotDialogs.inc             |  26 +--
 include/class_SnapshotHandler.inc             |  30 ++--
 include/class_acl.inc                         |  12 +-
 include/class_baseSelector.inc                |  28 ++--
 include/class_config.inc                      |  34 ++--
 include/class_departmentSortIterator.inc      |   2 +-
 include/class_divSelectBox.inc                |  18 +-
 include/class_filter.inc                      |  42 ++---
 include/class_filterLDAP.inc                  |   4 +-
 include/class_ldap.inc                        |  94 +++++------
 include/class_ldapFilter.inc                  |  26 +--
 include/class_ldapMultiplexer.inc             |   6 +-
 include/class_ldapSizeLimit.inc               |  14 +-
 include/class_listing.inc                     |  92 +++++------
 include/class_listingSortIterator.inc         |  12 +-
 include/class_logging.inc                     |   6 +-
 include/class_msgPool.inc                     | 110 ++++++-------
 include/class_msg_dialog.inc                  |  16 +-
 include/class_pluglist.inc                    |  18 +-
 include/class_session.inc                     |  22 +--
 include/class_template.inc                    |  24 +--
 include/class_templateHandling.inc            |  30 ++--
 include/class_tests.inc                       |  38 ++---
 include/class_timezone.inc                    |  10 +-
 include/class_userinfo.inc                    |  46 +++---
 include/class_xml.inc                         |   4 +-
 include/exporter/class_PDF.php                |   6 +-
 include/exporter/class_cvsExporter.inc        |   6 +-
 include/exporter/class_pdfExporter.inc        |   8 +-
 include/functions.inc                         | 132 +++++++--------
 include/functions_debug.inc                   |   8 +-
 .../class_password-methods-clear.inc          |   8 +-
 .../class_password-methods-crypt.inc          |  14 +-
 .../class_password-methods-md5.inc            |  10 +-
 .../class_password-methods-sasl.inc           |  12 +-
 .../class_password-methods-sha.inc            |  14 +-
 .../class_password-methods-smd5.inc           |  12 +-
 .../class_password-methods-ssha.inc           |  20 +--
 .../class_password-methods.inc                |  40 ++---
 include/php_setup.inc                         |  14 +-
 include/select/class_filterLDAPBlacklist.inc  |   4 +-
 .../select/groupSelect/class_groupSelect.inc  |   2 +-
 .../userGroupSelect/class_userGroupSelect.inc |   2 +-
 .../class_BaseSelectorAttribute.inc           |   6 +-
 .../attributes/class_BooleanAttribute.inc     |   4 +-
 .../attributes/class_CompositeAttribute.inc   |  14 +-
 .../attributes/class_DateAttribute.inc        |  22 +--
 .../attributes/class_FileAttribute.inc        |  22 +--
 .../attributes/class_FlagsAttribute.inc       |   2 +-
 .../attributes/class_PhoneNumberAttribute.inc |   4 +-
 .../attributes/class_SelectAttribute.inc      |   6 +-
 .../attributes/class_SetAttribute.inc         |  44 ++---
 .../attributes/class_StringAttribute.inc      |   2 +-
 include/simpleplugin/class_Attribute.inc      |  18 +-
 .../simpleplugin/class_dialogAttributes.inc   |  20 +--
 .../simpleplugin/class_helpersAttribute.inc   |  20 +--
 include/simpleplugin/class_multiPlugin.inc    |  18 +-
 .../simpleplugin/class_simpleManagement.inc   |  72 ++++----
 include/simpleplugin/class_simplePlugin.inc   | 100 ++++++------
 .../class_simpleSelectManagement.inc          |   4 +-
 include/simpleplugin/class_simpleService.inc  |   8 +-
 include/simpleplugin/class_simpleTabs.inc     |  40 ++---
 plugins/addons/dashboard/class_dashBoard.inc  |   6 +-
 .../dashboard/class_dashBoardPasswords.inc    |   4 +-
 .../addons/dashboard/class_dashBoardUsers.inc |   6 +-
 plugins/addons/dashboard/tabs_dashBoard.inc   |   4 +-
 plugins/admin/acl/class_aclAssignment.inc     |  32 ++--
 plugins/admin/acl/class_aclManagement.inc     |  20 +--
 .../admin/aclrole/class_aclEditionDialog.inc  |  10 +-
 plugins/admin/aclrole/class_aclRole.inc       |  10 +-
 .../admin/aclrole/class_aclRoleManagement.inc |   2 +-
 plugins/admin/departments/class_country.inc   |   2 +-
 plugins/admin/departments/class_dcObject.inc  |   2 +-
 .../admin/departments/class_department.inc    |  12 +-
 .../class_departmentManagement.inc            |  18 +-
 plugins/admin/departments/class_domain.inc    |   2 +-
 plugins/admin/departments/class_locality.inc  |   2 +-
 .../admin/departments/class_organization.inc  |   2 +-
 plugins/admin/departments/tabs_department.inc |   2 +-
 .../admin/groups/class_groupManagement.inc    |  16 +-
 plugins/admin/groups/class_ogroup.inc         | 154 +++++++++---------
 plugins/admin/users/class_userManagement.inc  |   4 +-
 plugins/personal/generic/class_user.inc       |  10 +-
 97 files changed, 984 insertions(+), 984 deletions(-)

diff --git a/contrib/smarty/plugins/block.render.php b/contrib/smarty/plugins/block.render.php
index 90770bcb7..6731dc82d 100644
--- a/contrib/smarty/plugins/block.render.php
+++ b/contrib/smarty/plugins/block.render.php
@@ -19,7 +19,7 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 */
 
-function smarty_block_render($params, $text, &$smarty)
+function smarty_block_render ($params, $text, &$smarty)
 {
   /* Skip closing tag </render> */
   if (empty($text)) {
diff --git a/contrib/smarty/plugins/function.filePath.php b/contrib/smarty/plugins/function.filePath.php
index 8aa87e513..eccb9a1be 100644
--- a/contrib/smarty/plugins/function.filePath.php
+++ b/contrib/smarty/plugins/function.filePath.php
@@ -17,7 +17,7 @@
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 */
-function smarty_function_filePath($params, &$smarty)
+function smarty_function_filePath ($params, &$smarty)
 {
   $config = session::get('config');
   $default_theme = 'breezy';
diff --git a/contrib/smarty/plugins/function.iconPath.php b/contrib/smarty/plugins/function.iconPath.php
index c929e4f56..b44f87d13 100644
--- a/contrib/smarty/plugins/function.iconPath.php
+++ b/contrib/smarty/plugins/function.iconPath.php
@@ -17,7 +17,7 @@
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 */
-function smarty_function_iconPath($params, &$smarty)
+function smarty_function_iconPath ($params, &$smarty)
 {
   $config = session::get('config');
 
diff --git a/contrib/smarty/plugins/function.msgPool.php b/contrib/smarty/plugins/function.msgPool.php
index ae72af0ca..f5e386b0b 100644
--- a/contrib/smarty/plugins/function.msgPool.php
+++ b/contrib/smarty/plugins/function.msgPool.php
@@ -18,7 +18,7 @@
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 */
-function smarty_function_msgPool($params, &$smarty)
+function smarty_function_msgPool ($params, &$smarty)
 {
   if (class_available('msgPool') && isset($params['type'])) {
     $parameter = [];
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index e8a91ee66..dfb38ba16 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -31,7 +31,7 @@ class standAlonePage {
   protected $interactive;
 
   /* Constructor */
-  function __construct($interactive = TRUE)
+  function __construct ($interactive = TRUE)
   {
     global $config, $ssl, $ui;
 
@@ -109,7 +109,7 @@ class standAlonePage {
     }
   }
 
-  function loadConfig()
+  function loadConfig ()
   {
     global $BASE_DIR;
 
@@ -128,7 +128,7 @@ class standAlonePage {
     return $config;
   }
 
-  function setupSmarty()
+  function setupSmarty ()
   {
     global $config;
     $smarty = get_smarty();
@@ -156,7 +156,7 @@ class standAlonePage {
     $smarty->assign('year',     date('Y'));
   }
 
-  function checkForSSL()
+  function checkForSSL ()
   {
     global $config;
     $smarty = get_smarty();
@@ -180,7 +180,7 @@ class standAlonePage {
     return $ssl;
   }
 
-  function getPageURL()
+  function getPageURL ()
   {
     $protocol = 'http';
     if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on')) {
@@ -214,7 +214,7 @@ class standAlonePage {
     return $pageURL;
   }
 
-  function encodeParams($keys)
+  function encodeParams ($keys)
   {
     $params = '';
     foreach ($keys as $key) {
@@ -224,14 +224,14 @@ class standAlonePage {
     return $params;
   }
 
-  static function securityHeaders()
+  static function securityHeaders ()
   {
     header('X-XSS-Protection: 1; mode=block');
     header('X-Content-Type-Options: nosniff');
     header('X-Frame-Options: deny');
   }
 
-  static function generateRandomHash()
+  static function generateRandomHash ()
   {
     /* Generate a very long random value */
     $len        = 56;
@@ -272,7 +272,7 @@ class passwordRecovery extends standAlonePage {
   var $usealternates;
 
   /* Constructor */
-  function __construct($interactive = TRUE)
+  function __construct ($interactive = TRUE)
   {
     parent::__construct($interactive);
 
@@ -292,7 +292,7 @@ class passwordRecovery extends standAlonePage {
     }
   }
 
-  function execute()
+  function execute ()
   {
     if (!$this->activated) {
       return;
@@ -324,7 +324,7 @@ class passwordRecovery extends standAlonePage {
     }
   }
 
-  function displayPWchanger()
+  function displayPWchanger ()
   {
     global $error_collector, $error_collector_mailto;
     /* Do we need to show error messages? */
@@ -369,7 +369,7 @@ class passwordRecovery extends standAlonePage {
   /* Check that password recovery is activated, read config in ldap
    * Returns a boolean saying if password recovery is activated
    */
-  function readLdapConfig()
+  function readLdapConfig ()
   {
     global $config;
     $this->salt           = $config->get_cfg_value('passwordRecoverySalt');
@@ -386,11 +386,11 @@ class passwordRecovery extends standAlonePage {
 
     $this->loginAttribute = $config->get_cfg_value('passwordRecoveryLoginAttribute', 'uid');
 
-    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value('passwordRecoveryActivated'), "passwordRecoveryActivated");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value ('passwordRecoveryActivated'), "passwordRecoveryActivated");
     return ($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
   }
 
-  function storeToken($temp_password)
+  function storeToken ($temp_password)
   {
     global $config;
     /* Store it in ldap with the salt */
@@ -438,7 +438,7 @@ class passwordRecovery extends standAlonePage {
     return ""; /* Everything went well */
   }
 
-  function checkToken($token)
+  function checkToken ($token)
   {
     global $config;
     $salt_token = $this->salt.$token.$this->salt;
@@ -460,7 +460,7 @@ class passwordRecovery extends standAlonePage {
            ($ldap_token == $sha1_token);
   }
 
-  function getUserDn()
+  function getUserDn ()
   {
     global $config;
     /* Retrieve dn from the ldap */
@@ -491,7 +491,7 @@ class passwordRecovery extends standAlonePage {
   }
 
   /* Find the login of for the given email address */
-  function step2()
+  function step2 ()
   {
     global $config;
 
@@ -543,7 +543,7 @@ class passwordRecovery extends standAlonePage {
     return $attrs['dn'];
   }
 
-  function generateAndStoreToken()
+  function generateAndStoreToken ()
   {
     $activatecode = static::generateRandomHash();
 
@@ -558,7 +558,7 @@ class passwordRecovery extends standAlonePage {
   }
 
   /* generate a token and send it by email */
-  function step3()
+  function step3 ()
   {
     /* Send a mail, save information in session and create a very random unique id */
     $token = $this->generateAndStoreToken();
@@ -588,7 +588,7 @@ class passwordRecovery extends standAlonePage {
   }
 
   /* check if the given token is the good one */
-  function step4()
+  function step4 ()
   {
     $uniq_id_from_mail = validate($_GET['uniq']);
 
@@ -611,7 +611,7 @@ class passwordRecovery extends standAlonePage {
     }
   }
 
-  function changeUserPassword($new_password, $new_password_repeated)
+  function changeUserPassword ($new_password, $new_password_repeated)
   {
     $dn = $this->getUserDn();
     if (!$dn) {
@@ -642,7 +642,7 @@ class passwordRecovery extends standAlonePage {
   }
 
   /* change the password and send confirmation email */
-  function step5()
+  function step5 ()
   {
     $success = $this->changeUserPassword($_POST['new_password'], $_POST['new_password_repeated']);
     if (!$success) {
diff --git a/html/index.php b/html/index.php
index a444fc69b..b4821c7b5 100644
--- a/html/index.php
+++ b/html/index.php
@@ -32,7 +32,7 @@ header('X-Content-Type-Options: nosniff');
 header('X-Frame-Options: deny');
 
 /* Display the login page and exit() */
-function displayLogin()
+function displayLogin ()
 {
   global $smarty,$message,$config,$ssl,$error_collector,$error_collector_mailto;
   $lang = session::get('lang');
@@ -233,14 +233,14 @@ class Index {
   static protected $username;
   static protected $password;
 
-  static function init()
+  static function init ()
   {
     static::$username = NULL;
     static::$password = NULL;
   }
 
   /* Runs schemaCheck if activated in configuration */
-  static function runSchemaCheck()
+  static function runSchemaCheck ()
   {
     global $config;
     if ($config->get_cfg_value('schemaCheck') != 'TRUE') {
@@ -265,7 +265,7 @@ class Index {
   }
 
   /* Check locking LDAP branch is here or create it */
-  static function checkForLockingBranch()
+  static function checkForLockingBranch ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -279,7 +279,7 @@ class Index {
 
   /* Check username for invalid characters and check password is not empty
    * Also trims username */
-  static function validateUserInput()
+  static function validateUserInput ()
   {
     global $message, $smarty;
     static::$username = trim(static::$username);
@@ -295,7 +295,7 @@ class Index {
   }
 
   /* Performs an LDAP bind with $username and $password */
-  static function ldapLoginUser()
+  static function ldapLoginUser ()
   {
     global $ui, $config, $message, $smarty;
     /* Login as user, initialize user ACL's */
@@ -314,7 +314,7 @@ class Index {
   }
 
   /* Called after successful login, return FALSE if account is expired */
-  static function loginAndCheckExpired()
+  static function loginAndCheckExpired ()
   {
     global $ui, $config, $plist, $message, $smarty;
     /* Remove all locks of this user */
@@ -350,7 +350,7 @@ class Index {
   }
 
   /* Final step of successful login: redirect to main.php */
-  static function redirect()
+  static function redirect ()
   {
     global $config;
     /* Not account expired or password forced change go to main page */
@@ -362,7 +362,7 @@ class Index {
   }
 
   /* Return HTTP authentication header */
-  static function authenticateHeader($message = 'Authentication required')
+  static function authenticateHeader ($message = 'Authentication required')
   {
     header('WWW-Authenticate: Basic realm="FusionDirectory"');
     header('HTTP/1.0 401 Unauthorized');
@@ -371,7 +371,7 @@ class Index {
   }
 
   /* Run each step in $steps, stop on errors */
-  static function runSteps($steps)
+  static function runSteps ($steps)
   {
     foreach ($steps as $step) {
       $status = static::$step();
@@ -386,7 +386,7 @@ class Index {
   }
 
   /* All login steps in the right order for standard POST login */
-  static function fullLoginProcess()
+  static function fullLoginProcess ()
   {
     global $config, $message;
 
@@ -417,7 +417,7 @@ class Index {
   }
 
   /* All login steps in the right order for HTTP auth login */
-  static function authLoginProcess()
+  static function authLoginProcess ()
   {
     global $config, $message;
 
@@ -447,7 +447,7 @@ class Index {
   }
 
   /* All login steps in the right order for HTTP Header login */
-  static function headerAuthLoginProcess()
+  static function headerAuthLoginProcess ()
   {
     global $config, $message, $ui;
 
@@ -512,7 +512,7 @@ class Index {
   }
 
   /* All login steps in the right order for CAS login */
-  static function casLoginProcess()
+  static function casLoginProcess ()
   {
     global $config, $message, $ui;
 
diff --git a/html/main.php b/html/main.php
index 367e90533..5f73eeb80 100644
--- a/html/main.php
+++ b/html/main.php
@@ -47,7 +47,7 @@ session::set('limit_exceeded', FALSE);
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
   @DEBUG (DEBUG_POST, __LINE__, __FUNCTION__, __FILE__, $_POST, "_POST");
 }
-@DEBUG (DEBUG_SESSION, __LINE__, __FUNCTION__, __FILE__, session::get_all(), "_SESSION");
+@DEBUG (DEBUG_SESSION, __LINE__, __FUNCTION__, __FILE__, session::get_all (), "_SESSION");
 
 /* Logged in? Simple security check */
 if (!session::is_set('connected')) {
@@ -201,7 +201,7 @@ if ($old_plugin_dir != $plugin_dir && $old_plugin_dir != "") {
 $ui->getSizeLimitHandler()->update();
 
 /* Check for memory */
-if (function_exists("memory_get_usage")) {
+if (function_exists ("memory_get_usage")) {
   if (memory_get_usage() > (to_byte(ini_get('memory_limit')) - 2048000 )) {
     msg_dialog::display(_("Configuration error"), _("Running out of memory!"), WARNING_DIALOG);
   }
diff --git a/html/progress.php b/html/progress.php
index 352aaa539..6e69027f8 100644
--- a/html/progress.php
+++ b/html/progress.php
@@ -50,7 +50,7 @@ if ($y < 3 || $y > 700) {
   $y = 20;
 }
 
-if (!function_exists("imagecreate")) {
+if (!function_exists ("imagecreate")) {
   syslog(LOG_ERR, "FusionDirectory is missing the gd library, please install php5-gd to be able to see progress images.");
   echo "Please install the php5-gd library, FusionDirectory can't create images without it.";
   exit();
diff --git a/include/accept-to-gettext.inc b/include/accept-to-gettext.inc
index 0995f1db7..9429195d6 100644
--- a/include/accept-to-gettext.inc
+++ b/include/accept-to-gettext.inc
@@ -115,7 +115,7 @@ function parse_gettext_lang ($str)
   }
 }
 
-function al2gt($gettextlangs)
+function al2gt ($gettextlangs)
 {
   /* Check if ACCEPT_LANGUAGE isset */
   if (empty($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
diff --git a/include/class_CSRFProtection.inc b/include/class_CSRFProtection.inc
index 27a63f8ef..8bbb98578 100644
--- a/include/class_CSRFProtection.inc
+++ b/include/class_CSRFProtection.inc
@@ -20,7 +20,7 @@
 
 class CSRFProtection
 {
-  public static function check()
+  public static function check ()
   {
     if (empty($_POST)) {
       return;
@@ -36,7 +36,7 @@ class CSRFProtection
     }
   }
 
-  public static function getToken()
+  public static function getToken ()
   {
     if (!session::is_set('CSRFtoken')) {
       session::set('CSRFtoken', standAlonePage::generateRandomHash());
@@ -44,7 +44,7 @@ class CSRFProtection
     return session::get('CSRFtoken');
   }
 
-  public static function checkHeaders()
+  public static function checkHeaders ()
   {
     $origin = FALSE;
     if (!empty($_SERVER['HTTP_ORIGIN'])) {
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index d2776767f..65027c70e 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -28,7 +28,7 @@ class Combinations implements Iterator
   protected $size     = 0;
   protected $pos      = 0;
 
-  function __construct(array $input, $size)
+  function __construct (array $input, $size)
   {
     $this->input = array_values($input);
     $this->n = count($this->input);
@@ -36,12 +36,12 @@ class Combinations implements Iterator
     $this->rewind();
   }
 
-  function key()
+  function key ()
   {
     return $this->pos;
   }
 
-  function current()
+  function current ()
   {
     $r = [];
     for ($i = 0; $i < $this->size; $i++) {
@@ -50,7 +50,7 @@ class Combinations implements Iterator
     return $r;
   }
 
-  function next()
+  function next ()
   {
     if ($this->_next()) {
       $this->pos++;
@@ -59,18 +59,18 @@ class Combinations implements Iterator
     }
   }
 
-  function rewind()
+  function rewind ()
   {
     $this->current  = range(0, $this->size);
     $this->pos      = 0;
   }
 
-  function valid()
+  function valid ()
   {
     return ($this->pos >= 0);
   }
 
-  protected function _next()
+  protected function _next ()
   {
     $i = $this->size - 1;
     while (($i >= 0) && ($this->current[$i] == $this->n - $this->size + $i)) {
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index 9a8e6b6ea..ad3b80be0 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -53,7 +53,7 @@ class CopyPasteHandler
   /*!
    * \brief Create CP handler
    */
-  function __construct()
+  function __construct ()
   {
     $this->current  = NULL;
     $this->queue    = [];
@@ -73,7 +73,7 @@ class CopyPasteHandler
    *
    * \param String $type the type of the object
    */
-  function add_to_queue($dn, $action, $type)
+  function add_to_queue ($dn, $action, $type)
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
 
@@ -108,7 +108,7 @@ class CopyPasteHandler
    *    Remove hdd dumps of current entries too.
    *    Remove entries older than 24 hours.
    */
-  function cleanup_queue()
+  function cleanup_queue ()
   {
     $this->current        = FALSE;
     $this->require_update = TRUE;
@@ -119,7 +119,7 @@ class CopyPasteHandler
   /*!
    * \brief This resets the queue to allow pasting again.
    */
-  function resetPaste()
+  function resetPaste ()
   {
     $this->current        = FALSE;
     $this->require_update = TRUE;
@@ -129,7 +129,7 @@ class CopyPasteHandler
   /*!
    * \brief Check if there are still entries the object queue
    */
-  function entries_queued()
+  function entries_queued ()
   {
     return ((count($this->queue) > 0) || ($this->current != FALSE));
   }
@@ -137,7 +137,7 @@ class CopyPasteHandler
   /*!
    * \brief Paste one entry from LDAP
    */
-  protected function load_entry_from_ldap($entry, $base)
+  protected function load_entry_from_ldap ($entry, $base)
   {
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
     if (!isset($entry['tab_class']) && !isset($entry['type'])) {
@@ -164,7 +164,7 @@ class CopyPasteHandler
    * \brief Displays a dialog which allows the user to fix all dependencies of this object.
    *      Create unique names, ids, or what ever
    */
-  function execute($base)
+  function execute ($base)
   {
     $ui = get_userinfo();
 
@@ -272,7 +272,7 @@ class CopyPasteHandler
     return '';
   }
 
-  private function current_saved()
+  private function current_saved ()
   {
     $this->lastdn   = $this->current['object']->dn;
     $this->handleReferences();
@@ -284,7 +284,7 @@ class CopyPasteHandler
    *
    * \return the dn of the last edited entry
    */
-  function last_entry()
+  function last_entry ()
   {
     return $this->lastdn;
   }
@@ -293,7 +293,7 @@ class CopyPasteHandler
   /*!
    * \brief Save new values posted by copy & paste dialog
    */
-  function save_object()
+  function save_object ()
   {
     if (isset($_POST['abort_current_cut-copy_operation'])) {
       $this->current = FALSE;
@@ -305,7 +305,7 @@ class CopyPasteHandler
     }
   }
 
-  function handleReferences()
+  function handleReferences ()
   {
     $dst_dn = $this->current['object']->dn;
     $src_dn = $this->current['dn'];
@@ -322,7 +322,7 @@ class CopyPasteHandler
    *
    * \return the paste icon for headpages
    */
-  function generatePasteIcon()
+  function generatePasteIcon ()
   {
     $Copy_Paste = "&nbsp;<img class='center' src='images/lists/seperator.png' alt='' height='16' width='1'>&nbsp;";
     if ($this->entries_queued()) {
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 495f88d2f..38f856e8d 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -205,7 +205,7 @@ class IconTheme
 
   /* We store themes in the session. To do otherwise, override these methods. */
   static public $session_var    = 'IconThemes';
-  static public function loadThemes($path)
+  static public function loadThemes ($path)
   {
     $themes = [];
     if ($dir = opendir("$path")) {
@@ -236,7 +236,7 @@ class IconTheme
     }
     return $_SESSION[static::$session_var][static::$default_theme]->FindIcon($context, $icon, $size);
   }
-  public function findTheme($theme)
+  public function findTheme ($theme)
   {
     if (isset($_SESSION[static::$session_var][$theme])) {
       $ret = &$_SESSION[static::$session_var][$theme];
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 13bc7dff8..c4b20d194 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -34,7 +34,7 @@ class Language
    *
    * \param string $lang Language locale to use, defaults to self::detect()
    */
-  public static function init($lang = NULL)
+  public static function init ($lang = NULL)
   {
     global $BASE_DIR;
 
@@ -70,7 +70,7 @@ class Language
       $ret = TRUE;
       if (session::is_set('plist')) {
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get('lang'), 'Plist already loaded with language');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get ('lang'), 'Plist already loaded with language');
         }
         session::un_set('plist');
         session::set('lang', $lang);
@@ -95,7 +95,7 @@ class Language
    *
    * \return string gettext locale string
    */
-  public static function detect()
+  public static function detect ()
   {
     global $config;
 
@@ -132,7 +132,7 @@ class Language
    *
    * \param boolean $ownLanguage Should language names be stated in their own language as well
    */
-  public static function getList($ownLanguage = FALSE)
+  public static function getList ($ownLanguage = FALSE)
   {
     /* locales in english */
     $tmp_english = [
@@ -224,7 +224,7 @@ class Language
     return preg_match('/^(fa_|ar_)/', $lang);
   }
 
-  public static function setHeaders($language, $mime)
+  public static function setHeaders ($language, $mime)
   {
     list ($lang, $country, $char) = parse_gettext_lang($language);
 
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index ced9d6910..2538abcc5 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -26,7 +26,7 @@ class SnapshotCreateDialog extends simplePlugin
 {
   public $aclCategory;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName' => 'SnapshotCreateDialog',
@@ -71,7 +71,7 @@ class SnapshotCreateDialog extends simplePlugin
    *
    * \param mixed $attr Attribute object or name (in this case it will be fetched from attributesAccess)
    */
-  function attrIsWriteable($attr)
+  function attrIsWriteable ($attr)
   {
     global $ui;
 
@@ -85,7 +85,7 @@ class SnapshotCreateDialog extends simplePlugin
     }
   }
 
-  function renderAttributes($readOnly = FALSE)
+  function renderAttributes ($readOnly = FALSE)
   {
     global $ui;
     $smarty = get_smarty();
@@ -162,7 +162,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     }
   }
 
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
   }
 
@@ -170,7 +170,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
   {
   }
 
-  function addValue($value)
+  function addValue ($value)
   {
     $this->value[] = $value;
     $this->reIndexValues();
@@ -181,7 +181,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     return '';
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     $values = [
       date(_('Y-m-d, H:i:s'), preg_replace('/\-.*$/', '', $value['gosaSnapshotTimestamp'][0])),
@@ -193,7 +193,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     return $values;
   }
 
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
     list ($img, $nbicons) = parent::genRowIcons($key, $value);
@@ -211,7 +211,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
     return  [$img, $nbicons];
   }
 
-  protected function handlePostValueActions($id, $postValue)
+  protected function handlePostValueActions ($id, $postValue)
   {
     if (parent::handlePostValueActions($id, $postValue)) {
       return TRUE;
@@ -243,7 +243,7 @@ class SnapshotRestoreDialog extends simplePlugin
   protected $snapDn;
   protected $snapAction;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName' => 'SnapshotRestoreDialog',
@@ -348,7 +348,7 @@ class SnapshotRestoreDialog extends simplePlugin
     return $str;
   }
 
-  function attrIsWriteable($attr)
+  function attrIsWriteable ($attr)
   {
     global $ui;
 
@@ -362,19 +362,19 @@ class SnapshotRestoreDialog extends simplePlugin
     }
   }
 
-  function triggerRestore($dn)
+  function triggerRestore ($dn)
   {
     $this->dialog = 'restore';
     $this->snapDn = $dn;
   }
 
-  function triggerDelete($dn)
+  function triggerDelete ($dn)
   {
     $this->dialog = 'delete';
     $this->snapDn = $dn;
   }
 
-  function save_object()
+  function save_object ()
   {
     if ($this->dialog == 'delete') {
       if (isset($_POST['delete_confirmed'])) {
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 08072cab8..a81e9f316 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -34,7 +34,7 @@ class SnapshotHandler
 
   protected $enabled;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Snapshot'),
@@ -52,7 +52,7 @@ class SnapshotHandler
   /*!
    * \brief Create handler
    */
-  function __construct()
+  function __construct ()
   {
     global $config;
     $this->enabled = $config->snapshotEnabled();
@@ -73,7 +73,7 @@ class SnapshotHandler
    *
    * \return boolean TRUE if is enable, return FALSE otherwise
    */
-  function enabled()
+  function enabled ()
   {
     return $this->enabled;
   }
@@ -83,7 +83,7 @@ class SnapshotHandler
    *
    * \param array $bases
    */
-  function setSnapshotBases($bases)
+  function setSnapshotBases ($bases)
   {
     $this->snapshotBases = $bases;
   }
@@ -93,14 +93,14 @@ class SnapshotHandler
    *
    * \return array $bases
    */
-  function getSnapshotBases()
+  function getSnapshotBases ()
   {
     return $this->snapshotBases;
   }
 
   /* \brief Get the snapshot dn of an object dn
    */
-  protected function snapshot_dn($dn)
+  protected function snapshot_dn ($dn)
   {
     global $config;
     return preg_replace("/".preg_quote($config->current['BASE'], '/')."$/", "", $dn)
@@ -110,7 +110,7 @@ class SnapshotHandler
   /*!
    * \brief Check if there are deleted snapshots
    */
-  function hasDeletedSnapshots()
+  function hasDeletedSnapshots ()
   {
     foreach ($this->getSnapshotBases() as $base) {
       if (count($this->getAllDeletedSnapshots($base)) > 0) {
@@ -123,7 +123,7 @@ class SnapshotHandler
   /*!
    * \brief Cache Snapshot information for all objects in $base
    */
-  function initSnapshotCache($base)
+  function initSnapshotCache ($base)
   {
     global $config;
     if (!$this->enabled()) {
@@ -151,7 +151,7 @@ class SnapshotHandler
    *
    * \return the numbers of snapshots
    */
-  function hasSnapshots($dn)
+  function hasSnapshots ($dn)
   {
     return isset($this->snapshotsCache[$dn]);
   }
@@ -163,7 +163,7 @@ class SnapshotHandler
    *
    * \param string $raw FALSE
    */
-  function getSnapshots($dn, $raw = FALSE)
+  function getSnapshots ($dn, $raw = FALSE)
   {
     global $config;
     if (!$this->enabled()) {
@@ -214,7 +214,7 @@ class SnapshotHandler
    *
    * \param array $description Snapshot description
    */
-  function createSnapshot($dn, $description = [])
+  function createSnapshot ($dn, $description = [])
   {
     global $config;
     if (!$this->enabled()) {
@@ -287,7 +287,7 @@ class SnapshotHandler
    *
    * \param string $dn The DN
    */
-  function removeSnapshot($dn)
+  function removeSnapshot ($dn)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -303,7 +303,7 @@ class SnapshotHandler
    *
    * \return available snapshots for the given base
    */
-  function getAvailableSnapsShots($dn)
+  function getAvailableSnapsShots ($dn)
   {
     global $config;
     if (!$this->enabled()) {
@@ -341,7 +341,7 @@ class SnapshotHandler
    *
    * \param string $base_of_object
    */
-  function getAllDeletedSnapshots($base_of_object)
+  function getAllDeletedSnapshots ($base_of_object)
   {
     global $config;
     if (!$this->enabled()) {
@@ -389,7 +389,7 @@ class SnapshotHandler
    *
    * \param string $dn The DN
    */
-  function restoreSnapshot($dn)
+  function restoreSnapshot ($dn)
   {
     global $config;
     if (!$this->enabled()) {
diff --git a/include/class_acl.inc b/include/class_acl.inc
index 452eca871..abe740340 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -29,7 +29,7 @@
  */
 class acl
 {
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('ACL'),
@@ -51,7 +51,7 @@ class acl
    *
    *  \param Array $list Array to be sorted
    */
-  static function sort_by_priority($list)
+  static function sort_by_priority ($list)
   {
     uksort($list,
       function ($a, $b)
@@ -75,7 +75,7 @@ class acl
    *
    * \param string $role ACL role to be exploded
    */
-  static function explodeRole($role)
+  static function explodeRole ($role)
   {
     if (!is_array($role)) {
       $role = [$role];
@@ -95,7 +95,7 @@ class acl
    *
    * \param string $acl ACL to be exploded
    */
-  static function explodeACL($acl)
+  static function explodeACL ($acl)
   {
     $list = explode(':', $acl);
     if (count($list) == 5) {
@@ -128,7 +128,7 @@ class acl
    *
    * \return an array with members
    */
-  static function extractMembers($ms)
+  static function extractMembers ($ms)
   {
     global $config;
     $a = [];
@@ -182,7 +182,7 @@ class acl
    *
    * \param string $acl The acl to be extracted
    */
-  static function extractACL($acl)
+  static function extractACL ($acl)
   {
     /* Rip acl off the string, seperate by ',' and place it in an array */
     $as = preg_replace('/^[^:]+:[^:]+:[^:]*:([^:]*).*$/', '\1', $acl);
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 6a378ce82..9aa823bf9 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -45,7 +45,7 @@ class baseSelector
    *
    * \param String $base Empty string
    */
-  function __construct($bases, $base = "")
+  function __construct ($bases, $base = "")
   {
     // Initialize pid
     $this->pid = preg_replace("/[^0-9]/", "", microtime(TRUE));
@@ -58,7 +58,7 @@ class baseSelector
   /*!
    * \brief Returns id of the html field
    */
-  function getInputHtmlId()
+  function getInputHtmlId ()
   {
     return 'bs_input_'.$this->pid;
   }
@@ -68,7 +68,7 @@ class baseSelector
    *
    * \param Boolean $flag Flag for the submit button
    */
-  function setSubmitButton($flag)
+  function setSubmitButton ($flag)
   {
     $this->submitButton = $flag;
   }
@@ -78,7 +78,7 @@ class baseSelector
    *
    * \param Integer $value The new value of the height
    */
-  function setHeight($value)
+  function setHeight ($value)
   {
     $this->height = $value;
   }
@@ -88,7 +88,7 @@ class baseSelector
    *
    * \param String $base The new value of the base
    */
-  function setBase($base)
+  function setBase ($base)
   {
     if (isset($this->pathMapping[$base])) {
       $this->base       = $base;
@@ -105,7 +105,7 @@ class baseSelector
    *
    * \return Boolean the last state of the object
    */
-  function checkLastBaseUpdate()
+  function checkLastBaseUpdate ()
   {
     return $this->lastState;
   }
@@ -115,7 +115,7 @@ class baseSelector
    *
    * \param Array $bases The new value of the bases
    */
-  function setBases($bases)
+  function setBases ($bases)
   {
     global $config;
 
@@ -138,7 +138,7 @@ class baseSelector
    *
    * \param Boolean $force FALSE
    */
-  function update($force = FALSE)
+  function update ($force = FALSE)
   {
     if (!isset($this->base) || ($this->base == '')) {
       $this->lastState = FALSE;
@@ -187,7 +187,7 @@ class baseSelector
     return TRUE;
   }
 
-  protected function renderTree()
+  protected function renderTree ()
   {
     global $config;
     $link = "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($config->current['BASE'])."';  $('submit_tree_base_".$this->pid."').click();\"";
@@ -204,7 +204,7 @@ class baseSelector
                   "<script type='text/javascript'>".
                   "new Ajax.Autocompleter('".$this->getInputHtmlId()."', 'autocomplete_".$this->pid."', 'autocomplete.php?type=base', { minChars: 3, frequency: 0.5 });";
     if ($this->submitButton) {
-      $this->tree .= "$('".$this->getInputHtmlId()."').observe('keypress', function(event) { if(event.keyCode == Event.KEY_RETURN) { $('submit_base_".$this->pid."').click(); } });";
+      $this->tree .= "$('".$this->getInputHtmlId()."').observe('keypress', function(event) { if (event.keyCode == Event.KEY_RETURN) { $ ('submit_base_".$this->pid."').click (); } });";
     }
     $this->tree .= "</script>";
 
@@ -285,7 +285,7 @@ class baseSelector
    *
    * \param String $string The string which his space will be replaced
    */
-  function escape($string)
+  function escape ($string)
   {
     return str_replace(' ', '&nbsp;', htmlentities($string, ENT_COMPAT, 'UTF-8'));
   }
@@ -295,7 +295,7 @@ class baseSelector
    *
    * \return members tree of the ACL class
    */
-  function render()
+  function render ()
   {
     return $this->tree;
   }
@@ -305,7 +305,7 @@ class baseSelector
    *
    * \return String containts the base of the object
    */
-  function getBase()
+  function getBase ()
   {
     return $this->base;
   }
@@ -315,7 +315,7 @@ class baseSelector
    *
    * \return Array containts the bases and their display text
    */
-  function getBases()
+  function getBases ()
   {
     return $this->pathMapping;
   }
diff --git a/include/class_config.inc b/include/class_config.inc
index 81d3777ae..cce36a10b 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -74,7 +74,7 @@ class config
    *
    * \param string $basedir base directory
    */
-  function __construct($filename, $basedir = '')
+  function __construct ($filename, $basedir = '')
   {
     $this->basedir  = $basedir;
 
@@ -91,7 +91,7 @@ class config
    * read the last time and reloads it. It uses the file mtime to check
    * weither the file changed or not.
    */
-  function check_and_reload($force = FALSE)
+  function check_and_reload ($force = FALSE)
   {
     /* Check if class_location.inc has changed, this is the case
         if we have installed or removed plugins. */
@@ -125,7 +125,7 @@ class config
    *
    * \param string $filename The filename of the configuration file.
    */
-  function parse($filename)
+  function parse ($filename)
   {
     $this->last_modified  = filemtime($filename);
     $this->filename       = $filename;
@@ -166,7 +166,7 @@ class config
    *
    * \param string $attrs
    */
-  function tag_open($parser, $tag, $attrs)
+  function tag_open ($parser, $tag, $attrs)
   {
     /* Save last and current tag for reference */
     $this->tags[$this->level] = $tag;
@@ -248,7 +248,7 @@ class config
    *
    * \param string $tag
    */
-  function tag_close($parser, $tag)
+  function tag_close ($parser, $tag)
   {
     /* Close config section */
     if ($tag == 'CONF') {
@@ -267,7 +267,7 @@ class config
    *
    * \return string the password corresponding to the keyword
    */
-  function get_credentials($creds)
+  function get_credentials ($creds)
   {
     if (isset($_SERVER['HTTP_FDKEY'])) {
       if (!session::is_set('HTTP_FDKEY_CACHE')) {
@@ -311,7 +311,7 @@ class config
    *
    * \return ldapMultiplexer object
    */
-  function get_ldap_link($sizelimit = FALSE)
+  function get_ldap_link ($sizelimit = FALSE)
   {
     global $ui;
 
@@ -348,7 +348,7 @@ class config
    *
    * \param string $name the name of the location
    */
-  function set_current($name)
+  function set_current ($name)
   {
     if (!isset($this->data['LOCATIONS'][$name])) {
       msg_dialog::display(_('Error'), sprintf(_('Location "%s" could not be found in the configuration file'), $name), FATAL_ERROR_DIALOG);
@@ -474,7 +474,7 @@ class config
     del_lock($dn);
   }
 
-  function load_inldap_config()
+  function load_inldap_config ()
   {
     $ldap = $this->get_ldap_link();
     $ldap->cat(CONFIGRDN.$this->current['BASE']);
@@ -512,7 +512,7 @@ class config
   /*!
    * \brief Store the departments from ldap in $this->departments
    */
-  function get_departments()
+  function get_departments ()
   {
     /* Initialize result hash */
     $result = [];
@@ -575,7 +575,7 @@ class config
     $this->departments = $result;
   }
 
-  function make_idepartments($max_size = 28)
+  function make_idepartments ($max_size = 28)
   {
     $base   = $this->current['BASE'];
     $qbase  = preg_quote($base, '/');
@@ -632,7 +632,7 @@ class config
    *
    * \param int $max_size initialized at 256
    */
-  function generateDepartmentArray($arr, $depth = -1, $max_size = 256)
+  function generateDepartmentArray ($arr, $depth = -1, $max_size = 256)
   {
     $ret = [];
     $depth++;
@@ -687,7 +687,7 @@ class config
    *
    *  \return array of hook commands or empty array
    */
-  function searchHooks($class, $value)
+  function searchHooks ($class, $value)
   {
     $class = strtoupper($class);
     $value = strtoupper($value);
@@ -711,7 +711,7 @@ class config
    *
    * \return string the configuration value if found or the default value
    */
-  function get_cfg_value($name, $default = '')
+  function get_cfg_value ($name, $default = '')
   {
     $name = strtoupper($name);
     $res  = $default;
@@ -744,7 +744,7 @@ class config
    *  or not. If SESSIONLIFETIME is not configured in FusionDirectory it always returns
    *  TRUE.
    */
-  function check_session_lifetime()
+  function check_session_lifetime ()
   {
     $cfg_lifetime = $this->get_cfg_value('SESSIONLIFETIME', 0);
     if ($cfg_lifetime > 0) {
@@ -761,7 +761,7 @@ class config
    *
    * \return boolean TRUE if snapshot are enabled, FALSE otherwise
    */
-  function snapshotEnabled()
+  function snapshotEnabled ()
   {
     if ($this->get_cfg_value('enableSnapshots') != 'TRUE') {
       return FALSE;
@@ -980,7 +980,7 @@ class config
           }
         }
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join(',', array_unique($acl)), "Class $class categories");
+      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join (',', array_unique ($acl)), "Class $class categories");
       /* Feed menu */
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
diff --git a/include/class_departmentSortIterator.inc b/include/class_departmentSortIterator.inc
index ce23a7b6a..da4a60598 100644
--- a/include/class_departmentSortIterator.inc
+++ b/include/class_departmentSortIterator.inc
@@ -35,7 +35,7 @@ class departmentSortIterator extends listingSortIterator {
    *
    * \param $direction Direction
    */
-  public function __construct($data, $direction)
+  public function __construct ($data, $direction)
   {
     parent::__construct($data, $direction, 'sort-attribute', 'department');
   }
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 1aa8908f3..1f54867f5 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -44,7 +44,7 @@ class divSelectBox
   /*!
    * \brief Default divSelectBox constructor
    */
-  function __construct($id)
+  function __construct ($id)
   {
     $this->s_summary  = '';
     $this->a_entries  = [];
@@ -57,7 +57,7 @@ class divSelectBox
    *
    * \param integer $h Height
    */
-  function setHeight($h)
+  function setHeight ($h)
   {
     if (is_numeric($h)) {
       $this->height = $h.'px';
@@ -71,7 +71,7 @@ class divSelectBox
    *
    * \param array $a_entriedata
    */
-  function AddEntry($a_entriedata)
+  function AddEntry ($a_entriedata)
   {
     $this->a_entries[] = $a_entriedata;
   }
@@ -81,7 +81,7 @@ class divSelectBox
    *
    * \param array $headers
    */
-  function SetHeaders($headers)
+  function SetHeaders ($headers)
   {
     $this->headers = $headers;
   }
@@ -89,7 +89,7 @@ class divSelectBox
   /*!
    * \brief Draw the list
    */
-  function DrawList()
+  function DrawList ()
   {
     $s_return = '';
     $s_return .= '<div style="border:1px solid rgb(170,170,170);padding-right:1px;height:'.$this->height.';width:100%">'."\n";
@@ -117,7 +117,7 @@ class divSelectBox
   /*!
    * \brief Get the number of entries
    */
-  function _numentries()
+  function _numentries ()
   {
     $cnt = count($this->a_entries);
     return $cnt;
@@ -128,7 +128,7 @@ class divSelectBox
    *
    * \param string $msg
    */
-  function SetSummary($msg)
+  function SetSummary ($msg)
   {
     $this->s_summary = $msg;
   }
@@ -136,7 +136,7 @@ class divSelectBox
   /*!
    * \brief Generate the page
    */
-  function _generatePage()
+  function _generatePage ()
   {
     $display = '';
     if ($this->headers !== FALSE) {
@@ -155,7 +155,7 @@ class divSelectBox
   /*!
    * \brief Generate the body
    */
-  function _generateBody()
+  function _generateBody ()
   {
     $s_value  = '';
     $s_key    = '';
diff --git a/include/class_filter.inc b/include/class_filter.inc
index ab7cc9c44..7a9ab4474 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -51,7 +51,7 @@ class filter
    *
    * \param string $filename
    */
-  function __construct($filename)
+  function __construct ($filename)
   {
     // Load eventually passed filename
     if (!$this->load($filename)) {
@@ -66,7 +66,7 @@ class filter
    *
    * \param string $filename
    */
-  function load($filename)
+  function load ($filename)
   {
     $contents       = file_get_contents($filename);
     $this->xmlData  = xml::xml2array($contents, 1);
@@ -144,7 +144,7 @@ class filter
    *
    * \param array $element
    */
-  function getTextfield($element)
+  function getTextfield ($element)
   {
     $tag  = $element['tag'];
     $size = 30;
@@ -181,7 +181,7 @@ class filter
    *
    * \param array $element
    */
-  function getCheckbox($element)
+  function getCheckbox ($element)
   {
     $tag      = $element['tag'];
     $checked  = "";
@@ -198,7 +198,7 @@ class filter
    *
    * \param array $element
    */
-  function getCombobox($element)
+  function getCombobox ($element)
   {
     $result = "<select name='".$element['tag']."' size='1' onChange='document.mainform.submit();'>";
 
@@ -236,7 +236,7 @@ class filter
    *
    * \param array $element
    */
-  function getDatePicker($element)
+  function getDatePicker ($element)
   {
     global $lang;
     $tag    = $element['tag'];
@@ -263,7 +263,7 @@ class filter
    *
    * \param array $options
    */
-  function setComboBoxOptions($tag, $options)
+  function setComboBoxOptions ($tag, $options)
   {
     if (isset($this->elements[$tag]) && ($this->elements[$tag]['type'] == "combobox")) {
       $this->elements[$tag]['value'] = [];
@@ -280,7 +280,7 @@ class filter
    *
    * \param string $hook
    */
-  function setConverter($field, $hook)
+  function setConverter ($field, $hook)
   {
     $this->converter[$field] = $hook;
   }
@@ -290,7 +290,7 @@ class filter
    *
    * \param string $storage
    */
-  function setObjectStorage($storage)
+  function setObjectStorage ($storage)
   {
     $this->objectStorage = $storage;
   }
@@ -301,7 +301,7 @@ class filter
    *
    * \param string $base
    */
-  function setBase($base)
+  function setBase ($base)
   {
     $this->base = $base;
   }
@@ -311,7 +311,7 @@ class filter
    *
    * \param string $scope
    */
-  function setCurrentScope($scope)
+  function setCurrentScope ($scope)
   {
     $this->scope = $scope;
   }
@@ -321,7 +321,7 @@ class filter
    *
    * \param integer $columns
    */
-  function renderAlphabet($columns = 10)
+  function renderAlphabet ($columns = 10)
   {
     // Return pre-rendered alphabet if available
     if ($this->alphabet) {
@@ -364,7 +364,7 @@ class filter
    *
    * \return string
    */
-  function renderApply()
+  function renderApply ()
   {
     return "<input type='submit' name='apply' value='"._("Apply filter")."'>";
   }
@@ -374,7 +374,7 @@ class filter
    *
    * \return string
    */
-  function renderScope()
+  function renderScope ()
   {
     $checked = ($this->scope == 'sub' ? ' checked' : '');
     return "<input type='checkbox' id='SCOPE' name='SCOPE' value='1' onClick='document.mainform.submit();'$checked>&nbsp;<LABEL for='SCOPE'>"._("Search in subtrees")."</LABEL>";
@@ -383,7 +383,7 @@ class filter
   /*!
    * \brief Render
    */
-  function render()
+  function render ()
   {
     /* If template is not filled, we display nothing */
     if (!isset ($this->xmlData['definition']['template'])) {
@@ -437,7 +437,7 @@ class filter
   /*!
    * \brief Query
    */
-  function query()
+  function query ()
   {
     global $class_mapping;
     $result = [];
@@ -531,7 +531,7 @@ class filter
    *
    * \return TRUE if is valid, FALSE otherwise
    */
-  function isValid()
+  function isValid ()
   {
     foreach ($this->elements as $tag => $element) {
       if (isset($element->regex)) {
@@ -546,7 +546,7 @@ class filter
   /*!
    * \brief Update
    */
-  function update()
+  function update ()
   {
     /* React on alphabet links if needed */
     if (isset($_GET['filter'])) {
@@ -593,7 +593,7 @@ class filter
    *
    * \param string $value
    */
-  function getCompletitionList($cfg, $tag, $value = "*")
+  function getCompletitionList ($cfg, $tag, $value = "*")
   {
     global $class_mapping;
     $res = [];
@@ -646,7 +646,7 @@ class filter
   /*!
    * \brief Auto complete
    */
-  function processAutocomplete()
+  function processAutocomplete ()
   {
     $result = [];
 
@@ -680,7 +680,7 @@ class filter
  *
  * \param array $b
  */
-function strlenSort($a, $b)
+function strlenSort ($a, $b)
 {
   if (strlen($a['tag']) == strlen($b['tag'])) {
     return 0;
diff --git a/include/class_filterLDAP.inc b/include/class_filterLDAP.inc
index 6e6cd13a4..14fd21aad 100644
--- a/include/class_filterLDAP.inc
+++ b/include/class_filterLDAP.inc
@@ -48,7 +48,7 @@ class filterLDAP
    *
    * \param array $objectStorage
    */
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = [""])
+  static function query ($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = [""])
   {
     return static::get_list($parent, $base, $filter, $attributes, $category, $objectStorage, (($scope == 'sub') ? 'subtree' : 'one'), TRUE);
   }
@@ -74,7 +74,7 @@ class filterLDAP
    *
    * \param boolean $skipAcl
    */
-  static function get_list($parent, $base, $filter, $attributes, $category, $objectStorage, $scope, $sizelimit = TRUE, $skipAcl = FALSE)
+  static function get_list ($parent, $base, $filter, $attributes, $category, $objectStorage, $scope, $sizelimit = TRUE, $skipAcl = FALSE)
   {
     global $config, $ui;
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 58e784ffb..2f1809884 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -79,7 +79,7 @@ class LDAP
    *
    * \param boolean $tls FALSE
    */
-  function __construct($binddn, $bindpw, $hostname, $follow_referral = FALSE, $tls = FALSE)
+  function __construct ($binddn, $bindpw, $hostname, $follow_referral = FALSE, $tls = FALSE)
   {
     global $config;
     $this->follow_referral  = $follow_referral;
@@ -102,7 +102,7 @@ class LDAP
    *
    * \return increase srp
    */
-  function getSearchResource()
+  function getSearchResource ()
   {
     $this->sr[$this->srp]     = NULL;
     $this->start[$this->srp]  = 0;
@@ -115,7 +115,7 @@ class LDAP
    *
    * \param string $dn The DN
    */
-  static function prepare4filter($dn)
+  static function prepare4filter ($dn)
   {
     trigger_error('deprecated, use ldap_escape_f instead');
     return ldap_escape_f($dn);
@@ -126,17 +126,17 @@ class LDAP
    *
    *  The string $error containts result of the connection
    */
-  function connect()
+  function connect ()
   {
     $this->hascon     = FALSE;
     $this->reconnect  = FALSE;
     if ($this->cid = @ldap_connect($this->hostname)) {
       @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3);
-      if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) {
+      if (function_exists ("ldap_set_rebind_proc") && $this->follow_referral) {
         @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
         @ldap_set_rebind_proc($this->cid, [&$this, "rebind"]);
       }
-      if (function_exists("ldap_start_tls") && $this->tls) {
+      if (function_exists ("ldap_start_tls") && $this->tls) {
         @ldap_start_tls($this->cid);
       }
 
@@ -161,7 +161,7 @@ class LDAP
   /*!
    *  \brief Rebind
    */
-  function rebind($ldap, $referral)
+  function rebind ($ldap, $referral)
   {
     $credentials = $this->get_credentials($referral);
     if (@ldap_bind($ldap, $credentials['ADMINDN'], $credentials['ADMINPASSWORD'])) {
@@ -178,7 +178,7 @@ class LDAP
   /*!
    *  \brief Reconnect to LDAP server
    */
-  function reconnect()
+  function reconnect ()
   {
     if ($this->reconnect) {
       $this->unbind();
@@ -188,7 +188,7 @@ class LDAP
   /*!
    *  \brief Unbind to LDAP server
    */
-  function unbind()
+  function unbind ()
   {
     @ldap_unbind($this->cid);
     $this->cid = NULL;
@@ -197,7 +197,7 @@ class LDAP
   /*!
    *  \brief Disconnect to LDAP server
    */
-  function disconnect()
+  function disconnect ()
   {
     if ($this->hascon) {
       @ldap_close($this->cid);
@@ -210,7 +210,7 @@ class LDAP
    *
    * \param string $dir The new directory
    */
-  function cd($dir)
+  function cd ($dir)
   {
     if ($dir == '..') {
       $this->basedn = $this->getParentDir();
@@ -226,7 +226,7 @@ class LDAP
    *
    * \return String, the parent directory
    */
-  function getParentDir($basedn = '')
+  function getParentDir ($basedn = '')
   {
     if ($basedn == '') {
       $basedn = $this->basedn;
@@ -245,7 +245,7 @@ class LDAP
    *
    * \param string $scope Scope of the search: subtree/base/one
    */
-  function search($srp, $filter, $attrs = [], $scope = 'subtree')
+  function search ($srp, $filter, $attrs = [], $scope = 'subtree')
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -297,7 +297,7 @@ class LDAP
    *
    * \param array $attrs
    */
-  function ls($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = ["*"])
+  function ls ($srp, $filter = " (objectclass=*)", $basedn = "", $attrs = ["*"])
   {
     trigger_error('deprecated');
     $this->cd($basedn);
@@ -315,7 +315,7 @@ class LDAP
    *
    * \param string $filter Initialized at "(objectclass=*)"
    */
-  function cat($srp, $dn, $attrs = ["*"], $filter = "(objectclass=*)")
+  function cat ($srp, $dn, $attrs = ["*"], $filter = " (objectclass=*)")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -341,7 +341,7 @@ class LDAP
    *
    * \param string $filter The filter of the research
    */
-  function object_match_filter($dn, $filter)
+  function object_match_filter ($dn, $filter)
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -361,7 +361,7 @@ class LDAP
    *
    * \param $size The limit
    */
-  function set_size_limit($size)
+  function set_size_limit ($size)
   {
     /* Ignore zero settings */
     if ($size == 0) {
@@ -379,7 +379,7 @@ class LDAP
    *
    * \param integer $srp
    */
-  function fetch($srp)
+  function fetch ($srp)
   {
     $att = [];
     if ($this->hascon) {
@@ -418,7 +418,7 @@ class LDAP
    *
    * \param integer $srp Value to be reset
    */
-  function resetResult($srp)
+  function resetResult ($srp)
   {
     $this->start[$srp] = 0;
   }
@@ -428,7 +428,7 @@ class LDAP
    *
    * \param integer $srp The result to clear
    */
-  function clearResult($srp)
+  function clearResult ($srp)
   {
     if ($this->hasres[$srp]) {
       $this->hasres[$srp] = FALSE;
@@ -441,7 +441,7 @@ class LDAP
    *
    * \param $srp srp
    */
-  function getDN($srp)
+  function getDN ($srp)
   {
     if ($this->hascon) {
       if ($this->hasres[$srp]) {
@@ -468,7 +468,7 @@ class LDAP
    *
    * \param $srp srp
    */
-  function count($srp)
+  function count ($srp)
   {
     if ($this->hascon) {
       if ($this->hasres[$srp]) {
@@ -493,7 +493,7 @@ class LDAP
    *
    * \param string $dn Empty string
    */
-  function rm($attrs = "", $dn = "")
+  function rm ($attrs = "", $dn = "")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -512,7 +512,7 @@ class LDAP
     }
   }
 
-  function mod_add($attrs = "", $dn = "")
+  function mod_add ($attrs = "", $dn = "")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -536,7 +536,7 @@ class LDAP
    *
    * \param string $deletedn The DN to be deleted
   */
-  function rmdir($deletedn)
+  function rmdir ($deletedn)
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -561,7 +561,7 @@ class LDAP
    *
    * \return Boolean TRUE on success else FALSE.
    */
-  function rename_dn($source, $dest)
+  function rename_dn ($source, $dest)
   {
     /* Check if source and destination are the same entry */
     if (strtolower($source) == strtolower($dest)) {
@@ -615,7 +615,7 @@ class LDAP
    *
    * \return TRUE on sucessfull , 0 in error, and "" when we don't get a ldap conection
    */
-  function rmdir_recursive($srp, $deletedn)
+  function rmdir_recursive ($srp, $deletedn)
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -647,7 +647,7 @@ class LDAP
     }
   }
 
-  function makeReadableErrors($error, $attrs)
+  function makeReadableErrors ($error, $attrs)
   {
     if ($this->success()) {
       return "";
@@ -679,7 +679,7 @@ class LDAP
    *
    * \param array $attrs The new entry
    */
-  function modify(array $attrs)
+  function modify (array $attrs)
   {
     if (count($attrs) == 0) {
       return 0;
@@ -705,7 +705,7 @@ class LDAP
    *
    * \param string $attrs The entry to add
    */
-  function add($attrs)
+  function add ($attrs)
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -728,7 +728,7 @@ class LDAP
    *
    * Creates missing trees, in our example ou=orga,dc=base will get created if not existing, same thing for ou=example,ou=orga,dc=base
    * */
-  function create_missing_trees($srp, $target, $ignoreReferralBases = TRUE)
+  function create_missing_trees ($srp, $target, $ignoreReferralBases = TRUE)
   {
     $real_path = substr($target, 0, strlen($target) - strlen($this->basedn) - 1);
 
@@ -851,7 +851,7 @@ class LDAP
       if (!$this->success()) {
         @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $cdn, 'dn');
         @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $attrs, 'Content');
-        @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->get_error(), 'LDAP error');
+        @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->get_error (), 'LDAP error');
 
         msg_dialog::display(_('LDAP error'), msgPool::ldaperror($this->get_error(), $cdn, LDAP_ADD, get_class()), LDAP_ERROR);
         return FALSE;
@@ -867,7 +867,7 @@ class LDAP
    *
    * \return string $error containts LDAP_OPT_ERROR_STRING
    */
-  function get_additional_error()
+  function get_additional_error ()
   {
     $error = "";
     @ldap_get_option ($this->cid, LDAP_OPT_ERROR_STRING, $error);
@@ -879,7 +879,7 @@ class LDAP
    *
    * \return boolean TRUE if Success is found in $error, else return FALSE
    */
-  function success()
+  function success ()
   {
     return (trim($this->error) === 'Success');
   }
@@ -887,7 +887,7 @@ class LDAP
   /*!
    * \brief Get the error
    */
-  function get_error()
+  function get_error ()
   {
     if ($this->error == 'Success') {
       return $this->error;
@@ -907,7 +907,7 @@ class LDAP
    *
    * Must be run right after the ldap request
    */
-  function get_errno()
+  function get_errno ()
   {
     if ($this->error == 'Success') {
       return 0;
@@ -921,13 +921,13 @@ class LDAP
    *
    * Must be run right after the search
    */
-  function hitSizeLimit()
+  function hitSizeLimit ()
   {
     /* LDAP_SIZELIMIT_EXCEEDED 0x04 */
     return ($this->get_errno() == 0x04);
   }
 
-  function get_credentials($url, $referrals = NULL)
+  function get_credentials ($url, $referrals = NULL)
   {
     $ret    = [];
     $url    = preg_replace('!\?\?.*$!', '', $url);
@@ -959,7 +959,7 @@ class LDAP
    *
    * \param  $limit        Limits the result.
    */
-  function generateLdif ($dn, $filter = "(objectClass=*)", $scope = 'sub', $limit = 0)
+  function generateLdif ($dn, $filter = " (objectClass=*)", $scope = 'sub', $limit = 0)
   {
     // Ensure that limit is numeric if not skip here.
     if (!empty($limit) && !is_numeric($limit)) {
@@ -1015,7 +1015,7 @@ class LDAP
     return $res;
   }
 
-  function dn_exists($dn)
+  function dn_exists ($dn)
   {
     return @ldap_read($this->cid, $dn, "(objectClass=*)", ["objectClass"]);
   }
@@ -1035,7 +1035,7 @@ class LDAP
    *
    * \param boolean $DeleteOldEntries
    */
-  function import_complete_ldif($srp, $str_attr, $JustModify, $DeleteOldEntries)
+  function import_complete_ldif ($srp, $str_attr, $JustModify, $DeleteOldEntries)
   {
     if ($this->reconnect) {
       $this->connect();
@@ -1138,7 +1138,7 @@ class LDAP
    *
    * \param boolean $delete
    */
-  protected function import_single_entry($srp, $data, $modify, $delete)
+  protected function import_single_entry ($srp, $data, $modify, $delete)
   {
     global $config;
 
@@ -1215,7 +1215,7 @@ class LDAP
    *
    * \param boolean $force_reload FALSE
    */
-  function get_objectclasses($force_reload = FALSE)
+  function get_objectclasses ($force_reload = FALSE)
   {
     $objectclasses = [];
 
@@ -1300,7 +1300,7 @@ class LDAP
   }
 
 
-  function value2container($value)
+  function value2container ($value)
   {
     /* Set emtpy values to "TRUE" only */
     if (preg_match('/^\s*$/', $value)) {
@@ -1326,7 +1326,7 @@ class LDAP
    *
    * \param string $string
    */
-  function log($string)
+  function log ($string)
   {
     if (session::is_set('config')) {
       $cfg = session::get('config');
@@ -1343,7 +1343,7 @@ class LDAP
    *
    * \param $dn The DN
    */
-  function getCn($dn)
+  function getCn ($dn)
   {
     $simple = explode(",", $dn);
 
@@ -1356,7 +1356,7 @@ class LDAP
     }
   }
 
-  function get_naming_contexts($server, $admin = '', $password = '')
+  function get_naming_contexts ($server, $admin = '', $password = '')
   {
     /* Build LDAP connection */
     $ds = ldap_connect ($server);
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index 2d3bc3c1b..6d93f70c9 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -41,18 +41,18 @@ class ldapFilter
   protected $operator;
   protected $subparts;
 
-  function __construct($operator, $subparts)
+  function __construct ($operator, $subparts)
   {
     $this->operator = $operator;
     $this->subparts = $subparts;
   }
 
-  function __toString()
+  function __toString ()
   {
     return '('.$this->operator.join($this->subparts).')';
   }
 
-  function __invoke($array)
+  function __invoke ($array)
   {
     $stopValue = FALSE;
     switch ($this->operator) {
@@ -72,17 +72,17 @@ class ldapFilter
     }
   }
 
-  function getOperator()
+  function getOperator ()
   {
     return $this->operator;
   }
 
-  function getSubparts()
+  function getSubparts ()
   {
     return $this->subparts;
   }
 
-  function listUsedAttributes(&$result = [])
+  function listUsedAttributes (&$result = [])
   {
     foreach ($this->subparts as $subpart) {
       $subpart->listUsedAttributes($result);
@@ -90,7 +90,7 @@ class ldapFilter
     return $result;
   }
 
-  static function parse($filter)
+  static function parse ($filter)
   {
     // Remove starting and ending parenthesis
     $filter = preg_replace(['/^\\s*\\(/', '/\\)\\s*$/'], '', $filter);
@@ -140,7 +140,7 @@ class ldapFilterLeaf extends ldapFilter
   protected $pattern;
   protected $dnFilter = FALSE;
 
-  function __construct($left, $operator, $right)
+  function __construct ($left, $operator, $right)
   {
     if (strrpos($left, ':dn:', -4) !== FALSE) {
       $this->dnFilter = TRUE;
@@ -167,17 +167,17 @@ class ldapFilterLeaf extends ldapFilter
     }
   }
 
-  function isDnFilter()
+  function isDnFilter ()
   {
     return $this->dnFilter;
   }
 
-  function __toString()
+  function __toString ()
   {
     return '('.$this->subparts[0].($this->dnFilter ? ':dn:' : '').$this->operator.$this->subparts[1].')';
   }
 
-  function __invoke($array)
+  function __invoke ($array)
   {
     if ($this->dnFilter) {
       switch ($this->operator) {
@@ -221,7 +221,7 @@ class ldapFilterLeaf extends ldapFilter
     return FALSE;
   }
 
-  function listUsedAttributes(&$result = [])
+  function listUsedAttributes (&$result = [])
   {
     if ($this->dnFilter) {
       $result['dn'] = 'dn';
@@ -232,7 +232,7 @@ class ldapFilterLeaf extends ldapFilter
   }
 }
 
-function fdTemplateFilter($filter)
+function fdTemplateFilter ($filter)
 {
   if ($filter instanceof ldapFilterLeaf) {
     if ($filter->isDnFilter()) {
diff --git a/include/class_ldapMultiplexer.inc b/include/class_ldapMultiplexer.inc
index 03f1f0cda..1eedd35a2 100644
--- a/include/class_ldapMultiplexer.inc
+++ b/include/class_ldapMultiplexer.inc
@@ -41,7 +41,7 @@ class ldapMultiplexer {
    *
    * \param $object Object LDAP
    */
-  public function __construct(&$object)
+  public function __construct (&$object)
   {
     /* Store object */
     $this->object = $object;
@@ -57,7 +57,7 @@ class ldapMultiplexer {
    *
    * \param $parameters Parameters for the method
    */
-  public function __call($methodName, $parameters)
+  public function __call ($methodName, $parameters)
   {
     /* Add resource pointer if the mentioned methods are used */
     if (in_array($methodName, ['search','ls','cat','fetch','clearResult','resetResult','count','getDN','rmdir_recursive','create_missing_trees','import_single_entry','import_complete_ldif'])) {
@@ -72,7 +72,7 @@ class ldapMultiplexer {
    *
    * \param string $memberName
    */
-  public function __get($memberName)
+  public function __get ($memberName)
   {
     return $this->object->$memberName;
   }
diff --git a/include/class_ldapSizeLimit.inc b/include/class_ldapSizeLimit.inc
index 32d3666fb..1b89d5efb 100644
--- a/include/class_ldapSizeLimit.inc
+++ b/include/class_ldapSizeLimit.inc
@@ -39,7 +39,7 @@ class ldapSizeLimit
   /*! \brief Limit was exceeded */
   protected $limitExceeded;
 
-  function __construct()
+  function __construct ()
   {
     global $config;
 
@@ -47,17 +47,17 @@ class ldapSizeLimit
     $this->ignore     = preg_match('/true/i', $config->get_cfg_value('LDAPSIZEIGNORE', 'TRUE'));
   }
 
-  function getSizeLimit()
+  function getSizeLimit ()
   {
     return $this->sizeLimit;
   }
 
-  function setSizeLimit($limit)
+  function setSizeLimit ($limit)
   {
     $this->sizeLimit = $limit;
   }
 
-  function setLimitExceeded($exceeded = TRUE)
+  function setLimitExceeded ($exceeded = TRUE)
   {
     $this->limitExceeded = $exceeded;
   }
@@ -65,7 +65,7 @@ class ldapSizeLimit
   /*!
    * \brief Handle sizelimit dialog related posts
    */
-  function update()
+  function update ()
   {
     if (isset($_POST['set_size_action']) && isset($_POST['action'])) {
       switch ($_POST['action']) {
@@ -99,7 +99,7 @@ class ldapSizeLimit
    * Show sizelimit configuration dialog when number
    * of entries exceeded the sizelimit
    */
-  function check()
+  function check ()
   {
     global $config;
 
@@ -125,7 +125,7 @@ class ldapSizeLimit
    * Print a sizelimit warning when number
    * of entries exceeded the sizelimit
    */
-  function renderWarning()
+  function renderWarning ()
   {
     if (($this->sizeLimit >= 10000000) || $this->limitExceeded) {
       $config = '<input type="submit" name="edit_sizelimit" value="'._('Configure').'"/>';
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 4d1d6e890..89de0ed9a 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -69,7 +69,7 @@ class listing
    *
    * \param string $data either a filename or an array representation of the XML
    */
-  function __construct($data)
+  function __construct ($data)
   {
     global $config;
     global $class_mapping;
@@ -128,7 +128,7 @@ class listing
    *
    * \see CopyPasteHandler
    */
-  function setCopyPasteHandler($handler)
+  function setCopyPasteHandler ($handler)
   {
     $this->copyPasteHandler = $handler;
   }
@@ -138,7 +138,7 @@ class listing
    *
    * \param integer $height
    */
-  function setHeight($height)
+  function setHeight ($height)
   {
     $this->height = $height;
   }
@@ -150,7 +150,7 @@ class listing
    *
    * \see  SnapshotHandler
    */
-  function setSnapshotHandler($handler)
+  function setSnapshotHandler ($handler)
   {
     if ($handler->enabled()) {
       $this->snapshotHandler = $handler;
@@ -166,7 +166,7 @@ class listing
    *
    * \see filter
    */
-  function setFilter($filter)
+  function setFilter ($filter)
   {
     $this->filter     = $filter;
     $filter->headpage = $this;
@@ -183,7 +183,7 @@ class listing
    *
    * \param string $call
    */
-  function registerElementFilter($name, $call)
+  function registerElementFilter ($name, $call)
   {
     if (!isset($this->filters[$name])) {
       $this->filters[$name] = $call;
@@ -198,7 +198,7 @@ class listing
    *
    * \param string $data either a filename or an array representation of the XML
    */
-  function load($data)
+  function load ($data)
   {
     if (is_array($data)) {
       $this->xmlData = $data;
@@ -279,7 +279,7 @@ class listing
   }
 
 
-  function renderHeader()
+  function renderHeader ()
   {
     $this->header = [];
     $this->plainHeader = [];
@@ -336,7 +336,7 @@ class listing
   /*!
    * \brief Render
    */
-  function render()
+  function render ()
   {
     global $ui;
 
@@ -478,7 +478,7 @@ class listing
     // Add scroll positioner
     $result .= '<script type="text/javascript">';
     $result .= '$("t_nscrollbody").scrollTop= '.$this->scrollPosition.';';
-    $result .= 'var box = $("t_nscrollbody").onscroll= function() {$("position_'.$this->pid.'").value= this.scrollTop;}';
+    $result .= 'var box = $("t_nscrollbody").onscroll= function() {$ ("position_'.$this->pid.'").value= this.scrollTop;}';
     $result .= '</script>';
 
     $smarty = get_smarty();
@@ -518,7 +518,7 @@ class listing
   /*!
    * \brief Update a listing
    */
-  function update()
+  function update ()
   {
     $ui = get_userinfo();
 
@@ -647,7 +647,7 @@ class listing
    *
    * \param string $base
    */
-  function setBase($base)
+  function setBase ($base)
   {
     $this->base = $base;
     if ($this->baseMode) {
@@ -656,7 +656,7 @@ class listing
     }
   }
 
-  function tryAndSetBase($base)
+  function tryAndSetBase ($base)
   {
     $ui   = get_userinfo();
     $deps = $ui->get_module_departments($this->categories);
@@ -670,7 +670,7 @@ class listing
    *
    * \return the base
    */
-  function getBase()
+  function getBase ()
   {
     return $this->base;
   }
@@ -680,7 +680,7 @@ class listing
    *
    * \param string $layout
    */
-  function parseLayout($layout)
+  function parseLayout ($layout)
   {
     $result = [];
     $layout = preg_replace("/^\|/", "", $layout);
@@ -736,7 +736,7 @@ class listing
   }
 
 
-  function renderCell($table, $index, $data, $cfg, $row)
+  function renderCell ($table, $index, $data, $cfg, $row)
   {
     // Replace flat attributes in data string
     $offset = 0;
@@ -761,7 +761,7 @@ class listing
   }
 
 
-  function renderBase()
+  function renderBase ()
   {
     if (!$this->baseMode) {
       return;
@@ -771,7 +771,7 @@ class listing
   }
 
 
-  function processElementFilter($type, $index, $data, $cfg, $row)
+  function processElementFilter ($type, $index, $data, $cfg, $row)
   {
     if (isset($this->filterCache[$type.$index])) {
       $filters = $this->filterCache[$type.$index];
@@ -860,7 +860,7 @@ class listing
    * \param string $dn dn of the object
    * \param string $attrs LDAP attributes of the object
    */
-  function getObjectType($dn, $attrs)
+  function getObjectType ($dn, $attrs)
   {
     return $this->genericGetType($dn, $attrs, $this->objectTypes);
   }
@@ -871,7 +871,7 @@ class listing
    * \param string $dn dn of the object
    * \param string $attrs LDAP attributes of the object
    */
-  function getDepartmentType($dn, $attrs)
+  function getDepartmentType ($dn, $attrs)
   {
     return $this->genericGetType($dn, $attrs, $this->departmentTypes);
   }
@@ -879,7 +879,7 @@ class listing
   /*!
    * \brief Get the object or department type
    */
-  protected function genericGetType($dn, $attrs, $types)
+  protected function genericGetType ($dn, $attrs, $types)
   {
     if (isset($this->objectDnMapping[$dn])) {
       return $this->objectDnMapping[$dn];
@@ -923,7 +923,7 @@ class listing
     return NULL;
   }
 
-  function getObjectTypeInfos($dn, $attrs)
+  function getObjectTypeInfos ($dn, $attrs)
   {
     $type = $this->getObjectType($dn, $attrs);
     if ($type === NULL) {
@@ -939,7 +939,7 @@ class listing
    *
    * \param string $dn The DN
    */
-  function filterObjectType($row, $dn)
+  function filterObjectType ($row, $dn)
   {
     return $this->filterGenericType($dn, $this->objectTypes, $this->getObjectType($dn, $this->entries[$row]));
   }
@@ -947,7 +947,7 @@ class listing
   /*!
    * \brief Generic method for department and objects once type is known
    */
-  protected function filterGenericType($dn, $types, $type)
+  protected function filterGenericType ($dn, $types, $type)
   {
     $result = "&nbsp;";
 
@@ -969,7 +969,7 @@ class listing
    *
    * \param string $dn The DN
    */
-  function filterDepartmentType($row, $dn)
+  function filterDepartmentType ($row, $dn)
   {
     return $this->filterGenericType($dn, $this->departmentTypes, $this->getDepartmentType($dn, $this->departments[$row]));
   }
@@ -983,7 +983,7 @@ class listing
    *
    * \param string $classes
    */
-  function filterActions($dn, $row, $classes)
+  function filterActions ($dn, $row, $classes)
   {
     // Do nothing if there's no menu defined
     if (!isset($this->xmlData['actiontriggers']['action'])) {
@@ -1082,7 +1082,7 @@ class listing
    *
    * \param array $description
    */
-  function filterDepartmentLink($row, $dn, $description)
+  function filterDepartmentLink ($row, $dn, $description)
   {
     $attr = $this->departments[$row]['sort-attribute'];
     $name = $this->departments[$row][$attr];
@@ -1096,7 +1096,7 @@ class listing
   /*!
    * \brief Filter link with object name
    */
-  function filterNameLink($row, $dn)
+  function filterNameLink ($row, $dn)
   {
     $infos  = $this->getObjectTypeInfos($dn, $this->entries[$row]);
     $value  = $this->entries[$row][$infos['nameAttr']];
@@ -1109,7 +1109,7 @@ class listing
   /*!
    * \brief Filter link
    */
-  function filterLink()
+  function filterLink ()
   {
     $row    = func_get_arg(0);
     $pid    = $this->pid;
@@ -1147,7 +1147,7 @@ class listing
   }
 
 
-  function renderNavigation()
+  function renderNavigation ()
   {
     $result = [];
     $enableBack = TRUE;
@@ -1203,7 +1203,7 @@ class listing
   /*!
    * \brief Get action
    */
-  function getAction()
+  function getAction ()
   {
     global $config, $ui;
 
@@ -1324,7 +1324,7 @@ class listing
   }
 
 
-  function renderActionMenu()
+  function renderActionMenu ()
   {
     // Don't send anything if the menu is not defined
     if (!isset($this->xmlData['actionmenu']['action'])) {
@@ -1348,7 +1348,7 @@ class listing
     return '<div id="pulldown">'.$result.'</li></ul></div>';
   }
 
-  function renderActionMenuActionLink($separator, $action, $name, $icon)
+  function renderActionMenuActionLink ($separator, $action, $name, $icon)
   {
     return '<li'.$separator.' id="actionmenu_'.$action.'">'
                   .'<a href="#" onClick="'
@@ -1358,7 +1358,7 @@ class listing
                   .'</li>';
   }
 
-  function recurseActions(&$actions)
+  function recurseActions (&$actions)
   {
     global $class_mapping;
     static $level = 2;
@@ -1453,7 +1453,7 @@ class listing
    * \param string $row
    *
    */
-  function hasActionPermission(&$action, $dn, $row = NULL)
+  function hasActionPermission (&$action, $dn, $row = NULL)
   {
     global $ui;
 
@@ -1546,7 +1546,7 @@ class listing
   /*!
    * \brief Refresh the bases list
    */
-  function refreshBasesList()
+  function refreshBasesList ()
   {
     global $config;
     $ui = get_userinfo();
@@ -1573,7 +1573,7 @@ class listing
   }
 
   /*! \brief Get the departments */
-  function getDepartments()
+  function getDepartments ()
   {
     $departments = [];
     $ui = get_userinfo();
@@ -1628,7 +1628,7 @@ class listing
   }
 
 
-  function renderCopyPasteMenu($separator, $copy = TRUE, $cut = TRUE)
+  function renderCopyPasteMenu ($separator, $copy = TRUE, $cut = TRUE)
   {
     // We can only provide information if we've got a copypaste handler
     // instance
@@ -1676,7 +1676,7 @@ class listing
   }
 
 
-  function renderCopyPasteActions($row, $dn, $category, $class, $copy = TRUE, $cut = TRUE)
+  function renderCopyPasteActions ($row, $dn, $category, $class, $copy = TRUE, $cut = TRUE)
   {
     // We can only provide information if we've got a copypaste handler
     // instance
@@ -1716,7 +1716,7 @@ class listing
   }
 
 
-  function renderSnapshotMenu($separator)
+  function renderSnapshotMenu ($separator)
   {
     // We can only provide information if we've got a snapshot handler instance
     if (!is_object($this->snapshotHandler)) {
@@ -1740,7 +1740,7 @@ class listing
   }
 
 
-  function renderExporterMenu($separator)
+  function renderExporterMenu ($separator)
   {
     // Presets
     $result = "";
@@ -1760,7 +1760,7 @@ class listing
   }
 
 
-  function renderSnapshotActions($row, $dn, $category)
+  function renderSnapshotActions ($row, $dn, $category)
   {
     /* We can only provide information if we've got a snapshot handler instance */
     if (!is_object($this->snapshotHandler)) {
@@ -1801,7 +1801,7 @@ class listing
   }
 
 
-  function renderDaemonMenu($separator)
+  function renderDaemonMenu ($separator)
   {
     $result = "";
 
@@ -1820,7 +1820,7 @@ class listing
   }
 
 
-  function getEntry($dn)
+  function getEntry ($dn)
   {
     if (isset($this->dnToRow[$dn])) {
       return $this->entries[$this->dnToRow[$dn]];
@@ -1831,7 +1831,7 @@ class listing
   /*!
    * \brief Get listing entries
    */
-  function getEntries()
+  function getEntries ()
   {
     return $this->entries;
   }
@@ -1841,7 +1841,7 @@ class listing
    *
    * \param string $dn The DN
    */
-  function getType($dn)
+  function getType ($dn)
   {
     if (isset($this->objectDnMapping[$dn])) {
       return $this->objectDnMapping[$dn];
diff --git a/include/class_listingSortIterator.inc b/include/class_listingSortIterator.inc
index 610378580..f011ebaf0 100644
--- a/include/class_listingSortIterator.inc
+++ b/include/class_listingSortIterator.inc
@@ -42,7 +42,7 @@ class listingSortIterator implements Iterator {
    *
    * \param string $type
    */
-  public function __construct($data, $direction, $attribute, $type = 'string')
+  public function __construct ($data, $direction, $attribute, $type = 'string')
   {
     // Sort for attribute
     if ($attribute != '') {
@@ -127,7 +127,7 @@ class listingSortIterator implements Iterator {
    *
    * \return the first element of the array
    */
-  function rewind()
+  function rewind ()
   {
     return reset($this->data);
   }
@@ -137,7 +137,7 @@ class listingSortIterator implements Iterator {
    *
    * \return The current element pointed by array pointer
    */
-  function current()
+  function current ()
   {
     return current($this->data);
   }
@@ -147,7 +147,7 @@ class listingSortIterator implements Iterator {
    *
    * \return the key element of the array
    */
-  function key()
+  function key ()
   {
     return key($this->data);
   }
@@ -157,7 +157,7 @@ class listingSortIterator implements Iterator {
    *
    * \return The next element pointed by array pointer
    */
-  function next()
+  function next ()
   {
     return next($this->data);
   }
@@ -167,7 +167,7 @@ class listingSortIterator implements Iterator {
    *
    * \return TRUE if the array is valid, return FALSE otherwise
    */
-  function valid()
+  function valid ()
   {
     return (key($this->data) !== NULL);
   }
diff --git a/include/class_logging.inc b/include/class_logging.inc
index dbb91c114..ec244038e 100644
--- a/include/class_logging.inc
+++ b/include/class_logging.inc
@@ -95,7 +95,7 @@ class logging {
    *
    * \param Array $entry to be checked
    */
-  static protected function check($entry = [])
+  static protected function check ($entry = [])
   {
     $msgs = [];
 
@@ -115,7 +115,7 @@ class logging {
    *
    * \param Array $entry Entry to be loged
    */
-  static protected function log_into_syslog($entry)
+  static protected function log_into_syslog ($entry)
   {
     $str = '';
     if (empty($entry['object']) && empty($entry['changes'])) {
@@ -131,7 +131,7 @@ class logging {
    *
    * \param Array $entry Entry to be loged
    */
-  static protected function log_into_ldap($entry)
+  static protected function log_into_ldap ($entry)
   {
     global $config;
     if ($entry['objecttype'] == 'plugin/auditEvent') {
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index a4284e99d..afbedbcd9 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -37,7 +37,7 @@ define ("LDAP_AUTH",   6);
  */
 class msgPool {
 
-  public static function selectToView($type, $o_type = "")
+  public static function selectToView ($type, $o_type = "")
   {
     if ($o_type == "") {
       return sprintf(_("Select to list objects of type '%s'."), $type);
@@ -60,7 +60,7 @@ class msgPool {
    *
    * \param string $type Type of the object which will be deleted
    */
-  public static function deleteInfo($name = "", $type = "")
+  public static function deleteInfo ($name = "", $type = "")
   {
     if ($name == "") {
       if ($type == "") {
@@ -95,7 +95,7 @@ class msgPool {
    *
    * \param string $name Name of the object which will be deleted
    */
-  public static function permDelete($name = "")
+  public static function permDelete ($name = "")
   {
     if ($name == "") {
       return _("You have no permission to delete this object!");
@@ -117,7 +117,7 @@ class msgPool {
    *
    * \param string $name Name of the object which will be created
    */
-  public static function permCreate($name = "")
+  public static function permCreate ($name = "")
   {
     if ($name == "") {
       return _("You have no permission to create this object!");
@@ -140,7 +140,7 @@ class msgPool {
    * \param string $name Name of the object which cannot be modified (or array of objects names)
    * \param string $field Name of the field of the object which cannot be modified
    */
-  public static function permModify($name = '', $field = '')
+  public static function permModify ($name = '', $field = '')
   {
     if ($name == '') {
       return _('You have no permission to modify this object!');
@@ -166,7 +166,7 @@ class msgPool {
    *
    * \param string $name Name of the object which will be viewed
    */
-  public static function permView($name = "")
+  public static function permView ($name = "")
   {
     if ($name == "") {
       return _("You have no permission to view this object!");
@@ -188,7 +188,7 @@ class msgPool {
    *
    * \param string $name Name of the object which will be moved
    */
-  public static function permMove($name = "")
+  public static function permMove ($name = "")
   {
     if ($name == "") {
       return _("You have no permission to move this object!");
@@ -214,7 +214,7 @@ class msgPool {
    *
    * \param string $dbinfo Database information
    */
-  public static function dbconnect($name, $error = "", $dbinfo = "")
+  public static function dbconnect ($name, $error = "", $dbinfo = "")
   {
     if ($error != "") {
       $error = "<br><br><i>"._("Error").":</i> ".$error;
@@ -234,7 +234,7 @@ class msgPool {
    *
    * \param string $dbinfo Database information
    */
-  public static function dbselect($name, $error = "", $dbinfo = "")
+  public static function dbselect ($name, $error = "", $dbinfo = "")
   {
     if ($error != "") {
       $error = "<br><br><i>"._("Error").":</i> ".$error;
@@ -250,7 +250,7 @@ class msgPool {
    *
    * \param string $name Name of the server
    */
-  public static function noserver($name)
+  public static function noserver ($name)
   {
     return sprintf(_("No %s server defined!"), $name);
   }
@@ -264,7 +264,7 @@ class msgPool {
    *
    * \param string $dbinfo Database information
    */
-  public static function dbquery($name, $error = "", $dbinfo = "")
+  public static function dbquery ($name, $error = "", $dbinfo = "")
   {
     if ($error != "") {
       $error = "<br><br><i>"._("Error").":</i> ".$error;
@@ -280,7 +280,7 @@ class msgPool {
    *
    * \param string $name The field which contains reserved keyword
    */
-  public static function reserved($name)
+  public static function reserved ($name)
   {
     return sprintf(_("The field '%s' contains a reserved keyword!"), $name);
   }
@@ -292,7 +292,7 @@ class msgPool {
    *
    * \param string $plugin Name of the plugin
    */
-  public static function cmdnotfound($type, $plugin)
+  public static function cmdnotfound ($type, $plugin)
   {
     return sprintf(_("Command specified as %s hook for plugin '%s' does not exist!"), $type, $plugin);
   }
@@ -306,7 +306,7 @@ class msgPool {
    *
    * \param string $plugin Name of the plugin
    */
-  public static function cmdinvalid($type, $command = "", $plugin = "")
+  public static function cmdinvalid ($type, $command = "", $plugin = "")
   {
     if ($command == "") {
       if ($plugin == "") {
@@ -332,7 +332,7 @@ class msgPool {
    *
    * \param string $plugin Name of the plugin
    */
-  public static function cmdexecfailed($type, $command = "", $plugin = "")
+  public static function cmdexecfailed ($type, $command = "", $plugin = "")
   {
     if ($command == "") {
       if ($plugin == "") {
@@ -356,7 +356,7 @@ class msgPool {
    *
    * \param string $min The largest value
    */
-  public static function toobig($name, $min = "")
+  public static function toobig ($name, $min = "")
   {
     if ($min == "") {
       return sprintf(_("Value for '%s' is too large!"), $name);
@@ -372,7 +372,7 @@ class msgPool {
    *
    * \param string $min The smallest value
    */
-  public static function toosmall($name, $min = "")
+  public static function toosmall ($name, $min = "")
   {
     if ($min == "") {
       return sprintf(_("Value for '%s' is too small!"), $name);
@@ -388,7 +388,7 @@ class msgPool {
    *
    * \param string $name2 Second object
    */
-  public static function depends($name1, $name2)
+  public static function depends ($name1, $name2)
   {
     return sprintf(_("'%s' depends on '%s' - please provide both values!"), $name1, $name2);
   }
@@ -399,7 +399,7 @@ class msgPool {
    * \param string $name The attribute name
    * \param string $dn The existing entry dn
    */
-  public static function duplicated($name, $dn = NULL)
+  public static function duplicated ($name, $dn = NULL)
   {
     if ($dn == NULL) {
       return sprintf(_("There is already an entry with this '%s' attribute in the system!"), $name);
@@ -413,7 +413,7 @@ class msgPool {
    *
    * \param string $name Name of the field
    */
-  public static function required($name)
+  public static function required ($name)
   {
     return sprintf(_("The required field '%s' is empty!"), $name);
   }
@@ -429,7 +429,7 @@ class msgPool {
    *
    * \param string $example Example of a right submited data
    */
-  public static function invalid($name, $data = "", $regex = "", $example = "")
+  public static function invalid ($name, $data = "", $regex = "", $example = "")
   {
     /* Stylize example */
     if ($example != "") {
@@ -466,7 +466,7 @@ class msgPool {
    *
    * \param string $name The name of the extension
    */
-  public static function missingext($name)
+  public static function missingext ($name)
   {
     return sprintf(_("Missing %s PHP extension!"), $name);
   }
@@ -474,7 +474,7 @@ class msgPool {
   /*!
    * \brief Text for a cancel button
    */
-  public static function cancelButton()
+  public static function cancelButton ()
   {
     return _("Cancel");
   }
@@ -482,7 +482,7 @@ class msgPool {
   /*!
    * \brief Text for a ok button
    */
-  public static function okButton()
+  public static function okButton ()
   {
     return _("Ok");
   }
@@ -490,7 +490,7 @@ class msgPool {
   /*!
    * \brief Text for an apply button
    */
-  public static function applyButton()
+  public static function applyButton ()
   {
     return _("Apply");
   }
@@ -498,7 +498,7 @@ class msgPool {
   /*!
    * \brief Text for a save button
    */
-  public static function saveButton()
+  public static function saveButton ()
   {
     return _("Save");
   }
@@ -508,7 +508,7 @@ class msgPool {
    *
    * \param string $what Text for the button
    */
-  public static function addButton($what = '')
+  public static function addButton ($what = '')
   {
     return (($what == '') ? sprintf(_('Add')) : sprintf(_('Add %s'), $what));
   }
@@ -518,7 +518,7 @@ class msgPool {
    *
    * \param string $what Text for the button
    */
-  public static function delButton($what = '')
+  public static function delButton ($what = '')
   {
     return (($what == '') ? sprintf(_('Delete')) : sprintf(_('Delete %s'), $what));
   }
@@ -528,7 +528,7 @@ class msgPool {
    *
    * \param string $what Text for the button
    */
-  public static function editButton($what = '')
+  public static function editButton ($what = '')
   {
     return (($what == '') ? sprintf(_('Edit...')) : sprintf(_('Edit %s...'), $what));
   }
@@ -536,7 +536,7 @@ class msgPool {
   /*!
    * \brief Text for a back button
    */
-  public static function backButton()
+  public static function backButton ()
   {
     return _('Back');
   }
@@ -546,7 +546,7 @@ class msgPool {
    *
    * \param array $data Array with the elements of the list
    */
-  public static function buildList($data)
+  public static function buildList ($data)
   {
     $objects = "<ul>";
     foreach ($data as $key => $value) {
@@ -565,7 +565,7 @@ class msgPool {
    *
    * \param string $name Name of the extension
    */
-  public static function noValidExtension($name)
+  public static function noValidExtension ($name)
   {
     return sprintf(_("This account has no valid %s extensions!"), $name);
   }
@@ -577,7 +577,7 @@ class msgPool {
    *
    * \param array $depends Contains all the settings enabled
    */
-  public static function featuresEnabled($name, $depends = '')
+  public static function featuresEnabled ($name, $depends = '')
   {
     if (($depends == "") || (is_array($depends) && (count($depends) == 0))) {
       return sprintf(_("This account has %s settings enabled. You can disable them by clicking below."), $name);
@@ -598,7 +598,7 @@ class msgPool {
    *
    * \param array $conflicts Tabs this tab conflicts with
    */
-  public static function featuresDisabled($name, array $depends = [], array $conflicts = [])
+  public static function featuresDisabled ($name, array $depends = [], array $conflicts = [])
   {
     if (empty($depends) && empty($conflicts)) {
       return sprintf(_('This account has %s settings disabled. You can enable them by clicking below.'), $name);
@@ -614,7 +614,7 @@ class msgPool {
    *
    * \param string $name Name of the feature
    */
-  public static function addFeaturesButton($name)
+  public static function addFeaturesButton ($name)
   {
     return sprintf(_("Add %s settings"), $name);
   }
@@ -625,7 +625,7 @@ class msgPool {
    * \param string $name Name of the feature
    */
 
-  public static function removeFeaturesButton($name)
+  public static function removeFeaturesButton ($name)
   {
     return sprintf(_("Remove %s settings"), $name);
   }
@@ -633,7 +633,7 @@ class msgPool {
   /*!
    * \brief Display : Click the "Edit" button below to change information in this dialog
    */
-  public static function clickEditToChange()
+  public static function clickEditToChange ()
   {
     return _('Click the "Edit" button on the bottom right corner of the page to edit the fields');
   }
@@ -641,7 +641,7 @@ class msgPool {
   /*!
    * \brief Build an array with the months
    */
-  public static function months()
+  public static function months ()
   {
     return [_("January"), _("February"), _("March"), _("April"),
         _("May"), _("June"), _("July"), _("August"), _("September"),
@@ -652,7 +652,7 @@ class msgPool {
    * \brief Build an array with the days of a week.
    *    Start by Sunday
    */
-  public static function weekdays()
+  public static function weekdays ()
   {
     return [ _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")];
   }
@@ -668,7 +668,7 @@ class msgPool {
    *
    * \param string $plugin
    */
-  public static function ldaperror($error, $dn = '', $type = 0, $plugin = '')
+  public static function ldaperror ($error, $dn = '', $type = 0, $plugin = '')
   {
     /* Assign headline depending on type */
     $typemap = [1 => _('read operation'), _('add operation'), _('modify operation'),
@@ -695,7 +695,7 @@ class msgPool {
    *
    * \param string $reason The reason of the upload failed
    */
-  public static function incorrectUpload($reason = "")
+  public static function incorrectUpload ($reason = "")
   {
     if ($reason == "") {
       return _("Upload failed!");
@@ -709,7 +709,7 @@ class msgPool {
    *
    * \param string $error The error of the communication failure
    */
-  public static function siError($error = "")
+  public static function siError ($error = "")
   {
     if ($error == "") {
       return _("Communication failure with the infrastructure service!");
@@ -724,7 +724,7 @@ class msgPool {
    *
    * \param array $objects
    */
-  public static function stillInUse($type, $objects = [])
+  public static function stillInUse ($type, $objects = [])
   {
     if (!is_array($objects)) {
       return sprintf(_("This '%s' is still in use by this object: %s"), $type, "<br><br>".$objects);
@@ -743,7 +743,7 @@ class msgPool {
    *
    * \param string $file Name of the file not found
    */
-  public static function fileDoesNotExist($file)
+  public static function fileDoesNotExist ($file)
   {
     return sprintf(_("File '%s' does not exist!"), $file);
   }
@@ -753,7 +753,7 @@ class msgPool {
    *
    * \param string $file Name of the file not readable
    */
-  public static function cannotReadFile($file)
+  public static function cannotReadFile ($file)
   {
     return sprintf(_("Cannot open file '%s' for reading!"), $file);
   }
@@ -763,7 +763,7 @@ class msgPool {
    *
    * \param string $file Name of the file not writable
    */
-  public static function cannotWriteFile($file)
+  public static function cannotWriteFile ($file)
   {
     return sprintf(_("Cannot open file '%s' for writing!"), $file);
   }
@@ -773,7 +773,7 @@ class msgPool {
    *
    * \param string $attr Name of the invalide attribute
    */
-  public static function invalidConfigurationAttribute($attr)
+  public static function invalidConfigurationAttribute ($attr)
   {
     return sprintf(_("The value for '%s' is currently unconfigured or invalid, please check your configuration file!"), $attr);
   }
@@ -783,7 +783,7 @@ class msgPool {
    *
    * \param string $file Filename which can't be deleted
    */
-  public static function cannotDeleteFile($file)
+  public static function cannotDeleteFile ($file)
   {
     return sprintf(_("Cannot delete file '%s'!"), $file);
   }
@@ -793,7 +793,7 @@ class msgPool {
    *
    * \param string $path Name of folder which can't be created
    */
-  public static function cannotCreateFolder($path)
+  public static function cannotCreateFolder ($path)
   {
     return sprintf(_("Cannot create folder '%s'!"), $path);
   }
@@ -803,7 +803,7 @@ class msgPool {
    *
    * \param string $path Name of folder which can't be deleted
    */
-  public static function cannotDeleteFolder($path)
+  public static function cannotDeleteFolder ($path)
   {
     return sprintf(_("Cannot delete folder '%s'!"), $path);
   }
@@ -813,7 +813,7 @@ class msgPool {
    *
    * \param string $what Name of the support
    */
-  public static function checkingFor($what)
+  public static function checkingFor ($what)
   {
     return sprintf(_("Checking for %s support"), $what);
   }
@@ -823,7 +823,7 @@ class msgPool {
    *
    * \param string $what Name of the module
    */
-  public static function installPhpModule($what)
+  public static function installPhpModule ($what)
   {
     return sprintf(_("Install and activate the %s PHP module."), $what);
   }
@@ -833,7 +833,7 @@ class msgPool {
    *
    * \param string $what Name of the module
    */
-  public static function installPearModule($what)
+  public static function installPearModule ($what)
   {
     return sprintf(_("Install and activate the %s Pear module."), $what);
   }
@@ -843,7 +843,7 @@ class msgPool {
    *
    * \param string $plugin Name of the class which can'b be initialized
    */
-  public static function class_not_found($plugin)
+  public static function class_not_found ($plugin)
   {
     return sprintf(_("Cannot initialize class '%s'! Maybe there is a plugin missing in your FusionDirectory setup?"), $plugin);
   }
@@ -851,7 +851,7 @@ class msgPool {
   /*!
    * \brief Display error when checking the base
    */
-  public static function check_base()
+  public static function check_base ()
   {
     return _("The supplied base is not valid and has been reset to the previous value!");
   }
diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index dcae37de2..35f9d7054 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -52,7 +52,7 @@ class msg_dialog
    *
    * \param string $i_type The type of the message dialog, by default = INFO_DIALOG
    */
-  public function __construct($s_title, $s_message, $i_type)
+  public function __construct ($s_title, $s_message, $i_type)
   {
     if (!in_array($i_type, [INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG])) {
       trigger_error('Invalid msg_dialog type.');
@@ -65,7 +65,7 @@ class msg_dialog
     $this->i_Type     = $i_type;
   }
 
-  protected function show()
+  protected function show ()
   {
     global $config;
 
@@ -119,7 +119,7 @@ class msg_dialog
    *
    * \param string $i_type The type of the message dialog, by default = INFO_DIALOG
    */
-  public static function display($s_title, $s_message, $i_type = INFO_DIALOG)
+  public static function display ($s_title, $s_message, $i_type = INFO_DIALOG)
   {
     $dialog = new msg_dialog($s_title, $s_message, $i_type);
     $dialog->show();
@@ -130,7 +130,7 @@ class msg_dialog
    *
    * \param array $messages Contains messages
    */
-  public static function displayChecks($messages)
+  public static function displayChecks ($messages)
   {
     foreach ($messages as $error) {
       static::display(_('Error'), $error, ERROR_DIALOG);
@@ -142,7 +142,7 @@ class msg_dialog
    *
    * \return The identifier of the message dialog
    */
-  public function get_ID()
+  public function get_ID ()
   {
     return $this->i_ID;
   }
@@ -150,7 +150,7 @@ class msg_dialog
   /*!
    * \brief Run the message dialog
    */
-  public function execute()
+  public function execute ()
   {
     global $config;
     if ($this->i_Type == FATAL_ERROR_DIALOG) {
@@ -199,7 +199,7 @@ class msg_dialog
    *
    * \return True if is confirmed, else return false
    */
-  public function is_confirmed()
+  public function is_confirmed ()
   {
     return isset($_POST['MSG_OK'.$this->i_ID]);
   }
@@ -207,7 +207,7 @@ class msg_dialog
   /*!
    * \brief Accessor of the message dialog
    */
-  public static function get_dialogs()
+  public static function get_dialogs ()
   {
     $return     = "";
     $dialog_ids = "";
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index 499dde5aa..095728a3c 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -61,7 +61,7 @@ class pluglist {
   /*!
    * \brief List the plugins
    */
-  function __construct()
+  function __construct ()
   {
     global $class_mapping;
 
@@ -227,7 +227,7 @@ class pluglist {
    *
    * \return Boolean TRUE on success FALSE otherwise
    */
-  function check_access($infos)
+  function check_access ($infos)
   {
     global $ui;
 
@@ -291,7 +291,7 @@ class pluglist {
   /*!
    * \brief Get headline, description and icon of a plugin
    */
-  function get_infos($cname)
+  function get_infos ($cname)
   {
     $plHeadline     = FALSE;
     $plIcon         = FALSE;
@@ -335,7 +335,7 @@ class pluglist {
   /*!
    * \brief Generate menu
    */
-  function gen_menu()
+  function gen_menu ()
   {
     global $config;
     if ($this->menu == "") {
@@ -398,7 +398,7 @@ class pluglist {
   /*!
    * \brief Show the menu icon
    */
-  function show_iconmenu()
+  function show_iconmenu ()
   {
     global $class_mapping, $config;
     if ($this->iconmenu == "") {
@@ -456,7 +456,7 @@ class pluglist {
    *
    * \param string $index The index which we want the path
    */
-  function get_path($index)
+  function get_path ($index)
   {
     if (!isset($this->dirlist[$index])) {
       return "";
@@ -469,7 +469,7 @@ class pluglist {
    *
    * \param string $class The name of the class
    */
-  function get_index($class)
+  function get_index ($class)
   {
     /* Search for plugin index (id), identify entry by class */
     if (isset($this->info[$class])) {
@@ -487,12 +487,12 @@ class pluglist {
    *
    * \return Boolean TRUE if we are allowed to view the plugin else FALSE
    */
-  function plugin_access_allowed($plug_id)
+  function plugin_access_allowed ($plug_id)
   {
     return isset($this->allowed_plugins[$plug_id]);
   }
 
-  static function pluginInfos($cname)
+  static function pluginInfos ($cname)
   {
     $plist = session::get('plist');
     if ($plist) {
diff --git a/include/class_session.inc b/include/class_session.inc
index 0b678b1e2..d04becdfb 100644
--- a/include/class_session.inc
+++ b/include/class_session.inc
@@ -33,7 +33,7 @@ class session {
    *
    * \param string $name The name of the session
    */
-  public static function is_set($name)
+  public static function is_set ($name)
   {
     return isset($_SESSION[$name]);
   }
@@ -41,7 +41,7 @@ class session {
   /*!
    * \brief Deprecated
    */
-  public static function global_is_set($name)
+  public static function global_is_set ($name)
   {
     return static::is_set($name);
   }
@@ -53,7 +53,7 @@ class session {
    *
    * \param $value The new value
    */
-  public static function set($name, $value)
+  public static function set ($name, $value)
   {
     $_SESSION[$name] = $value;
   }
@@ -61,7 +61,7 @@ class session {
   /*!
    * \brief Deprecated
    */
-  public static function global_set($name, $value)
+  public static function global_set ($name, $value)
   {
     static::set($name, $value);
   }
@@ -102,7 +102,7 @@ class session {
   /*!
    * \brief Deprecated
    */
-  public static function delete($name)
+  public static function delete ($name)
   {
     return static::un_set($name);
   }
@@ -110,7 +110,7 @@ class session {
   /*!
    * \brief Deprecated
    */
-  public static function global_delete($name)
+  public static function global_delete ($name)
   {
     return static::un_set($name);
   }
@@ -120,7 +120,7 @@ class session {
    *
    * \param string $name Name of the session to delete
    */
-  public static function un_set($name)
+  public static function un_set ($name)
   {
     if (isset($_SESSION[$name])) {
       unset($_SESSION[$name]);
@@ -130,7 +130,7 @@ class session {
   /*!
    * \brief Deprecated
    */
-  public static function global_un_set($name)
+  public static function global_un_set ($name)
   {
     return static::un_set($name);
   }
@@ -138,7 +138,7 @@ class session {
   /*!
    * \brief Start a session
    */
-  public static function start($id = NULL)
+  public static function start ($id = NULL)
   {
     session_name("FusionDirectory");
     /* Set cookie lifetime to one day (The parameter is in seconds ) */
@@ -184,7 +184,7 @@ class session {
   /*!
    * \brief Destroy a session
    */
-  public static function destroy()
+  public static function destroy ()
   {
     @session_destroy();
   }
@@ -192,7 +192,7 @@ class session {
   /*!
    * \brief Get all sessions
    */
-  public static function &get_all()
+  public static function &get_all ()
   {
     $ret = &$_SESSION;
     return $ret;
diff --git a/include/class_template.inc b/include/class_template.inc
index 62ca74cbe..b923f86f0 100644
--- a/include/class_template.inc
+++ b/include/class_template.inc
@@ -37,7 +37,7 @@ class template
 
   static protected $uiSpecialAttributes = ['dn','cn','uid','sn','givenName'];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Template'),
@@ -51,7 +51,7 @@ class template
     ];
   }
 
-  static function getTemplatedTypes()
+  static function getTemplatedTypes ()
   {
     $result = [];
     $types  = objects::types();
@@ -68,7 +68,7 @@ class template
     return $result;
   }
 
-  function __construct($type, $dn, $targetdn = NULL)
+  function __construct ($type, $dn, $targetdn = NULL)
   {
     $this->type = $type;
     $this->dn   = $dn;
@@ -101,7 +101,7 @@ class template
   }
 
   /*! \brief Used when you need to re-apply the same template with different values */
-  function reset()
+  function reset ()
   {
     list($this->attrs, $depends) = templateHandling::fetch($this->dn);
     // This is needed because it removes %askme% values from attrs
@@ -118,12 +118,12 @@ class template
     $this->applied = FALSE;
   }
 
-  function getDn()
+  function getDn ()
   {
     return $this->dn;
   }
 
-  function getBase()
+  function getBase ()
   {
     if (is_object($this->tabObject)) {
       return $this->tabObject->getBaseObject()->base;
@@ -133,12 +133,12 @@ class template
     }
   }
 
-  function getNeeded()
+  function getNeeded ()
   {
     return $this->attributes;
   }
 
-  function serialize()
+  function serialize ()
   {
     $attributes = [];
     foreach ($this->tabObject->by_object as $class => $plugin) {
@@ -155,7 +155,7 @@ class template
     return $attributes;
   }
 
-  function deserialize($values)
+  function deserialize ($values)
   {
     foreach ($values as $class => $class_values) {
       $result = $this->tabObject->by_object[$class]->deserializeValues($class_values);
@@ -166,7 +166,7 @@ class template
     return TRUE;
   }
 
-  function save_object()
+  function save_object ()
   {
     foreach ($this->tabObject->by_object as $plugin) {
       $plugin->save_object();
@@ -178,7 +178,7 @@ class template
     return $this->tabObject->dialogOpened();
   }
 
-  function execute()
+  function execute ()
   {
     $smarty   = get_smarty();
     $sections = [];
@@ -225,7 +225,7 @@ class template
 
   /* Apply template and current values to an object and returns it for saving or edition
    * Cannot be called twice! If you need to, call reset between calls */
-  function apply($targetdn = NULL)
+  function apply ($targetdn = NULL)
   {
     if ($this->applied) {
       trigger_error('Templates can’t be applied twice without calling reset before');
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index ae4059eea..35795369a 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -28,7 +28,7 @@
 class templateHandling
 {
   /*! \brief Fetch a template from LDAP and returns its attributes and dependencies information */
-  public static function fetch($dn)
+  public static function fetch ($dn)
   {
     global $config;
 
@@ -116,7 +116,7 @@ class templateHandling
   }
 
   /*! \brief Parse a mask (without surrounding %) using $attrs attributes, apply modifiers and returns an array containing possible results */
-  public static function parseMask($mask, array $attrs)
+  public static function parseMask ($mask, array $attrs)
   {
     if ($mask == '|') {
       return ['%'];
@@ -164,7 +164,7 @@ class templateHandling
    *
    * \return array An array of attributes which are needed by the template
    */
-  public static function neededAttrs(array &$attrs, array $flatdepends)
+  public static function neededAttrs (array &$attrs, array $flatdepends)
   {
     $needed = [];
     foreach ($flatdepends as $attr => $depends) {
@@ -187,7 +187,7 @@ class templateHandling
    *
    * \return array An array with the final values of attributes
    */
-  public static function parseArray(array $attrs, array $specialAttrs)
+  public static function parseArray (array $attrs, array $specialAttrs)
   {
     foreach ($attrs as &$attr) {
       if (is_array($attr)) {
@@ -208,7 +208,7 @@ class templateHandling
    *
    * \return string the string with patterns replaced by their values
    */
-  public static function parseString($string, array $attrs, $escapeMethod = NULL)
+  public static function parseString ($string, array $attrs, $escapeMethod = NULL)
   {
     if (preg_match('/^%%/', $string)) {
       /* Special case: %% at beginning of string means do not touch it. Used by binary attributes. */
@@ -231,7 +231,7 @@ class templateHandling
    *
    * \return array An array with the names of the fields used in the string pattern
    */
-  public static function listFields($string)
+  public static function listFields ($string)
   {
     $fields = [];
     $offset = 0;
@@ -249,7 +249,7 @@ class templateHandling
     return $fields;
   }
 
-  private static function modifierRemoveAccents($str)
+  private static function modifierRemoveAccents ($str)
   {
     $str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
 
@@ -260,7 +260,7 @@ class templateHandling
     return [preg_replace('#&[^;]+;#', '', $str)];
   }
 
-  private static function modifierTranslit(array $args, $str)
+  private static function modifierTranslit (array $args, $str)
   {
     $localesaved = setlocale(LC_CTYPE, 0);
     $ret = [];
@@ -272,7 +272,7 @@ class templateHandling
     return array_unique($ret);
   }
 
-  private static function modifierPregReplace(array $args, $str)
+  private static function modifierPregReplace (array $args, $str)
   {
     $pattern = '/\s/';
     $replace = '';
@@ -286,7 +286,7 @@ class templateHandling
     return [preg_replace($pattern.'u', $replace, $str)];
   }
 
-  private static function modifierSubString(array $args, $str)
+  private static function modifierSubString (array $args, $str)
   {
     if (count($args) < 1) {
       trigger_error("Missing 's' substr modifier parameter");
@@ -305,7 +305,7 @@ class templateHandling
     }
   }
 
-  private static function modifierRandomString(array $args)
+  private static function modifierRandomString (array $args)
   {
     $length = 8;
     $chars  = 'b';
@@ -355,7 +355,7 @@ class templateHandling
     return $res;
   }
 
-  private static function modifierDate(array $args)
+  private static function modifierDate (array $args)
   {
     if (count($args) < 1) {
       $args[] = 'now';
@@ -379,7 +379,7 @@ class templateHandling
    *
    * \return array an array of possible values
    * */
-  protected static function applyModifier($m, array $args, $str)
+  protected static function applyModifier ($m, array $args, $str)
   {
     mb_internal_encoding('UTF-8');
     mb_regex_encoding('UTF-8');
@@ -518,7 +518,7 @@ class templateHandling
   }
 
   /*! \brief Computes dependencies between attributes: which attributes must be filled in order to compute each attribute value */
-  protected static function attributesDependencies(array $attrs)
+  protected static function attributesDependencies (array $attrs)
   {
     /* Compute dependencies of each attr */
     $depends = [];
@@ -551,7 +551,7 @@ class templateHandling
   }
 
   /*! \brief Sort attrs depending of dependencies */
-  protected static function sortAttributes(array $attrs, array $flatdepends)
+  protected static function sortAttributes (array $attrs, array $flatdepends)
   {
     uksort($attrs, function ($k1, $k2) use ($flatdepends) {
       if (in_array($k1, $flatdepends[$k2])) {
diff --git a/include/class_tests.inc b/include/class_tests.inc
index a74a0e8d8..a943c9325 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -45,7 +45,7 @@ class tests
    *
    * \param string $nr The phone number to check
    */
-  public static function is_phone_nr($nr)
+  public static function is_phone_nr ($nr)
   {
     if ($nr == "") {
       return TRUE;
@@ -60,7 +60,7 @@ class tests
    *
    * \param string $str The DNS to check
    */
-  public static function is_dns_name($str)
+  public static function is_dns_name ($str)
   {
     return preg_match("/^[a-z0-9\.\-_]*$/i", $str);
   }
@@ -71,7 +71,7 @@ class tests
    *
    * \param string $str The hostname to check
    */
-  public static function is_valid_hostname($str)
+  public static function is_valid_hostname ($str)
   {
     return preg_match("/^[a-z0-9\.\-]*$/i", $str);
   }
@@ -82,7 +82,7 @@ class tests
    *
    * \param string $url The URL to check
    */
-  public static function is_url($url)
+  public static function is_url ($url)
   {
     if ($url == "") {
       return TRUE;
@@ -98,7 +98,7 @@ class tests
    *
    * \param string $dn The DN to check
    */
-  public static function is_dn($dn)
+  public static function is_dn ($dn)
   {
     if ($dn == "") {
       return TRUE;
@@ -113,7 +113,7 @@ class tests
    *
    * \param string $uid The UID to check
    */
-  public static function is_uid($uid)
+  public static function is_uid ($uid)
   {
     if ($uid == "") {
       return TRUE;
@@ -133,7 +133,7 @@ class tests
    *
    * \param string $ip The IP to check
    */
-  public static function is_ip($ip)
+  public static function is_ip ($ip)
   {
     return filter_var($ip, FILTER_VALIDATE_IP);
   }
@@ -143,7 +143,7 @@ class tests
    *
    * \param string $ip The IPv4 to check
    */
-  public static function is_ipv4($ip)
+  public static function is_ipv4 ($ip)
   {
     return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
   }
@@ -153,7 +153,7 @@ class tests
    *
    * \param string $ip The IPv6 to check
    */
-  public static function is_ipv6($ip)
+  public static function is_ipv6 ($ip)
   {
     return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6);
   }
@@ -164,7 +164,7 @@ class tests
    *
    * \param string $mac The MAC address to check
    */
-  public static function is_mac($mac)
+  public static function is_mac ($mac)
   {
     return preg_match("/^[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$/i", $mac);
   }
@@ -176,7 +176,7 @@ class tests
    *
    * \param string $ip The IP to check
    */
-  public static function is_ip_with_subnetmask($ip)
+  public static function is_ip_with_subnetmask ($ip)
   {
     /* Generate list of valid submasks */
     $res = [];
@@ -222,7 +222,7 @@ class tests
    *
    * \param string $str The domain to check
    */
-  public static function is_domain($str)
+  public static function is_domain ($str)
   {
     return preg_match("/^(([a-z0-9\-]{2,63})\.)*[a-z]{2,63}$/i", $str);
   }
@@ -233,7 +233,7 @@ class tests
    *
    * \param string $id The id to check
    */
-  public static function is_id($id)
+  public static function is_id ($id)
   {
     if ($id == "") {
       return FALSE;
@@ -248,7 +248,7 @@ class tests
    *
    * \param string $path The path to check
    */
-  public static function is_path($path)
+  public static function is_path ($path)
   {
     if ($path == "") {
       return TRUE;
@@ -266,7 +266,7 @@ class tests
    *
    * \param string $address The email address
    */
-  public static function is_email($address)
+  public static function is_email ($address)
   {
     if ($address == "") {
       return TRUE;
@@ -288,7 +288,7 @@ class tests
    *
    * \param string $base
    */
-  public static function is_department_name_reserved($name)
+  public static function is_department_name_reserved ($name)
   {
     global $config;
     $reservedNames = [];
@@ -315,7 +315,7 @@ class tests
    *
    * \return TRUE in case of a valid range, FALSE in case of an error.
    */
-  public static function is_ip_range($ip1, $ip2)
+  public static function is_ip_range ($ip1, $ip2)
   {
     if (!tests::is_ipv4($ip1) || !tests::is_ipv4($ip2)) {
       return FALSE;
@@ -339,7 +339,7 @@ class tests
    *
    * \param string $address The IP address
    */
-  public static function is_in_network($network, $netmask, $address)
+  public static function is_in_network ($network, $netmask, $address)
   {
     $nw = explode('.', $network);
     $nm = explode('.', $netmask);
@@ -360,7 +360,7 @@ class tests
   }
 
   /* \brief Check if the specified IP address $address is inside the given network */
-  public static function is_in_ip_range($from, $to, $address)
+  public static function is_in_ip_range ($from, $to, $address)
   {
     $from = explode('.', $from);
     $to   = explode('.', $to);
diff --git a/include/class_timezone.inc b/include/class_timezone.inc
index 2b8991aaf..a36d51d13 100644
--- a/include/class_timezone.inc
+++ b/include/class_timezone.inc
@@ -36,7 +36,7 @@ class timezone
    *
    * \return TRUE upon success, FALSE otherwise
    */
-  static public function setDefaultTimezoneFromConfig()
+  static public function setDefaultTimezoneFromConfig ()
   {
     global $config;
 
@@ -63,7 +63,7 @@ class timezone
    * deprecated
    * \param $stamp is used to detect summer or winter time.
    */
-  static public function get_default_timezone($stamp = NULL)
+  static public function get_default_timezone ($stamp = NULL)
   {
     global $config;
 
@@ -88,19 +88,19 @@ class timezone
    *
    * \return Time zone informations
    */
-  static public function _get_tz_zones()
+  static public function _get_tz_zones ()
   {
     return DateTimeZone::listIdentifiers();
   }
 
   /* \brief Return default timezone as a DateTimeZone object */
-  static public function getDefaultTimeZone()
+  static public function getDefaultTimeZone ()
   {
     return new DateTimeZone(date_default_timezone_get());
   }
 
   /* \brief Return UTC timezone as a DateTimeZone object */
-  static public function utc()
+  static public function utc ()
   {
     static $utc;
     if (!isset($utc)) {
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 55a0eac87..99f836505 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -54,7 +54,7 @@ class userinfo
 
   /* get acl's an put them into the userinfo object
      attr subtreeACL (userdn:components, userdn:component1#sub1#sub2,component2,...) */
-  function __construct($userdn)
+  function __construct ($userdn)
   {
     global $config;
     $this->dn         = $userdn;
@@ -69,7 +69,7 @@ class userinfo
   }
 
   /*! \brief Loads user information from LDAP */
-  function loadLDAPInfo()
+  function loadLDAPInfo ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -104,7 +104,7 @@ class userinfo
   /*!
   * \brief Reset acl cache
   */
-  public function reset_acl_cache()
+  public function reset_acl_cache ()
   {
     /* Initialize ACL_CACHE */
     session::set('ACL_CACHE', []);
@@ -113,7 +113,7 @@ class userinfo
   /*!
    * \brief Load an acl
    */
-  function loadACL()
+  function loadACL ()
   {
     global $config;
     $this->ACL          = [];
@@ -282,7 +282,7 @@ class userinfo
    *
    * \return Return the next id or NULL if failed
    */
-  function get_acl_target_objects()
+  function get_acl_target_objects ()
   {
     return array_keys($this->ACLperPath);
   }
@@ -296,7 +296,7 @@ class userinfo
    *
    * \return all the permissions for the dn and category
    */
-  function get_category_permissions($dn, $category)
+  function get_category_permissions ($dn, $category)
   {
     return @$this->get_permissions($dn, $category.'/0', '');
   }
@@ -311,7 +311,7 @@ class userinfo
    *
    * \return boolean TRUE if the given object is copyable else FALSE
   */
-  function is_copyable($dn, $object)
+  function is_copyable ($dn, $object)
   {
     return (strpos($this->get_complete_category_acls($dn, $object), 'r') !== FALSE);
   }
@@ -328,7 +328,7 @@ class userinfo
    *
    * \return boolean TRUE if the given object is cutable else FALSE
    */
-  function is_cutable($dn, $object, $class)
+  function is_cutable ($dn, $object, $class)
   {
     $remove = (strpos($this->get_permissions($dn, $object.'/'.$class), 'd') !== FALSE);
     $read   = (strpos($this->get_complete_category_acls($dn, $object), 'r') !== FALSE);
@@ -345,7 +345,7 @@ class userinfo
    *
    * \return Boolean TRUE if we are allowed to paste an object.
    */
-  function is_pasteable($dn, $object)
+  function is_pasteable ($dn, $object)
   {
     return (strpos($this->get_complete_category_acls($dn, $object), 'w') !== FALSE);
   }
@@ -362,7 +362,7 @@ class userinfo
    *
    * \return boolean TRUE if we are allowed to restore a snapshot.
    */
-  function allow_snapshot_restore($dn, $categories, $deleted)
+  function allow_snapshot_restore ($dn, $categories, $deleted)
   {
     $permissions = $this->get_snapshot_permissions($dn, $categories);
     return in_array(($deleted ? 'restore_deleted' : 'restore_over'), $permissions);
@@ -378,7 +378,7 @@ class userinfo
    *
    * \return boolean TRUE if we are allowed to create a snapshot.
    */
-  function allow_snapshot_create($dn, $categories)
+  function allow_snapshot_create ($dn, $categories)
   {
     $permissions = $this->get_snapshot_permissions($dn, $categories);
     return in_array('c', $permissions);
@@ -394,13 +394,13 @@ class userinfo
    *
    * \return boolean TRUE if we are allowed to delete a snapshot.
    */
-  function allow_snapshot_delete($dn, $categories)
+  function allow_snapshot_delete ($dn, $categories)
   {
     $permissions = $this->get_snapshot_permissions($dn, $categories);
     return in_array('d', $permissions);
   }
 
-  function get_snapshot_permissions($dn, $categories)
+  function get_snapshot_permissions ($dn, $categories)
   {
     if (!is_array($categories)) {
       $categories = [$categories];
@@ -437,7 +437,7 @@ class userinfo
    * \param bool $skip_write   Remove the write acl for this dn
    *
    */
-  function get_permissions($dn, $object, $attribute = "", $skip_write = FALSE)
+  function get_permissions ($dn, $object, $attribute = "", $skip_write = FALSE)
   {
     global $config;
     /* If we are forced to skip ACLs checks for the current user
@@ -647,7 +647,7 @@ class userinfo
    *
    * \return array Return all accessible departments
    */
-  function get_module_departments($module, $skip_self_acls = FALSE )
+  function get_module_departments ($module, $skip_self_acls = FALSE )
   {
     global $config;
     /* If we are forced to skip ACLs checks for the current user
@@ -731,7 +731,7 @@ class userinfo
    *
    * \param $newACL The new ACL
    */
-  function mergeACL($acl, $type, $newACL)
+  function mergeACL ($acl, $type, $newACL)
   {
     $at = ["subtree" => "s", "one" => "1"];
 
@@ -772,7 +772,7 @@ class userinfo
    *
    * \param boolean $reset FALSE
    */
-  function cleanACL($acl, $reset = FALSE)
+  function cleanACL ($acl, $reset = FALSE)
   {
     foreach ($acl as $key => $value) {
       /* Continue, if value is empty or subtree */
@@ -815,7 +815,7 @@ class userinfo
    *
    * \return string return acl combined with boolean AND
    */
-  function get_complete_category_acls($dn, $category)
+  function get_complete_category_acls ($dn, $category)
   {
     global $config;
 
@@ -856,7 +856,7 @@ class userinfo
    * \return Returns TRUE if the current user is configured in IGNORE_ACL=".."
    *  in your fusiondirectory.conf FALSE otherwise
    */
-  function ignore_acl_for_current_user()
+  function ignore_acl_for_current_user ()
   {
     return $this->ignoreACL;
   }
@@ -988,7 +988,7 @@ class userinfo
 
   /* \brief Check if a user is a 'user admin'
    */
-  function is_user_admin()
+  function is_user_admin ()
   {
     global $config;
     if (empty($this->ACLperPath)) {
@@ -999,7 +999,7 @@ class userinfo
 
   /* \brief Test if a plugin is blacklisted for this user (does not show up in the menu)
    */
-  function isBlacklisted($plugin)
+  function isBlacklisted ($plugin)
   {
     global $config;
     $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', []);
@@ -1019,7 +1019,7 @@ class userinfo
    *
    * \return The ACL category, or FALSE if not found, or TRUE if acl check should be bypassed
    */
-  function getAttributeCategory($type, $attribute)
+  function getAttributeCategory ($type, $attribute)
   {
     global $config;
 
@@ -1052,7 +1052,7 @@ class userinfo
     return FALSE;
   }
 
-  function getSizeLimitHandler()
+  function getSizeLimitHandler ()
   {
     return $this->sizeLimitHandler;
   }
diff --git a/include/class_xml.inc b/include/class_xml.inc
index 93b549ee3..1d194c544 100644
--- a/include/class_xml.inc
+++ b/include/class_xml.inc
@@ -38,13 +38,13 @@ class xml {
    *
    * \param string $priority Initialized at 'tag'
    */
-  static function xml2array($contents, $get_attributes = 1, $priority = 'tag')
+  static function xml2array ($contents, $get_attributes = 1, $priority = 'tag')
   {
     if (!$contents) {
       return [];
     }
 
-    if (!function_exists('xml_parser_create')) {
+    if (!function_exists ('xml_parser_create')) {
       trigger_error('xml_parser_create function does not exists');
       return [];
     }
diff --git a/include/exporter/class_PDF.php b/include/exporter/class_PDF.php
index d521ef842..dea0b7dfb 100644
--- a/include/exporter/class_PDF.php
+++ b/include/exporter/class_PDF.php
@@ -36,7 +36,7 @@ class PDF extends FPDF
    *
    * \param string $headline
    */
-  function setHeadline($headline)
+  function setHeadline ($headline)
   {
     $this->headline = $headline;
   }
@@ -44,7 +44,7 @@ class PDF extends FPDF
   /*!
    * \brief Set font and cell for the header page
    */
-  function Header()
+  function Header ()
   {
     $this->SetFont('Helvetica', 'B', 10);
     $this->Cell(0, 0, $this->headline, 0, 0, 'L');
@@ -54,7 +54,7 @@ class PDF extends FPDF
   /*!
    * \brief Set position from the bottom and the number of the page
    */
-  function Footer()
+  function Footer ()
   {
     $this->SetY(-15);
     $this->SetFont('Helvetica', 'I', 8);
diff --git a/include/exporter/class_cvsExporter.inc b/include/exporter/class_cvsExporter.inc
index 284fa361b..ea610b4a3 100644
--- a/include/exporter/class_cvsExporter.inc
+++ b/include/exporter/class_cvsExporter.inc
@@ -43,7 +43,7 @@ class csvExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = [])
+  function __construct ($headline, $header, $entries, $columns = [])
   {
     // If no preset, render all columns
     if (!count($columns)) {
@@ -79,7 +79,7 @@ class csvExporter
   /*!
    * \brief Get the result
    */
-  function query()
+  function query ()
   {
      return $this->result;
   }
@@ -88,7 +88,7 @@ class csvExporter
   /*!
    * \brief Get Informations
    */
-  static function getInfo()
+  static function getInfo ()
   {
     return ["exportCSV" => [ "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ]];
   }
diff --git a/include/exporter/class_pdfExporter.inc b/include/exporter/class_pdfExporter.inc
index 56cd04ce8..25f97bfe7 100644
--- a/include/exporter/class_pdfExporter.inc
+++ b/include/exporter/class_pdfExporter.inc
@@ -51,7 +51,7 @@ class pdfExporter
    *
    * \param array $columns
    */
-  function __construct($headline, $header, $entries, $columns = [])
+  function __construct ($headline, $header, $entries, $columns = [])
   {
     // Bail out if no FPDF available
     if (!class_exists('FPDF')) {
@@ -139,7 +139,7 @@ class pdfExporter
    *
    * \param array $columns
    */
-  function calcWidth($header, $entries, $columns)
+  function calcWidth ($header, $entries, $columns)
   {
     $width = [];
 
@@ -180,7 +180,7 @@ class pdfExporter
   /*!
    * \brief Get the result
    */
-  function query()
+  function query ()
   {
      return $this->result->Output("", "S");
   }
@@ -188,7 +188,7 @@ class pdfExporter
   /*!
    * \brief Get informations
    */
-  static function getInfo()
+  static function getInfo ()
   {
     // Check if class defined
     $classes = get_declared_classes();
diff --git a/include/functions.inc b/include/functions.inc
index fb4e41a80..03c198a8a 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -127,7 +127,7 @@ spl_autoload_register('fusiondirectory_autoload');
  *
  * \return boolean Return TRUE if successfull FALSE otherwise
  */
-function class_available($name)
+function class_available ($name)
 {
   global $class_mapping;
   return isset($class_mapping[$name]);
@@ -143,7 +143,7 @@ function class_available($name)
  *
  * \return boolean Return TRUE if successfull FALSE otherwise
  */
-function plugin_available($plugin)
+function plugin_available ($plugin)
 {
   global $class_mapping, $BASE_DIR;
 
@@ -197,7 +197,7 @@ function load_plist ($ldap_available = TRUE)
  *
  * \param string $info Optional: Additional information
  */
-function DEBUG($level, $line, $function, $file, $data, $info = '')
+function DEBUG ($level, $line, $function, $file, $data, $info = '')
 {
   static $first = TRUE;
   if (($_SERVER['REQUEST_METHOD'] == 'POST') && preg_match('/index.php$/', $_SERVER['REQUEST_URI'])) {
@@ -208,7 +208,7 @@ function DEBUG($level, $line, $function, $file, $data, $info = '')
       echo '<div id="debug-handling" class="notice">'.
             '<img src="geticon.php?context=status&amp;icon=dialog-information&amp;size=22" alt="Information" style="vertical-align:middle;margin-right:.2em;"/>'.
             'There is some debug output '.
-            '<button onClick="javascript:$$(\'div.debug_div\').each(function (a) { a.toggle(); });">Toggle</button>'.
+            '<button onClick="javascript:$$(\'div.debug_div\').each(function (a) { a.toggle (); });">Toggle</button>'.
           '</div>';
       $first = FALSE;
     }
@@ -249,7 +249,7 @@ function DEBUG($level, $line, $function, $file, $data, $info = '')
  *
  * \return string Full path to the template file
  */
-function get_template_path($filename = '', $plugin = FALSE, $path = '')
+function get_template_path ($filename = '', $plugin = FALSE, $path = '')
 {
   global $config, $BASE_DIR;
   $default_theme = 'breezy';
@@ -312,7 +312,7 @@ function get_template_path($filename = '', $plugin = FALSE, $path = '')
  *
  * \param array $haystack original array to remove the entries from
  */
-function array_remove_entries(array $needles, array $haystack)
+function array_remove_entries (array $needles, array $haystack)
 {
   return array_values(array_diff($haystack, $needles));
 }
@@ -328,7 +328,7 @@ function array_remove_entries(array $needles, array $haystack)
  *
  * \param array $haystack original array to remove the entries from
  */
-function array_remove_entries_ics(array $needles, array $haystack)
+function array_remove_entries_ics (array $needles, array $haystack)
 {
   // strcasecmp will work, because we only compare ASCII values here
   return array_values(array_udiff($haystack, $needles, 'strcasecmp'));
@@ -346,7 +346,7 @@ function array_remove_entries_ics(array $needles, array $haystack)
  *
  * \return array
  */
-function array_merge_unique($ar1, $ar2)
+function array_merge_unique ($ar1, $ar2)
 {
   if (!is_array($ar1) || !is_array($ar2)) {
     trigger_error('Specified parameter(s) are not valid arrays.');
@@ -553,7 +553,7 @@ function ldap_login_user ($username, $password)
  *
  * \param string $user  The user who shall own the lock
  */
-function add_lock($object, $user)
+function add_lock ($object, $user)
 {
   global $config;
 
@@ -672,7 +672,7 @@ function del_lock ($object)
  *
  * \param string $userdn the subject whose locks shall be deleted
  */
-function del_user_locks($userdn)
+function del_user_locks ($userdn)
 {
   global $config;
 
@@ -698,7 +698,7 @@ function del_user_locks($userdn)
  * \return string Returns the dn of the user who owns the lock or '' if no lock is found
  * or FALSE if an error occured.
  */
-function get_lock($object)
+function get_lock ($object)
 {
   /* Sanity check */
   if ($object == '') {
@@ -735,7 +735,7 @@ function get_lock($object)
  * \return A numbered array containing all found locks as an array with key 'object'
  * and key 'user', or FALSE if an error occured.
  */
-function get_locks($objects, $allow_readonly = FALSE)
+function get_locks ($objects, $allow_readonly = FALSE)
 {
   global $config;
 
@@ -798,7 +798,7 @@ function get_locks($objects, $allow_readonly = FALSE)
  *
  * \return return the current userinfo object
  */
-function &get_userinfo()
+function &get_userinfo ()
 {
   global $ui;
 
@@ -810,7 +810,7 @@ function &get_userinfo()
  *
  * \return return the global smarty object
  */
-function &get_smarty()
+function &get_smarty ()
 {
   global $smarty;
 
@@ -835,7 +835,7 @@ function &get_smarty()
  *
  * \return a string in the form as described above
  */
-function convert_department_dn($dn, $base = NULL)
+function convert_department_dn ($dn, $base = NULL)
 {
   global $config;
 
@@ -877,7 +877,7 @@ function convert_department_dn($dn, $base = NULL)
  * \return the ou associated the the RDN or nothing
  *
  */
-function get_ou($name)
+function get_ou ($name)
 {
   global $config;
 
@@ -971,7 +971,7 @@ function get_ou($name)
  *
  * \return the ou of the userRDN
  */
-function get_people_ou()
+function get_people_ou ()
 {
   return get_ou('userRDN');
 }
@@ -987,7 +987,7 @@ function get_people_ou()
  *
  * \return the base from the dn
  */
-function get_base_from_people($dn)
+function get_base_from_people ($dn)
 {
   global $config;
 
@@ -1012,7 +1012,7 @@ function get_base_from_people($dn)
  * \return Returns TRUE if strictNamingRules is set to TRUE or if the
  * config object is not available, otherwise FALSE.
  */
-function strict_uid_mode()
+function strict_uid_mode ()
 {
   global $config;
 
@@ -1046,7 +1046,7 @@ function strict_uid_mode()
  *
  *
  */
-function gen_locked_message($locks, $dn, $allow_readonly = FALSE)
+function gen_locked_message ($locks, $dn, $allow_readonly = FALSE)
 {
   session::set('dn', $dn);
   $remove = FALSE;
@@ -1151,7 +1151,7 @@ function to_string ($value)
  *
  * \return string $s the result of the rewrite
  */
-function rewrite($s)
+function rewrite ($s)
 {
   global $REWRITE;
 
@@ -1171,7 +1171,7 @@ function rewrite($s)
  *
  * \return base of the given DN
  */
-function dn2base($dn, $ou = NULL)
+function dn2base ($dn, $ou = NULL)
 {
   if ($ou === NULL) {
     if (get_people_ou() != '') {
@@ -1197,7 +1197,7 @@ function dn2base($dn, $ou = NULL)
  *
  * \return TRUE if command exists and is executable, otherwise FALSE.
  */
-function check_command($cmdline)
+function check_command ($cmdline)
 {
   $cmd = preg_replace("/ .*$/", '', $cmdline);
 
@@ -1225,7 +1225,7 @@ function check_command($cmdline)
  *
  * \return the $display variable
  */
-function print_header($image, $headline, $info = '')
+function print_header ($image, $headline, $info = '')
 {
   $smarty = get_smarty();
   $smarty->assign('headline', $headline);
@@ -1246,7 +1246,7 @@ function print_header($image, $headline, $info = '')
  *
  * \return the back button html code
  */
-function back_to_main()
+function back_to_main ()
 {
   return '<br><p class="plugbottom"><input type=submit name="password_back" value="'.
     msgPool::backButton().'"></p><input type="hidden" name="ignore">';
@@ -1259,7 +1259,7 @@ function back_to_main()
  *
  * \return string Converted netmask
  */
-function normalize_netmask($netmask)
+function normalize_netmask ($netmask)
 {
   /* Check for notation of netmask */
   if (!preg_match('/^([0-9]+\.){3}[0-9]+$/', $netmask)) {
@@ -1309,7 +1309,7 @@ function normalize_netmask($netmask)
  *
  * \return the number of bits in the netmask
  */
-function netmask_to_bits($netmask)
+function netmask_to_bits ($netmask)
 {
   $nm = explode('.', $netmask, 4);
 
@@ -1333,7 +1333,7 @@ function netmask_to_bits($netmask)
 /*!
  * \brief Recursion helper for gen_uids()
  */
-function _recurse_gen_uids($rule, array $variables)
+function _recurse_gen_uids ($rule, array $variables)
 {
   $result = [];
 
@@ -1367,7 +1367,7 @@ function _recurse_gen_uids($rule, array $variables)
  *
  * \return array List of valid not used uids
  */
-function gen_uids($rule, $attributes)
+function gen_uids ($rule, $attributes)
 {
   global $config;
 
@@ -1466,7 +1466,7 @@ function gen_uids($rule, $attributes)
  * \return a byte value or the original value if specified string is simply
  * a numeric value
  */
-function to_byte($value)
+function to_byte ($value)
 {
   $value = strtolower(trim($value));
 
@@ -1533,14 +1533,14 @@ function humanReadableSize ($bytes, $precision = 2)
  *
  * \return Return TRUE is value is found, FALSE if not.
  */
-function in_array_ics($value, array $items)
+function in_array_ics ($value, array $items)
 {
   return preg_grep('/^'.preg_quote($value, '/').'$/i', $items);
 }
 
 
 /*! \brief Generate a clickable alphabet */
-function generate_alphabet($count = 10)
+function generate_alphabet ($count = 10)
 {
   $characters = _("*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
   $alphabet   = "";
@@ -1578,7 +1578,7 @@ function generate_alphabet($count = 10)
  *
  * \return string with caracters removed
  */
-function validate($string)
+function validate ($string)
 {
   return strip_tags(str_replace('\0', '', $string));
 }
@@ -1594,7 +1594,7 @@ function validate($string)
  * \param boolean $followLinks TRUE to follow links, FALSE (default)
  * for not following links
  */
-function rmdirRecursive($path, $followLinks = FALSE)
+function rmdirRecursive ($path, $followLinks = FALSE)
 {
   $dir = opendir($path);
   while ($entry = readdir($dir)) {
@@ -1621,7 +1621,7 @@ function rmdirRecursive($path, $followLinks = FALSE)
  *
  * \return array content of directory in ascending sorted manner.
  */
-function scan_directory($path, $sort_desc = FALSE)
+function scan_directory ($path, $sort_desc = FALSE)
 {
   $ret = FALSE;
 
@@ -1661,7 +1661,7 @@ function scan_directory($path, $sort_desc = FALSE)
  *
  * \param string $directory smarty compile dir
  */
-function clean_smarty_compile_dir($directory)
+function clean_smarty_compile_dir ($directory)
 {
   if (is_dir($directory) && is_readable($directory)) {
     // Set revision filename to REVISION
@@ -1707,7 +1707,7 @@ function clean_smarty_compile_dir($directory)
  *
  * \return TRUE if successfully created FALSE otherwise
  */
-function create_revision($revision_file, $revision)
+function create_revision ($revision_file, $revision)
 {
   $result = FALSE;
 
@@ -1735,7 +1735,7 @@ function create_revision($revision_file, $revision)
  *
  * \return TRUE if revision match FALSE otherwise
  */
-function compare_revision($revision_file, $revision)
+function compare_revision ($revision_file, $revision)
 {
   // FALSE means revision differs
   $result = FALSE;
@@ -1776,7 +1776,7 @@ function compare_revision($revision_file, $revision)
  *
  * \return return key or empty result
  */
-function array_key_ics($ikey, array $items)
+function array_key_ics ($ikey, array $items)
 {
   $tmp  = array_change_key_case($items, CASE_LOWER);
   $ikey = strtolower($ikey);
@@ -1797,7 +1797,7 @@ function array_key_ics($ikey, array $items)
  *
  * \return boolean TRUE or FALSE
  */
-function array_differs($src, $dst)
+function array_differs ($src, $dst)
 {
   /* If the count is differing, the arrays differ */
   if (count ($src) != count ($dst)) {
@@ -1816,7 +1816,7 @@ function array_differs($src, $dst)
  *
  * \return boolean TRUE or FALSE
  */
-function array_differs_recursive($src, $dst)
+function array_differs_recursive ($src, $dst)
 {
   if (is_array($src)) {
     if (!is_array($dst)) {
@@ -1844,7 +1844,7 @@ function array_differs_recursive($src, $dst)
  * \param string $input string where we should add \ before special caracters
  *
  */
-function normalizeLdap($input)
+function normalizeLdap ($input)
 {
   trigger_error('deprecated, use ldap_escape_f');
   return addcslashes($input, '*()\\/');
@@ -1855,7 +1855,7 @@ function normalizeLdap($input)
  *
  * \param string $cfg A config object
  */
-function check_schema($cfg)
+function check_schema ($cfg)
 {
   $checks = [];
 
@@ -1977,7 +1977,7 @@ function check_schema($cfg)
  *
  * \return string
  */
-function get_post($name)
+function get_post ($name)
 {
   if (!isset($_POST[$name])) {
     trigger_error("Requested POST value (".$name.") does not exists, you should add a check to prevent this message.");
@@ -1990,7 +1990,7 @@ function get_post($name)
 /*!
  * \brief Return class name in correct case
  */
-function get_correct_class_name($cls)
+function get_correct_class_name ($cls)
 {
   global $class_mapping;
   if (isset($class_mapping) && is_array($class_mapping)) {
@@ -2039,7 +2039,7 @@ function change_password ($dn, $password, $hash = "")
 }
 
 /* Lock or unlock samba account */
-function lock_samba_account($mode, array $attrs)
+function lock_samba_account ($mode, array $attrs)
 {
   global $config;
   if (!isset($attrs['sambaNTPassword'][0])) {
@@ -2070,7 +2070,7 @@ function lock_samba_account($mode, array $attrs)
 }
 
 /* Lock or unlock ssh account */
-function lock_ssh_account($mode, array $attrs, &$modify)
+function lock_ssh_account ($mode, array $attrs, &$modify)
 {
   if (!isset($attrs['sshPublicKey'])) {
     return;
@@ -2098,7 +2098,7 @@ function lock_ssh_account($mode, array $attrs, &$modify)
  *
  * \return either the result or "" in any other case
  */
-function getEntryCSN($dn)
+function getEntryCSN ($dn)
 {
   global $config;
   if (empty($dn) || !is_object($config)) {
@@ -2127,7 +2127,7 @@ function getEntryCSN($dn)
  *
  * \param  string $type The content identifier, default value is "application/octet-stream";
  */
-function send_binary_content($data, $name, $type = "application/octet-stream")
+function send_binary_content ($data, $name, $type = "application/octet-stream")
 {
   header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
   header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
@@ -2149,7 +2149,7 @@ function send_binary_content($data, $name, $type = "application/octet-stream")
 }
 
 
-function reverse_html_entities($str, $type = ENT_QUOTES, $charset = "UTF-8")
+function reverse_html_entities ($str, $type = ENT_QUOTES, $charset = "UTF-8")
 {
   if (is_string($str)) {
     return htmlentities($str, $type, $charset);
@@ -2172,7 +2172,7 @@ function reverse_html_entities($str, $type = ENT_QUOTES, $charset = "UTF-8")
  *
  * \return string The encoded String
  */
-function xmlentities($str)
+function xmlentities ($str)
 {
   if (is_string($str)) {
     return htmlspecialchars($str, ENT_QUOTES);
@@ -2209,7 +2209,7 @@ function get_random_char ()
  *
  * \param String $password The password used
  */
-function cred_decrypt($input, $password)
+function cred_decrypt ($input, $password)
 {
   /************************* Inspired by Crypt/CBC.pm *******************************/
   $input = pack('H*', $input);
@@ -2235,13 +2235,13 @@ function cred_decrypt($input, $password)
 }
 
 
-function get_object_info()
+function get_object_info ()
 {
   return session::get('objectinfo');
 }
 
 
-function set_object_info($str = "")
+function set_object_info ($str = "")
 {
   session::set('objectinfo', $str);
 }
@@ -2255,7 +2255,7 @@ function set_object_info($str = "")
  *
  * \param string $mask The netmask of the network
  */
-function isIpInNet($ip, $net, $mask)
+function isIpInNet ($ip, $net, $mask)
 {
    // Move to long ints
    $ip    = ip2long($ip);
@@ -2278,7 +2278,7 @@ function expandIPv6 ($ip)
 }
 
 /* Mark the occurance of a string with a span */
-function mark($needle, $haystack)
+function mark ($needle, $haystack)
 {
   $result = '';
 
@@ -2290,14 +2290,14 @@ function mark($needle, $haystack)
   return $result.$haystack;
 }
 
-function reset_errors()
+function reset_errors ()
 {
   session::set('errors', '');
   session::set('errorsAlreadyPosted', []);
   session::set('LastError', '');
 }
 
-function load_all_classes()
+function load_all_classes ()
 {
   global $BASE_DIR, $class_list, $class_mapping;
   /* Initially load all classes */
@@ -2316,13 +2316,13 @@ function load_all_classes()
   }
 }
 
-if (!function_exists('ldap_escape')) {
+if (!function_exists ('ldap_escape')) {
   /* This bloc is for PHP<5.6 */
   define('LDAP_ESCAPE_FILTER', 0x01);
   define('LDAP_ESCAPE_DN',     0x02);
 
   /* PHP version of ldap_escape for PHP<5.6 */
-  function ldap_escape($subject, $ignore = '', $flags = 0)
+  function ldap_escape ($subject, $ignore = '', $flags = 0)
   {
     static $charMaps = [
       LDAP_ESCAPE_FILTER => ['\\', '*', '(', ')', "\x00"],
@@ -2385,9 +2385,9 @@ if (!function_exists('ldap_escape')) {
   }
 }
 
-if (!function_exists('random_int')) {
+if (!function_exists ('random_int')) {
   // PHP<7, we fallback on openssl_random_pseudo_bytes
-  function random_int($min, $max)
+  function random_int ($min, $max)
   {
     $range = $max - $min;
     if ($range <= 0) {
@@ -2417,17 +2417,17 @@ if (!function_exists('random_int')) {
   }
 }
 
-function ldap_escape_f($str, $ignore = '')
+function ldap_escape_f ($str, $ignore = '')
 {
   return ldap_escape($str, $ignore, LDAP_ESCAPE_FILTER);
 }
 
-function ldap_escape_dn($str, $ignore = '')
+function ldap_escape_dn ($str, $ignore = '')
 {
   return ldap_escape($str, $ignore, LDAP_ESCAPE_DN);
 }
 
-function mail_utf8($to, $from_user, $from_email, $subject, $message, $replyto_user = NULL, $replyto_email = NULL, $type = 'plain')
+function mail_utf8 ($to, $from_user, $from_email, $subject, $message, $replyto_user = NULL, $replyto_email = NULL, $type = 'plain')
 {
   $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
 
@@ -2464,7 +2464,7 @@ function mail_utf8($to, $from_user, $from_email, $subject, $message, $replyto_us
 }
 
 /* Calls fopen, gives errors as an array if any, file handle if successful */
-function fopenWithErrorHandling()
+function fopenWithErrorHandling ()
 {
   $args   = func_get_args();
   $errors = [];
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index 73d2761d0..d74650c2f 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -63,7 +63,7 @@ class printAClass {
   /*!
    * \brief printAClass constructor
    */
-  function __construct()
+  function __construct ()
   {
     $this->export_hash = uniqid('');
   }
@@ -91,7 +91,7 @@ class printAClass {
    *
    * \param boolean $key_bg_color false
    */
-  function print_a($array, $iteration = FALSE, $key_bg_color = FALSE)
+  function print_a ($array, $iteration = FALSE, $key_bg_color = FALSE)
   {
     if (!$key_bg_color) {
       $key_bg_color = $this->key_bg_color;
@@ -196,7 +196,7 @@ class printAClass {
 }
 
 /*
- * \brief helper function.. calls print_a() inside the printAClass
+ * \brief helper function.. calls print_a () inside the printAClass
  *
  * \param array $array
  *
@@ -206,7 +206,7 @@ class printAClass {
  *
  * \param boolean $export_flag false
  */
-function print_a($array, $return_mode = FALSE, $show_object_vars = FALSE, $export_flag = FALSE )
+function print_a ($array, $return_mode = FALSE, $show_object_vars = FALSE, $export_flag = FALSE )
 {
   $e = error_reporting(0);
   if (is_array($array) || is_object($array)) {
diff --git a/include/password-methods/class_password-methods-clear.inc b/include/password-methods/class_password-methods-clear.inc
index 6c592859d..95a16473f 100644
--- a/include/password-methods/class_password-methods-clear.inc
+++ b/include/password-methods/class_password-methods-clear.inc
@@ -36,7 +36,7 @@ class passwordMethodClear extends passwordMethod
   /*!
    * \brief passwordMethodClear Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -45,7 +45,7 @@ class passwordMethodClear extends passwordMethod
    *
    * \return TRUE
    */
-  function is_available()
+  function is_available ()
   {
     return TRUE;
   }
@@ -55,7 +55,7 @@ class passwordMethodClear extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
     return $pwd;
   }
@@ -63,7 +63,7 @@ class passwordMethodClear extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return "clear";
   }
diff --git a/include/password-methods/class_password-methods-crypt.inc b/include/password-methods/class_password-methods-crypt.inc
index ac7c99793..3ff6a5d13 100644
--- a/include/password-methods/class_password-methods-crypt.inc
+++ b/include/password-methods/class_password-methods-crypt.inc
@@ -35,7 +35,7 @@ class passwordMethodCrypt extends passwordMethod
   /*!
    * \brief passwordMethodCrypt Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -44,9 +44,9 @@ class passwordMethodCrypt extends passwordMethod
    *
    * \return TRUE if is avaibable, otherwise return false
    */
-  function is_available()
+  function is_available ()
   {
-    return function_exists('crypt');
+    return function_exists ('crypt');
   }
 
   /*!
@@ -54,7 +54,7 @@ class passwordMethodCrypt extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
     if ($this->hash == "crypt/standard-des") {
       $salt = "";
@@ -105,7 +105,7 @@ class passwordMethodCrypt extends passwordMethod
     return "{CRYPT}".crypt($pwd, $salt);
   }
 
-  function checkPassword($pwd, $hash)
+  function checkPassword ($pwd, $hash)
   {
     // Not implemented
     return FALSE;
@@ -114,7 +114,7 @@ class passwordMethodCrypt extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     $hashes = [];
     if (CRYPT_STD_DES == 1) {
@@ -151,7 +151,7 @@ class passwordMethodCrypt extends passwordMethod
    *
    * \param string $password_hash
    */
-  static function _extract_method($classname, $password_hash)
+  static function _extract_method ($classname, $password_hash)
   {
     if (!preg_match('/^{crypt}/i', $password_hash)) {
       return "";
diff --git a/include/password-methods/class_password-methods-md5.inc b/include/password-methods/class_password-methods-md5.inc
index 23ba51c89..b13c00109 100644
--- a/include/password-methods/class_password-methods-md5.inc
+++ b/include/password-methods/class_password-methods-md5.inc
@@ -35,7 +35,7 @@ class passwordMethodMd5 extends passwordMethod
   /*!
    * \brief passwordMethodMd5 Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -44,9 +44,9 @@ class passwordMethodMd5 extends passwordMethod
    *
    * \return TRUE if is avaibable, otherwise return false
    */
-  function is_available()
+  function is_available ()
   {
-    return function_exists('md5');
+    return function_exists ('md5');
   }
 
   /*!
@@ -54,7 +54,7 @@ class passwordMethodMd5 extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
     return  '{MD5}'.base64_encode( pack('H*', md5($pwd)));
   }
@@ -62,7 +62,7 @@ class passwordMethodMd5 extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return 'md5';
   }
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index e84c20362..2a618a64b 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -40,7 +40,7 @@ class passwordMethodsasl extends passwordMethod
    * \param string $dn The DN
    * \param object $userTab The user main tab object
    */
-  function __construct($dn = '', $userTab = NULL)
+  function __construct ($dn = '', $userTab = NULL)
   {
     global $config;
     $this->realm  = trim($config->get_cfg_value('saslRealm', ''));
@@ -72,7 +72,7 @@ class passwordMethodsasl extends passwordMethod
    *
    * \return TRUE if is avaibable
    */
-  function is_available()
+  function is_available ()
   {
     if (empty($this->realm) && empty($this->exop)) {
       return FALSE;
@@ -85,7 +85,7 @@ class passwordMethodsasl extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
     if (empty($this->exop)) {
       if (empty($this->realm)) {
@@ -98,7 +98,7 @@ class passwordMethodsasl extends passwordMethod
     }
   }
 
-  function checkPassword($pwd, $hash)
+  function checkPassword ($pwd, $hash)
   {
     // We do not store passwords, can’t know if they’re the same
     return FALSE;
@@ -107,7 +107,7 @@ class passwordMethodsasl extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return 'sasl';
   }
@@ -117,7 +117,7 @@ class passwordMethodsasl extends passwordMethod
    *
    * \return boolean FALSE
    */
-  function need_password()
+  function need_password ()
   {
     global $config;
     return ($config->get_cfg_value('forceSaslPasswordAsk', 'FALSE') == 'TRUE');
diff --git a/include/password-methods/class_password-methods-sha.inc b/include/password-methods/class_password-methods-sha.inc
index 1b81ca1e8..30285a1aa 100644
--- a/include/password-methods/class_password-methods-sha.inc
+++ b/include/password-methods/class_password-methods-sha.inc
@@ -34,7 +34,7 @@ class passwordMethodsha extends passwordMethod
   /*!
    * \brief passwordMethodsha Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -43,9 +43,9 @@ class passwordMethodsha extends passwordMethod
    *
    * \return TRUE if is avaibable, otherwise return false
    */
-  function is_available()
+  function is_available ()
   {
-    return (function_exists('sha1') || function_exists('mhash'));
+    return (function_exists ('sha1') || function_exists ('mhash'));
   }
 
   /*!
@@ -53,11 +53,11 @@ class passwordMethodsha extends passwordMethod
    *
    * \param string $password Password
    */
-  function generate_hash($password)
+  function generate_hash ($password)
   {
-    if (function_exists('sha1')) {
+    if (function_exists ('sha1')) {
       $hash = '{SHA}' . base64_encode(pack('H*', sha1($password)));
-    } elseif (function_exists('mhash')) {
+    } elseif (function_exists ('mhash')) {
       $hash = '{SHA}' . base64_encode(mHash(MHASH_SHA1, $password));
     } else {
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
@@ -70,7 +70,7 @@ class passwordMethodsha extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return 'sha';
   }
diff --git a/include/password-methods/class_password-methods-smd5.inc b/include/password-methods/class_password-methods-smd5.inc
index 74987388e..d5b0a8cef 100644
--- a/include/password-methods/class_password-methods-smd5.inc
+++ b/include/password-methods/class_password-methods-smd5.inc
@@ -34,7 +34,7 @@ class passwordMethodsmd5 extends passwordMethod
   /*!
    * \brief passwordMethodsmd5 Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -43,9 +43,9 @@ class passwordMethodsmd5 extends passwordMethod
    *
    * \return TRUE if is avaibable, otherwise return false
    */
-  function is_available()
+  function is_available ()
   {
-    return function_exists('md5');
+    return function_exists ('md5');
   }
 
   /*!
@@ -53,7 +53,7 @@ class passwordMethodsmd5 extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
     $salt0  = substr(pack('h*', md5(random_int(0, PHP_INT_MAX))), 0, 8);
     $salt   = substr(pack('H*', md5($salt0 . $pwd)), 0, 4);
@@ -61,7 +61,7 @@ class passwordMethodsmd5 extends passwordMethod
     return $hash;
   }
 
-  function checkPassword($pwd, $hash)
+  function checkPassword ($pwd, $hash)
   {
     $hash = base64_decode(substr($hash, 6));
     $salt = substr($hash, 16);
@@ -73,7 +73,7 @@ class passwordMethodsmd5 extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return 'smd5';
   }
diff --git a/include/password-methods/class_password-methods-ssha.inc b/include/password-methods/class_password-methods-ssha.inc
index 07b60d682..820efd749 100644
--- a/include/password-methods/class_password-methods-ssha.inc
+++ b/include/password-methods/class_password-methods-ssha.inc
@@ -34,7 +34,7 @@ class passwordMethodssha extends passwordMethod
   /*!
    * \brief passwordMethodssha Constructor
    */
-  function __construct()
+  function __construct ()
   {
   }
 
@@ -43,9 +43,9 @@ class passwordMethodssha extends passwordMethod
    *
    * \return TRUE if is avaibable, otherwise return false
    */
-  function is_available()
+  function is_available ()
   {
-    return (function_exists('sha1') || function_exists('mhash'));
+    return (function_exists ('sha1') || function_exists ('mhash'));
   }
 
   /*!
@@ -53,14 +53,14 @@ class passwordMethodssha extends passwordMethod
    *
    * \param string $pwd Password
    */
-  function generate_hash($pwd)
+  function generate_hash ($pwd)
   {
-    if (function_exists('sha1')) {
+    if (function_exists ('sha1')) {
       $salt = substr(pack('h*', md5(random_int(0, PHP_INT_MAX))), 0, 8);
       $salt = substr(pack('H*', sha1($salt.$pwd)), 0, 4);
       $pwd  = '{SSHA}'.base64_encode(pack('H*', sha1($pwd.$salt)).$salt);
       return $pwd;
-    } elseif (function_exists('mhash')) {
+    } elseif (function_exists ('mhash')) {
       $salt = mhash_keygen_s2k(MHASH_SHA1, $pwd, substr(pack('h*', md5(random_int(0, PHP_INT_MAX))), 0, 8), 4);
       $pwd  = '{SSHA}'.base64_encode(mhash(MHASH_SHA1, $pwd.$salt).$salt);
     } else {
@@ -70,14 +70,14 @@ class passwordMethodssha extends passwordMethod
     return $pwd;
   }
 
-  function checkPassword($pwd, $hash)
+  function checkPassword ($pwd, $hash)
   {
     $hash = base64_decode(substr($hash, 6));
     $salt = substr($hash, 20);
     $hash = substr($hash, 0, 20);
-    if (function_exists('sha1')) {
+    if (function_exists ('sha1')) {
       $nhash = pack('H*', sha1($pwd . $salt));
-    } elseif (function_exists('mhash')) {
+    } elseif (function_exists ('mhash')) {
       $nhash = mhash(MHASH_SHA1, $pwd.$salt);
     } else {
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
@@ -89,7 +89,7 @@ class passwordMethodssha extends passwordMethod
   /*!
    * \brief Get the hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     return 'ssha';
   }
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index acc7541e9..6a0929ff9 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -41,14 +41,14 @@ class passwordMethod
    * \param string $dn The DN
    * \param object $userTab The user main tab object
    */
-  function __construct($dn = '', $userTab = NULL)
+  function __construct ($dn = '', $userTab = NULL)
   {
   }
 
   /*!
    * \brief Get the Hash name
    */
-  static function get_hash_name()
+  static function get_hash_name ()
   {
     trigger_error("get_hash_name can't be called on main class");
   }
@@ -58,7 +58,7 @@ class passwordMethod
    *
    * \return boolean TRUE
    */
-  function need_password()
+  function need_password ()
   {
     return TRUE;
   }
@@ -68,7 +68,7 @@ class passwordMethod
    *
    * \return boolean
    */
-  function is_lockable()
+  function is_lockable ()
   {
     return $this->lockable;
   }
@@ -78,7 +78,7 @@ class passwordMethod
    *
    * \param string $dn The DN
    */
-  function is_locked($dn = "")
+  function is_locked ($dn = "")
   {
     global $config;
     if (!$this->lockable) {
@@ -109,7 +109,7 @@ class passwordMethod
    *
    * \param string $dn
    */
-  function lock_account($dn = "")
+  function lock_account ($dn = "")
   {
     return $this->generic_modify_account($dn, 'LOCK');
   }
@@ -118,7 +118,7 @@ class passwordMethod
    * \brief Unlocks an account which was locked by 'lock_account()'.
    *        For details about the locking mechanism see 'lock_account()'.
    */
-  function unlock_account($dn = "")
+  function unlock_account ($dn = "")
   {
     return $this->generic_modify_account($dn, 'UNLOCK');
   }
@@ -127,7 +127,7 @@ class passwordMethod
    * \brief Unlocks an account which was locked by 'lock_account()'.
    *        For details about the locking mechanism see 'lock_account()'.
    */
-  private function generic_modify_account($dn, $mode)
+  private function generic_modify_account ($dn, $mode)
   {
     global $config;
     if (!$this->lockable) {
@@ -207,7 +207,7 @@ class passwordMethod
   /*!
    * \brief This function returns all loaded classes for password encryption
    */
-  static function get_available_methods()
+  static function get_available_methods ()
   {
     global $class_mapping;
     $ret  = FALSE;
@@ -251,7 +251,7 @@ class passwordMethod
   /*!
    * \brief Get desciption
    */
-  function get_description()
+  function get_description ()
   {
     return "";
   }
@@ -259,7 +259,7 @@ class passwordMethod
   /*!
    * \brief Method to check if a password matches a hash
    */
-  function checkPassword($pwd, $hash)
+  function checkPassword ($pwd, $hash)
   {
     return ($hash == $this->generate_hash($pwd));
   }
@@ -268,7 +268,7 @@ class passwordMethod
   /*!
    * \brief Return true if this password method provides a configuration dialog
    */
-  function is_configurable()
+  function is_configurable ()
   {
     return FALSE;
   }
@@ -276,7 +276,7 @@ class passwordMethod
   /*!
    * \brief Provide a subdialog to configure a password method
    */
-  function configure()
+  function configure ()
   {
     return "";
   }
@@ -287,7 +287,7 @@ class passwordMethod
    *
    * \param string $dn The DN
    */
-  function save($dn)
+  function save ($dn)
   {
   }
 
@@ -299,7 +299,7 @@ class passwordMethod
    *
    * \param string $dn The DN
    */
-  static function get_method($password_hash, $dn = "")
+  static function get_method ($password_hash, $dn = "")
   {
     $methods = passwordMethod::get_available_methods();
 
@@ -324,7 +324,7 @@ class passwordMethod
    *
    * \param string $password_hash
    */
-  static function _extract_method($classname, $password_hash)
+  static function _extract_method ($classname, $password_hash)
   {
     $hash = $classname::get_hash_name();
     if (preg_match("/^\{$hash\}/i", $password_hash)) {
@@ -341,7 +341,7 @@ class passwordMethod
    *
    * \param string $hash
    */
-  static function make_hash($password, $hash)
+  static function make_hash ($password, $hash)
   {
     $methods  = passwordMethod::get_available_methods();
     $tmp      = new $methods[$hash]();
@@ -354,7 +354,7 @@ class passwordMethod
    *
    * \param string $hash
    */
-  function set_hash($hash)
+  function set_hash ($hash)
   {
     $this->hash = $hash;
   }
@@ -363,7 +363,7 @@ class passwordMethod
   /*!
    * \brief Get a hash
    */
-  function get_hash()
+  function get_hash ()
   {
     return $this->hash;
   }
@@ -375,7 +375,7 @@ class passwordMethod
    *
    * \param string $password The password
    */
-  static function is_harmless($password)
+  static function is_harmless ($password)
   {
     global $config;
     if ($config->get_cfg_value("strictPasswordRules") == "TRUE") {
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 52531b460..668d9b505 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -42,7 +42,7 @@ function htmlunescape ($html)
   return html_entity_decode($html, ENT_QUOTES | ENT_HTML5, 'UTF-8');
 }
 
-function html_trace($errstr = "")
+function html_trace ($errstr = "")
 {
   static $hideArgs = [
     'ldap_init'         => [3],
@@ -51,7 +51,7 @@ function html_trace($errstr = "")
     'cred_decrypt'      => [0,1],
     'LDAP/__construct'  => [1],
   ];
-  if (!function_exists('debug_backtrace')) {
+  if (!function_exists ('debug_backtrace')) {
     return  ['', ''];
   }
   $trace = array_slice(debug_backtrace(), 1);
@@ -106,7 +106,7 @@ function html_trace($errstr = "")
       } else {
         $hideArgsIndexes = [];
       }
-      $f = function ($index, $arg) use(&$f, $hideArgsIndexes) {
+      $f = function ($index, $arg) use (&$f, $hideArgsIndexes) {
         static $i = 0;
         if (($i == 0) && in_array($index, $hideArgsIndexes)) {
           return '***';
@@ -175,7 +175,7 @@ function html_trace($errstr = "")
  *
  * \param string $errline The error line
  */
-function gosaRaiseError($errno, $errstr, $errfile, $errline)
+function gosaRaiseError ($errno, $errstr, $errfile, $errline)
 {
   global $error_collector,$config, $error_collector_mailto;
 
@@ -290,13 +290,13 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
 /*!
  * \brief Dummy error handler
  */
-function dummy_error_handler()
+function dummy_error_handler ()
 {
 }
 
 /*! \brief Returns TRUE if SSL was used to contact FD, whether directly or through a proxy
  */
-function sslOn()
+function sslOn ()
 {
   if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
     return (strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') == 0);
@@ -309,7 +309,7 @@ function sslOn()
 
 /*! \brief Returns SSL URL to redirect to
  */
-function sslUrl()
+function sslUrl ()
 {
   $ssl = 'https://';
   if (empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
diff --git a/include/select/class_filterLDAPBlacklist.inc b/include/select/class_filterLDAPBlacklist.inc
index 4603e41b5..c8844e14b 100644
--- a/include/select/class_filterLDAPBlacklist.inc
+++ b/include/select/class_filterLDAPBlacklist.inc
@@ -25,13 +25,13 @@
  */
 class filterLDAPBlacklist {
 
-  static function query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
+  static function query ($parent, $base, $scope, $filter, $attributes, $category, $objectStorage = "")
   {
     $result = filterLDAP::query($parent, $base, $scope, $filter, $attributes, $category, $objectStorage);
     return filterLDAPBlacklist::filterByBlacklist($result);
   }
 
-  static function filterByBlacklist($entries)
+  static function filterByBlacklist ($entries)
   {
     if (session::is_set('filterWhitelist')) {
       $wlist = session::get('filterWhitelist');
diff --git a/include/select/groupSelect/class_groupSelect.inc b/include/select/groupSelect/class_groupSelect.inc
index 5234796a0..2b26752ea 100644
--- a/include/select/groupSelect/class_groupSelect.inc
+++ b/include/select/groupSelect/class_groupSelect.inc
@@ -26,7 +26,7 @@ class groupSelect extends simpleSelectManagement
   protected $objectTypes  = ['group'];
   protected $autoFilter   = FALSE;
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath = get_template_path('group-filter.xml', TRUE, dirname(__FILE__));
 
diff --git a/include/select/userGroupSelect/class_userGroupSelect.inc b/include/select/userGroupSelect/class_userGroupSelect.inc
index 4052d7a5e..cd820399c 100644
--- a/include/select/userGroupSelect/class_userGroupSelect.inc
+++ b/include/select/userGroupSelect/class_userGroupSelect.inc
@@ -26,7 +26,7 @@ class userGroupSelect extends userSelect
   protected $objectTypes = ['user', 'group'];
   protected $autoFilterAttributes = ['dn', 'cn', 'uid', 'description', 'mail'];
 
-  function __construct()
+  function __construct ()
   {
     if (class_available('mixedGroup')) {
       $this->objectTypes = ['user', 'ogroup'];
diff --git a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
index 2ee2c567d..7e14879e1 100644
--- a/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
+++ b/include/simpleplugin/attributes/class_BaseSelectorAttribute.inc
@@ -120,7 +120,7 @@ class BaseSelectorAttribute extends Attribute
     }
   }
 
-  function checkValue($value)
+  function checkValue ($value)
   {
     if (!is_string($value) && (!is_object($value) || !method_exists($value, '__toString' ))) {
       throw new InvalidValueException(_('Base field value should always be a string'));
@@ -165,7 +165,7 @@ class BaseSelectorAttribute extends Attribute
     return $this->renderAcl($display);
   }
 
-  function getHtmlId()
+  function getHtmlId ()
   {
     if (isset($this->baseSelector)) {
       return $this->baseSelector->getInputHtmlId();
@@ -174,7 +174,7 @@ class BaseSelectorAttribute extends Attribute
     }
   }
 
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     if (!$form || $this->visible) {
       parent::serializeAttribute($attributes, $form);
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index e9a8f6f6c..8795e6696 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -45,12 +45,12 @@ class BooleanAttribute extends Attribute
     $this->falseValue = $falseValue;
   }
 
-  function setTemplatable($bool)
+  function setTemplatable ($bool)
   {
     $this->templatable = $bool;
   }
 
-  protected function isTemplatable()
+  protected function isTemplatable ()
   {
     /* Allow to set to %askme% if we are not (de)activating other fields */
     return (!$this->submitForm && empty($this->managedAttributes) && $this->templatable);
diff --git a/include/simpleplugin/attributes/class_CompositeAttribute.inc b/include/simpleplugin/attributes/class_CompositeAttribute.inc
index d24033911..887ec74e9 100644
--- a/include/simpleplugin/attributes/class_CompositeAttribute.inc
+++ b/include/simpleplugin/attributes/class_CompositeAttribute.inc
@@ -90,7 +90,7 @@ class CompositeAttribute extends Attribute
     $this->linearRendering = $bool;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     $res = preg_match($this->readFormat, $value, $m);
     if ($res === 1) {
@@ -112,7 +112,7 @@ class CompositeAttribute extends Attribute
     return array_fill(0, count($this->attributes), '');
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($this->writeFormat === FALSE) {
       return $values;
@@ -213,7 +213,7 @@ class CompositeAttribute extends Attribute
     unset($attribute);
   }
 
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     if ($this->visible) {
       if ($this->linearRendering) {
@@ -228,7 +228,7 @@ class CompositeAttribute extends Attribute
     }
   }
 
-  function getForHtmlId()
+  function getForHtmlId ()
   {
     // Label (if any) should point to the first attribute
     if (isset($this->attributes[0])) {
@@ -238,7 +238,7 @@ class CompositeAttribute extends Attribute
     }
   }
 
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     if ($form) {
       if ($this->visible) {
@@ -261,7 +261,7 @@ class CompositeAttribute extends Attribute
     }
   }
 
-  function renderFormInput()
+  function renderFormInput ()
   {
     $display = "";
     foreach ($this->attributes as &$attribute) {
@@ -274,7 +274,7 @@ class CompositeAttribute extends Attribute
     return $display;
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $ret = [];
     foreach ($this->attributes as &$attribute) {
diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 5e104bcf6..2d2a290c2 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -71,7 +71,7 @@ class DateAttribute extends Attribute
     }
   }
 
-  protected function ldapToDate($ldapValue)
+  protected function ldapToDate ($ldapValue)
   {
     $date = DateTime::createFromFormat($this->format, $ldapValue, new DateTimeZone('UTC'));
     if ($date !== FALSE) {
@@ -82,12 +82,12 @@ class DateAttribute extends Attribute
     }
   }
 
-  protected function dateToLdap($dateValue)
+  protected function dateToLdap ($dateValue)
   {
     return $dateValue->format($this->format);
   }
 
-  function getDateValue()
+  function getDateValue ()
   {
     $value = $this->value;
     if (!($value instanceof DateTime)) {
@@ -169,7 +169,7 @@ class GeneralizedTimeDateAttribute extends DateAttribute
     parent::__construct($label, $description, $ldapName, $required, '', $defaultValue, $acl);
   }
 
-  protected function ldapToDate($ldapValue)
+  protected function ldapToDate ($ldapValue)
   {
     try {
       return LdapGeneralizedTime::fromString($ldapValue);
@@ -179,7 +179,7 @@ class GeneralizedTimeDateAttribute extends DateAttribute
     }
   }
 
-  protected function dateToLdap($dateValue)
+  protected function dateToLdap ($dateValue)
   {
     return LdapGeneralizedTime::toString($dateValue);
   }
@@ -192,7 +192,7 @@ class TimeHisAttribute extends CompositeAttribute
 {
   protected $convert;
 
-  function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
+  function __construct ($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
     $attributes = [
@@ -216,7 +216,7 @@ class TimeHisAttribute extends CompositeAttribute
     $this->setLinearRendering(TRUE);
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     $values = parent::readValues($value);
     if ($this->convert) {
@@ -232,7 +232,7 @@ class TimeHisAttribute extends CompositeAttribute
     return $values;
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($this->convert) {
       $datetime = new DateTime('T'.implode(':', $values), timezone::getDefaultTimeZone());
@@ -246,7 +246,7 @@ class TimeHisAttribute extends CompositeAttribute
     return parent::writeValues($values);
   }
 
-  function displayValue($value)
+  function displayValue ($value)
   {
     $values = parent::readValues($value);
     $datetime = new DateTime('T'.implode(':', $values), timezone::utc());
@@ -266,7 +266,7 @@ class TimeHisAttribute extends CompositeAttribute
  */
 class TimeHiAttribute extends TimeHisAttribute
 {
-  function __construct($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
+  function __construct ($label, $description, $ldapName, $required, $convert = TRUE, $acl = '')
   {
     $this->convert = $convert;
     $attributes = [
@@ -291,7 +291,7 @@ class TimeHiAttribute extends TimeHisAttribute
  */
 class DateTimeAttribute extends CompositeAttribute
 {
-  function __construct($label, $description, $ldapName, $required, $acl = '')
+  function __construct ($label, $description, $ldapName, $required, $acl = '')
   {
     $attributes = [
       new DateAttribute(
diff --git a/include/simpleplugin/attributes/class_FileAttribute.inc b/include/simpleplugin/attributes/class_FileAttribute.inc
index 54ff0aa08..0c5867810 100644
--- a/include/simpleplugin/attributes/class_FileAttribute.inc
+++ b/include/simpleplugin/attributes/class_FileAttribute.inc
@@ -25,7 +25,7 @@ class FileAttribute extends Attribute
 {
   protected $binary = TRUE;
 
-  function loadPostValue()
+  function loadPostValue ()
   {
     $this->postValue = $this->value;
     if (!empty($_FILES[$this->getHtmlId()]['name']) && $this->isVisible()) {
@@ -52,7 +52,7 @@ class FileAttribute extends Attribute
    *
    *  \param filehandle $handle The handle on the opened uploaded file
    */
-  function readFile($handle)
+  function readFile ($handle)
   {
     $postValue = fread($handle, 1024);
     while (!feof($handle)) {
@@ -69,7 +69,7 @@ class FileAttribute extends Attribute
     return $this->renderAcl($display);
   }
 
-  function displayValue($value)
+  function displayValue ($value)
   {
     return sprintf(_('%s (%d bytes)'), $this->getLabel(), mb_strlen($value, '8bit'));
   }
@@ -79,7 +79,7 @@ class FileAttribute extends Attribute
    * \param array &$attributes the attributes array
    * \param boolean $form
    */
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     if (!$form || $this->visible) {
       parent::serializeAttribute($attributes, $form);
@@ -96,7 +96,7 @@ class FileAttribute extends Attribute
    *
    *  \param mixed $value the value
    */
-  function deserializeValue($value)
+  function deserializeValue ($value)
   {
     if ($this->disabled) {
       return sprintf(_('Attribute %s is disabled, its value could not be set'), $this->getLdapName());
@@ -130,7 +130,7 @@ class FileDownloadAttribute extends FileAttribute
     $this->binary     = ($extension != '.txt');
   }
 
-  function computeFilename()
+  function computeFilename ()
   {
     return $this->getLdapName().$this->extension;
   }
@@ -178,7 +178,7 @@ class FileDownloadAttribute extends FileAttribute
     return $this->renderAcl($display);
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id   = $this->getHtmlId();
     $ids  = [];
@@ -192,7 +192,7 @@ class FileDownloadAttribute extends FileAttribute
     return $ids;
   }
 
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     if ($this->upload == FALSE) {
       parent::renderAttribute($attributes, FALSE);
@@ -262,7 +262,7 @@ class FileTextAreaAttribute extends FileDownloadAttribute
     return $this->renderAcl($display).parent::renderFormInput();
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id     = $this->getHtmlId();
     $ids    = parent::htmlIds();
@@ -293,7 +293,7 @@ class ImageAttribute extends FileAttribute
     $this->forceSize  = $forceSize;
   }
 
-  function setPlaceholder($placeholder)
+  function setPlaceholder ($placeholder)
   {
     $this->placeholder = $placeholder;
   }
@@ -439,7 +439,7 @@ class ImageAttribute extends FileAttribute
     return $this->renderAcl($display);
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
     return [$id.'_img',$id,'upload'.$id];
diff --git a/include/simpleplugin/attributes/class_FlagsAttribute.inc b/include/simpleplugin/attributes/class_FlagsAttribute.inc
index 68d01efd9..6c2ad9f7b 100644
--- a/include/simpleplugin/attributes/class_FlagsAttribute.inc
+++ b/include/simpleplugin/attributes/class_FlagsAttribute.inc
@@ -59,7 +59,7 @@ class FlagsAttribute extends StringAttribute
     }
   }
 
-  function getValue()
+  function getValue ()
   {
     $value = '[';
     if (is_object($this->plugin)) {
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index c08350d28..522176c84 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -74,7 +74,7 @@ class anyPhoneSelect extends phoneSelect
  */
 class phoneSelectDialog extends GenericDialog
 {
-  function __construct($simplePlugin, $attribute, $type)
+  function __construct ($simplePlugin, $attribute, $type)
   {
     $this->attribute  = $attribute;
     switch ($type) {
@@ -149,7 +149,7 @@ class PhoneNumberButtonAttribute extends PhoneNumberAttribute
     return $display;
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $ids = parent::htmlIds();
     if ($this->type !== FALSE) {
diff --git a/include/simpleplugin/attributes/class_SelectAttribute.inc b/include/simpleplugin/attributes/class_SelectAttribute.inc
index b3ac11de3..e4797a86f 100644
--- a/include/simpleplugin/attributes/class_SelectAttribute.inc
+++ b/include/simpleplugin/attributes/class_SelectAttribute.inc
@@ -191,7 +191,7 @@ class SelectAttribute extends Attribute
     return $this->renderAcl($display);
   }
 
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     if (!$form || $this->visible) {
       parent::serializeAttribute($attributes, $form);
@@ -206,7 +206,7 @@ class SelectAttribute extends Attribute
   }
 
   /*! \brief Set the size of the HTML input tag, useful to display several options on the screen instead of just one */
-  function setSize($size)
+  function setSize ($size)
   {
     $this->size = $size;
   }
@@ -248,7 +248,7 @@ class ObjectSelectAttribute extends SelectAttribute
     }
   }
 
-  function updateChoices()
+  function updateChoices ()
   {
     $objects = objects::ls($this->objectType, $this->objectAttrs, NULL, $this->objectFilter);
     $this->setChoices(array_keys($objects), array_values($objects));
diff --git a/include/simpleplugin/attributes/class_SetAttribute.inc b/include/simpleplugin/attributes/class_SetAttribute.inc
index d206b8d1c..07698b24c 100644
--- a/include/simpleplugin/attributes/class_SetAttribute.inc
+++ b/include/simpleplugin/attributes/class_SetAttribute.inc
@@ -159,7 +159,7 @@ class SetAttribute extends Attribute
     return $this->renderAcl($display).$attr_display.$this->renderAcl($buttons);
   }
 
-  function renderOnlyFormInput()
+  function renderOnlyFormInput ()
   {
     if (($this->size < 15) && ($this->size < count($this->value))) {
       $this->size = min(15, count($this->value));
@@ -182,7 +182,7 @@ class SetAttribute extends Attribute
     }
     $attribute = $this->attribute;
     return array_map(
-      function ($value) use($attribute)
+      function ($value) use ($attribute)
       {
         return $attribute->displayValue($value);
       },
@@ -190,7 +190,7 @@ class SetAttribute extends Attribute
     );
   }
 
-  function handleEditingValue()
+  function handleEditingValue ()
   {
     if ($this->editingValue === FALSE) {
       $this->attribute->resetToDefault();
@@ -212,7 +212,7 @@ class SetAttribute extends Attribute
     }
   }
 
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     if ($this->attribute === FALSE) {
       return parent::renderAttribute($attributes, $readOnly);
@@ -240,7 +240,7 @@ class SetAttribute extends Attribute
     }
   }
 
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     parent::serializeAttribute($attributes, $form);
     if ($this->attribute === FALSE) {
@@ -257,7 +257,7 @@ class SetAttribute extends Attribute
     }
   }
 
-  function getForHtmlId()
+  function getForHtmlId ()
   {
     // Label should point to the attribute
     if (is_object($this->attribute)) {
@@ -280,7 +280,7 @@ class SetAttribute extends Attribute
     return array_values($this->value);
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
     return array_merge(['add'.$id,'del'.$id,'row'.$id], $this->attribute->htmlIds());
@@ -298,7 +298,7 @@ class SetAttribute extends Attribute
     }
   }
 
-  function getArrayValues()
+  function getArrayValues ()
   {
     $result = [];
     foreach ($this->value as $value) {
@@ -312,7 +312,7 @@ class SetAttribute extends Attribute
     return $result;
   }
 
-  function foreignKeyUpdate($oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($oldvalue, $newvalue, $source)
   {
     foreach ($this->value as $key => &$value) {
       if (($source['FIELD'] == 'dn') && ($source['MODE'] == 'move')) {
@@ -336,17 +336,17 @@ class SetAttribute extends Attribute
     unset($value);
   }
 
-  function foreignKeyCheck($value, $source)
+  function foreignKeyCheck ($value, $source)
   {
     return in_array($value, $this->value);
   }
 
-  function setSize($size)
+  function setSize ($size)
   {
     $this->size = $size;
   }
 
-  function checkValue($value)
+  function checkValue ($value)
   {
     if (!is_array($value)) {
       throw new InvalidValueException(sprintf(_('SetAttribute "%s" was set to a non-compatible value'), $this->getLabel()));
@@ -378,17 +378,17 @@ class OrderedArrayAttribute extends SetAttribute
     $this->edit_enabled = $edit_enabled;
   }
 
-  function setHeight($h)
+  function setHeight ($h)
   {
     $this->height = $h;
   }
 
-  function setHeaders($h)
+  function setHeaders ($h)
   {
     $this->headers = $h;
   }
 
-  function readValue($value)
+  function readValue ($value)
   {
     if ($this->order) {
       return preg_split('/:/', $value, 2);
@@ -397,7 +397,7 @@ class OrderedArrayAttribute extends SetAttribute
     }
   }
 
-  function writeValue($key, $value)
+  function writeValue ($key, $value)
   {
     if ($this->order) {
       return $key.":".$value;
@@ -462,7 +462,7 @@ class OrderedArrayAttribute extends SetAttribute
     return '{$div_'.$id.'}'."\n";
   }
 
-  protected function genRowIcons($key, $value)
+  protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
 
@@ -523,7 +523,7 @@ class OrderedArrayAttribute extends SetAttribute
     return  [$img, $nbicons];
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     $this->attribute->setValue($value);
     return $this->attribute->getArrayValue();
@@ -549,7 +549,7 @@ class OrderedArrayAttribute extends SetAttribute
     }
   }
 
-  protected function handlePostValueActions($id, $postValue)
+  protected function handlePostValueActions ($id, $postValue)
   {
     if ($this->order) {
       if (preg_match('/^'.$id.'_up_/', $postValue)) {
@@ -588,7 +588,7 @@ class OrderedArrayAttribute extends SetAttribute
     return FALSE;
   }
 
-  protected function handleAddAndEditValue()
+  protected function handleAddAndEditValue ()
   {
     $id = $this->getHtmlId();
     if ($this->attribute === FALSE) {
@@ -609,7 +609,7 @@ class OrderedArrayAttribute extends SetAttribute
     }
   }
 
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
     $this->editingValue = $this->value[$key];
     $this->delPostValue($key);
@@ -624,7 +624,7 @@ class OrderedArrayAttribute extends SetAttribute
     }
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id   = $this->getHtmlId();
     $ids  = ['add'.$id];
diff --git a/include/simpleplugin/attributes/class_StringAttribute.inc b/include/simpleplugin/attributes/class_StringAttribute.inc
index 452239369..a1cebfda5 100644
--- a/include/simpleplugin/attributes/class_StringAttribute.inc
+++ b/include/simpleplugin/attributes/class_StringAttribute.inc
@@ -108,7 +108,7 @@ class StringAttribute extends Attribute
     return $this->autocomplete;
   }
 
-  function checkValue($value)
+  function checkValue ($value)
   {
     if (!is_scalar($value) && (!is_object($value) || !method_exists($value, '__toString' ))) {
       throw new InvalidValueException(sprintf(_('StringAttribute "%s" was set to a non-compatible value'), $this->getLabel()));
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index be4b7a959..f9d9565cc 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -567,7 +567,7 @@ class Attribute
    *
    *  \param bool $readOnly should we show text or input
    */
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     if ($this->visible) {
       if ($readOnly) {
@@ -602,7 +602,7 @@ class Attribute
    * \param array &$attributes the attributes array
    * \param boolean $form
    */
-  function serializeAttribute(&$attributes, $form = TRUE)
+  function serializeAttribute (&$attributes, $form = TRUE)
   {
     if (!$form || $this->visible) {
       $class = get_class($this);
@@ -635,7 +635,7 @@ class Attribute
    *
    *  \param mixed $value the value
    */
-  function deserializeValue($value)
+  function deserializeValue ($value)
   {
     if ($this->disabled) {
       return sprintf(_('Attribute %s is disabled, its value could not be set'), $this->getLdapName());
@@ -647,7 +647,7 @@ class Attribute
    *
    *  \param string $display the display information to pass through ACL
    */
-  function renderAcl($display)
+  function renderAcl ($display)
   {
     return '{render aclName="'.$this->getAcl().'" acl=$'.$this->getAcl()."ACL}\n$display\n{/render}";
   }
@@ -677,7 +677,7 @@ class Attribute
     ));
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     return [$this->getHtmlId()];
   }
@@ -708,7 +708,7 @@ class Attribute
     return $this->renderFormInput();
   }
 
-  function foreignKeyUpdate($oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($oldvalue, $newvalue, $source)
   {
     if ($source['MODE'] == 'move') {
       if ($source['FIELD'] == 'dn') {
@@ -723,12 +723,12 @@ class Attribute
     }
   }
 
-  function foreignKeyCheck($value, $source)
+  function foreignKeyCheck ($value, $source)
   {
     return ($this->getValue() == $value);
   }
 
-  protected function renderInputField($type, $name, $attributes = [])
+  protected function renderInputField ($type, $name, $attributes = [])
   {
     $input  = '<input type="'.$type.'" '.
               'name="'.$name.'" id="'.$name.'"'.
@@ -792,7 +792,7 @@ class FakeAttribute extends Attribute
     $this->setInLdap(FALSE);
   }
 
-  function renderAttribute(&$attributes, $readOnly)
+  function renderAttribute (&$attributes, $readOnly)
   {
     $attributes[$this->getLdapName()] = $this->getValue();
   }
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index 6f0dadf7a..8e11a2774 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -29,7 +29,7 @@ class GenericDialog
   protected $post_cancel = 'add_cancel';
   protected $post_finish = 'add_finish';
 
-  function __construct($simplePlugin, $attribute)
+  function __construct ($simplePlugin, $attribute)
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass();
@@ -264,7 +264,7 @@ class DialogAttribute extends SetAttribute
     return $buttons;
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
     $ids = ['add'.$id.'_dialog','del'.$id,'row'.$id];
@@ -311,7 +311,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
     }
   }
 
-  protected function handleEdit($key)
+  protected function handleEdit ($key)
   {
     $this->editingValue = $this->value[$key];
     $this->delPostValue($key);
@@ -322,7 +322,7 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
   {
   }
 
-  function addValue($value)
+  function addValue ($value)
   {
     $this->value[] = $value;
     $this->reIndexValues();
@@ -337,14 +337,14 @@ class DialogOrderedArrayAttribute extends OrderedArrayAttribute
     );
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $ids = parent::htmlIds();
     $ids[0] .= '_dialog';
     return $ids;
   }
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     /* Convert text value to displayable array value */
     die('Pure virtual method');
@@ -450,7 +450,7 @@ class GenericDialogAttribute extends DialogAttribute
     }
   }
 
-  function foreignKeyUpdate($oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($oldvalue, $newvalue, $source)
   {
     foreach ($this->value as $key => &$value) {
       if (($source['FIELD'] == 'dn') && ($source['MODE'] == 'move')) {
@@ -619,7 +619,7 @@ class MailsAttribute extends DialogAttribute
     return $buttons;
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id = $this->getHtmlId();
     return ['add'.$id,'add'.$id.'_dialog','del'.$id,'row'.$id];
@@ -830,7 +830,7 @@ class UserAttribute extends DialogButtonAttribute
     }
   }
 
-  public function htmlIds()
+  public function htmlIds ()
   {
     $id   = $this->getHtmlId();
     $ids  = [$id.'_dialog'];
@@ -851,7 +851,7 @@ class GenericSimplePluginDialog extends GenericDialog
 {
   protected $initialDialogValue = NULL;
 
-  function __construct($simplePlugin, $attribute, $value = [])
+  function __construct ($simplePlugin, $attribute, $value = [])
   {
     $this->attribute  = $attribute;
     $this->dialog     = new $this->dialogClass('new');
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index 987ab3850..f0553df61 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -143,18 +143,18 @@ class CharSeparatedCompositeAttribute extends CompositeAttribute
 {
   private $sep;
 
-  function __construct($description, $ldapName, $attributes, $sep, $acl = "", $label = "Composite attribute")
+  function __construct ($description, $ldapName, $attributes, $sep, $acl = "", $label = "Composite attribute")
   {
     parent::__construct($description, $ldapName, $attributes, '', '', $acl, $label);
     $this->sep = $sep;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     return explode($this->sep, $value);
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     return join($this->sep, $values);
   }
@@ -165,7 +165,7 @@ class CharSeparatedCompositeAttribute extends CompositeAttribute
  */
 class PipeSeparatedCompositeAttribute extends CharSeparatedCompositeAttribute
 {
-  function __construct($description, $ldapName, $attributes, $acl = "", $label = "Composite attribute")
+  function __construct ($description, $ldapName, $attributes, $acl = "", $label = "Composite attribute")
   {
     parent::__construct($description, $ldapName, $attributes, '|', $acl, $label);
   }
@@ -178,7 +178,7 @@ class CommaListAttribute extends CompositeAttribute
 {
   private $sep = ',';
 
-  function __construct($ldapName, $attribute, $sep = ',')
+  function __construct ($ldapName, $attribute, $sep = ',')
   {
     parent::__construct(
       $attribute->getDescription(), $ldapName,
@@ -189,7 +189,7 @@ class CommaListAttribute extends CompositeAttribute
     $this->sep = $sep;
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     if ($value == '') {
       return [[]];
@@ -198,7 +198,7 @@ class CommaListAttribute extends CompositeAttribute
     }
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     return join($this->sep, $values[0]);
   }
@@ -223,7 +223,7 @@ class UnitIntAttribute extends CompositeAttribute
     $this->setRequired($required); /* As we use linear rendering we want the asterisk in the label if required */
   }
 
-  function readValues($value)
+  function readValues ($value)
   {
     if ($value === '') {
       return ['', 0];
@@ -242,7 +242,7 @@ class UnitIntAttribute extends CompositeAttribute
     return [$value / $choices[$i], $choices[$i]];
   }
 
-  function writeValues($values)
+  function writeValues ($values)
   {
     if ($values[0] === '') {
       return '';
@@ -250,7 +250,7 @@ class UnitIntAttribute extends CompositeAttribute
     return $values[0] * $values[1];
   }
 
-  function displayValue($value)
+  function displayValue ($value)
   {
     $values = $this->readValues($value);
     return $values[0].$this->attributes[1]->displayValue($values[1]);
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index dc3d03d4e..ac57322fc 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -60,7 +60,7 @@ class multiPlugin extends simplePlugin
     }
   }
 
-  function execute()
+  function execute ()
   {
     $display = "";
 
@@ -103,7 +103,7 @@ class multiPlugin extends simplePlugin
 
 
   /* Save data to object */
-  function save_object()
+  function save_object ()
   {
     foreach ($this->plugin as &$plug) {
       $plug->save_object();
@@ -111,7 +111,7 @@ class multiPlugin extends simplePlugin
     unset($plug);
   }
 
-  function check()
+  function check ()
   {
     $message = parent::check();
 
@@ -126,7 +126,7 @@ class multiPlugin extends simplePlugin
     return $message;
   }
 
-  function set_acl_category($cat)
+  function set_acl_category ($cat)
   {
     parent::set_acl_category($cat);
     foreach ($this->plugin as &$plug) {
@@ -135,7 +135,7 @@ class multiPlugin extends simplePlugin
     unset($plug);
   }
 
-  function set_acl_base($base)
+  function set_acl_base ($base)
   {
     parent::set_acl_base($base);
     foreach ($this->plugin as &$plug) {
@@ -154,7 +154,7 @@ class multiPlugin extends simplePlugin
   }
 
   /* Save to LDAP */
-  function save()
+  function save ()
   {
     $errors = [];
     /* Save objects */
@@ -173,7 +173,7 @@ class multiPlugin extends simplePlugin
     return $errors;
   }
 
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
     $errors = [];
     /* Remove objects */
@@ -188,7 +188,7 @@ class multiPlugin extends simplePlugin
     return $errors;
   }
 
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template ($attrs, $skip = [])
   {
     /* Adapt objects */
     foreach ($this->plugin as &$plug) {
@@ -198,7 +198,7 @@ class multiPlugin extends simplePlugin
     unset($plug);
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     $this->dn = 'new';
     foreach ($this->plugin as &$plug) {
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index a25077180..67acc110d 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -34,7 +34,7 @@ class templateDialog
   protected $post_finish = 'template_continue';
   protected $post_cancel = 'template_cancel';
 
-  function __construct($simpleManagement, $type, $dn = NULL, $target = NULL)
+  function __construct ($simpleManagement, $type, $dn = NULL, $target = NULL)
   {
     $this->simpleManagement = $simpleManagement;
     $this->type             = $type;
@@ -200,7 +200,7 @@ class simpleManagement
   public static $skipTemplates = TRUE;
   public static $skipSnapshots = FALSE;
 
-  function __construct()
+  function __construct ()
   {
     global $config;
 
@@ -478,12 +478,12 @@ class simpleManagement
     return $data;
   }
 
-  function getHeadpage()
+  function getHeadpage ()
   {
     return $this->headpage;
   }
 
-  function getFilter()
+  function getFilter ()
   {
     return $this->filter;
   }
@@ -493,7 +493,7 @@ class simpleManagement
    *
    * \param object $filter The new filter
    */
-  function setFilter($filter)
+  function setFilter ($filter)
   {
     $this->filter = $filter;
   }
@@ -505,17 +505,17 @@ class simpleManagement
    *          When the action/event new is send, the method 'createUser'
    *          will be called.
    */
-  function registerAction($action, $target)
+  function registerAction ($action, $target)
   {
     $this->actions[$action] = $target;
   }
 
-  function getType($dn)
+  function getType ($dn)
   {
     return $this->getHeadpage()->getType($dn);
   }
 
-  function renderList()
+  function renderList ()
   {
     global $config;
     $smarty = get_smarty();
@@ -542,7 +542,7 @@ class simpleManagement
    * \brief  Execute this plugin
    *          Handle actions/events, locking, snapshots, dialogs, tabs,...
    */
-  function execute()
+  function execute ()
   {
     // Ensure that html posts and gets are kept even if we see a 'Entry islocked' dialog.
     $vars = ['/^act$/','/^listing/','/^PID$/'];
@@ -613,7 +613,7 @@ class simpleManagement
   /*!
    * \brief  Generates the plugin header which is displayed whenever a tab object is opened.
    */
-  protected function getHeader()
+  protected function getHeader ()
   {
     if ($this->skipHeader) {
       return '';
@@ -632,7 +632,7 @@ class simpleManagement
   /*!
    * \brief  Generates the footer which is used whenever a tab object is displayed.
    */
-  protected function getTabFooter()
+  protected function getTabFooter ()
   {
     // Do not display tab footer for non tab objects
     if (!($this->tabObject instanceOf simpleTabs)) {
@@ -680,7 +680,7 @@ class simpleManagement
    *
    * \param  Array   $all     A combination of both 'action' and 'target'.
    */
-  function newEntry($action, array $target, array $all)
+  function newEntry ($action, array $target, array $all)
   {
     $type   = strtoupper(preg_replace('/^new_/', '', $action));
 
@@ -695,7 +695,7 @@ class simpleManagement
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "Create new entry initiated!");
   }
 
-  function newEntryTemplate($action, array $target, array $all)
+  function newEntryTemplate ($action, array $target, array $all)
   {
     if (static::$skipTemplates) {
       return;
@@ -705,7 +705,7 @@ class simpleManagement
     $this->tabObject->setTemplateMode('template_cn');
   }
 
-  function newEntryFromTemplate($action, array $target, array $all)
+  function newEntryFromTemplate ($action, array $target, array $all)
   {
     if (static::$skipTemplates) {
       return;
@@ -727,7 +727,7 @@ class simpleManagement
     $this->dialogObject = new templateDialog($this, $type, $dn);
   }
 
-  function applyTemplateToEntry($action, array $target, array $all)
+  function applyTemplateToEntry ($action, array $target, array $all)
   {
     global $ui;
     if (static::$skipTemplates) {
@@ -786,7 +786,7 @@ class simpleManagement
    *          - Calls 'simpleTabs::save' to save back object modifications (e.g. to ldap).
    *          - Calls 'simpleManagement::closeDialogs' to return to the object listing.
    */
-  protected function saveChanges()
+  protected function saveChanges ()
   {
     if (($this->tabObject instanceOf simpleTabs) && ($this->dialogObject instanceOf templateDialog)) {
       $this->tabObject->save_object();
@@ -822,7 +822,7 @@ class simpleManagement
   /*!
    *  \brief  Save object modifications and keep dialogs opened
    */
-  protected function applyChanges()
+  protected function applyChanges ()
   {
     if ($this->tabObject instanceOf simpleTabs) {
       $this->tabObject->save_object();
@@ -840,7 +840,7 @@ class simpleManagement
    * \brief  Editing an object was caneled.
    *          Close dialogs/tabs and remove locks.
    */
-  protected function cancelEdit()
+  protected function cancelEdit ()
   {
     if (($this->tabObject instanceOf simpleTabs) && ($this->dialogObject instanceOf templateDialog)) {
       $this->handleTemplateApply(TRUE);
@@ -859,7 +859,7 @@ class simpleManagement
    *
    * \param  Array   $all     A combination of both 'action' and 'target'.
    */
-  function editEntry($action, array $target, array $all)
+  function editEntry ($action, array $target, array $all)
   {
     global $ui;
     // Do not create a new tabObject while there is already one opened,
@@ -906,7 +906,7 @@ class simpleManagement
    * \brief  Detects actions/events send by the ui
    *           and the corresponding targets.
    */
-  function detectPostActions()
+  function detectPostActions ()
   {
     if (!is_object($this->headpage)) {
       trigger_error("No valid headpage given....!");
@@ -935,7 +935,7 @@ class simpleManagement
   /*!
    *  \brief  Calls the registered method for a given action/event.
    */
-  function handleActions($action)
+  function handleActions ($action)
   {
     // Start action
     if (isset($this->actions[$action['action']])) {
@@ -947,7 +947,7 @@ class simpleManagement
     }
   }
 
-  protected function handleSubAction($all)
+  protected function handleSubAction ($all)
   {
     if (preg_match('/^tab_/', $all['subaction'])) {
       $tab = preg_replace('/^tab_/', '', $all['subaction']);
@@ -961,7 +961,7 @@ class simpleManagement
     return FALSE;
   }
 
-  function openTabObject($object, $base)
+  function openTabObject ($object, $base)
   {
     $this->tabObject = $object;
     $this->tabObject->set_acl_base($base);
@@ -972,7 +972,7 @@ class simpleManagement
    * \brief  This method closes dialogs
    *          and cleans up the cached object info and the ui.
    */
-  public function closeDialogs()
+  public function closeDialogs ()
   {
     $this->last_dn  = $this->dn;
     $this->dn       = "";
@@ -994,7 +994,7 @@ class simpleManagement
    *         concurrent modifications.
    *         This locks will automatically removed here.
    */
-  function remove_lock()
+  function remove_lock ()
   {
     if (!empty($this->dn) && $this->dn != "new") {
       del_lock($this->dn);
@@ -1004,7 +1004,7 @@ class simpleManagement
     }
   }
 
-  function is_modal_dialog()
+  function is_modal_dialog ()
   {
     return (is_object($this->tabObject) || is_object($this->dialogObject));
   }
@@ -1012,7 +1012,7 @@ class simpleManagement
   /*! \brief    Queue selected objects to be removed.
    *            Checks ACLs, Locks and ask for confirmation.
    */
-  protected function removeEntryRequested($action, array $target, array $all)
+  protected function removeEntryRequested ($action, array $target, array $all)
   {
     global $ui;
     $disallowed = [];
@@ -1079,7 +1079,7 @@ class simpleManagement
     }
   }
 
-  function removeEntryConfirmed($action, array $target, array $all)
+  function removeEntryConfirmed ($action, array $target, array $all)
   {
     global $ui;
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal confirmed!");
@@ -1121,7 +1121,7 @@ class simpleManagement
    *
    * \param  Array   $target  A list of object dns, which should be affected by this method.
    */
-  function createSnapshotDialog($action, array $target)
+  function createSnapshotDialog ($action, array $target)
   {
     global $config, $ui;
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, 'Snaptshot creation initiated!');
@@ -1150,7 +1150,7 @@ class simpleManagement
    *
    * \param  Array   $target  A list of object dns, which should be affected by this method.
    */
-  function restoreSnapshotDialog($action, array $target)
+  function restoreSnapshotDialog ($action, array $target)
   {
     global $config, $ui;
     // Set current restore base for snapshot handling.
@@ -1196,7 +1196,7 @@ class simpleManagement
    *  @param  array   $target  A list of object dns, which should be affected by this method.
    *  @param  array   $all     A combination of both 'action' and 'target'.
    */
-  function copyPasteHandler($action = '', array $target = [], array $all = [])
+  function copyPasteHandler ($action = '', array $target = [], array $all = [])
   {
     global $ui;
     // Return without any actions while copy&paste handler is disabled.
@@ -1254,7 +1254,7 @@ class simpleManagement
   /*!
    * \brief  Creates a new snapshot entry
    */
-  function createSnapshot($dn, $description)
+  function createSnapshot ($dn, $description)
   {
     global $ui;
     if ($this->dn !== $dn) {
@@ -1275,7 +1275,7 @@ class simpleManagement
    *
    * \param  String  $dn  The DN of the snapshot
    */
-  function restoreSnapshot($dn)
+  function restoreSnapshot ($dn)
   {
     global $ui;
     if (!empty($dn) && $ui->allow_snapshot_restore($dn, $this->dialogObject->aclCategory, $this->dialogObject->global)) {
@@ -1291,7 +1291,7 @@ class simpleManagement
   /*!
    * \brief Get all deleted snapshots
    */
-  function getAllDeletedSnapshots()
+  function getAllDeletedSnapshots ()
   {
     $tmp = [];
     $snapshotBases = $this->snapHandler->getSnapshotBases();
@@ -1310,7 +1310,7 @@ class simpleManagement
    *
    * \param string $dn The DN
    */
-  function getAvailableSnapsShots($dn)
+  function getAvailableSnapsShots ($dn)
   {
     return $this->snapHandler->getAvailableSnapsShots($dn);
   }
@@ -1320,7 +1320,7 @@ class simpleManagement
    *
    * \param string $dn DN of the snapshot
    */
-  function removeSnapshot($dn)
+  function removeSnapshot ($dn)
   {
     global $ui;
     if (!empty($dn) && $ui->allow_snapshot_delete($dn, $this->dialogObject->aclCategory)) {
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 19d85044c..9735c22d8 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -295,7 +295,7 @@ class simplePlugin
     }
   }
 
-  protected function loadAttributes()
+  protected function loadAttributes ()
   {
     // We load attributes values
     // First the one flagged as preInit
@@ -318,7 +318,7 @@ class simplePlugin
     unset($sectionInfo);
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
     $found = TRUE;
     foreach ($this->objectclasses as $obj) {
@@ -367,7 +367,7 @@ class simplePlugin
     }
   }
 
-  protected function templateLoadAttrs(array $template_attrs)
+  protected function templateLoadAttrs (array $template_attrs)
   {
     if ($this->mainTab) {
       $this->_template_cn = $template_attrs['cn'][0];
@@ -375,7 +375,7 @@ class simplePlugin
     $this->attrs = templateHandling::fieldsFromLDAP($template_attrs);
   }
 
-  protected function templateSaveAttrs()
+  protected function templateSaveAttrs ()
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -413,7 +413,7 @@ class simplePlugin
    * It calls the getValue method on the concerned attribute
    * It also adds the $plugin->attribtues syntax to get attributes list
    */
-  public function __get($name)
+  public function __get ($name)
   {
     if ($name == 'attributes') {
       $plugin = $this;
@@ -435,7 +435,7 @@ class simplePlugin
 
     It calls the setValue method on the concerned attribute
    */
-  public function __set($name, $value)
+  public function __set ($name, $value)
   {
     if ($name == 'attributes') {
       trigger_error('Tried to set obsolete attribute "attributes" (it is now dynamic)');
@@ -447,11 +447,11 @@ class simplePlugin
     }
   }
 
-  /*! \brief This function allows to use the syntax isset($plugin->attributeName)
+  /*! \brief This function allows to use the syntax isset ($plugin->attributeName)
 
     It returns FALSE if the attribute has an empty value.
    */
-  public function __isset($name)
+  public function __isset ($name)
   {
     if ($name == 'attributes') {
       return TRUE;
@@ -461,7 +461,7 @@ class simplePlugin
 
   /*! \brief This function returns the dn this object should have
    */
-  public function compute_dn()
+  public function compute_dn ()
   {
     global $config;
     if (!$this->mainTab) {
@@ -505,7 +505,7 @@ class simplePlugin
     return $attr.'='.ldap_escape_dn($this->attributesAccess[$attr]->computeLdapValue()).','.$ou.$base;
   }
 
-  protected function addAttribute($section, $attr)
+  protected function addAttribute ($section, $attr)
   {
     $name = $attr->getLdapName();
     $this->attributesInfo[$section]['attrs'][$name] = $attr;
@@ -514,7 +514,7 @@ class simplePlugin
     unset($this->$name);
   }
 
-  protected function removeAttribute($section, $id)
+  protected function removeAttribute ($section, $id)
   {
     unset($this->attributesInfo[$section]['attrs'][$id]);
     unset($this->attributesAccess[$id]);
@@ -529,7 +529,7 @@ class simplePlugin
    *
    * \return array [dn] => "..name"  // All deps. we are allowed to act on.
   */
-  function get_allowed_bases()
+  function get_allowed_bases ()
   {
     global $config;
     $deps = [];
@@ -557,7 +557,7 @@ class simplePlugin
    *
    * \param string $base
    */
-  function set_acl_base($base)
+  function set_acl_base ($base)
   {
     $this->acl_base = $base;
   }
@@ -567,7 +567,7 @@ class simplePlugin
    *
    * \param string $category
    */
-  function set_acl_category($category)
+  function set_acl_category ($category)
   {
     $this->acl_category = "$category/";
   }
@@ -581,7 +581,7 @@ class simplePlugin
     *
     * \return TRUE on success, error string on failure
     */
-  function move($src_dn, $dst_dn)
+  function move ($src_dn, $dst_dn)
   {
     global $config, $ui;
 
@@ -622,7 +622,7 @@ class simplePlugin
     return TRUE;
   }
 
-  function getRequiredAttributes()
+  function getRequiredAttributes ()
   {
     $tmp = [];
     foreach ($this->attributesAccess as $attr) {
@@ -646,7 +646,7 @@ class simplePlugin
   }
 
   /*! \brief Indicates if this object is opened as read-only (because of locks) */
-  function readOnly()
+  function readOnly ()
   {
     return $this->read_only;
   }
@@ -716,7 +716,7 @@ class simplePlugin
     return $this->header.$smarty->fetch($this->templatePath);
   }
 
-  public function getDisplayHeaderInfos()
+  public function getDisplayHeaderInfos ()
   {
     $plInfo   = pluglist::pluginInfos(get_class($this));
     $disabled = $this->acl_skip_write();
@@ -776,7 +776,7 @@ class simplePlugin
    *
    * \param string $name The html name of the input, defaults to modify_state
    */
-  function show_header($button_text, $text, $plugin_enabled, $button_disabled = FALSE, $name = 'modify_state')
+  function show_header ($button_text, $text, $plugin_enabled, $button_disabled = FALSE, $name = 'modify_state')
   {
     if ($button_disabled || ((!$this->acl_is_createable() && !$plugin_enabled) || (!$this->acl_is_removeable() && $plugin_enabled))) {
         $state = 'disabled="disabled"';
@@ -793,7 +793,7 @@ class simplePlugin
    *
    * \param mixed $attr Attribute object or name (in this case it will be fetched from attributesAccess)
    */
-  function attrIsWriteable($attr)
+  function attrIsWriteable ($attr)
   {
     if (!is_object($attr)) {
       $attr = $this->attributesAccess[$attr];
@@ -808,7 +808,7 @@ class simplePlugin
     return $this->acl_is_writeable($attr->getAcl(), $this->acl_skip_write());
   }
 
-  function renderAttributes($readOnly = FALSE)
+  function renderAttributes ($readOnly = FALSE)
   {
     global $ui;
     $smarty = get_smarty();
@@ -862,7 +862,7 @@ class simplePlugin
     $smarty->assign("sections", $sections);
   }
 
-  function inheritanceDisplay()
+  function inheritanceDisplay ()
   {
     if (!$this->member_of_group) {
       return "";
@@ -906,7 +906,7 @@ class simplePlugin
   }
 
   /*! \brief Can we write the attribute */
-  function acl_is_writeable($attribute, $skipWrite = FALSE)
+  function acl_is_writeable ($attribute, $skipWrite = FALSE)
   {
     return preg_match('/w/', $this->aclGetPermissions($attribute, NULL, $skipWrite));
   }
@@ -916,7 +916,7 @@ class simplePlugin
    *
    * \param string $attribute
    */
-  function acl_is_readable($attribute)
+  function acl_is_readable ($attribute)
   {
     return preg_match('/r/', $this->aclGetPermissions($attribute));
   }
@@ -926,7 +926,7 @@ class simplePlugin
    *
    * \param string $base Empty string
    */
-  function acl_is_createable($base = NULL)
+  function acl_is_createable ($base = NULL)
   {
     return preg_match('/c/', $this->aclGetPermissions('0', $base));
   }
@@ -936,7 +936,7 @@ class simplePlugin
    *
    * \param string $base Empty string
    */
-  function acl_is_removeable($base = NULL)
+  function acl_is_removeable ($base = NULL)
   {
     return preg_match('/d/', $this->aclGetPermissions('0', $base));
   }
@@ -946,13 +946,13 @@ class simplePlugin
    *
    * \param string $base Empty string
    */
-  function acl_is_moveable($base = NULL)
+  function acl_is_moveable ($base = NULL)
   {
     return preg_match('/m/', $this->aclGetPermissions('0', $base));
   }
 
   /*! \brief Get the acl permissions for an attribute or the plugin itself */
-  function aclGetPermissions($attribute = '0', $base = NULL, $skipWrite = FALSE)
+  function aclGetPermissions ($attribute = '0', $base = NULL, $skipWrite = FALSE)
   {
     if (isset($this->parent) && isset($this->parent->ignoreAcls) && $this->parent->ignoreAcls) {
       return 'cdmr'.($skipWrite ? '' : 'w');
@@ -967,7 +967,7 @@ class simplePlugin
 
   /*! \brief This function removes the object from LDAP
    */
-  function remove($fulldelete = FALSE)
+  function remove ($fulldelete = FALSE)
   {
     if (!$this->initially_was_account) {
       return [];
@@ -1112,7 +1112,7 @@ class simplePlugin
     }
   }
 
-  protected function prepareSavedAttributes()
+  protected function prepareSavedAttributes ()
   {
     /* Prepare saved attributes */
     $this->saved_attributes = $this->attrs;
@@ -1146,7 +1146,7 @@ class simplePlugin
    * \brief Remove attributes, empty arrays, arrays
    * single attributes that do not differ
    */
-  function cleanup()
+  function cleanup ()
   {
     foreach ($this->attrs as $index => $value) {
 
@@ -1188,7 +1188,7 @@ class simplePlugin
     }
   }
 
-  function prepareNextCleanup()
+  function prepareNextCleanup ()
   {
     /* Update saved attributes and ensure that next cleanups will be successful too */
     foreach ($this->attrs as $name => $value) {
@@ -1233,7 +1233,7 @@ class simplePlugin
     return [];
   }
 
-  protected function shouldSave()
+  protected function shouldSave ()
   {
     if ($this->mainTab && !$this->initially_was_account) {
       return TRUE;
@@ -1242,7 +1242,7 @@ class simplePlugin
   }
 
   /* Used by prepare_save and template::apply */
-  public function mergeObjectClasses(array $oc)
+  public function mergeObjectClasses (array $oc)
   {
     return array_merge_unique($oc, $this->objectclasses);
   }
@@ -1343,7 +1343,7 @@ class simplePlugin
    *
    * This function calls hooks, update foreign keys and log modification
    */
-  protected function post_save()
+  protected function post_save ()
   {
     /* Propagate and log the event */
     if ($this->initially_was_account) {
@@ -1367,7 +1367,7 @@ class simplePlugin
    *
    * \param  array  $addAttrs
    */
-  protected function handle_hooks($when, $mode, array $addAttrs = [])
+  protected function handle_hooks ($when, $mode, array $addAttrs = [])
   {
     switch ($mode) {
       case 'add':
@@ -1388,7 +1388,7 @@ class simplePlugin
   /*! \brief Forward command execution requests
    *         to the post hook execution method.
    */
-  function handle_post_events($mode, array $addAttrs = [])
+  function handle_post_events ($mode, array $addAttrs = [])
   {
     /* Update foreign keys */
     if ($mode == 'remove') {
@@ -1403,7 +1403,7 @@ class simplePlugin
    *  \brief Forward command execution requests
    *         to the pre hook execution method.
    */
-  function handle_pre_events($mode, array $addAttrs = [])
+  function handle_pre_events ($mode, array $addAttrs = [])
   {
     global $config;
 
@@ -1423,7 +1423,7 @@ class simplePlugin
    *           Replaces placeholder by class values of this plugin instance.
    *       Allows to a add special replacements.
    */
-  function callHook($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
+  function callHook ($cmd, array $addAttrs = [], &$returnOutput = [], &$returnCode = NULL)
   {
     if ($this->is_template) {
       return [];
@@ -1544,7 +1544,7 @@ class simplePlugin
     );
   }
 
-  function browseForeignKeys($mode, $param1 = NULL, $param2 = NULL)
+  function browseForeignKeys ($mode, $param1 = NULL, $param2 = NULL)
   {
     global $config, $plist;
 
@@ -1818,7 +1818,7 @@ class simplePlugin
    *
    * \param string $base
    */
-  function create_unique_dn($attribute, $base)
+  function create_unique_dn ($attribute, $base)
   {
     global $config;
     $ldap = $config->get_ldap_link();
@@ -1861,7 +1861,7 @@ class simplePlugin
    *
    * \param array $skip A new array
    */
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template ($attrs, $skip = [])
   {
     $this->attrs = $attrs;
 
@@ -1883,7 +1883,7 @@ class simplePlugin
   /*!
    * \brief This function is called on the copied object to set its dn to where it will be saved
    */
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     $this->dn       = 'new';
     $this->orig_dn  = $this->dn;
@@ -1892,17 +1892,17 @@ class simplePlugin
     $this->initially_was_account  = FALSE;
   }
 
-  protected function attributeHaveChanged($field)
+  protected function attributeHaveChanged ($field)
   {
     return $this->attributesAccess[$field]->hasChanged();
   }
 
-  protected function attributeValue($field)
+  protected function attributeValue ($field)
   {
     return $this->attributesAccess[$field]->getValue();
   }
 
-  protected function attributeInitialValue($field)
+  protected function attributeInitialValue ($field)
   {
     return $this->attributesAccess[$field]->getInitialValue();
   }
@@ -1930,7 +1930,7 @@ class simplePlugin
     return $this->attributesAccess[$field]->foreignKeyCheck($value, $source);
   }
 
-  function deserializeValues($values, $checkAcl = TRUE)
+  function deserializeValues ($values, $checkAcl = TRUE)
   {
     foreach ($values as $name => $value) {
       if (isset($this->attributesAccess[$name])) {
@@ -1950,7 +1950,7 @@ class simplePlugin
   }
 
   /* Returns TRUE if this attribute should be asked in the creation by template dialog */
-  function showInTemplate($attr, $templateAttrs)
+  function showInTemplate ($attr, $templateAttrs)
   {
     if (isset($templateAttrs[$attr])) {
       return FALSE;
@@ -1958,7 +1958,7 @@ class simplePlugin
     return TRUE;
   }
 
-  function is_modal_dialog()
+  function is_modal_dialog ()
   {
     return (isset($this->dialog) && $this->dialog);
   }
@@ -1968,7 +1968,7 @@ class simplePlugin
    *
    * \return an array
    */
-  static function plInfo()
+  static function plInfo ()
   {
     return [];
   }
diff --git a/include/simpleplugin/class_simpleSelectManagement.inc b/include/simpleplugin/class_simpleSelectManagement.inc
index da3b92cb3..e754c1532 100644
--- a/include/simpleplugin/class_simpleSelectManagement.inc
+++ b/include/simpleplugin/class_simpleSelectManagement.inc
@@ -33,7 +33,7 @@ class simpleSelectManagement extends simpleManagement
 
   protected $departmentRootVisible  = FALSE;
 
-  function __construct()
+  function __construct ()
   {
     if ($this->listXMLPath === NULL) {
       $this->listXMLPath = get_template_path('simple-select-list.xml', TRUE, dirname(__FILE__));
@@ -67,7 +67,7 @@ class simpleSelectManagement extends simpleManagement
     $this->filter->category = $infos['aclCategory'];
   }
 
-  static function filterSelectLink()
+  static function filterSelectLink ()
   {
     if (func_num_args() < 4) {
       return '&nbsp';
diff --git a/include/simpleplugin/class_simpleService.inc b/include/simpleplugin/class_simpleService.inc
index 65d06ac7f..52b4152c8 100644
--- a/include/simpleplugin/class_simpleService.inc
+++ b/include/simpleplugin/class_simpleService.inc
@@ -47,7 +47,7 @@ class simpleService extends simplePlugin
 
   /*! \brief This function display the service and return the html code
    */
-  function execute()
+  function execute ()
   {
     $str = parent::execute();
 
@@ -61,13 +61,13 @@ class simpleService extends simplePlugin
     return $str;
   }
 
-  protected function acl_skip_write()
+  protected function acl_skip_write ()
   {
     return FALSE;
   }
 
   /*! \brief Get service information for serverService plugin */
-  function getListEntry()
+  function getListEntry ()
   {
     /* Assign status flag */
     $fields['Status']       = $this->status;
@@ -96,7 +96,7 @@ class simpleService extends simplePlugin
   }
 
   /*! \brief This function save new status flag */
-  function setStatus($value)
+  function setStatus ($value)
   {
     /* Can't set status flag for new services (Object doesn't exists in ldap tree) */
     if (!$this->initially_was_account) {
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index 57ccbb831..a74cd121b 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -54,7 +54,7 @@ class simpleTabs
   /*!
    * \brief Tabs classes constructor
    * */
-  function __construct($type, $dn, $attrs_object = NULL)
+  function __construct ($type, $dn, $attrs_object = NULL)
   {
     global $config;
 
@@ -119,7 +119,7 @@ class simpleTabs
    *
    * This maybe usefull if for example the apply button was pressed.
    */
-  function re_init()
+  function re_init ()
   {
     $baseobject = NULL;
     foreach ($this->by_object as $name => $object) {
@@ -140,7 +140,7 @@ class simpleTabs
   /*!
    * \brief Sets the active tabs from this instance to an other one. Used by templates
    */
-  function setActiveTabs(&$tabObject)
+  function setActiveTabs (&$tabObject)
   {
     foreach ($this->by_object as $class => $plugin) {
       if ($plugin->is_account || $plugin->ignore_account) {
@@ -149,7 +149,7 @@ class simpleTabs
     }
   }
 
-  function resetCopyInfos()
+  function resetCopyInfos ()
   {
     $this->dn = 'new';
     foreach ($this->by_object as &$obj) {
@@ -158,7 +158,7 @@ class simpleTabs
     unset($obj);
   }
 
-  function resetBase()
+  function resetBase ()
   {
     $baseobject = $this->getBaseObject();
     if (isset($baseobject->base)) {
@@ -178,13 +178,13 @@ class simpleTabs
     }
   }
 
-  function getBaseObject()
+  function getBaseObject ()
   {
     return $this->by_object[$this->baseclass];
   }
 
   /*! \brief Indicates if this tab class is read-only (because of locks) */
-  function readOnly()
+  function readOnly ()
   {
     return $this->getBaseObject()->readOnly();
   }
@@ -192,7 +192,7 @@ class simpleTabs
   /*!
    * \brief Save the tab(s) contents
    */
-  function execute()
+  function execute ()
   {
     /* Look for pressed tab button first */
     foreach ($this->by_object as $class => &$obj) {
@@ -220,7 +220,7 @@ class simpleTabs
   /*!
    * \brief Save a tabs object
    */
-  function save_object()
+  function save_object ()
   {
     /* Ensure that the currently selected tab is valid. */
     if (!isset($this->by_name[$this->current])) {
@@ -243,7 +243,7 @@ class simpleTabs
    *
    * \param boolean $disabled false
    */
-  function gen_tabs($disabled = FALSE)
+  function gen_tabs ($disabled = FALSE)
   {
     $display = "";
     if (!$disabled) {
@@ -310,7 +310,7 @@ class simpleTabs
   /*!
    * \brief Remove object from LDAP
    */
-  function delete()
+  function delete ()
   {
     if (!$this->getBaseObject()->acl_is_removeable()) {
       msg_dialog::display(_('Permission'), msgPool::permDelete($this->getBaseObject()->dn), ERROR_DIALOG);
@@ -331,7 +331,7 @@ class simpleTabs
   /*!
    * \brief Check
    */
-  protected function check()
+  protected function check ()
   {
     global $config;
     $messages = [];
@@ -378,7 +378,7 @@ class simpleTabs
    *
    * \param boolean $ignore_account false
    */
-  function save()
+  function save ()
   {
     global $ui;
     $messages = $this->check();
@@ -467,7 +467,7 @@ class simpleTabs
    * \param array $attrs an LDAP-like values array
    * \param array $skip Attributes to skip
    */
-  function adapt_from_template($attrs, $skip = [])
+  function adapt_from_template ($attrs, $skip = [])
   {
     foreach ($this->by_object as $key => &$obj) {
       @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
@@ -480,7 +480,7 @@ class simpleTabs
   /*!
    * \brief Add special Tabs
    */
-  function addSpecialTabs()
+  function addSpecialTabs ()
   {
     global $config;
     $baseobject = $this->getBaseObject();
@@ -501,7 +501,7 @@ class simpleTabs
    *
    * \param string $base The new acl base
    */
-  function set_acl_base($base = "")
+  function set_acl_base ($base = "")
   {
     /* Update reference, transfer variables */
     $first = ($base == "");
@@ -516,7 +516,7 @@ class simpleTabs
     unset($obj);
   }
 
-  function setTemplateMode($cn)
+  function setTemplateMode ($cn)
   {
     $this->getBaseObject()->_template_cn = $cn;
 
@@ -534,7 +534,7 @@ class simpleTabs
     unset($obj);
   }
 
-  public function setIgnoreAcls($bool)
+  public function setIgnoreAcls ($bool)
   {
     $this->ignoreAcls = $bool;
   }
@@ -544,7 +544,7 @@ class simpleTabs
     return $this->by_object[$this->current]->is_modal_dialog();
   }
 
-  function objectInfos()
+  function objectInfos ()
   {
     if ($this->objectType === FALSE) {
       return FALSE;
@@ -553,7 +553,7 @@ class simpleTabs
   }
 
   /* Return tab or service if activated, FALSE otherwise */
-  function getTabOrServiceObject($tab)
+  function getTabOrServiceObject ($tab)
   {
     if (isset($this->by_object[$tab]) && ($this->by_object[$tab]->is_account || $this->by_object[$tab]->ignore_account)) {
       return $this->by_object[$tab];
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index cef03948f..57cd0f47d 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -21,7 +21,7 @@
 
 class dashboard extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Dashboard'),
@@ -44,7 +44,7 @@ class dashboard extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'stats' => [
@@ -63,7 +63,7 @@ class dashboard extends simplePlugin
   }
 
   /* Compute some statistics */
-  function overview_stats()
+  function overview_stats ()
   {
     global $config;
     $stats = [];
diff --git a/plugins/addons/dashboard/class_dashBoardPasswords.inc b/plugins/addons/dashboard/class_dashBoardPasswords.inc
index 229a61beb..86103501b 100644
--- a/plugins/addons/dashboard/class_dashBoardPasswords.inc
+++ b/plugins/addons/dashboard/class_dashBoardPasswords.inc
@@ -20,7 +20,7 @@
 
 class dashboardPassword extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Passwords'),
@@ -32,7 +32,7 @@ class dashboardPassword extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'pwds' => [
diff --git a/plugins/addons/dashboard/class_dashBoardUsers.inc b/plugins/addons/dashboard/class_dashBoardUsers.inc
index 0a80119a2..16ae0ea7c 100644
--- a/plugins/addons/dashboard/class_dashBoardUsers.inc
+++ b/plugins/addons/dashboard/class_dashBoardUsers.inc
@@ -21,7 +21,7 @@
 
 class dashboardUsers extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Users'),
@@ -33,7 +33,7 @@ class dashboardUsers extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'userstats' => [
@@ -218,7 +218,7 @@ class dashboardUsers extends simplePlugin
     ];
   }
 
-  static function get_user_infos($attrs)
+  static function get_user_infos ($attrs)
   {
     global $config;
 
diff --git a/plugins/addons/dashboard/tabs_dashBoard.inc b/plugins/addons/dashboard/tabs_dashBoard.inc
index 3cb313f40..8b3e9788a 100644
--- a/plugins/addons/dashboard/tabs_dashBoard.inc
+++ b/plugins/addons/dashboard/tabs_dashBoard.inc
@@ -20,7 +20,7 @@
 
 class tabs_dashboard extends simpleTabs_noSpecial
 {
-  function __construct($type, $dn, $copied_object = NULL)
+  function __construct ($type, $dn, $copied_object = NULL)
   {
     parent::__construct($type, $dn, $copied_object);
     if (!class_available('dhcpService') && !class_available('dnsZone')) {
@@ -29,7 +29,7 @@ class tabs_dashboard extends simpleTabs_noSpecial
     }
   }
 
-  function save()
+  function save ()
   {
   }
 }
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index 1c6655f81..b4d1d7cac 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -20,7 +20,7 @@
 
 class aclAssignmentDialogWindow extends simplePlugin
 {
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('ACL Assignment Dialog'),
@@ -31,7 +31,7 @@ class aclAssignmentDialogWindow extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'properties' => [
@@ -92,7 +92,7 @@ class aclAssignmentDialogWindow extends simplePlugin
     }
   }
 
-  function execute()
+  function execute ()
   {
     $smarty = get_smarty();
     $display = parent::execute();
@@ -107,7 +107,7 @@ class aclAssignmentDialogWindow extends simplePlugin
     return $display;
   }
 
-  function getAclEntry()
+  function getAclEntry ()
   {
     $entry = [
       'scope'   => $this->aclMode,
@@ -128,7 +128,7 @@ class ACLsAssignmentDialog extends GenericDialog
   protected $post_finish = 'add_acl_finish';
   protected $dialogClass = 'aclAssignmentDialogWindow';
 
-  function __construct($simplePlugin, $attribute, $acl = NULL)
+  function __construct ($simplePlugin, $attribute, $acl = NULL)
   {
     $isContainer = FALSE;
     if (isset($simplePlugin->attrs['objectClass'])) {
@@ -180,7 +180,7 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
   protected $dialogClass  = 'ACLsAssignmentDialog';
   protected $height       = 300;
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     /* Convert text value to displayable array value */
     sort($value['members']);
@@ -193,7 +193,7 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     return $value;
   }
 
-  function readValue($value)
+  function readValue ($value)
   {
     $acl = explode(':', $value);
     return [$acl[0], [
@@ -203,12 +203,12 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     ]];
   }
 
-  function writeValue($key, $value)
+  function writeValue ($key, $value)
   {
     return $key.':'.$value['scope'].':'.base64_encode($value['role']).':'.join(',', array_map('base64_encode', $value['members']));
   }
 
-  function foreignKeyUpdate($oldvalue, $newvalue, $source)
+  function foreignKeyUpdate ($oldvalue, $newvalue, $source)
   {
     foreach ($this->value as $key => &$value) {
       if ($source['FIELD'] == 'dn') {
@@ -243,7 +243,7 @@ class ACLsAssignmentAttribute extends DialogOrderedArrayAttribute
     unset($value);
   }
 
-  function foreignKeyCheck($oldvalue, $source)
+  function foreignKeyCheck ($oldvalue, $source)
   {
     foreach ($this->value as $value) {
       if (($source['CLASS'] == 'aclRole') && ($value['role'] == $oldvalue)) {
@@ -261,7 +261,7 @@ class aclAssignment extends simplePlugin
 {
   var $objectclasses  = ['gosaAcl'];
 
-  static function plInfo()
+  static function plInfo ()
   {
     global $config;
     $oc = [
@@ -297,7 +297,7 @@ class aclAssignment extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'main' => [
@@ -319,12 +319,12 @@ class aclAssignment extends simplePlugin
     $this->attributesInfo['main']['name'] = sprintf(_('Assignments on object or subtree %s'), $this->dn);
   }
 
-  function compute_dn()
+  function compute_dn ()
   {
     return $this->dn;
   }
 
-  function save()
+  function save ()
   {
     $this->ignore_account = FALSE;
     $this->is_account = (count($this->gosaAclEntry) != 0);
@@ -335,7 +335,7 @@ class aclAssignment extends simplePlugin
     }
   }
 
-  function post_remove()
+  function post_remove ()
   {
     parent::post_remove();
 
@@ -345,7 +345,7 @@ class aclAssignment extends simplePlugin
     session::set('ui', $ui);
   }
 
-  function post_save()
+  function post_save ()
   {
     parent::post_save();
 
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index 3e949b9a2..6b5b5a11a 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -25,7 +25,7 @@ class aclAssignmentCreationDialog extends simplePlugin
   protected $post_cancel = 'add_cancel';
   protected $simpleManagement;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('ACL assignment creation'),
@@ -68,7 +68,7 @@ class aclAssignmentCreationDialog extends simplePlugin
     $this->attributesAccess['baseDn']->setInLdap(FALSE);
   }
 
-  function save_object()
+  function save_object ()
   {
     parent::save_object();
     if (isset($_POST[$this->post_cancel])) {
@@ -80,11 +80,11 @@ class aclAssignmentCreationDialog extends simplePlugin
     return TRUE;
   }
 
-  function save()
+  function save ()
   {
   }
 
-  function execute()
+  function execute ()
   {
     if ($this->save_object()) {
       $smarty = get_smarty();
@@ -134,7 +134,7 @@ class aclManagement extends simpleManagement
 
   public static $skipSnapshots = TRUE;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('ACL assignments'),
@@ -149,7 +149,7 @@ class aclManagement extends simpleManagement
     ];
   }
 
-  function configureFilter()
+  function configureFilter ()
   {
     parent::configureFilter();
     $this->filter->scope = 'sub';
@@ -176,12 +176,12 @@ class aclManagement extends simpleManagement
   /*!
    * \brief  This method intiates the object creation.
    */
-  function newEntry($action, array $target, array $all)
+  function newEntry ($action, array $target, array $all)
   {
     $this->dialogObject = new aclAssignmentCreationDialog($this);
   }
 
-  function newEntryConfirmed($dn)
+  function newEntryConfirmed ($dn)
   {
     $type = 'aclAssignment';
 
@@ -201,7 +201,7 @@ class aclManagement extends simpleManagement
     @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Creating new ACL assignment');
   }
 
-  static function filterLabel($row, $dn, $pid = 0, $base = '')
+  static function filterLabel ($row, $dn, $pid = 0, $base = '')
   {
     $ou = '';
     if ($dn == $base) {
@@ -228,7 +228,7 @@ class aclManagement extends simpleManagement
     return '<a href="?plug='.$_GET['plug'].'&amp;PID='.$pid.'&amp;act=listing_edit_'.$row.'" title="'.$dn.'">'.$ou.'</a>';
   }
 
-  protected function removeEntryRequested($action, array $target, array $all)
+  protected function removeEntryRequested ($action, array $target, array $all)
   {
     $result = parent::removeEntryRequested($action, $target, $all);
     if ($result != "") {
diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc
index b4c579236..a6376a628 100644
--- a/plugins/admin/aclrole/class_aclEditionDialog.inc
+++ b/plugins/admin/aclrole/class_aclEditionDialog.inc
@@ -28,7 +28,7 @@ class ACLEditionDialog extends GenericDialog
   protected $aclContents      = [];
   protected $savedAclContents = [];
 
-  function __construct($simplePlugin, $attribute, $acl = NULL)
+  function __construct ($simplePlugin, $attribute, $acl = NULL)
   {
     $this->attribute        = $attribute;
     $this->initialAclValue  = $acl;
@@ -55,7 +55,7 @@ class ACLEditionDialog extends GenericDialog
     return FALSE;
   }
 
-  function save_object()
+  function save_object ()
   {
     global $config;
 
@@ -233,7 +233,7 @@ class ACLEditionDialog extends GenericDialog
    *
    * \return String containing checkbox
    */
-  function mkchkbx($name, $text, $state = FALSE)
+  function mkchkbx ($name, $text, $state = FALSE)
   {
     $tname = preg_replace('/[^a-z0-9]/i', '_', $name);
     return  '<input id="acl_'.$tname.'" type="checkbox" name="acl_'.$name.'"'.($state ? ' checked="checked"' : '').'/>'."\n".
@@ -248,7 +248,7 @@ class ACLEditionDialog extends GenericDialog
    *
    * \return String containing checkbox
    */
-  function mkrwbx($name, $state = '')
+  function mkrwbx ($name, $state = '')
   {
     $rstate = (preg_match('/r/', $state) ? ' checked="checked"' : '');
     $wstate = (preg_match('/w/', $state) ? ' checked="checked"' : '');
@@ -267,7 +267,7 @@ class ACLEditionDialog extends GenericDialog
    *
    * \return the acl selector form
    */
-  function buildAclSelector($list)
+  function buildAclSelector ($list)
   {
     $display  = '<input type="hidden" name="acl_dummy_0_0_0" value="1"/>';
     $cols     = 3;
diff --git a/plugins/admin/aclrole/class_aclRole.inc b/plugins/admin/aclrole/class_aclRole.inc
index 1856c7e77..eda3cd0de 100644
--- a/plugins/admin/aclrole/class_aclRole.inc
+++ b/plugins/admin/aclrole/class_aclRole.inc
@@ -24,7 +24,7 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
   protected $order        = TRUE;
   protected $dialogClass  = 'ACLEditionDialog';
 
-  protected function getAttributeArrayValue($key, $value)
+  protected function getAttributeArrayValue ($key, $value)
   {
     /* Convert text value to displayable array value */
 
@@ -39,13 +39,13 @@ class ACLsAttribute extends DialogOrderedArrayAttribute
     return [$summary];
   }
 
-  function readValue($value)
+  function readValue ($value)
   {
     $acl = explode(':', $value, 2);
     return [$acl[0], acl::extractACL($acl[1])];
   }
 
-  function writeValue($key, $value)
+  function writeValue ($key, $value)
   {
     $acl = '';
     foreach ($value as $object => $contents) {
@@ -71,7 +71,7 @@ class aclRole extends simplePlugin
 {
   var $objectclasses  = ['top','gosaRole'];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Role'),
@@ -88,7 +88,7 @@ class aclRole extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return [
       'properties' => [
diff --git a/plugins/admin/aclrole/class_aclRoleManagement.inc b/plugins/admin/aclrole/class_aclRoleManagement.inc
index 3d135fe2b..e46f80a23 100644
--- a/plugins/admin/aclrole/class_aclRoleManagement.inc
+++ b/plugins/admin/aclrole/class_aclRoleManagement.inc
@@ -28,7 +28,7 @@ class aclRoleManagement extends simpleManagement
   protected $baseMode               = TRUE;
 
   /* Return plugin informations for acl handling  */
-  public static function plInfo()
+  public static function plInfo ()
   {
     return [
       'plShortName'   => _('ACL roles'),
diff --git a/plugins/admin/departments/class_country.inc b/plugins/admin/departments/class_country.inc
index 8ce3ee17e..e6e7a0c36 100644
--- a/plugins/admin/departments/class_country.inc
+++ b/plugins/admin/departments/class_country.inc
@@ -23,7 +23,7 @@ class country extends department
   static $namingAttr  = "c";
   var $structuralOC   = ["country"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Country'),
diff --git a/plugins/admin/departments/class_dcObject.inc b/plugins/admin/departments/class_dcObject.inc
index e73bd6f6e..d60c252c5 100644
--- a/plugins/admin/departments/class_dcObject.inc
+++ b/plugins/admin/departments/class_dcObject.inc
@@ -24,7 +24,7 @@ class dcObject extends department
   var $objectclasses  = ["top", "dcObject", "gosaDepartment"];
   var $structuralOC   = ["locality"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Domain Component'),
diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc
index 1a23f53d3..b0c09ff79 100644
--- a/plugins/admin/departments/class_department.inc
+++ b/plugins/admin/departments/class_department.inc
@@ -27,7 +27,7 @@ class department extends simplePlugin
   var $objectclasses  = ["top", "gosaDepartment"];
   var $structuralOC   = ["organizationalUnit"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Department'),
@@ -52,11 +52,11 @@ class department extends simplePlugin
     ];
   }
 
-  static function getAttributesInfo()
+  static function getAttributesInfo ()
   {
     return static::getDepartmentAttributesInfo(_('department'));
   }
-  static function getDepartmentAttributesInfo($name)
+  static function getDepartmentAttributesInfo ($name)
   {
     $attributesInfo = [
       'properties' => [
@@ -161,7 +161,7 @@ class department extends simplePlugin
   }
 
   /* Check values */
-  function check()
+  function check ()
   {
     /* Call common method to give check the hook */
     $message = parent::check();
@@ -177,7 +177,7 @@ class department extends simplePlugin
     return $message;
   }
 
-  function get_allowed_bases()
+  function get_allowed_bases ()
   {
     /* Hide all departments, that are subtrees of this department */
     $bases = parent::get_allowed_bases();
@@ -191,7 +191,7 @@ class department extends simplePlugin
     return $bases;
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     if (static::$namingAttr != 'ou') {
       $this->attributesAccess['ou']->setValue($this->attributesAccess[static::$namingAttr]->getValue());
diff --git a/plugins/admin/departments/class_departmentManagement.inc b/plugins/admin/departments/class_departmentManagement.inc
index 6d81d0155..4334220c3 100644
--- a/plugins/admin/departments/class_departmentManagement.inc
+++ b/plugins/admin/departments/class_departmentManagement.inc
@@ -27,7 +27,7 @@ class departmentManagement extends simpleManagement
   protected $baseMode               = TRUE;
 
   /* Return plugin information for acl handling */
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Departments'),
@@ -42,7 +42,7 @@ class departmentManagement extends simpleManagement
     ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->objectTypes  = static::getDepartmentTypes();
     $this->listXMLPath  = get_template_path('dep-list.xml', TRUE, dirname(__FILE__));
@@ -52,7 +52,7 @@ class departmentManagement extends simpleManagement
   }
 
   // Overriden save handler - We've to take care about the department tagging here.
-  protected function saveChanges()
+  protected function saveChanges ()
   {
     $str = parent::saveChanges();
     if (!empty($str)) {
@@ -62,7 +62,7 @@ class departmentManagement extends simpleManagement
     $this->refreshDeps();
   }
 
-  function refreshDeps()
+  function refreshDeps ()
   {
     global $config, $ui;
     $config->get_departments();
@@ -73,14 +73,14 @@ class departmentManagement extends simpleManagement
   }
 
   // An action handler which enables to switch into deparmtment by clicking the names.
-  function openEntry($action, $entry)
+  function openEntry ($action, $entry)
   {
     $headpage = $this->getHeadpage();
     $headpage->setBase(array_pop($entry));
   }
 
   // Overridden remove request method - Avoid removal of the ldap base.
-  protected function removeEntryRequested($action, array $target, array $all)
+  protected function removeEntryRequested ($action, array $target, array $all)
   {
     global $config;
     $target = array_remove_entries([$config->current['BASE']], $target);
@@ -88,7 +88,7 @@ class departmentManagement extends simpleManagement
   }
 
   // A filter which allows to open a department by clicking on the departments name.
-  static function filterDepLabel($row, $dn, $params, $ou, $pid, $base)
+  static function filterDepLabel ($row, $dn, $params, $ou, $pid, $base)
   {
     $ou = $ou[0];
     if ($dn == $base) {
@@ -98,13 +98,13 @@ class departmentManagement extends simpleManagement
   }
 
   // Finally remove departments and update departmnet browsers
-  function removeEntryConfirmed($action, array $target, array $all)
+  function removeEntryConfirmed ($action, array $target, array $all)
   {
     parent::removeEntryConfirmed($action, $target, $all);
     $this->refreshDeps();
   }
 
-  static function getDepartmentTypes()
+  static function getDepartmentTypes ()
   {
     return ['DEPARTMENT','COUNTRY','DCOBJECT','DOMAIN','LOCALITY','ORGANIZATION'];
   }
diff --git a/plugins/admin/departments/class_domain.inc b/plugins/admin/departments/class_domain.inc
index abc4eae16..552bd2f30 100644
--- a/plugins/admin/departments/class_domain.inc
+++ b/plugins/admin/departments/class_domain.inc
@@ -24,7 +24,7 @@ class domain extends department
   var $objectclasses  = ["top", "domain", "gosaDepartment"];
   var $structuralOC   = ["domain"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Domain'),
diff --git a/plugins/admin/departments/class_locality.inc b/plugins/admin/departments/class_locality.inc
index db2b137f8..48ae1be7f 100644
--- a/plugins/admin/departments/class_locality.inc
+++ b/plugins/admin/departments/class_locality.inc
@@ -24,7 +24,7 @@ class locality extends department
   var $objectclasses  = ["top", "gosaDepartment"];
   var $structuralOC   = ["locality"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Locality'),
diff --git a/plugins/admin/departments/class_organization.inc b/plugins/admin/departments/class_organization.inc
index 960cf5f6b..2558fb9d2 100644
--- a/plugins/admin/departments/class_organization.inc
+++ b/plugins/admin/departments/class_organization.inc
@@ -24,7 +24,7 @@ class organization extends department
   var $objectclasses  = ["top", "gosaDepartment"];
   var $structuralOC   = ["organization"];
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Organization'),
diff --git a/plugins/admin/departments/tabs_department.inc b/plugins/admin/departments/tabs_department.inc
index 29f2ea395..a3ee8550b 100644
--- a/plugins/admin/departments/tabs_department.inc
+++ b/plugins/admin/departments/tabs_department.inc
@@ -20,7 +20,7 @@
 
 class deptabs extends simpleTabs
 {
-  function save()
+  function save ()
   {
     $errors = parent::save();
 
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 9f4a7f464..0464078ba 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -29,7 +29,7 @@ class groupManagement extends simpleManagement
 
   protected $siActive = FALSE;
 
-  static function plInfo()
+  static function plInfo ()
   {
     return [
       'plShortName'   => _('Groups and roles'),
@@ -44,7 +44,7 @@ class groupManagement extends simpleManagement
     ];
   }
 
-  function __construct()
+  function __construct ()
   {
     $this->filterXMLPath  = get_template_path('group-filter.xml', TRUE, dirname(__FILE__));
     $this->listXMLPath    = get_template_path('group-list.xml', TRUE, dirname(__FILE__));
@@ -120,7 +120,7 @@ class groupManagement extends simpleManagement
   /*! \brief    Handle Argonaut events
    *            All schedules and triggered events are handled here.
    */
-  function handleEvent($action, array $target)
+  function handleEvent ($action, array $target)
   {
     global $config;
 
@@ -211,7 +211,7 @@ class groupManagement extends simpleManagement
   /*! \brief  Save event dialogs.
    *          And append the new Argonaut event.
    */
-  function saveEventDialog()
+  function saveEventDialog ()
   {
     $this->dialogObject->save_object();
     $msgs = $this->dialogObject->check();
@@ -232,7 +232,7 @@ class groupManagement extends simpleManagement
   /*! \brief  Detects actions/events send by the ui
    *           and the corresponding targets.
    */
-  function detectPostActions()
+  function detectPostActions ()
   {
     $action = parent::detectPostActions();
     if (isset($_POST['save_event_dialog'])) {
@@ -243,7 +243,7 @@ class groupManagement extends simpleManagement
     return $action;
   }
 
-  static function filterProperties($row, $dn, $objectType, $attrs, $gosaGroupObjects = NULL)
+  static function filterProperties ($row, $dn, $objectType, $attrs, $gosaGroupObjects = NULL)
   {
     global $config;
     static $grouptabs = [];
@@ -297,7 +297,7 @@ class groupManagement extends simpleManagement
     return $result;
   }
 
-  static function filterGroupObjects($row, $gosaGroupObjects)
+  static function filterGroupObjects ($row, $gosaGroupObjects)
   {
     $types  = preg_replace('/[^a-z]/i', '', $gosaGroupObjects[0]);
     $result = '';
@@ -315,7 +315,7 @@ class groupManagement extends simpleManagement
     return $result;
   }
 
-  function renderList()
+  function renderList ()
   {
     $smarty = get_smarty();
     $filters = [
diff --git a/plugins/admin/groups/class_ogroup.inc b/plugins/admin/groups/class_ogroup.inc
index 20f6dd320..238ff6ed9 100644
--- a/plugins/admin/groups/class_ogroup.inc
+++ b/plugins/admin/groups/class_ogroup.inc
@@ -22,13 +22,13 @@
 class ObjectsAttribute extends GenericDialogAttribute
 {
   protected $dialogClass  = 'ObjectSelectDialog';
-  protected $types        = array();
+  protected $types        = [];
 
   function getFilterBlackList ()
   {
-    return array(
-      'dn' => array_merge($this->getValue(), $this->plugin->used_workstations, array($this->plugin->dn))
-    );
+    return [
+      'dn' => array_merge($this->getValue(), $this->plugin->used_workstations, [$this->plugin->dn])
+    ];
   }
 
   protected function fillDisplayValueFrom ($i, $attrs)
@@ -52,7 +52,7 @@ class ObjectsAttribute extends GenericDialogAttribute
             break;
           }
         } catch (NonExistingObjectTypeException $e) {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage(), "Objecttype");
+          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage (), "Objecttype");
           unset(ogroup::$objectTypes[$code]);
         }
       }
@@ -72,7 +72,7 @@ class ObjectsAttribute extends GenericDialogAttribute
     }
   }
 
-  function renderOnlyFormInput()
+  function renderOnlyFormInput ()
   {
     if (($this->size < 15) && ($this->size < count($this->value))) {
       $this->size = min(15, count($this->value));
@@ -83,7 +83,7 @@ class ObjectsAttribute extends GenericDialogAttribute
                 ' >'."\n";
     foreach ($this->getDisplayValues() as $key => $value) {
       try {
-        $infos = array();
+        $infos = [];
         if ($this->types[$key] !== 'I') {
           $infos = objects::infos(ogroup::$objectTypes[$this->types[$key]]);
         }
@@ -103,9 +103,9 @@ class ObjectsAttribute extends GenericDialogAttribute
     return $display;
   }
 
-  function ldapAttributesToGet()
+  function ldapAttributesToGet ()
   {
-    return array(
+    return [
       'objectClass',
       'cn',
       'sn',
@@ -113,10 +113,10 @@ class ObjectsAttribute extends GenericDialogAttribute
       'uid',
       'givenName',
       'description',
-    );
+    ];
   }
 
-  function listObjectTypes()
+  function listObjectTypes ()
   {
     /* Refresh types and displays */
     $this->getDisplayValues();
@@ -126,10 +126,10 @@ class ObjectsAttribute extends GenericDialogAttribute
   function getTypedValues ()
   {
     $values = $this->getValue();
-    $ret    = array();
+    $ret    = [];
     foreach ($values as $i => $v) {
       if (!isset($ret[$this->types[$i]])) {
-        $ret[$this->types[$i]] = array();
+        $ret[$this->types[$i]] = [];
       }
       $ret[$this->types[$i]][] = $v;
     }
@@ -151,13 +151,13 @@ class ObjectSelectDialog extends GenericSelectDialog
 
 class ogroup extends simplePlugin
 {
-  var $objectclasses  = array('groupOfNames', 'gosaGroupOfNames');
+  var $objectclasses  = ['groupOfNames', 'gosaGroupOfNames'];
 
-  var $used_workstations = array();
+  var $used_workstations = [];
 
   protected $savedTypedMembers;
 
-  static $objectTypes = array(
+  static $objectTypes = [
     'U' => 'user',
     'G' => 'ogroup',
     'A' => 'application',
@@ -167,49 +167,49 @@ class ogroup extends simplePlugin
     'F' => 'phone',
     'P' => 'printer',
     'D' => 'simpleSecurityObject',
-  );
+  ];
 
-  static function plInfo()
+  static function plInfo ()
   {
-    return array(
+    return [
       'plShortName'   => _('Object group'),
       'plDescription' => _('Object group information'),
       'plSelfModify'  => FALSE,
       'plPriority'    => 1,
-      'plObjectType'  => array('ogroup' => array(
+      'plObjectType'  => ['ogroup' => [
         'name'        => _('Group'),
         'description' => _('Group'),
         'ou'          => get_ou('ogroupRDN'),
         'filter'      => 'objectClass=groupOfNames',
         'icon'        => 'geticon.php?context=types&icon=resource-group&size=16',
         'tabClass'    => 'ogrouptabs',
-      )),
-      'plForeignKeys'  => array(
-        'member' => array(
-          array('user',               'dn','member=%oldvalue%','*'),
-          array('ogroup',             'dn','member=%oldvalue%','*'),
-          array('application',        'dn','member=%oldvalue%','*'),
-          array('serverGeneric',      'dn','member=%oldvalue%','*'),
-          array('workstationGeneric', 'dn','member=%oldvalue%','*'),
-          array('terminalGeneric',    'dn','member=%oldvalue%','*'),
-          array('phoneGeneric',       'dn','member=%oldvalue%','*'),
-          array('printGeneric',       'dn','member=%oldvalue%','*'),
-        ),
-        'owner' => array(
-          array('user','dn','owner=%oldvalue%','*')
-        )
-      ),
+      ]],
+      'plForeignKeys'  => [
+        'member' => [
+          ['user',               'dn','member=%oldvalue%','*'],
+          ['ogroup',             'dn','member=%oldvalue%','*'],
+          ['application',        'dn','member=%oldvalue%','*'],
+          ['serverGeneric',      'dn','member=%oldvalue%','*'],
+          ['workstationGeneric', 'dn','member=%oldvalue%','*'],
+          ['terminalGeneric',    'dn','member=%oldvalue%','*'],
+          ['phoneGeneric',       'dn','member=%oldvalue%','*'],
+          ['printGeneric',       'dn','member=%oldvalue%','*'],
+        ],
+        'owner' => [
+          ['user','dn','owner=%oldvalue%','*']
+        ]
+      ],
 
       'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
-    );
+    ];
   }
 
   static function getAttributesInfo ()
   {
-    return array(
-      'main' => array(
+    return [
+      'main' => [
         'name'  => _('Properties'),
-        'attrs' => array(
+        'attrs' => [
           new BaseSelectorAttribute(get_ou('ogroupRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
@@ -225,36 +225,36 @@ class ogroup extends simplePlugin
             _('Owner'), _('Owner'),
             'owner', FALSE
           ),
-        )
-      ),
-      'members' => array(
+        ]
+      ],
+      'members' => [
         'name'  => _('Member objects'),
-        'attrs' => array(
+        'attrs' => [
           new ObjectsAttribute(
             '', _('Objects member of this group'),
             'member', TRUE,
-            array(), 'dn'
+            [], 'dn'
           )
-        )
-      ),
-      'system_trust' => array(
+        ]
+      ],
+      'system_trust' => [
         'name'  => _('System trust'),
         'icon'  => 'geticon.php?context=status&icon=locked&size=16',
-        'attrs' => array(
+        'attrs' => [
           new SelectAttribute(
             _('Trust mode'), _('Type of authorization for those hosts'),
             'trustMode', FALSE,
-            array('', 'fullaccess', 'byhost'),
+            ['', 'fullaccess', 'byhost'],
             '',
-            array(_('disabled'), _('full access'), _('allow access to these hosts'))
+            [_('disabled'), _('full access'), _('allow access to these hosts')]
           ),
           new SystemsAttribute(
             '', _('Only allow this group to connect to this list of hosts'),
             'host', FALSE
           )
-        )
-      )
-    );
+        ]
+      ]
+    ];
   }
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
@@ -263,12 +263,12 @@ class ogroup extends simplePlugin
 
     $this->attributesAccess['trustMode']->setInLdap(FALSE);
     $this->attributesAccess['trustMode']->setManagedAttributes(
-      array(
-        'multiplevalues' => array('notbyhost' => array('','fullaccess')),
-        'erase' => array(
-          'notbyhost' => array('host')
-        )
-      )
+      [
+        'multiplevalues' => ['notbyhost' => ['','fullaccess']],
+        'erase' => [
+          'notbyhost' => ['host']
+        ]
+      ]
     );
     if ((count($this->host) == 1) && ($this->host[0] == '*')) {
       $this->trustMode = 'fullaccess';
@@ -279,14 +279,14 @@ class ogroup extends simplePlugin
     /* Detect all workstations, which are already assigned to an object group
         - Those objects will be hidden in the add object dialog.
         - Check() will complain if such a system is assigned to this object group.*/
-    $this->used_workstations = array();
+    $this->used_workstations = [];
     try {
-      $ws_dns = array_keys(objects::ls(array('workstation','terminal')));
-      $res = objects::ls('ogroup', array('member' => '*'), NULL, '(&(member=*)(|(gosaGroupObjects=[W])(gosaGroupObjects=[T])))');
+      $ws_dns = array_keys(objects::ls(['workstation','terminal']));
+      $res = objects::ls('ogroup', ['member' => '*'], NULL, '(&(member=*)(|(gosaGroupObjects=[W])(gosaGroupObjects=[T])))');
     } catch (NonExistingObjectTypeException $e) {
       /* If workstation/terminal objectType is not existing, systems plugin is missing so there are no systems */
-      $ws_dns = array();
-      $res    = array();
+      $ws_dns = [];
+      $res    = [];
     }
     foreach ($res as $odn => $og) {
       if ($odn == $this->dn) {
@@ -306,21 +306,21 @@ class ogroup extends simplePlugin
     return '(objectClass=groupOfNames)';
   }
 
-  function is_this_account($attrs)
+  function is_this_account ($attrs)
   {
-    $this->objectclasses  = array('groupOfNames');
+    $this->objectclasses  = ['groupOfNames'];
     $found = parent::is_this_account($attrs);
-    $this->objectclasses  = array('groupOfNames', 'gosaGroupOfNames');
+    $this->objectclasses  = ['groupOfNames', 'gosaGroupOfNames'];
     return $found;
   }
 
-  function prepare_save()
+  function prepare_save ()
   {
     $this->reload();
     $errors = parent::prepare_save();
 
     if ($this->trustMode == 'fullaccess') {
-      $this->attrs['host'] = array('*');
+      $this->attrs['host'] = ['*'];
     }
 
     /* Trust accounts */
@@ -333,12 +333,12 @@ class ogroup extends simplePlugin
     return $errors;
   }
 
-  function reload()
+  function reload ()
   {
     $this->gosaGroupObjects = $this->attributesAccess['member']->listObjectTypes();
   }
 
-  function check()
+  function check ()
   {
     $message = parent::check();
     $this->reload();
@@ -349,15 +349,15 @@ class ogroup extends simplePlugin
     return $message;
   }
 
-  function ldap_save()
+  function ldap_save ()
   {
     global $ui;
 
-    $errors = array();
+    $errors = [];
 
     if (isset($this->attrs['member'])) {
-      $userMembers  = array();
-      $savedMembers = array();
+      $userMembers  = [];
+      $savedMembers = [];
       $members      = $this->attributesAccess['member']->getTypedValues();
       if (isset($members['U'])) {
         $userMembers = $members['U'];
@@ -386,7 +386,7 @@ class ogroup extends simplePlugin
     return parent::ldap_save();
   }
 
-  function getGroupObjectTypes()
+  function getGroupObjectTypes ()
   {
     $this->reload();
     return $this->gosaGroupObjects;
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index fe034506e..69de796ec 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -103,10 +103,10 @@ class userManagement extends simpleManagement
       $this->filter->elements['SAMBA']['set']   = '';
     }
     if (empty($classes)) {
-      $this->filter->elements['FUNCTIONAL']['set']  = '(objectClass=*)';
+      $this->filter->elements['FUNCTIONAL']['set']  = ' (objectClass=*)';
     } else {
       /* The FUNCTIONAL filter must not use inexisting classes */
-      $this->filter->elements['FUNCTIONAL']['set']  = '(!(|(objectClass='.implode(')(objectClass=', $classes).')))';
+      $this->filter->elements['FUNCTIONAL']['set']  = ' (! (| (objectClass='.implode (') (objectClass=', $classes).')))';
     }
   }
 
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 1c7cdccff..da93d51bd 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -31,7 +31,7 @@ class UserPasswordAttribute extends CompositeAttribute
     /* Create password methods array */
     $pwd_methods = [];
     $this->needPassword = [];
-    foreach ($temp['name'] as $id => $name) {
+    foreach($temp['name'] as $id => $name) {
       $this->needPassword[$name] = $temp[$id]['object']->need_password();
       $pwd_methods[$name] = $name;
       if (!empty($temp[$id]['desc'])) {
@@ -91,7 +91,7 @@ class UserPasswordAttribute extends CompositeAttribute
       if ($this->linearRendering) {
         parent::renderAttribute($attributes, $readOnly);
       } else {
-        foreach ($this->attributes as $key => &$attribute) {
+        foreach($this->attributes as $key => &$attribute) {
           if (is_object($this->plugin) && $this->plugin->is_template && ($key == 2)) {
             /* Do not display confirmation field in template mode */
             continue;
@@ -485,8 +485,8 @@ class user extends simplePlugin
     $this->attributesAccess['uid']->setDisabled($this->initially_was_account && !$this->is_template);
 
     $filename = './plugins/users/images/default.jpg';
-    $fd       = fopen ($filename, 'rb');
-    $this->attributesAccess['jpegPhoto']->setPlaceholder(fread ($fd, filesize($filename)));
+    $fd       = fopen($filename, 'rb');
+    $this->attributesAccess['jpegPhoto']->setPlaceholder(fread($fd, filesize($filename)));
 
     $this->was_locked = $this->attributesAccess['userPassword']->isLocked();
   }
@@ -514,7 +514,7 @@ class user extends simplePlugin
   {
     $fields   = templateHandling::listFields($pattern);
     $attrs    = [];
-    foreach ($fields as $field) {
+    foreach($fields as $field) {
       if (in_array($field, $this->attributes)) {
         $attrs[$field] = $this->$field;
         continue;
-- 
GitLab


From 62b995ffee3c9c551ed3162cc808b468d9e73430 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Mon, 18 Jul 2022 19:52:20 +0100
Subject: [PATCH 100/117] :sparkles: Feat(1.3.1) - Parenthesis Space At Fnc
 Call

Parenthesis open in fnc call - code style part1
---
 html/class_passwordRecovery.inc               |  4 ++--
 include/class_Combinations.inc                |  2 +-
 include/class_IconTheme.inc                   |  2 +-
 include/class_Language.inc                    |  4 ++--
 include/class_SnapshotDialogs.inc             |  2 +-
 include/class_SnapshotHandler.inc             |  2 +-
 include/class_acl.inc                         |  2 +-
 include/class_baseSelector.inc                |  2 +-
 include/class_config.inc                      |  8 +++----
 include/class_divSelectBox.inc                |  4 ++--
 include/class_filter.inc                      |  2 +-
 include/class_ldap.inc                        | 24 +++++++++----------
 include/class_listing.inc                     |  2 +-
 include/class_msgPool.inc                     |  2 +-
 include/class_pluglist.inc                    |  4 ++--
 include/class_templateHandling.inc            |  4 ++--
 include/class_tests.inc                       |  6 ++---
 include/class_userinfo.inc                    |  8 +++----
 include/functions.inc                         | 16 ++++++-------
 include/functions_debug.inc                   |  2 +-
 .../class_password-methods-sasl.inc           |  2 +-
 .../class_password-methods-smd5.inc           |  2 +-
 .../class_password-methods-ssha.inc           |  2 +-
 .../class_password-methods.inc                |  4 ++--
 include/php_setup.inc                         |  6 ++---
 .../attributes/class_BooleanAttribute.inc     |  4 ++--
 .../attributes/class_SetAttribute.inc         |  2 +-
 include/simpleplugin/class_Attribute.inc      | 12 +++++-----
 .../simpleplugin/class_dialogAttributes.inc   |  2 +-
 .../simpleplugin/class_helpersAttribute.inc   |  4 ++--
 .../simpleplugin/class_simpleManagement.inc   |  6 ++---
 include/simpleplugin/class_simplePlugin.inc   | 14 +++++------
 plugins/addons/dashboard/class_dashBoard.inc  |  2 +-
 plugins/admin/acl/class_aclManagement.inc     |  2 +-
 .../admin/groups/class_groupManagement.inc    |  2 +-
 plugins/admin/groups/tabs_ogroups.inc         |  2 +-
 plugins/config/class_configInLdap.inc         |  2 +-
 37 files changed, 86 insertions(+), 86 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index dfb38ba16..b2e54a425 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -387,7 +387,7 @@ class passwordRecovery extends standAlonePage {
     $this->loginAttribute = $config->get_cfg_value('passwordRecoveryLoginAttribute', 'uid');
 
     @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value ('passwordRecoveryActivated'), "passwordRecoveryActivated");
-    return ($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
+    return($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
   }
 
   function storeToken ($temp_password)
@@ -404,7 +404,7 @@ class passwordRecovery extends standAlonePage {
     $ldap->cat($token, ['dn']);
     if (!$ldap->count()) {
       /* It's not, let's create it */
-      $ldap->cd ($config->current['BASE']);
+      $ldap->cd($config->current['BASE']);
       $ldap->create_missing_trees($token);
       if (!$ldap->success()) {
         return msgPool::ldaperror($ldap->get_error(),
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index 65027c70e..73baca00e 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -67,7 +67,7 @@ class Combinations implements Iterator
 
   function valid ()
   {
-    return ($this->pos >= 0);
+    return($this->pos >= 0);
   }
 
   protected function _next ()
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 38f856e8d..7c5d56bb9 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -70,7 +70,7 @@ class IconThemeDir
   {
     switch ($this->Type) {
       case 'Fixed':
-        return ($this->Size == $size);
+        return($this->Size == $size);
       default:
       case 'Threshold':
       case 'Scalable':
diff --git a/include/class_Language.inc b/include/class_Language.inc
index c4b20d194..2e7c45f16 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -42,7 +42,7 @@ class Language
       $lang = static::detect();
     }
 
-    list ($language, $country, $char) = parse_gettext_lang($lang);
+    list($language, $country, $char) = parse_gettext_lang($lang);
     putenv('LANGUAGE=');
     putenv("LANG=$lang");
     $langset = setlocale(LC_ALL, $lang, $language.'.'.$char);
@@ -226,7 +226,7 @@ class Language
 
   public static function setHeaders ($language, $mime)
   {
-    list ($lang, $country, $char) = parse_gettext_lang($language);
+    list($lang, $country, $char) = parse_gettext_lang($language);
 
     if (!headers_sent()) {
       header("Content-Language: $lang".(empty($country) ? '' : "-$country"));
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index 2538abcc5..0f4bc0d95 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -196,7 +196,7 @@ class SnapshotsAttribute extends OrderedArrayAttribute
   protected function genRowIcons ($key, $value)
   {
     $id = $this->getHtmlId();
-    list ($img, $nbicons) = parent::genRowIcons($key, $value);
+    list($img, $nbicons) = parent::genRowIcons($key, $value);
     $img = $this->renderInputField(
       'image', $id.'_restore_'.$key,
       [
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index a81e9f316..801612d71 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -268,7 +268,7 @@ class SnapshotHandler
       $new_dn                           = 'gosaSnapshotTimestamp='.$target['gosaSnapshotTimestamp'].','.$new_base;
       $ldap->cat($new_dn);
       $usec++;
-    } while ($ldap->count());
+    } while($ldap->count());
 
     /* Insert this new snapshot */
     $ldap->cd($this->snapshotRDN);
diff --git a/include/class_acl.inc b/include/class_acl.inc
index abe740340..e327d51af 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -63,7 +63,7 @@ class acl
         if ($pa == $pb) {
           return 0;
         }
-        return ($pa < $pb ? -1 : 1);
+        return($pa < $pb ? -1 : 1);
       }
     );
 
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 9aa823bf9..99f6aa621 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -241,7 +241,7 @@ class baseSelector
         }
         $this->tree .= "<ul>\n";
       } elseif ($indent < $last_indent) {
-        for ($i = 0; $i < ($last_indent - $indent); $i++) {
+        for($i = 0; $i < ($last_indent - $indent); $i++) {
           $this->tree .= "</li></ul>\n";
         }
         $this->tree .= "</li>\n";
diff --git a/include/class_config.inc b/include/class_config.inc
index cce36a10b..e6f06de7e 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -232,7 +232,7 @@ class config
 
       /* Load main parameters */
       case 'MAIN':
-        $this->data['MAIN'] = array_merge ($this->data['MAIN'], $attrs);
+        $this->data['MAIN'] = array_merge($this->data['MAIN'], $attrs);
         break;
 
       /* Ignore other tags */
@@ -539,8 +539,8 @@ class config
 
     /* Get list of department objects */
     $ldap = $this->get_ldap_link();
-    $ldap->cd ($this->current['BASE']);
-    $ldap->search ($filter, $ldap_values);
+    $ldap->cd($this->current['BASE']);
+    $ldap->search($filter, $ldap_values);
     while ($attrs = $ldap->fetch()) {
 
       /* Detect department type */
@@ -980,7 +980,7 @@ class config
           }
         }
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join (',', array_unique ($acl)), "Class $class categories");
+      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join (',', array_unique($acl)), "Class $class categories");
       /* Feed menu */
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 1f54867f5..369e54e82 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -167,7 +167,7 @@ class divSelectBox
       if ($this->headers !== FALSE) {
         $this->cols = count($this->headers);
         $str .= '<tr>';
-        for ($i = 0; $i < ($this->cols); $i++) {
+        for($i = 0; $i < ($this->cols); $i++) {
           if ($i >= ($this->cols - 1)) {
             $str .= '<td style="height:100%;border:0px;">&nbsp;</td>';
           } else {
@@ -220,7 +220,7 @@ class divSelectBox
       $s_return .= "\n</tr>";
     }
     $s_return .= "\n<tr>";
-    for ($i = 0; $i < ($this->cols); $i++) {
+    for($i = 0; $i < ($this->cols); $i++) {
       if ($i >= ($this->cols - 1)) {
         $s_return .= '<td style="height:100%;border:0px;"><div style="font-size:1px;">&nbsp;</div></td>';
       } else {
diff --git a/include/class_filter.inc b/include/class_filter.inc
index 7a9ab4474..f8e515a14 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -333,7 +333,7 @@ class filter
     $c          = 0;
 
     /* Fill cells with charaters */
-    for ($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
+    for($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
       if ($c == 0) {
         $alphabet .= "<tr>";
       }
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 2f1809884..4c90b6f7c 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -544,7 +544,7 @@ class LDAP
       }
       $r = @ldap_delete($this->cid, $deletedn);
       $this->error = @ldap_error($this->cid);
-      return ($r ? $r : 0);
+      return($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -640,7 +640,7 @@ class LDAP
         }
       }
       $this->error = @ldap_error($this->cid);
-      return ($r ? $r : 0);
+      return($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -693,7 +693,7 @@ class LDAP
       if (!$this->success()) {
         $this->error .= $this->makeReadableErrors($this->error, $attrs);
       }
-      return ($r ? $r : 0);
+      return($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -716,7 +716,7 @@ class LDAP
       if (!$this->success()) {
         $this->error .= $this->makeReadableErrors($this->error, $attrs);
       }
-      return ($r ? $r : 0);
+      return($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -757,7 +757,7 @@ class LDAP
         }
       }
 
-      $this->cat ($srp, $cdn);
+      $this->cat($srp, $cdn);
       $attrs = $this->fetch($srp);
 
       /* Create missing entry? */
@@ -870,7 +870,7 @@ class LDAP
   function get_additional_error ()
   {
     $error = "";
-    @ldap_get_option ($this->cid, LDAP_OPT_ERROR_STRING, $error);
+    @ldap_get_option($this->cid, LDAP_OPT_ERROR_STRING, $error);
     return $error;
   }
 
@@ -924,7 +924,7 @@ class LDAP
   function hitSizeLimit ()
   {
     /* LDAP_SIZELIMIT_EXCEEDED 0x04 */
-    return ($this->get_errno() == 0x04);
+    return($this->get_errno() == 0x04);
   }
 
   function get_credentials ($url, $referrals = NULL)
@@ -1067,7 +1067,7 @@ class LDAP
             /* Ignore version number */
           } else {
             /* Line has ended */
-            list ($key, $value) = explode(':', $line, 2);
+            list($key, $value) = explode(':', $line, 2);
             $value = trim($value);
             if (preg_match('/^:/', $value)) {
               $value = base64_decode(trim(substr($value, 1)));
@@ -1235,7 +1235,7 @@ class LDAP
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
     $objectclasses = [];
-    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
+    $sr = ldap_read($this->cid, $nb, 'objectClass=*', ['objectclasses']);
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
       return [];
@@ -1359,15 +1359,15 @@ class LDAP
   function get_naming_contexts ($server, $admin = '', $password = '')
   {
     /* Build LDAP connection */
-    $ds = ldap_connect ($server);
+    $ds = ldap_connect($server);
     if (!$ds) {
       die ('Can\'t bind to LDAP. No check possible!');
     }
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-    ldap_bind ($ds, $admin, $password);
+    ldap_bind($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
+    $sr   = @ldap_read($ds, '', 'objectClass=*', ['namingContexts']);
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 89de0ed9a..3f5d18384 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -1117,7 +1117,7 @@ class listing
     $params = [func_get_arg(2)];
 
     // Collect sprintf params
-    for ($i = 3;$i < func_num_args();$i++) {
+    for($i = 3;$i < func_num_args();$i++) {
       $val = func_get_arg($i);
       if (empty($val)) {
         continue;
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index afbedbcd9..d560ef3cc 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -443,7 +443,7 @@ class msgPool {
       $mismatch = "";
 
       mb_internal_encoding('UTF-8');
-      for ($i = 0; $i <= mb_strlen($data); $i++) {
+      for($i = 0; $i <= mb_strlen($data); $i++) {
         $currentChar = mb_substr($data, $i, 1);
         if (preg_match("$regex", $currentChar)) {
           $result .= $currentChar;
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index 095728a3c..a725ea4d6 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -352,7 +352,7 @@ class pluglist {
           if (isset($info['CLASS']) && plugin_available($info['CLASS'])) {
             $index  = $this->get_index($info['CLASS']);
             $this->allowed_plugins[$index] = $index;
-            list ($plHeadline, $plDescription, $href, ) = $this->get_infos($info['CLASS']);
+            list($plHeadline, $plDescription, $href, ) = $this->get_infos($info['CLASS']);
             $id             = $info['CLASS'];
           } elseif (!isset($info['CLASS'])) {
             $plHeadline     = $info['TITLE'];
@@ -416,7 +416,7 @@ class pluglist {
           }
           if (isset($info['CLASS']) && plugin_available($info['CLASS'])) {
             /* Read information from class variable */
-            list ($plHeadline, $plDescription, $href, $plIcon) = $this->get_infos($info['CLASS']);
+            list($plHeadline, $plDescription, $href, $plIcon) = $this->get_infos($info['CLASS']);
             $id             = $info['CLASS'];
           } elseif (!isset($info['CLASS'])) {
             $plHeadline     = $info['TITLE'];
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 35795369a..ef058d674 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -503,7 +503,7 @@ class templateHandling
             );
             return [];
           }
-          $deps = static::flatDepends ($cache, $errors, $depends, $a, $forbidden);
+          $deps = static::flatDepends($cache, $errors, $depends, $a, $forbidden);
           if (($askmeKey = array_search('askme', $deps)) !== FALSE) {
             /* Do not flat special askme dependency */
             unset($deps[$askmeKey]);
@@ -527,7 +527,7 @@ class templateHandling
       if (!is_array($values))  {
         $values = [$values];
       }
-      unset ($values['count']);
+      unset($values['count']);
       foreach ($values as $value) {
         $offset = 0;
         while (preg_match('/%([^%\|]+\|)?([^%]+)%/', $value, $m, PREG_OFFSET_CAPTURE, $offset)) {
diff --git a/include/class_tests.inc b/include/class_tests.inc
index a943c9325..cd68bac8d 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -325,7 +325,7 @@ class tests
 
       $ar2  = explode(".", $ip2);
       $var2 = $ar2[0] * (16777216) + $ar2[1] * (65536) + $ar2[2] * (256) + $ar2[3];
-      return ($var1 < $var2);
+      return($var1 < $var2);
     }
   }
 
@@ -356,7 +356,7 @@ class tests
     $curr   = $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3];
     $last   = $la[0] * (16777216) + $la[1] * (65536) + $la[2] * (256) + $la[3];
 
-    return ($first < $curr && $last > $curr);
+    return($first < $curr && $last > $curr);
   }
 
   /* \brief Check if the specified IP address $address is inside the given network */
@@ -371,7 +371,7 @@ class tests
     $to   = $to[0] * (16777216) + $to[1] * (65536) + $to[2] * (256) + $to[3];
     $ad   = $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3];
 
-    return ($ad >= $from && $ad <= $to);
+    return($ad >= $from && $ad <= $to);
   }
 }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 99f836505..51206f8b0 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -332,7 +332,7 @@ class userinfo
   {
     $remove = (strpos($this->get_permissions($dn, $object.'/'.$class), 'd') !== FALSE);
     $read   = (strpos($this->get_complete_category_acls($dn, $object), 'r') !== FALSE);
-    return ($remove && $read);
+    return($remove && $read);
   }
 
 
@@ -835,7 +835,7 @@ class userinfo
           }
           $tmp = $this->get_permissions($dn, $category.'/'.$oc);
           $types = $acl;
-          for ($i = 0, $l = strlen($types); $i < $l; $i++) {
+          for($i = 0, $l = strlen($types); $i < $l; $i++) {
             if (strpos($tmp, $types[$i]) === FALSE) {
               $acl = str_replace($types[$i], '', $acl);
             }
@@ -994,7 +994,7 @@ class userinfo
     if (empty($this->ACLperPath)) {
       $this->loadACL();
     }
-    return ($this->get_permissions($config->current['BASE'], 'user/user') == 'rwcdm');
+    return($this->get_permissions($config->current['BASE'], 'user/user') == 'rwcdm');
   }
 
   /* \brief Test if a plugin is blacklisted for this user (does not show up in the menu)
@@ -1004,7 +1004,7 @@ class userinfo
     global $config;
     $blacklist = $config->get_cfg_value('PluginsMenuBlacklist', []);
     foreach ($blacklist as $item) {
-      list ($group, $p) = explode('|', $item, 2);
+      list($group, $p) = explode('|', $item, 2);
       if ($plugin == $p) {
         if (in_array($group, $this->groups) || in_array($group, $this->roles)) {
           return TRUE;
diff --git a/include/functions.inc b/include/functions.inc
index 03c198a8a..cffa023ff 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -415,7 +415,7 @@ function ldap_init ($server, $base, $binddn = '', $pass = '')
   }
 
   /* Preset connection base to $base and return to caller */
-  $ldap->cd ($base);
+  $ldap->cd($base);
   return $ldap;
 }
 
@@ -1017,7 +1017,7 @@ function strict_uid_mode ()
   global $config;
 
   if (isset($config)) {
-    return ($config->get_cfg_value('strictNamingRules') == 'TRUE');
+    return($config->get_cfg_value('strictNamingRules') == 'TRUE');
   }
   return TRUE;
 }
@@ -1381,7 +1381,7 @@ function gen_uids ($rule, $attributes)
   $stripped   = $rule;
   $variables  = [];
 
-  for ($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
+  for($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
     $variables[$pos]  = templateHandling::parseMask($m[1][0], $attributes);
     $replace          = '{'.$pos.'}';
     $stripped         = substr_replace($stripped, $replace, $m[0][1], strlen($m[0][0]));
@@ -1547,7 +1547,7 @@ function generate_alphabet ($count = 10)
   $c          = 0;
 
   /* Fill cells with charaters */
-  for ($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
+  for($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
     if ($c == 0) {
       $alphabet .= "<tr>";
     }
@@ -2336,13 +2336,13 @@ if (!function_exists ('ldap_escape')) {
         $charMaps[0][chr($i)] = sprintf('\\%02x', $i);
       }
 
-      for ($i = 0, $l = count($charMaps[LDAP_ESCAPE_FILTER]); $i < $l; $i++) {
+      for($i = 0, $l = count($charMaps[LDAP_ESCAPE_FILTER]); $i < $l; $i++) {
         $chr = $charMaps[LDAP_ESCAPE_FILTER][$i];
         unset($charMaps[LDAP_ESCAPE_FILTER][$i]);
         $charMaps[LDAP_ESCAPE_FILTER][$chr] = $charMaps[0][$chr];
       }
 
-      for ($i = 0, $l = count($charMaps[LDAP_ESCAPE_DN]); $i < $l; $i++) {
+      for($i = 0, $l = count($charMaps[LDAP_ESCAPE_DN]); $i < $l; $i++) {
         $chr = $charMaps[LDAP_ESCAPE_DN][$i];
         unset($charMaps[LDAP_ESCAPE_DN][$i]);
         $charMaps[LDAP_ESCAPE_DN][$chr] = $charMaps[0][$chr];
@@ -2364,7 +2364,7 @@ if (!function_exists ('ldap_escape')) {
 
     // Remove any chars to ignore from the list
     $ignore = (string)$ignore;
-    for ($i = 0, $l = strlen($ignore); $i < $l; $i++) {
+    for($i = 0, $l = strlen($ignore); $i < $l; $i++) {
       unset($charMap[$ignore[$i]]);
     }
 
@@ -2412,7 +2412,7 @@ if (!function_exists ('random_int')) {
       $rnd = hexdec(bin2hex($randomBytes));
       // discard irrelevant bits
       $rnd = $rnd & $filter;
-    } while ($rnd > $range);
+    } while($rnd > $range);
     return $min + $rnd;
   }
 }
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index d74650c2f..f96bccd44 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -225,7 +225,7 @@ function print_a ($array, $return_mode = FALSE, $show_object_vars = FALSE, $expo
     $output = '<span style="color:red;font-size:small;">print_a( '.gettype( $array ).' )</span>';
   }
 
-  error_reporting ($e);
+  error_reporting($e);
   if ($return_mode) {
     return $output;
   } else {
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index 2a618a64b..a6255054b 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -120,7 +120,7 @@ class passwordMethodsasl extends passwordMethod
   function need_password ()
   {
     global $config;
-    return ($config->get_cfg_value('forceSaslPasswordAsk', 'FALSE') == 'TRUE');
+    return($config->get_cfg_value('forceSaslPasswordAsk', 'FALSE') == 'TRUE');
   }
 }
 ?>
diff --git a/include/password-methods/class_password-methods-smd5.inc b/include/password-methods/class_password-methods-smd5.inc
index d5b0a8cef..c52a7b5b2 100644
--- a/include/password-methods/class_password-methods-smd5.inc
+++ b/include/password-methods/class_password-methods-smd5.inc
@@ -67,7 +67,7 @@ class passwordMethodsmd5 extends passwordMethod
     $salt = substr($hash, 16);
     $hash = substr($hash, 0, 16);
     $nhash = pack('H*', md5($pwd . $salt));
-    return ($nhash == $hash);
+    return($nhash == $hash);
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods-ssha.inc b/include/password-methods/class_password-methods-ssha.inc
index 820efd749..78e38d4dc 100644
--- a/include/password-methods/class_password-methods-ssha.inc
+++ b/include/password-methods/class_password-methods-ssha.inc
@@ -83,7 +83,7 @@ class passwordMethodssha extends passwordMethod
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
       return FALSE;
     }
-    return ($nhash == $hash);
+    return($nhash == $hash);
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index 6a0929ff9..b789d5f7c 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -261,7 +261,7 @@ class passwordMethod
    */
   function checkPassword ($pwd, $hash)
   {
-    return ($hash == $this->generate_hash($pwd));
+    return($hash == $this->generate_hash($pwd));
   }
 
 
@@ -380,7 +380,7 @@ class passwordMethod
     global $config;
     if ($config->get_cfg_value("strictPasswordRules") == "TRUE") {
       // Do we have UTF8 characters in the password?
-      return ($password == utf8_decode($password));
+      return($password == utf8_decode($password));
     }
 
     return TRUE;
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 668d9b505..19f236880 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -70,7 +70,7 @@ function html_trace ($errstr = "")
                     '</td></tr>';
   $return_mailto  = rawurlencode('=== Trace ===');
   /* Generate trace history */
-  for ($index = 1, $c = count($trace); $index < $c; $index++) {
+  for($index = 1, $c = count($trace); $index < $c; $index++) {
     $ct   = $trace[$index];
     $loc  = '';
     $func = '';
@@ -207,7 +207,7 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
 
     /* Write to syslog */
     if (class_exists('logging') && !preg_match('/No such object/', $errstr)) {
-      logging::log('view', 'error', '', [], "PHP error: $errstr ($errfile, line $errline)");
+      logging::log('view', 'error', '', [], "PHP error: $errstr($errfile, line $errline)");
     }
 
     set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
@@ -266,7 +266,7 @@ function gosaRaiseError ($errno, $errstr, $errfile, $errline)
 
   /* Create error header */
   $error_collector_mailto .= rawurlencode("=== Error === \n");
-  $error_collector_mailto .= rawurlencode("PHP error: $errstr ($errfile, line $errline)\n");
+  $error_collector_mailto .= rawurlencode("PHP error: $errstr($errfile, line $errline)\n");
   $error_collector_mailto .= rawurlencode("=== /Error === \n\n");
 
   list($html_trace, $mailto_trace) = html_trace($errstr);
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index 8795e6696..0ab90d99c 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -61,7 +61,7 @@ class BooleanAttribute extends Attribute
     if ($this->isTemplate() && $this->isTemplatable() && ($value === '%askme%')) {
       return $value;
     }
-    return ($value == $this->trueValue);
+    return($value == $this->trueValue);
   }
 
   function loadPostValue ()
@@ -86,7 +86,7 @@ class BooleanAttribute extends Attribute
     if ($this->isTemplate() && $this->isTemplatable() && ($this->value === '%askme%')) {
       return $this->value;
     } else {
-      return ($this->value ? $this->trueValue : $this->falseValue);
+      return($this->value ? $this->trueValue : $this->falseValue);
     }
   }
 
diff --git a/include/simpleplugin/attributes/class_SetAttribute.inc b/include/simpleplugin/attributes/class_SetAttribute.inc
index 07698b24c..15ce67e35 100644
--- a/include/simpleplugin/attributes/class_SetAttribute.inc
+++ b/include/simpleplugin/attributes/class_SetAttribute.inc
@@ -453,7 +453,7 @@ class OrderedArrayAttribute extends SetAttribute
         continue;
       }
 
-      list ($img, $nbicons) = $this->genRowIcons($key, $value);
+      list($img, $nbicons) = $this->genRowIcons($key, $value);
 
       $fields[] = ["html" => $img, "attach" => 'style="border:0px;width:'.($nbicons * 20).'px;"'];
       $div->AddEntry($fields);
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index f9d9565cc..37da6f591 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -321,7 +321,7 @@ class Attribute
 
   function hasChanged ()
   {
-    return ($this->getValue() !== $this->initialValue);
+    return($this->getValue() !== $this->initialValue);
   }
 
   function displayValue ($value)
@@ -363,7 +363,7 @@ class Attribute
     if (isset($this->managedAttributesMultipleValues[$mavalue])) {
       return in_array($myvalue, $this->managedAttributesMultipleValues[$mavalue]);
     } else {
-      return ($myvalue == $mavalue);
+      return($myvalue == $mavalue);
     }
   }
 
@@ -520,7 +520,7 @@ class Attribute
         ),
         function ($ou)
         {
-          return ($ou !== FALSE);
+          return($ou !== FALSE);
         }
       );
       while ($attrs = $ldap->fetch()) {
@@ -725,7 +725,7 @@ class Attribute
 
   function foreignKeyCheck ($value, $source)
   {
-    return ($this->getValue() == $value);
+    return($this->getValue() == $value);
   }
 
   protected function renderInputField ($type, $name, $attributes = [])
@@ -878,7 +878,7 @@ class DisplayAttribute extends DisplayLDAPAttribute
 {
   function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = "", $acl = "")
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->setInLdap(FALSE);
   }
 }
@@ -891,7 +891,7 @@ class ObjectLinkAttribute extends DisplayLDAPAttribute
 
   function __construct ($label, $description, $ldapName, $required, $type, $defaultValue = "", $acl = "")
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl);
     $this->type = $type;
   }
 
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index 8e11a2774..dac4b7482 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -548,7 +548,7 @@ class GroupsAttribute extends GenericDialogAttribute
 
   function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = [], $acl = '')
   {
-    parent::__construct ($label, $description, $ldapName, $required, $defaultValue, 'dn', 'cn', $acl);
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, 'dn', 'cn', $acl);
   }
 
   function addValue ($dn, $entry)
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index f0553df61..422eb62ef 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -271,7 +271,7 @@ class BytesSizeAttribute extends UnitIntAttribute
       pow(1024, 3)  => _('GiB'),
       pow(1024, 4)  => _('TiB'),
     ];
-    parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
 
@@ -288,7 +288,7 @@ class TimeAttribute extends UnitIntAttribute
       3600  => _('hours'),
       86400 => _('days'),
     ];
-    parent::__construct ($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
+    parent::__construct($label, $description, $ldapName, $required, $units, $min, $max, $defaultValue, $acl);
   }
 }
 
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index 67acc110d..df03add14 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -745,7 +745,7 @@ class simpleManagement
     }
 
     // Add locks
-    add_lock ($this->dns, $ui->dn);
+    add_lock($this->dns, $ui->dn);
 
     $this->dn           = array_shift($this->dns);
     $this->dialogObject = new templateDialog($this, $type, NULL, $this->dn);
@@ -889,7 +889,7 @@ class simpleManagement
       if ($locks = get_locks($this->dn, TRUE)) {
         return gen_locked_message($locks, $this->dn, TRUE);
       }
-      add_lock ($this->dn, $ui->dn);
+      add_lock($this->dn, $ui->dn);
 
       // Open object
       $this->openTabObject(objects::open($this->dn, $type), $this->dn);
@@ -1069,7 +1069,7 @@ class simpleManagement
           'type'  => $info['name']
         ];
       }
-      add_lock ($this->dns, $ui->dn);
+      add_lock($this->dns, $ui->dn);
 
       // Display confirmation dialog.
       $smarty = get_smarty();
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 9735c22d8..f3c7e9c8d 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -902,7 +902,7 @@ class simplePlugin
 
   protected function acl_skip_write ()
   {
-    return ($this->needEditMode && !session::is_set('edit'));
+    return($this->needEditMode && !session::is_set('edit'));
   }
 
   /*! \brief Can we write the attribute */
@@ -1095,7 +1095,7 @@ class simplePlugin
             $attr->loadPostValue();
           }
         }
-        unset ($attrs);
+        unset($attrs);
       }
       unset($sectionInfo);
       // A second one that applies them. That allow complex stuff such as attribute disabling
@@ -1106,7 +1106,7 @@ class simplePlugin
             $attr->applyPostValue();
           }
         }
-        unset ($attrs);
+        unset($attrs);
       }
       unset($sectionInfo);
     }
@@ -1163,7 +1163,7 @@ class simplePlugin
       if (is_array($this->attrs[$index]) &&
           (count($this->attrs[$index]) == 0) &&
           !isset($this->saved_attributes[$index])) {
-        unset ($this->attrs[$index]);
+        unset($this->attrs[$index]);
         continue;
       }
 
@@ -1172,7 +1172,7 @@ class simplePlugin
           isset($this->saved_attributes[$index]) &&
           !is_array($this->saved_attributes[$index]) &&
           ($this->attrs[$index] == $this->saved_attributes[$index])) {
-        unset ($this->attrs[$index]);
+        unset($this->attrs[$index]);
         continue;
       }
 
@@ -1181,7 +1181,7 @@ class simplePlugin
           isset($this->saved_attributes[$index]) &&
           is_array($this->saved_attributes[$index])) {
         if (!array_differs($this->attrs[$index], $this->saved_attributes[$index])) {
-          unset ($this->attrs[$index]);
+          unset($this->attrs[$index]);
           continue;
         }
       }
@@ -1837,7 +1837,7 @@ class simplePlugin
         $usableAttributes[] = (string)$attr;
       }
     }
-    for ($i = 1; $i < count($usableAttributes); $i++) {
+    for($i = 1; $i < count($usableAttributes); $i++) {
       foreach (new Combinations($usableAttributes, $i) as $attrs) {
         $dn = $attribute.'='.ldap_escape_dn($this->$attribute);
         foreach ($attrs as $attr) {
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index 57cd0f47d..076c9ab93 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -109,7 +109,7 @@ class dashboard extends simplePlugin
     usort($stats,
       function ($a, $b)
       {
-        return ($b['priority'] < $a['priority']);
+        return($b['priority'] < $a['priority']);
       }
     );
 
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index 6b5b5a11a..3fca279f6 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -207,7 +207,7 @@ class aclManagement extends simpleManagement
     if ($dn == $base) {
       $ou = ' . ';
     } else {
-      for ($i = 4;$i < func_num_args();$i++) {
+      for($i = 4;$i < func_num_args();$i++) {
         $val = func_get_arg($i);
         if (empty($val)) {
           continue;
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 0464078ba..1ae261449 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -301,7 +301,7 @@ class groupManagement extends simpleManagement
   {
     $types  = preg_replace('/[^a-z]/i', '', $gosaGroupObjects[0]);
     $result = '';
-    for ($i = 0; $i < strlen($types); $i++) {
+    for($i = 0; $i < strlen($types); $i++) {
       if ($types[$i] == 'I') {
         continue;
       }
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 55bec8e42..406631973 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -47,7 +47,7 @@ class ogrouptabs extends simpleTabs_noSpecial
         $dtabs  = [];
       }
       $tabs   = FALSE;
-      for ($i = 0; $i < strlen($objects); $i++) {
+      for($i = 0; $i < strlen($objects); $i++) {
         if (in_array($objects[$i], ['I','G'])) {
           /* Ignore unknown objects and groups */
           continue;
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index a309d0f17..82235eea9 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -490,7 +490,7 @@ class configInLdap extends simplePlugin
     foreach ($config->data['SECTIONS'] as $section => $section_infos) {
       foreach ($config->data['MENU'][$section] as $info) {
         if (isset($info['CLASS'])) {
-          list ($plHeadline, , , ) = $plist->get_infos($info['CLASS']);
+          list($plHeadline, , , ) = $plist->get_infos($info['CLASS']);
           $menuPlugins[$info['CLASS']] = $plHeadline;
         }
       }
-- 
GitLab


From dd9a825210ccd1eae6f6c10803771f5fa96a73d9 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Mon, 18 Jul 2022 20:02:12 +0100
Subject: [PATCH 101/117] :sparkles: feat(1.3.1) - Return without space

Return without space after declaration
---
 html/class_passwordRecovery.inc               |  2 +-
 include/class_Combinations.inc                |  2 +-
 include/class_IconTheme.inc                   |  2 +-
 include/class_acl.inc                         |  2 +-
 include/class_ldap.inc                        | 20 +++++++++----------
 include/class_tests.inc                       |  6 +++---
 include/class_userinfo.inc                    |  4 ++--
 include/functions.inc                         |  2 +-
 .../class_password-methods-sasl.inc           |  2 +-
 .../class_password-methods-smd5.inc           |  2 +-
 .../class_password-methods-ssha.inc           |  2 +-
 .../class_password-methods.inc                |  4 ++--
 .../attributes/class_BooleanAttribute.inc     |  4 ++--
 include/simpleplugin/class_Attribute.inc      |  8 ++++----
 include/simpleplugin/class_simplePlugin.inc   |  2 +-
 plugins/addons/dashboard/class_dashBoard.inc  |  2 +-
 16 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index b2e54a425..243279ab3 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -387,7 +387,7 @@ class passwordRecovery extends standAlonePage {
     $this->loginAttribute = $config->get_cfg_value('passwordRecoveryLoginAttribute', 'uid');
 
     @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value ('passwordRecoveryActivated'), "passwordRecoveryActivated");
-    return($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
+    return ($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
   }
 
   function storeToken ($temp_password)
diff --git a/include/class_Combinations.inc b/include/class_Combinations.inc
index 73baca00e..65027c70e 100644
--- a/include/class_Combinations.inc
+++ b/include/class_Combinations.inc
@@ -67,7 +67,7 @@ class Combinations implements Iterator
 
   function valid ()
   {
-    return($this->pos >= 0);
+    return ($this->pos >= 0);
   }
 
   protected function _next ()
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 7c5d56bb9..38f856e8d 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -70,7 +70,7 @@ class IconThemeDir
   {
     switch ($this->Type) {
       case 'Fixed':
-        return($this->Size == $size);
+        return ($this->Size == $size);
       default:
       case 'Threshold':
       case 'Scalable':
diff --git a/include/class_acl.inc b/include/class_acl.inc
index e327d51af..abe740340 100644
--- a/include/class_acl.inc
+++ b/include/class_acl.inc
@@ -63,7 +63,7 @@ class acl
         if ($pa == $pb) {
           return 0;
         }
-        return($pa < $pb ? -1 : 1);
+        return ($pa < $pb ? -1 : 1);
       }
     );
 
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 4c90b6f7c..460013b8c 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -544,7 +544,7 @@ class LDAP
       }
       $r = @ldap_delete($this->cid, $deletedn);
       $this->error = @ldap_error($this->cid);
-      return($r ? $r : 0);
+      return ($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -640,7 +640,7 @@ class LDAP
         }
       }
       $this->error = @ldap_error($this->cid);
-      return($r ? $r : 0);
+      return ($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -693,7 +693,7 @@ class LDAP
       if (!$this->success()) {
         $this->error .= $this->makeReadableErrors($this->error, $attrs);
       }
-      return($r ? $r : 0);
+      return ($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -716,7 +716,7 @@ class LDAP
       if (!$this->success()) {
         $this->error .= $this->makeReadableErrors($this->error, $attrs);
       }
-      return($r ? $r : 0);
+      return ($r ? $r : 0);
     } else {
       $this->error = "Could not connect to LDAP server";
       return "";
@@ -924,7 +924,7 @@ class LDAP
   function hitSizeLimit ()
   {
     /* LDAP_SIZELIMIT_EXCEEDED 0x04 */
-    return($this->get_errno() == 0x04);
+    return ($this->get_errno() == 0x04);
   }
 
   function get_credentials ($url, $referrals = NULL)
@@ -1067,7 +1067,7 @@ class LDAP
             /* Ignore version number */
           } else {
             /* Line has ended */
-            list($key, $value) = explode(':', $line, 2);
+            list ($key, $value) = explode(':', $line, 2);
             $value = trim($value);
             if (preg_match('/^:/', $value)) {
               $value = base64_decode(trim(substr($value, 1)));
@@ -1235,7 +1235,7 @@ class LDAP
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
     $objectclasses = [];
-    $sr = ldap_read($this->cid, $nb, 'objectClass=*', ['objectclasses']);
+    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
       return [];
@@ -1359,15 +1359,15 @@ class LDAP
   function get_naming_contexts ($server, $admin = '', $password = '')
   {
     /* Build LDAP connection */
-    $ds = ldap_connect($server);
+    $ds = ldap_connect ($server);
     if (!$ds) {
       die ('Can\'t bind to LDAP. No check possible!');
     }
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-    ldap_bind($ds, $admin, $password);
+    ldap_bind ($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read($ds, '', 'objectClass=*', ['namingContexts']);
+    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_tests.inc b/include/class_tests.inc
index cd68bac8d..a943c9325 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -325,7 +325,7 @@ class tests
 
       $ar2  = explode(".", $ip2);
       $var2 = $ar2[0] * (16777216) + $ar2[1] * (65536) + $ar2[2] * (256) + $ar2[3];
-      return($var1 < $var2);
+      return ($var1 < $var2);
     }
   }
 
@@ -356,7 +356,7 @@ class tests
     $curr   = $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3];
     $last   = $la[0] * (16777216) + $la[1] * (65536) + $la[2] * (256) + $la[3];
 
-    return($first < $curr && $last > $curr);
+    return ($first < $curr && $last > $curr);
   }
 
   /* \brief Check if the specified IP address $address is inside the given network */
@@ -371,7 +371,7 @@ class tests
     $to   = $to[0] * (16777216) + $to[1] * (65536) + $to[2] * (256) + $to[3];
     $ad   = $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3];
 
-    return($ad >= $from && $ad <= $to);
+    return ($ad >= $from && $ad <= $to);
   }
 }
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index 51206f8b0..e7581b17f 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -332,7 +332,7 @@ class userinfo
   {
     $remove = (strpos($this->get_permissions($dn, $object.'/'.$class), 'd') !== FALSE);
     $read   = (strpos($this->get_complete_category_acls($dn, $object), 'r') !== FALSE);
-    return($remove && $read);
+    return ($remove && $read);
   }
 
 
@@ -994,7 +994,7 @@ class userinfo
     if (empty($this->ACLperPath)) {
       $this->loadACL();
     }
-    return($this->get_permissions($config->current['BASE'], 'user/user') == 'rwcdm');
+    return ($this->get_permissions($config->current['BASE'], 'user/user') == 'rwcdm');
   }
 
   /* \brief Test if a plugin is blacklisted for this user (does not show up in the menu)
diff --git a/include/functions.inc b/include/functions.inc
index cffa023ff..d9741c86a 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -1017,7 +1017,7 @@ function strict_uid_mode ()
   global $config;
 
   if (isset($config)) {
-    return($config->get_cfg_value('strictNamingRules') == 'TRUE');
+    return ($config->get_cfg_value('strictNamingRules') == 'TRUE');
   }
   return TRUE;
 }
diff --git a/include/password-methods/class_password-methods-sasl.inc b/include/password-methods/class_password-methods-sasl.inc
index a6255054b..2a618a64b 100644
--- a/include/password-methods/class_password-methods-sasl.inc
+++ b/include/password-methods/class_password-methods-sasl.inc
@@ -120,7 +120,7 @@ class passwordMethodsasl extends passwordMethod
   function need_password ()
   {
     global $config;
-    return($config->get_cfg_value('forceSaslPasswordAsk', 'FALSE') == 'TRUE');
+    return ($config->get_cfg_value('forceSaslPasswordAsk', 'FALSE') == 'TRUE');
   }
 }
 ?>
diff --git a/include/password-methods/class_password-methods-smd5.inc b/include/password-methods/class_password-methods-smd5.inc
index c52a7b5b2..d5b0a8cef 100644
--- a/include/password-methods/class_password-methods-smd5.inc
+++ b/include/password-methods/class_password-methods-smd5.inc
@@ -67,7 +67,7 @@ class passwordMethodsmd5 extends passwordMethod
     $salt = substr($hash, 16);
     $hash = substr($hash, 0, 16);
     $nhash = pack('H*', md5($pwd . $salt));
-    return($nhash == $hash);
+    return ($nhash == $hash);
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods-ssha.inc b/include/password-methods/class_password-methods-ssha.inc
index 78e38d4dc..820efd749 100644
--- a/include/password-methods/class_password-methods-ssha.inc
+++ b/include/password-methods/class_password-methods-ssha.inc
@@ -83,7 +83,7 @@ class passwordMethodssha extends passwordMethod
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
       return FALSE;
     }
-    return($nhash == $hash);
+    return ($nhash == $hash);
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc
index b789d5f7c..6a0929ff9 100644
--- a/include/password-methods/class_password-methods.inc
+++ b/include/password-methods/class_password-methods.inc
@@ -261,7 +261,7 @@ class passwordMethod
    */
   function checkPassword ($pwd, $hash)
   {
-    return($hash == $this->generate_hash($pwd));
+    return ($hash == $this->generate_hash($pwd));
   }
 
 
@@ -380,7 +380,7 @@ class passwordMethod
     global $config;
     if ($config->get_cfg_value("strictPasswordRules") == "TRUE") {
       // Do we have UTF8 characters in the password?
-      return($password == utf8_decode($password));
+      return ($password == utf8_decode($password));
     }
 
     return TRUE;
diff --git a/include/simpleplugin/attributes/class_BooleanAttribute.inc b/include/simpleplugin/attributes/class_BooleanAttribute.inc
index 0ab90d99c..8795e6696 100644
--- a/include/simpleplugin/attributes/class_BooleanAttribute.inc
+++ b/include/simpleplugin/attributes/class_BooleanAttribute.inc
@@ -61,7 +61,7 @@ class BooleanAttribute extends Attribute
     if ($this->isTemplate() && $this->isTemplatable() && ($value === '%askme%')) {
       return $value;
     }
-    return($value == $this->trueValue);
+    return ($value == $this->trueValue);
   }
 
   function loadPostValue ()
@@ -86,7 +86,7 @@ class BooleanAttribute extends Attribute
     if ($this->isTemplate() && $this->isTemplatable() && ($this->value === '%askme%')) {
       return $this->value;
     } else {
-      return($this->value ? $this->trueValue : $this->falseValue);
+      return ($this->value ? $this->trueValue : $this->falseValue);
     }
   }
 
diff --git a/include/simpleplugin/class_Attribute.inc b/include/simpleplugin/class_Attribute.inc
index 37da6f591..fa4561e83 100644
--- a/include/simpleplugin/class_Attribute.inc
+++ b/include/simpleplugin/class_Attribute.inc
@@ -321,7 +321,7 @@ class Attribute
 
   function hasChanged ()
   {
-    return($this->getValue() !== $this->initialValue);
+    return ($this->getValue() !== $this->initialValue);
   }
 
   function displayValue ($value)
@@ -363,7 +363,7 @@ class Attribute
     if (isset($this->managedAttributesMultipleValues[$mavalue])) {
       return in_array($myvalue, $this->managedAttributesMultipleValues[$mavalue]);
     } else {
-      return($myvalue == $mavalue);
+      return ($myvalue == $mavalue);
     }
   }
 
@@ -520,7 +520,7 @@ class Attribute
         ),
         function ($ou)
         {
-          return($ou !== FALSE);
+          return ($ou !== FALSE);
         }
       );
       while ($attrs = $ldap->fetch()) {
@@ -725,7 +725,7 @@ class Attribute
 
   function foreignKeyCheck ($value, $source)
   {
-    return($this->getValue() == $value);
+    return ($this->getValue() == $value);
   }
 
   protected function renderInputField ($type, $name, $attributes = [])
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index f3c7e9c8d..3ebc773b1 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -902,7 +902,7 @@ class simplePlugin
 
   protected function acl_skip_write ()
   {
-    return($this->needEditMode && !session::is_set('edit'));
+    return ($this->needEditMode && !session::is_set('edit'));
   }
 
   /*! \brief Can we write the attribute */
diff --git a/plugins/addons/dashboard/class_dashBoard.inc b/plugins/addons/dashboard/class_dashBoard.inc
index 076c9ab93..57cd0f47d 100644
--- a/plugins/addons/dashboard/class_dashBoard.inc
+++ b/plugins/addons/dashboard/class_dashBoard.inc
@@ -109,7 +109,7 @@ class dashboard extends simplePlugin
     usort($stats,
       function ($a, $b)
       {
-        return($b['priority'] < $a['priority']);
+        return ($b['priority'] < $a['priority']);
       }
     );
 
-- 
GitLab


From eb5cee4fae2d873f3d8c0dbe49540e9f31039d95 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 19 Jul 2022 13:15:32 +0100
Subject: [PATCH 102/117] :sparkles: Fixing Code Style continue

Continuity of code style fixing
---
 html/class_passwordRecovery.inc               |   4 +-
 include/accept-to-gettext.inc                 |   2 +-
 include/class_IconTheme.inc                   |   2 +-
 include/class_SnapshotDialogs.inc             |  10 +-
 include/class_SnapshotHandler.inc             |   2 +-
 include/class_config.inc                      |   4 +-
 include/class_filter.inc                      |   2 +-
 include/class_ldap.inc                        |  18 +--
 include/class_ldapFilter.inc                  |   8 +-
 include/class_ldapSizeLimit.inc               |   2 +-
 include/class_listing.inc                     |  10 +-
 include/class_listingSortIterator.inc         |   2 +-
 include/class_msgPool.inc                     |  12 +-
 include/class_objects.inc                     |   2 +-
 include/class_templateHandling.inc            |   4 +-
 include/functions.inc                         |  24 ++--
 include/functions_debug.inc                   |   2 +-
 include/php_setup.inc                         |   6 +-
 .../attributes/class_DateAttribute.inc        |  10 +-
 .../attributes/class_PhoneNumberAttribute.inc |   2 +-
 include/simpleplugin/class_simplePlugin.inc   |   4 +-
 include/variables.inc                         |  18 +--
 include/variables_common.inc                  |  16 +--
 plugins/admin/acl/class_aclAssignment.inc     |   2 +-
 plugins/admin/acl/class_aclManagement.inc     |   2 +-
 .../admin/departments/class_department.inc    |   2 +-
 plugins/admin/groups/class_roleGeneric.inc    |  10 +-
 plugins/config/class_configInLdap.inc         | 104 +++++++++---------
 plugins/config/class_dashBoardConfig.inc      |   8 +-
 plugins/config/class_mainPluginsConfig.inc    |   4 +-
 plugins/config/class_recoveryConfig.inc       |  18 +--
 plugins/personal/generic/class_user.inc       |  60 +++++-----
 32 files changed, 188 insertions(+), 188 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index 243279ab3..a248d8673 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -50,7 +50,7 @@ class standAlonePage {
 
       /* If SSL is forced, just forward to the SSL enabled site */
       if (($config->get_cfg_value("forcessl") == "TRUE") && ($ssl != '')) {
-        header ("Location: $ssl");
+        header("Location: $ssl");
         exit;
       }
 
@@ -173,7 +173,7 @@ class standAlonePage {
         exit;
       } elseif ($config->get_cfg_value('warnssl') == 'TRUE') {
         /* Display SSL mode warning? */
-        $smarty->assign ('ssl', sprintf(_('Warning: <a href="%s">Session is not encrypted!</a>'), $ssl));
+        $smarty->assign('ssl', sprintf(_('Warning: <a href="%s">Session is not encrypted!</a>'), $ssl));
       }
     }
 
diff --git a/include/accept-to-gettext.inc b/include/accept-to-gettext.inc
index 9429195d6..c78c7cdd4 100644
--- a/include/accept-to-gettext.inc
+++ b/include/accept-to-gettext.inc
@@ -155,7 +155,7 @@ function al2gt ($gettextlangs)
     if (!($infos = parse_gettext_lang($gtlang))) {
       continue;
     }
-    list ($lang, $country, $char) = $infos;
+    list($lang, $country, $char) = $infos;
 
     $lang_score = max_scores($lang_scores, [$lang,$lang.'-'.$country,'*']);
     $char_score = max_scores($char_scores, [$char,'*']);
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 38f856e8d..5372cda7b 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -80,7 +80,7 @@ class IconThemeDir
 
   public function SizeDistance ($size)
   {
-    switch ($this->Type) {
+    switch($this->Type) {
       case 'Fixed':
         return abs($this->Size - $size);
       default:
diff --git a/include/class_SnapshotDialogs.inc b/include/class_SnapshotDialogs.inc
index 0f4bc0d95..ead678ca1 100644
--- a/include/class_SnapshotDialogs.inc
+++ b/include/class_SnapshotDialogs.inc
@@ -39,15 +39,15 @@ class SnapshotCreateDialog extends simplePlugin
       'main' => [
         'name'  => _('Creating an object snapshot'),
         'attrs' => [
-          new DisplayAttribute (
+          new DisplayAttribute(
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
           ),
-          new DisplayAttribute (
+          new DisplayAttribute(
             _('Timestamp'), _('Timestamp of this snapshot creation'),
             'timestamp', FALSE
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Reason'), _('Reason for creating this snapshot'),
             'description', TRUE,
             '',
@@ -257,11 +257,11 @@ class SnapshotRestoreDialog extends simplePlugin
         'name'  => _('Restoring snapshots'),
         'class' => ['fullwidth'],
         'attrs' => [
-          new DisplayAttribute (
+          new DisplayAttribute(
             _('Object'), _('DN of the object you are creating a snapshot of'),
             'object_dn', FALSE
           ),
-          new SnapshotsAttribute (
+          new SnapshotsAttribute(
             _('Snapshots'), _('Existing snapshots for this object'),
             'snapshots', FALSE,
             [],
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 801612d71..b248486ff 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -313,7 +313,7 @@ class SnapshotHandler
     $ldap = $config->get_ldap_link();
 
     /* Prepare bases and some other infos */
-    $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn);
+    $base_of_object = preg_replace('/^[^,]+,/i', '', $dn);
     $new_base       = $this->snapshot_dn($base_of_object);
     $tmp            = [];
 
diff --git a/include/class_config.inc b/include/class_config.inc
index e6f06de7e..961de1a92 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -192,7 +192,7 @@ class config
     }
 
     /* Look through attributes */
-    switch ($this->tags[$this->level - 1]) {
+    switch($this->tags[$this->level - 1]) {
       /* Handle location */
       case 'LOCATION':
         if ($this->tags[$this->level - 2] == 'MAIN') {
@@ -317,7 +317,7 @@ class config
 
     if ($this->ldap === NULL || !is_resource($this->ldap->cid)) {
       /* Build new connection */
-      $this->ldap = ldap_init ($this->current['SERVER'], $this->current['BASE'],
+      $this->ldap = ldap_init($this->current['SERVER'], $this->current['BASE'],
           $this->current['ADMINDN'], $this->get_credentials($this->current['ADMINPASSWORD']));
 
       /* Check for connection */
diff --git a/include/class_filter.inc b/include/class_filter.inc
index f8e515a14..b82e4aab9 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -398,7 +398,7 @@ class filter
     // Load template and replace elementsHtml[]
     foreach ($this->elements as $tag => $element) {
       $htmlCode = "";
-      switch ($element['type']) {
+      switch($element['type']) {
         case "textfield":
           $htmlCode = $this->getTextfield($element);
           $smarty->assign($tag.'DESC', sprintf(_('Searches in %s'), implode(', ', $element['autocomplete']['attribute'])));
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 460013b8c..7c923956a 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -254,7 +254,7 @@ class LDAP
 
       $start = microtime(TRUE);
       $this->clearResult($srp);
-      switch (strtolower($scope)) {
+      switch(strtolower($scope)) {
         case 'base':
           $this->sr[$srp] = @ldap_read($this->cid, $this->basedn, $filter, $attrs);
           break;
@@ -772,7 +772,7 @@ class LDAP
       $attrs = [$type => $param];
 
       /* Hardcoded classes */
-      switch ($type) {
+      switch($type) {
         case 'ou':
           $attrs['objectClass']  = ['organizationalUnit'];
           break;
@@ -1067,7 +1067,7 @@ class LDAP
             /* Ignore version number */
           } else {
             /* Line has ended */
-            list ($key, $value) = explode(':', $line, 2);
+            list($key, $value) = explode(':', $line, 2);
             $value = trim($value);
             if (preg_match('/^:/', $value)) {
               $value = base64_decode(trim(substr($value, 1)));
@@ -1250,7 +1250,7 @@ class LDAP
       $objectclasses[$ocname] = [];
 
       foreach ($pattern as $chunk) {
-        switch ($chunk) {
+        switch($chunk) {
 
           case '(':
             $value = '';
@@ -1331,7 +1331,7 @@ class LDAP
     if (session::is_set('config')) {
       $cfg = session::get('config');
       if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])) {
-        syslog (LOG_INFO, $string);
+        syslog(LOG_INFO, $string);
       }
     }
   }
@@ -1359,15 +1359,15 @@ class LDAP
   function get_naming_contexts ($server, $admin = '', $password = '')
   {
     /* Build LDAP connection */
-    $ds = ldap_connect ($server);
+    $ds = ldap_connect($server);
     if (!$ds) {
-      die ('Can\'t bind to LDAP. No check possible!');
+      die('Can\'t bind to LDAP. No check possible!');
     }
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-    ldap_bind ($ds, $admin, $password);
+    ldap_bind($ds, $admin, $password);
 
     /* Get base to look for naming contexts */
-    $sr   = @ldap_read ($ds, '', 'objectClass=*', ['namingContexts']);
+    $sr   = @ldap_read($ds, '', 'objectClass=*', ['namingContexts']);
     $attr = @ldap_get_entries($ds, $sr);
 
     return $attr[0]['namingcontexts'];
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index 6d93f70c9..cb81838cc 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -29,7 +29,7 @@
   * \brief This class allows to parse and execute on a array an LDAP filter
   * Example:
   * $filter = ldapFilter::parse("(&(objectClass=testClass)(testField=value))");
-  * $array = array('objectClass' => array('testClass'), 'testField' => array ('value1', 'value'));
+  * $array = array('objectClass' => array('testClass'), 'testField' => array('value1', 'value'));
   * if ($filter($array)) {
   *   // do something
   * }
@@ -55,7 +55,7 @@ class ldapFilter
   function __invoke ($array)
   {
     $stopValue = FALSE;
-    switch ($this->operator) {
+    switch($this->operator) {
       case '!':
         return !$this->subparts[0]($array);
       case '|':
@@ -180,7 +180,7 @@ class ldapFilterLeaf extends ldapFilter
   function __invoke ($array)
   {
     if ($this->dnFilter) {
-      switch ($this->operator) {
+      switch($this->operator) {
         case '~=':
           trigger_error('Filter apply might not work as expected');
         case '=':
@@ -195,7 +195,7 @@ class ldapFilterLeaf extends ldapFilter
         $values = [$values];
       }
       foreach ($values as $value) {
-        switch ($this->operator) {
+        switch($this->operator) {
           case '~=':
             trigger_error('Filter apply might not work as expected');
           case '=':
diff --git a/include/class_ldapSizeLimit.inc b/include/class_ldapSizeLimit.inc
index 1b89d5efb..1fe0c8da8 100644
--- a/include/class_ldapSizeLimit.inc
+++ b/include/class_ldapSizeLimit.inc
@@ -68,7 +68,7 @@ class ldapSizeLimit
   function update ()
   {
     if (isset($_POST['set_size_action']) && isset($_POST['action'])) {
-      switch ($_POST['action']) {
+      switch($_POST['action']) {
         case 'newlimit':
           if (isset($_POST['new_limit']) && tests::is_id($_POST['new_limit'])) {
             $this->sizeLimit  = intval($_POST['new_limit']);
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 3f5d18384..1aaf7a76e 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -693,7 +693,7 @@ class listing
         $classes  = "";
         $components = explode(';', $cfg);
         foreach ($components as $part) {
-          switch ($part) {
+          switch($part) {
             case 'r':
               $res .= 'text-align:right;';
               break;
@@ -801,10 +801,10 @@ class listing
     }
 
     foreach ($filters as $filterstring => $filter) {
-      list ($cl, $method, $parts, $offset) = $filter;
+      list($cl, $method, $parts, $offset) = $filter;
       $params = [];
       foreach ($parts as $param) {
-        switch ($param) {
+        switch($param) {
           case 'row':
             $params[] = $row;
             break;
@@ -1415,7 +1415,7 @@ class listing
       }
 
       // Check for special types
-      switch ($action['type']) {
+      switch($action['type']) {
         case 'copypaste':
           $cut    = !isset($action['cut']) || $action['cut'] != "false";
           $copy   = !isset($action['copy']) || $action['copy'] != "false";
@@ -1509,7 +1509,7 @@ class listing
       }
 
       foreach ($aclInfos as $aclInfo) {
-        list ($aclList, $modules) = $aclInfo;
+        list($aclList, $modules) = $aclInfo;
         // Walk thru prepared ACL by using $module
         foreach ($aclList as $sAcl) {
           $checkAcl = '';
diff --git a/include/class_listingSortIterator.inc b/include/class_listingSortIterator.inc
index f011ebaf0..fee52d0be 100644
--- a/include/class_listingSortIterator.inc
+++ b/include/class_listingSortIterator.inc
@@ -75,7 +75,7 @@ class listingSortIterator implements Iterator {
           }
 
           // Take a look at the several types
-          switch ($type) {
+          switch($type) {
             // Sort for string by default
             default:
             case 'string':
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index d560ef3cc..1edb06f2c 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -25,12 +25,12 @@
  * Source code for class msgPool
  */
 
-define ("LDAP_READ",   1);
-define ("LDAP_ADD",    2);
-define ("LDAP_MOD",    3);
-define ("LDAP_DEL",    4);
-define ("LDAP_SEARCH", 5);
-define ("LDAP_AUTH",   6);
+define("LDAP_READ",   1);
+define("LDAP_ADD",    2);
+define("LDAP_MOD",    3);
+define("LDAP_DEL",    4);
+define("LDAP_SEARCH", 5);
+define("LDAP_AUTH",   6);
 
 /*!
  * \brief This class contains all the messages for the various actions
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 2c795c046..9c8d7e055 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -129,7 +129,7 @@ class objects
                 (strpos($ui->get_permissions($key, $attrsAcls[$attr][0], $attrsAcls[$attr][1]), 'r') === FALSE)) {
               continue;
             }
-            switch ($mode) {
+            switch($mode) {
               case '*':
                 unset($fetched_attrs[$attr]['count']);
               case 'raw':
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index ef058d674..041a8adca 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -319,7 +319,7 @@ class templateHandling
     }
     $res = '';
     for ($i = 0; $i < $length; ++$i) {
-      switch ($chars) {
+      switch($chars) {
         case 'd':
           /* digits */
           $res .= (string)random_int(0, 9);
@@ -388,7 +388,7 @@ class templateHandling
       $str = reset($str);
     }
     $result = [$str];
-    switch ($m) {
+    switch($m) {
       case 'F':
         // First
         $result = [reset($str)];
diff --git a/include/functions.inc b/include/functions.inc
index d9741c86a..f3f4973e3 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -25,12 +25,12 @@
  */
 
 /* Define common locations and variables */
-require_once ('variables.inc');
+require_once('variables.inc');
 
 /* Include required files */
-require_once (CACHE_DIR.'/'.CLASS_CACHE);
+require_once(CACHE_DIR.'/'.CLASS_CACHE);
 require_once ('functions_debug.inc');
-require_once ('accept-to-gettext.inc');
+require_once('accept-to-gettext.inc');
 
 /* Define constants for debugging */
 define ('DEBUG_TRACE',    1); /*! Debug level for tracing of common actions (save, check, etc.) */
@@ -43,13 +43,13 @@ define ('DEBUG_CONFIG',   64); /*! Debug level for CONFIG information */
 define ('DEBUG_ACL',      128); /*! Debug level for ACL infos */
 define ('DEBUG_SI',       256); /*! Debug level for communication with Argonaut */
 define ('DEBUG_MAIL',     512); /*! Debug level for all about mail (mailAccounts, imap, sieve etc.) */
-define ('DEBUG_FAI',      1024); /* FAI (incomplete) */
+define ('DEBUG_FAI',      1024); /* FAI(incomplete) */
 
 /* Define shadow states */
-define ('POSIX_ACCOUNT_EXPIRED', 1);
-define ('POSIX_WARN_ABOUT_EXPIRATION', 2);
-define ('POSIX_FORCE_PASSWORD_CHANGE', 4);
-define ('POSIX_DISALLOW_PASSWORD_CHANGE', 8);
+define('POSIX_ACCOUNT_EXPIRED', 1);
+define('POSIX_WARN_ABOUT_EXPIRATION', 2);
+define('POSIX_FORCE_PASSWORD_CHANGE', 4);
+define('POSIX_DISALLOW_PASSWORD_CHANGE', 8);
 
 /* Rewrite german 'umlauts' and spanish 'accents'
    to get better results */
@@ -402,7 +402,7 @@ function ldap_init ($server, $base, $binddn = '', $pass = '')
 {
   global $config;
 
-  $ldap = new LDAP ($binddn, $pass, $server,
+  $ldap = new LDAP($binddn, $pass, $server,
       isset($config->current['LDAPFOLLOWREFERRALS']) && $config->current['LDAPFOLLOWREFERRALS'] == 'TRUE',
       isset($config->current['LDAPTLS']) && $config->current['LDAPTLS'] == 'TRUE');
 
@@ -1472,7 +1472,7 @@ function to_byte ($value)
 
   if (!is_numeric(substr($value, -1))) {
 
-    switch (substr($value, -1)) {
+    switch(substr($value, -1)) {
       case 'g':
         $mult = 1073741824;
         break;
@@ -1765,7 +1765,7 @@ function compare_revision ($revision_file, $revision)
  * a certain key, regardless of the case.
  *
  * \code
- * $items = array ('FOO' => 'blub', 'bar' => 'blub');
+ * $items = array('FOO' => 'blub', 'bar' => 'blub');
  * array_key_ics('foo', $items); # Returns 'blub'
  * array_key_ics('BAR', $items); # Returns 'blub'
  * \endcode
@@ -2189,7 +2189,7 @@ function xmlentities ($str)
  */
 function get_random_char ()
 {
-  $randno = rand (0, 63);
+  $randno = rand(0, 63);
   if ($randno < 12) {
     // Digits, '/' and '.'
     return chr($randno + 46);
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index f96bccd44..6b834f945 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -128,7 +128,7 @@ class printAClass {
       $type = gettype($value);
 
       // change the color and format of the value
-      switch ($type) {
+      switch($type) {
         case 'array':
           break;
 
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 19f236880..7c09ab3d2 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -24,7 +24,7 @@
  * \file php_setup.inc
  * Source code for php_setup
  */
-require_once ("variables.inc");
+require_once("variables.inc");
 
 /*!
  * \brief Escape string for HTML output
@@ -87,7 +87,7 @@ function html_trace ($errstr = "")
       $func .= $ct['function'];
     }
     if (isset($ct['type'])) {
-      switch ($ct['type']) {
+      switch($ct['type']) {
         case "::":
           $type = _("static");
           break;
@@ -337,7 +337,7 @@ date_default_timezone_set("GMT");
 /* Get base dir for reference */
 $BASE_DIR = dirname(dirname(__FILE__));
 $ROOT_DIR = $BASE_DIR."/html";
-error_reporting (E_ALL | E_STRICT);
+error_reporting(E_ALL | E_STRICT);
 
 /* Register error handler */
 $error_collector        = "";
diff --git a/include/simpleplugin/attributes/class_DateAttribute.inc b/include/simpleplugin/attributes/class_DateAttribute.inc
index 2d2a290c2..2f7d9bca7 100644
--- a/include/simpleplugin/attributes/class_DateAttribute.inc
+++ b/include/simpleplugin/attributes/class_DateAttribute.inc
@@ -196,17 +196,17 @@ class TimeHisAttribute extends CompositeAttribute
   {
     $this->convert = $convert;
     $attributes = [
-      new IntAttribute (
+      new IntAttribute(
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
         0, 23, 1
       ),
-      new IntAttribute (
+      new IntAttribute(
         ':', _('Minutes'),
         $ldapName.'_minutes', TRUE,
         0, 59, 0
       ),
-      new IntAttribute (
+      new IntAttribute(
         ':', _('Seconds'),
         $ldapName.'_seconds', TRUE,
         0, 59, 0
@@ -270,12 +270,12 @@ class TimeHiAttribute extends TimeHisAttribute
   {
     $this->convert = $convert;
     $attributes = [
-      new IntAttribute (
+      new IntAttribute(
         '',  _('Hours'),
         $ldapName.'_hours', TRUE,
         0, 23, 1
       ),
-      new IntAttribute (
+      new IntAttribute(
         ':', _('Minutes'),
         $ldapName.'_minutes', TRUE,
         0, 59, 0
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index 522176c84..4d725ff85 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -77,7 +77,7 @@ class phoneSelectDialog extends GenericDialog
   function __construct ($simplePlugin, $attribute, $type)
   {
     $this->attribute  = $attribute;
-    switch ($type) {
+    switch($type) {
       case 'phone':
         $this->dialog = new phoneSelect();
         break;
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 3ebc773b1..e7e778a80 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -1008,7 +1008,7 @@ class simplePlugin
 
       /* Get current objectClasses in order to add the required ones */
       $ldap->cat($this->dn);
-      $tmp  = $ldap->fetch ();
+      $tmp  = $ldap->fetch();
       $oc   = [];
       if ($this->is_template) {
         if (isset($tmp['fdTemplateField'])) {
@@ -1369,7 +1369,7 @@ class simplePlugin
    */
   protected function handle_hooks ($when, $mode, array $addAttrs = [])
   {
-    switch ($mode) {
+    switch($mode) {
       case 'add':
         return $this->callHook($when.'CREATE', $addAttrs);
 
diff --git a/include/variables.inc b/include/variables.inc
index e4fe9c114..c7ea9b72a 100644
--- a/include/variables.inc
+++ b/include/variables.inc
@@ -28,7 +28,7 @@
 require_once('variables_common.inc');
 
 if (!defined("CONFIG_DIR")) {
-  define ("CONFIG_DIR", "/etc/fusiondirectory/"); /* FusionDirectory etc path */
+  define("CONFIG_DIR", "/etc/fusiondirectory/"); /* FusionDirectory etc path */
 }
 
 /*!
@@ -36,7 +36,7 @@ if (!defined("CONFIG_DIR")) {
  *   e.g.  SetEnv CONFIG_FILE fusiondirectory.conf 1.0
  */
 if (!defined("CONFIG_FILE")) {
-  define ("CONFIG_FILE", "fusiondirectory.conf"); /* FusionDirectory filename */
+  define("CONFIG_FILE", "fusiondirectory.conf"); /* FusionDirectory filename */
 }
 
 /*!
@@ -47,37 +47,37 @@ define("SMARTY", "/usr/share/php/smarty3/Smarty.class.php");
 /*!
  * \brief Smarty compile dir
  */
-define ("SPOOL_DIR", "/var/spool/fusiondirectory/"); /* FusionDirectory spool directory */
+define("SPOOL_DIR", "/var/spool/fusiondirectory/"); /* FusionDirectory spool directory */
 
 /*!
  * \brief Global cache dir
  */
-define ("CACHE_DIR", "/var/cache/fusiondirectory/"); /* FusionDirectory var directory */
+define("CACHE_DIR", "/var/cache/fusiondirectory/"); /* FusionDirectory var directory */
 
 /*!
  * \brief Global locale cache dir
  */
-define ("LOCALE_DIR", "/var/cache/fusiondirectory/locale/"); /* FusionDirectory locale directory */
+define("LOCALE_DIR", "/var/cache/fusiondirectory/locale/"); /* FusionDirectory locale directory */
 
 /*!
  * \brief Global tmp dir
  */
-define ("TEMP_DIR", "/var/cache/fusiondirectory/tmp/"); /* FusionDirectory tmp directory */
+define("TEMP_DIR", "/var/cache/fusiondirectory/tmp/"); /* FusionDirectory tmp directory */
 
 /*!
  * \brief Directory containing the configuration template
  */
-define ("CONFIG_TEMPLATE_DIR", "/var/cache/fusiondirectory/template/"); /* FusionDirectory template directory */
+define("CONFIG_TEMPLATE_DIR", "/var/cache/fusiondirectory/template/"); /* FusionDirectory template directory */
 
 /*!
  * \brief Directory containing the fai logs
  */
-define ("FAI_LOG_DIR", "/var/cache/fusiondirectory/fai/"); /* FusionDirectory fai directory */
+define("FAI_LOG_DIR", "/var/cache/fusiondirectory/fai/"); /* FusionDirectory fai directory */
 
 /*!
  * \brief Directory containing the vacation files
  */
-define ("SUPANN_DIR", "/etc/fusiondirectory/supann/"); /* FusionDirectory supann template directory */
+define("SUPANN_DIR", "/etc/fusiondirectory/supann/"); /* FusionDirectory supann template directory */
 
 /*!
  * \brief name of the class.cache file
diff --git a/include/variables_common.inc b/include/variables_common.inc
index bc56489e9..ff4c496f6 100644
--- a/include/variables_common.inc
+++ b/include/variables_common.inc
@@ -29,7 +29,7 @@
  * e.g. SetEnv CONFIG_DIR /etc/fusiondirectory
 */
 if (isset($_SERVER['CONFIG_DIR'])) {
-  define ("CONFIG_DIR", $_SERVER['CONFIG_DIR']);
+  define("CONFIG_DIR", $_SERVER['CONFIG_DIR']);
 }
 
 /*
@@ -37,18 +37,18 @@ if (isset($_SERVER['CONFIG_DIR'])) {
  *  e.g.  SetEnv CONFIG_FILE fusiondirectory.conf 1.0
  */
 if (isset($_SERVER['CONFIG_FILE'])) {
-  define ("CONFIG_FILE", $_SERVER['CONFIG_FILE']);
+  define("CONFIG_FILE", $_SERVER['CONFIG_FILE']);
 }
 
 /*!
  * \brief php library path
  */
-define ("PHP_DIR", "/usr/share/php"); /*! Define php directory */
+define("PHP_DIR", "/usr/share/php"); /*! Define php directory */
 
 /*!
  * \brief php pear path
  */
-define ("PEAR_DIR", "/usr/share/php"); /*! Define PEAR directory */
+define("PEAR_DIR", "/usr/share/php"); /*! Define PEAR directory */
 
 /*!
  * \brief fpdf library path
@@ -63,21 +63,21 @@ define("FPDF_FONTPATH", "/usr/share/php/fpdf/font/"); /*! Define fpdf font path
 /*!
  * \brief FusionDirectory Version
  */
-define ("FD_VERSION", "1.3.1"); /*! Define FusionDirectory version */
+define("FD_VERSION", "1.3.1"); /*! Define FusionDirectory version */
 
 /*!
  * \brief FusionDirectory config object RDN
  */
-define ("CONFIGRDN", "cn=config,ou=fusiondirectory,"); /*! Define FusionDirectory config object */
+define("CONFIGRDN", "cn=config,ou=fusiondirectory,"); /*! Define FusionDirectory config object */
 
 /*!
  * \brief Minimum PHP version
  */
-define ('PHP_MIN_VERSION', '5.6.0');
+define('PHP_MIN_VERSION', '5.6.0');
 
 /*!
  * \brief Toggle crashing on PHP error, used for test suites
  */
-define ('PHP_ERROR_FATAL', 'FALSE');
+define('PHP_ERROR_FATAL', 'FALSE');
 
 ?>
diff --git a/plugins/admin/acl/class_aclAssignment.inc b/plugins/admin/acl/class_aclAssignment.inc
index b4d1d7cac..977152361 100644
--- a/plugins/admin/acl/class_aclAssignment.inc
+++ b/plugins/admin/acl/class_aclAssignment.inc
@@ -315,7 +315,7 @@ class aclAssignment extends simplePlugin
 
   function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE)
   {
-    parent::__construct ($dn, $object, $parent, FALSE);
+    parent::__construct($dn, $object, $parent, FALSE);
     $this->attributesInfo['main']['name'] = sprintf(_('Assignments on object or subtree %s'), $this->dn);
   }
 
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index 3fca279f6..eb012c93c 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -45,7 +45,7 @@ class aclAssignmentCreationDialog extends simplePlugin
         'name'  => _('ACL assignment creation'),
         'class' => ['fullwidth'],
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Dn'), _('DN you wish to add assignments for'),
             'baseDn', TRUE,
             $config->current['BASE'], 'aclMode',
diff --git a/plugins/admin/departments/class_department.inc b/plugins/admin/departments/class_department.inc
index b0c09ff79..d587b77ab 100644
--- a/plugins/admin/departments/class_department.inc
+++ b/plugins/admin/departments/class_department.inc
@@ -102,7 +102,7 @@ class department extends simplePlugin
             _('Address'), sprintf(_('A postal address for this %s'), $name),
             'postalAddress', FALSE
           ),
-          new PhoneNumberButtonAttribute (
+          new PhoneNumberButtonAttribute(
             _('Phone'), _('Telephone number'),
             'telephoneNumber', FALSE,
             '',
diff --git a/plugins/admin/groups/class_roleGeneric.inc b/plugins/admin/groups/class_roleGeneric.inc
index 5a3e090f3..20292d67e 100644
--- a/plugins/admin/groups/class_roleGeneric.inc
+++ b/plugins/admin/groups/class_roleGeneric.inc
@@ -81,21 +81,21 @@ class roleGeneric extends simplePlugin
       'main' => [
         'name'  => _('Information'),
         'attrs' => [
-          new BaseSelectorAttribute (get_ou('roleRDN')),
+          new BaseSelectorAttribute(get_ou('roleRDN')),
           new StringAttribute(
             _('Name'), _('Name of this group'),
             'cn', TRUE,
             '', '', (strict_uid_mode() ? '/^[a-z0-9_-]+$/i' : '/^[a-z0-9_.-]+$/i')
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Description'), _('Description of the role'),
             'description'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Phone number'), _('Phone number'),
             'telephoneNumber'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Fax number'), _('Fax number'),
             'facsimileTelephoneNumber'
           )
@@ -104,7 +104,7 @@ class roleGeneric extends simplePlugin
       'members' => [
         'name'  => _('Role members'),
         'attrs' => [
-          new RoleMembersAttribute (
+          new RoleMembersAttribute(
             '', _('Add users for the role'),
             'roleOccupant', FALSE
           )
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index 82235eea9..a3485ec97 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -87,62 +87,62 @@ class configInLdap extends simplePlugin
       'look_n_feel' => [
         'name'  => _('Look and feel'),
         'attrs' => [
-          new SelectAttribute (
+          new SelectAttribute(
             _('Language'), _('Language of the application. If \'automatic\' or not available, the one asked by the browser will be used. This setting can be overriden per user.'),
             'fdLanguage', FALSE,
             ['']
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Theme'), _('Theme to be used'),
             'fdTheme', TRUE,
             static::get_themes(),
             'breezy'
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Timezone'), _('Timezone to be used'),
             'fdTimezone', TRUE,
             ['America/New_York']
           ),
-          new HiddenAttribute ('fusionConfigMd5'),
+          new HiddenAttribute('fusionConfigMd5'),
         ]
       ],
       'core_settings' => [
         'name'  => _('Core settings'),
         'attrs' => [
-          new IntAttribute (
+          new IntAttribute(
             _('LDAP size limit'), _('Defines the number of entries to get from LDAP by default.'),
             'fdLdapSizeLimit', FALSE,
             0 /*min*/, FALSE /*no max*/, 200
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Edit locking'),
             _('Check if a entry currently being edited has been modified outside of FusionDirectory in the meantime.'),
             'fdModificationDetectionAttribute', FALSE,
             ['', 'entryCSN', 'contextCSN'], 'entryCSN'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable logging'),
             _('Event logging on FusionDirectory side.'),
             'fdLogging', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Schema validation'),
             _('Enables schema checking during login.'),
             'fdSchemaCheck', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable snapshots'), _('This enables you to save certain states of entries and restore them later on.'),
             'fdEnableSnapshots', FALSE,
             TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Snapshot base'), _('The base where snapshots should be stored inside of the LDAP.'),
             'fdSnapshotBase', FALSE,
             'ou=snapshots,'.$config->current['BASE']
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Wildcard foreign keys'), _('Enables wildcard searches like member=* when moving a whole departement. This will open all existing groups and roles to make sure foreign keys are respected. Slow on big trees.'),
             'fdWildcardForeignKeys', FALSE,
             TRUE
@@ -152,35 +152,35 @@ class configInLdap extends simplePlugin
       'password' => [
         'name'  => _('Password settings'),
         'attrs' => [
-          new SelectAttribute (
+          new SelectAttribute(
             _('Password default hash'), _('Default hash to be used'),
             'fdPasswordDefaultHash', TRUE,
             ['ssha']
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Force default hash'), _('Force the use of the default password hash'),
             'fdForcePasswordDefaultHash'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Password minimum length'), _('Minimum length of user passwords'),
             'fdPasswordMinLength', FALSE,
             0 /*min*/, FALSE /*no max*/
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Password minimum differs'), _('Minimum number of different characters from last password'),
             'fdPasswordMinDiffer', FALSE,
             0 /*min*/, FALSE /*no max*/
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Use account expiration'),
             _('Enables shadow attribute tests during the login to FusionDirectory and forces password renewal or account locking'),
             'fdHandleExpiredAccounts'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('SASL Realm'), _('SASL Realm'),
             'fdSaslRealm'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('SASL Exop'), _('Attribute to be stored in the userPassword attribute'),
             'fdSaslExop'
           ),
@@ -189,40 +189,40 @@ class configInLdap extends simplePlugin
       'login' => [
         'name'  => _('Login and session'),
         'attrs' => [
-          new SelectAttribute (
+          new SelectAttribute(
             _('Login attribute'),
             _('Which LDAP attribute should be used as the login name during login.'),
             'fdLoginAttribute', TRUE,
             ['uid', 'mail', 'uid,mail'], 'uid',
             ['uid', 'mail', 'both']
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enforce encrypted connections'),
             _('Enables PHP security checks to force encrypted access (https) to the web interface.'),
             'fdForceSSL'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Warn if session is not encrypted'),
             _('will display a warning to the user when http is used instead of https.'),
             'fdWarnSSL', FALSE,
             TRUE
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Session lifetime'), _('Defines when a session will expire in seconds (0 to disable).'),
             'fdSessionLifeTime', TRUE,
             0 /*min*/, FALSE /*no max*/, 1800
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('HTTP Basic authentication'), _('Use HTTP Basic authentication protocol instead of the login form.'),
             'fdHttpAuthActivated', FALSE,
             FALSE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('HTTP Header authentication'), _('Use HTTP Header authentication instead of the login form.'),
             'fdHttpHeaderAuthActivated', FALSE,
             FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Header name'), _('Name of the header containing user identifier.'),
             'fdHttpHeaderAuthHeaderName', FALSE,
             'AUTH_USER'
@@ -232,17 +232,17 @@ class configInLdap extends simplePlugin
       'ssl' => [
         'name'  => _('SSL'),
         'attrs' => [
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('Key path'), _('Path to FusionDirectory private key. Unused for now.'),
             'fdSslKeyPath', FALSE,
             '/etc/ssl/private/fd.key'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('Certificate path'), _('Path to FusionDirectory certificate. Unused for now.'),
             'fdSslCertPath', FALSE,
             '/etc/ssl/certs/fd.cert'
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('CA certificate path'), _('Path to the CA certificate. Used for validating Argonaut Server host.'),
             'fdSslCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
@@ -252,27 +252,27 @@ class configInLdap extends simplePlugin
       'cas' => [
         'name'  => _('CAS'),
         'attrs' => [
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Enable CAS'), _('CAS login will be used instead of LDAP bind'),
             'fdCasActivated', FALSE,
             FALSE
           ),
-          new TrimmedStringAttribute (
+          new TrimmedStringAttribute(
             _('CA certificate path'), _('Path to the CA certificate of the CAS server'),
             'fdCasServerCaCertPath', FALSE,
             '/etc/ssl/certs/ca.cert'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Host'), _('Host of the CAS server'),
             'fdCasHost', FALSE,
             'localhost'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Port'), _('Port the CAS server is listening on'),
             'fdCasPort', FALSE,
             0 /*min*/, FALSE /*no max*/, 443
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('CAS context'), _('CAS context to be used'),
             'fdCasContext', FALSE,
             '/cas'
@@ -283,41 +283,41 @@ class configInLdap extends simplePlugin
         'name'  => _('People and group storage'),
         'class' => ['critical'],
         'attrs' => [
-          new SelectAttribute (
+          new SelectAttribute(
             _('People DN attribute'), _('Attribute to use at the beginning of users dn'),
             'fdAccountPrimaryAttribute', TRUE,
             ['uid', 'cn']
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('CN pattern'), _('The pattern to use to build the common name field'),
             'fdCnPattern', TRUE,
             '%givenName% %sn%'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Strict naming policy'),
             _('Enables strict checking of user and group names'),
             'fdStrictNamingRules', FALSE,
             TRUE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Users RDN'), _('The branch where users are stored.'),
             'fdUserRDN', TRUE,
             'ou=people'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('ACL role RDN'), _('The branch where ACL roles are stored.'),
             'fdAclRoleRDN', TRUE,
             'ou=aclroles'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Restrict role members'), _('When enabled only users from the same branch or members of groups from the same branch can be added to a role.'),
             'fdRestrictRoleMembers'
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Separate address fields'), _('Expose street, postOfficeBox and postalCode fields instead of postalAddress.'),
             'fdSplitPostalAddress'
           ),
-          new PostalAddressAttribute (
+          new PostalAddressAttribute(
             _('Postal address pattern'), _('When using separate address fields, you can use a pattern to fill postalAddress field.'),
             'fdPostalAddressPattern'
           ),
@@ -326,23 +326,23 @@ class configInLdap extends simplePlugin
       'debug' => [
         'name'  => _('Debugging'),
         'attrs' => [
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Display errors'),
             _('Shows PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some passwords in it.'),
             'fdDisplayErrors'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Maximum LDAP query time'), _('Stop LDAP actions if there is no answer within the specified number of seconds.'),
             'fdLdapMaxQueryTime', FALSE,
             0 /*min*/, FALSE /*no max*/
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Log LDAP statistics'),
             _('Track LDAP timing statistics to the syslog. This may help to find indexing problems or bad search filters.'),
             'fdLdapStats'
           ),
-          new DebugLevelAttribute (
-            new SelectAttribute (
+          new DebugLevelAttribute(
+            new SelectAttribute(
               _('Debug level'),
               _('Display certain information on each page load.'),
               'fdDebugLevel', FALSE,
@@ -358,19 +358,19 @@ class configInLdap extends simplePlugin
       'miscellaneous' => [
         'name'  => _('Miscellaneous'),
         'attrs' => [
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Display summary in listings'),
             _('Determines whether a status bar will be shown on the bottom of lists, displaying a short summary of type and number of elements in the list.'),
             'fdListSummary', FALSE,
             TRUE
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Show ACL tab on all objects'),
             _('For very specific ACL rights setting where you might need to give right on a single object.'),
             'fdAclTabOnObjects'
           ),
           new SetAttribute(
-            new StringAttribute (
+            new StringAttribute(
               _('Available department categories'), _('Available categories in the departments dropdown'),
               'fdDepartmentCategories', FALSE
             ),
@@ -405,8 +405,8 @@ class configInLdap extends simplePlugin
         'name'  => _('Hooks'),
         'class' => ['fullwidth'],
         'attrs' => [
-          new OrderedArrayAttribute (
-            new CompositeAttribute (
+          new OrderedArrayAttribute(
+            new CompositeAttribute(
               _('Hooks that are called when specific actions happens'),
               'fdTabHook',
               [
@@ -436,7 +436,7 @@ class configInLdap extends simplePlugin
             [],
             TRUE // edition
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Display hook output'),
             _('When enabled successful hook execution output is displayed to the user using a dialog.'),
             'fdDisplayHookOutput'
diff --git a/plugins/config/class_dashBoardConfig.inc b/plugins/config/class_dashBoardConfig.inc
index 09993901b..f2a7d96df 100644
--- a/plugins/config/class_dashBoardConfig.inc
+++ b/plugins/config/class_dashBoardConfig.inc
@@ -41,13 +41,13 @@ class dashboardConfig extends simplePlugin
       'systems' => [
         'name'  => _('Dashboard name schema'),
         'attrs' => [
-          new IntAttribute (
+          new IntAttribute(
             _('Number of digits'), _('Number of digits to use after prefix'),
             'fdDashboardNumberOfDigit', FALSE,
             1, 20, 3
           ),
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Prefixes'), _('Prefixes to be used for computer ids'),
               'fdDashboardPrefix', TRUE
             ),
@@ -58,7 +58,7 @@ class dashboardConfig extends simplePlugin
       'users' => [
         'name'  => _('Dashboard expired users'),
         'attrs' => [
-          new IntAttribute (
+          new IntAttribute(
             _('Number of days'), _('Number of days before expiration needed for an account to show in the dashboard next expired accounts list'),
             'fdDashboardExpiredAccountsDays', FALSE,
             1, FALSE, 15
diff --git a/plugins/config/class_mainPluginsConfig.inc b/plugins/config/class_mainPluginsConfig.inc
index dec365b7e..e1c1c2749 100644
--- a/plugins/config/class_mainPluginsConfig.inc
+++ b/plugins/config/class_mainPluginsConfig.inc
@@ -41,7 +41,7 @@ class mainPluginsConfig extends simplePlugin
       'ogroups' => [
         'name'  => _('Object groups'),
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Groups RDN'), _('Branch in which object groups will be stored'),
             'fdOGroupRDN', TRUE,
             'ou=groups'
@@ -51,7 +51,7 @@ class mainPluginsConfig extends simplePlugin
       'sasl' => [
         'name'  => _('SASL'),
         'attrs' => [
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Force to ask for password'), _('Useful if you add a hook using password value when SASL user passwords are edited'),
             'fdForceSaslPasswordAsk', TRUE,
             FALSE
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index 799ea261a..3fd56b2ca 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -41,20 +41,20 @@ class recoveryConfig extends simplePlugin
         'class'     => ['alone'],
         'template'  => get_template_path('simpleplugin_section_alone.tpl'),
         'attrs'     => [
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Activate password recovery'),
             _('Whether to activate or not password recovery feature'),
             'fdPasswordRecoveryActivated',
             FALSE
           ),
-          new MailAttribute (
+          new MailAttribute(
             _('Sender email address'),
             _('Email address from which mails will be sent'),
             'fdPasswordRecoveryEmail',
             TRUE,
             'to.be@chang.ed'
           ),
-          new IntAttribute (
+          new IntAttribute(
             _('Link validity (minutes)'),
             _('Number of minutes before a recovery link expires'),
             'fdPasswordRecoveryValidity',
@@ -68,13 +68,13 @@ class recoveryConfig extends simplePlugin
             TRUE,
             "SomethingSecretAndVeryLong"
           ),
-          new BooleanAttribute (
+          new BooleanAttribute(
             _('Allow the use of alternate addresses'),
             _('Users will also be able to enter one of theirs alternate addresses to recover their password'),
             'fdPasswordRecoveryUseAlternate',
             FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Login attribute'), _('Usually uid, but you can use something else for instance in case of SSO'),
             'fdPasswordRecoveryLoginAttribute', TRUE,
             'uid'
@@ -84,14 +84,14 @@ class recoveryConfig extends simplePlugin
       'first_email' => [
         'name' => _('First email'),
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Subject'),
             _('Subject of the first email'),
             'fdPasswordRecoveryMailSubject',
             TRUE,
             _("[FusionDirectory] Password recovery link")
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Body (first %s is login, second is link)'),
             _('Body of the first email, sent when the user ask for a new password. Use %s for the login and the recovery link.'),
             'fdPasswordRecoveryMailBody',
@@ -103,14 +103,14 @@ class recoveryConfig extends simplePlugin
       'second_email' => [
         'name' => _('Second email'),
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Subject'),
             _('Subject of the second email'),
             'fdPasswordRecoveryMail2Subject',
             TRUE,
             _("[FusionDirectory] Password recovery successful")
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Body (%s is login)'),
             _('Body of the second email, sent to confirm the password has been changed. Use %s for the user login.'),
             'fdPasswordRecoveryMail2Body',
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index da93d51bd..834c3f7e1 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -39,7 +39,7 @@ class UserPasswordAttribute extends CompositeAttribute
       }
     }
 
-    parent::__construct (
+    parent::__construct(
       $description, $ldapName,
       [
         new SelectAttribute(
@@ -313,21 +313,21 @@ class user extends simplePlugin
         'icon'  => 'geticon.php?context=types&icon=user&size=16',
         'attrs' => [
           new HiddenAttribute('cn'),
-          new StringAttribute (
+          new StringAttribute(
             _('Last name'), _('Last name of this user'),
             'sn', TRUE,
             '', '', '/[^,+"?()=<>;\\\\]/'
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('First name'), _('First name of this user'),
             'givenName', TRUE,
             '', '', '/[^,+"?()=<>;\\\\]/'
           ),
-          new TextAreaAttribute (
+          new TextAreaAttribute(
             _('Description'), _('Short description of the user'),
             'description', FALSE
           ),
-          new ImageAttribute (
+          new ImageAttribute(
             _('Picture'), _('The avatar for this user'),
             'jpegPhoto', FALSE,
             150, 200, 'jpeg'
@@ -338,43 +338,43 @@ class user extends simplePlugin
         'name'  => _('Organizational contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Location'), _('Location'),
             'l', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('State'), _('State'),
             'st', FALSE
           ),
-          new PostalAddressAttribute (
+          new PostalAddressAttribute(
             _('Address'), _('Business postal address'),
             'postalAddress', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Room No.'), _('Room number'),
             'roomNumber', FALSE
           ),
-          new PhoneNumberButtonAttribute (
+          new PhoneNumberButtonAttribute(
             _('Phone'), _('Business phone number'),
             'telephoneNumber', FALSE,
             '',
             'phone'
           ),
-          new PhoneNumberButtonAttribute (
+          new PhoneNumberButtonAttribute(
             _('Mobile'), _('Business mobile number'),
             'mobile', FALSE,
             '',
             'mobile'
           ),
-          new PhoneNumberAttribute (
+          new PhoneNumberAttribute(
             _('Pager'), _('Business pager number'),
             'pager', FALSE
           ),
-          new PhoneNumberAttribute (
+          new PhoneNumberAttribute(
             _('Fax'), _('Business fax number'),
             'facsimileTelephoneNumber', FALSE
           ),
-          new URLAttribute (
+          new URLAttribute(
             _('Homepage'), _('Personal homepage'),
             'labeledURI', FALSE
           ),
@@ -384,12 +384,12 @@ class user extends simplePlugin
         'name'  => _('Account information'),
         'icon'  => 'geticon.php?context=applications&icon=ldap&size=16',
         'attrs' => [
-          new BaseSelectorAttribute (get_ou("userRDN")),
-          new UidAttribute (
+          new BaseSelectorAttribute(get_ou("userRDN")),
+          new UidAttribute(
             _('Login'), _('Login of this user'),
             'uid', TRUE
           ),
-          new SelectAttribute (
+          new SelectAttribute(
             _('Preferred language'), _('Preferred language'),
             'preferredLanguage', FALSE,
             array_keys($languages), '', array_values($languages)
@@ -404,15 +404,15 @@ class user extends simplePlugin
         'name'  => _('Personal contact information'),
         'icon'  => 'geticon.php?context=types&icon=contact&size=16',
         'attrs' => [
-          new StringAttribute (
+          new StringAttribute(
             _('Display name'), _('Name this user should appear as. Used by Exchange.'),
             'displayName', FALSE
           ),
-          new PostalAddressAttribute (
+          new PostalAddressAttribute(
             _('Home address'), _('Home postal address'),
             'homePostalAddress', FALSE
           ),
-          new PhoneNumberAttribute (
+          new PhoneNumberAttribute(
             _('Private phone'), _('Home phone number'),
             'homePhone', FALSE
           ),
@@ -422,29 +422,29 @@ class user extends simplePlugin
         'name'  => _('Organizational information'),
         'icon'  => 'geticon.php?context=places&icon=folder&size=16',
         'attrs' => [
-          new SetAttribute (
-            new StringAttribute (
+          new SetAttribute(
+            new StringAttribute(
               _('Title'), _('Title of a person in their organizational context. Each title is one value of this multi-valued attribute'),
               'title', FALSE
             )
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Organization'), _('Organization'),
             'o', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Unit'), _('Organizational unit this user belongs to'),
             'ou', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Department No.'), _('Department number'),
             'departmentNumber', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Employee No.'), _('Employee number'),
             'employeeNumber', FALSE
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Employee type'), _('Employee type'),
             'employeeType', FALSE
           ),
@@ -458,15 +458,15 @@ class user extends simplePlugin
     if ($config->get_cfg_value('SplitPostalAddress') == 'TRUE') {
       $attributesInfo['contact']['attrs'][2]->setVisible(FALSE);
       array_splice($attributesInfo['contact']['attrs'], 3, 0, [
-        new StringAttribute (
+        new StringAttribute(
           _('Street'), _('Street part of the address'),
           'street', FALSE
         ),
-        new StringAttribute (
+        new StringAttribute(
           _('Post office box'), _('Post office box'),
           'postOfficeBox', FALSE
         ),
-        new IntAttribute (
+        new IntAttribute(
           _('Postal code'), _('Postal code'),
           'postalCode', FALSE,
           0, FALSE
-- 
GitLab


From 0f5477331b797b2b5f020c8fb7de06cd5124009c Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 19 Jul 2022 13:30:19 +0100
Subject: [PATCH 103/117] :sparkles: Code style continue

Code style continue
---
 html/class_passwordRecovery.inc               |  2 +-
 include/class_CopyPasteHandler.inc            |  4 +--
 include/class_IconTheme.inc                   |  2 +-
 include/class_Language.inc                    |  4 +--
 include/class_SnapshotHandler.inc             |  8 +++---
 include/class_config.inc                      | 10 +++----
 include/class_ldap.inc                        |  2 +-
 include/class_objects.inc                     |  2 +-
 include/functions.inc                         |  4 +--
 .../simpleplugin/class_dialogAttributes.inc   |  2 +-
 .../simpleplugin/class_simpleManagement.inc   | 28 +++++++++----------
 include/simpleplugin/class_simplePlugin.inc   | 12 ++++----
 include/simpleplugin/class_simpleTabs.inc     | 16 +++++------
 plugins/admin/acl/class_aclManagement.inc     |  2 +-
 .../admin/groups/class_groupManagement.inc    |  4 +--
 plugins/admin/groups/class_ogroup.inc         |  2 +-
 plugins/admin/groups/tabs_ogroups.inc         |  4 +--
 plugins/admin/users/class_userManagement.inc  |  2 +-
 plugins/config/class_recoveryConfig.inc       |  2 +-
 plugins/personal/generic/class_user.inc       |  6 ++--
 20 files changed, 59 insertions(+), 59 deletions(-)

diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index a248d8673..8673e63e8 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -386,7 +386,7 @@ class passwordRecovery extends standAlonePage {
 
     $this->loginAttribute = $config->get_cfg_value('passwordRecoveryLoginAttribute', 'uid');
 
-    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value ('passwordRecoveryActivated'), "passwordRecoveryActivated");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $config->get_cfg_value('passwordRecoveryActivated'), "passwordRecoveryActivated");
     return ($config->get_cfg_value('passwordRecoveryActivated') == "TRUE");
   }
 
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index ad3b80be0..742dccb67 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -75,7 +75,7 @@ class CopyPasteHandler
    */
   function add_to_queue ($dn, $action, $type)
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'add_to_queue');
 
     if (!in_array($action, ['cut','copy'])) {
       trigger_error(sprintf('Specified action "%s" does not exists for copy & paste.', $action));
@@ -139,7 +139,7 @@ class CopyPasteHandler
    */
   protected function load_entry_from_ldap ($entry, $base)
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $entry['dn'], 'load_entry_from_ldap');
     if (!isset($entry['tab_class']) && !isset($entry['type'])) {
       return [];
     }
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 5372cda7b..f47e4b0e1 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -68,7 +68,7 @@ class IconThemeDir
 
   public function MatchesSize ($size)
   {
-    switch ($this->Type) {
+    switch($this->Type) {
       case 'Fixed':
         return ($this->Size == $size);
       default:
diff --git a/include/class_Language.inc b/include/class_Language.inc
index 2e7c45f16..cd1570bb3 100644
--- a/include/class_Language.inc
+++ b/include/class_Language.inc
@@ -60,7 +60,7 @@ class Language
     bindtextdomain($domain, LOCALE_DIR);
     textdomain($domain);
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, 'Setting language to');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, 'Setting language to');
     }
 
     $ret = FALSE;
@@ -70,7 +70,7 @@ class Language
       $ret = TRUE;
       if (session::is_set('plist')) {
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get ('lang'), 'Plist already loaded with language');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, session::get('lang'), 'Plist already loaded with language');
         }
         session::un_set('plist');
         session::set('lang', $lang);
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index b248486ff..066cdc1df 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -218,7 +218,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to create snapshot');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to create snapshot');
       return;
     }
 
@@ -233,7 +233,7 @@ class SnapshotHandler
 
     /* check if the dn exists */
     if (!$ldap->dn_exists($dn)) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Tried to snapshot non-existing dn');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Tried to snapshot non-existing dn');
       return;
     }
 
@@ -241,7 +241,7 @@ class SnapshotHandler
     list($usec, $sec) = explode(" ", microtime());
 
     /* Collect some infos */
-    $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn);
+    $base_of_object = preg_replace('/^[^,]+,/i', '', $dn);
     $new_base       = $this->snapshot_dn($base_of_object);
     /* Create object */
     $data = '';
@@ -393,7 +393,7 @@ class SnapshotHandler
   {
     global $config;
     if (!$this->enabled()) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to restore snapshot');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot are disabled but tried to restore snapshot');
       return [];
     }
 
diff --git a/include/class_config.inc b/include/class_config.inc
index 961de1a92..f37217460 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -812,7 +812,7 @@ class config
             if (($tabclass == 'GROUPTABS') && class_available('mixedGroup')) {
               $tabclass = 'OGROUP-USERTABS';
             }
-            @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class to tab list");
+            @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class to tab list");
             if (!isset($this->data['TABS'][$tabclass])) {
               $this->data['TABS'][$tabclass] = [];
             }
@@ -852,7 +852,7 @@ class config
               $value['tabClass'] = 'simpleTabs';
             }
             $this->data['OBJECTS'][strtoupper($key)] = $value;
-            @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class as main tab of");
+            @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $tabclass, "Adding $class as main tab of");
             if (!isset($this->data['TABS'][$tabclass])) {
               $this->data['TABS'][$tabclass] = [];
             }
@@ -860,7 +860,7 @@ class config
           }
         }
       } elseif (class_available($class) && is_subclass_of($class, 'simpleService')) {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, "Adding service");
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, "Adding service");
         if (!isset($this->data['TABS']['SERVERSERVICE'])) {
           $this->data['TABS']['SERVERSERVICE'] = [];
         }
@@ -902,7 +902,7 @@ class config
     ];
     /* Extract categories definitions from object types */
     foreach ($this->data['OBJECTS'] as $key => $infos) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['aclCategory'], "ObjectType $key category");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['aclCategory'], "ObjectType $key category");
       if (strtoupper($infos['aclCategory']) == $key) {
         $cat = $infos['aclCategory'];
         if (!isset($this->data['CATEGORIES'][$cat])) {
@@ -980,7 +980,7 @@ class config
           }
         }
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join (',', array_unique($acl)), "Class $class categories");
+      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join(',', array_unique($acl)), "Class $class categories");
       /* Feed menu */
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 7c923956a..59ce8ad07 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -1235,7 +1235,7 @@ class LDAP
     /* Get list of objectclasses and fill array */
     $nb = $attr[0]['subschemasubentry'][0];
     $objectclasses = [];
-    $sr = ldap_read ($this->cid, $nb, 'objectClass=*', ['objectclasses']);
+    $sr = ldap_read($this->cid, $nb, 'objectClass=*', ['objectclasses']);
     $attrs = ldap_get_entries($this->cid, $sr);
     if (!isset($attrs[0])) {
       return [];
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 9c8d7e055..8ec16c24d 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -278,7 +278,7 @@ class objects
 
     $tabObject = new $tabClass($type, $dn);
     $tabObject->set_acl_base();
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Openned as $type object");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, "Openned as $type object");
 
     return $tabObject;
   }
diff --git a/include/functions.inc b/include/functions.inc
index f3f4973e3..9cbe4ffc4 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -43,7 +43,7 @@ define ('DEBUG_CONFIG',   64); /*! Debug level for CONFIG information */
 define ('DEBUG_ACL',      128); /*! Debug level for ACL infos */
 define ('DEBUG_SI',       256); /*! Debug level for communication with Argonaut */
 define ('DEBUG_MAIL',     512); /*! Debug level for all about mail (mailAccounts, imap, sieve etc.) */
-define ('DEBUG_FAI',      1024); /* FAI(incomplete) */
+define('DEBUG_FAI',      1024); /* FAI(incomplete) */
 
 /* Define shadow states */
 define('POSIX_ACCOUNT_EXPIRED', 1);
@@ -106,7 +106,7 @@ function fusiondirectory_autoload ($class_name)
   if (isset($class_mapping["$class_name"])) {
     require_once($BASE_DIR.'/'.$class_mapping["$class_name"]);
   } else {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class_name, 'Could not load');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class_name, 'Could not load');
     if (isset($config) && is_object($config) &&
         $config->get_cfg_value('displayerrors') == 'TRUE') {
       list($trace,) = html_trace();
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index dac4b7482..edf64a0a9 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -251,7 +251,7 @@ class DialogAttribute extends SetAttribute
         'submit', 'add'.$id,
         ['value' => '{msgPool type=addButton}']
       );
-      $dialogButtonValue = _('Add (dialog)');
+      $dialogButtonValue = _('Add(dialog)');
     }
     $buttons  .= $this->renderInputField(
       'submit', 'add'.$id.'_dialog',
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index df03add14..2d11f8622 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -692,7 +692,7 @@ class simpleManagement
 
     // Open object
     $this->openTabObject(objects::open($this->dn, $type), $this->headpage->getBase());
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "Create new entry initiated!");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "Create new entry initiated!");
   }
 
   function newEntryTemplate ($action, array $target, array $all)
@@ -766,7 +766,7 @@ class simpleManagement
       return;
     } else {
       if (!$cancel) {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Template applied!');
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Template applied!');
       }
       del_lock($this->dn);
       if (empty($this->dns)) {
@@ -800,7 +800,7 @@ class simpleManagement
         msg_dialog::displayChecks($msgs);
         return;
       } else {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Entry saved!');
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Entry saved!');
         $this->remove_lock();
         $this->closeDialogs();
       }
@@ -812,7 +812,7 @@ class simpleManagement
         return;
       } else {
         $this->dialogObject->save();
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Entry saved!');
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Entry saved!');
         $this->remove_lock();
         $this->closeDialogs();
       }
@@ -893,7 +893,7 @@ class simpleManagement
 
       // Open object
       $this->openTabObject(objects::open($this->dn, $type), $this->dn);
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "Edit entry initiated!");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "Edit entry initiated!");
       if (isset($all['subaction'])) {
         if ($this->handleSubAction($all) == FALSE) {
           trigger_error('Was not able to handle subaction: '.$all['subaction']);
@@ -1018,7 +1018,7 @@ class simpleManagement
     $disallowed = [];
     $this->dns  = [];
 
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal requested!");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal requested!");
 
     // Check permissons for each target
     foreach ($target as $dn) {
@@ -1082,7 +1082,7 @@ class simpleManagement
   function removeEntryConfirmed ($action, array $target, array $all)
   {
     global $ui;
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal confirmed!");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, "Entry removal confirmed!");
 
     foreach ($this->dns as $dn) {
       $type = $this->getType($dn);
@@ -1124,7 +1124,7 @@ class simpleManagement
   function createSnapshotDialog ($action, array $target)
   {
     global $config, $ui;
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, 'Snaptshot creation initiated!');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $target, 'Snaptshot creation initiated!');
 
     if (count($target) == 1) {
       $this->dn = array_pop($target);
@@ -1180,7 +1180,7 @@ class simpleManagement
     }
 
     if ($ui->allow_snapshot_restore($this->dn, $aclCategory, !count($target))) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Snaptshot restoring initiated!');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Snaptshot restoring initiated!');
       $this->snapHandler->setSnapshotBases($bases);
       $this->dialogObject = new SnapshotRestoreDialog($this->dn, $this, !count($target), $aclCategory);
       $this->dialogObject->set_acl_base($this->dn);
@@ -1219,11 +1219,11 @@ class simpleManagement
 
         if (($action == 'copy') && $ui->is_copyable($dn, $infos['aclCategory'])) {
           $this->cpHandler->add_to_queue($dn, 'copy', $type);
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Entry copied!');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Entry copied!');
         }
         if (($action == 'cut') && $ui->is_cutable($dn, $infos['aclCategory'], $infos['mainTab'])) {
           $this->cpHandler->add_to_queue($dn, 'cut', $type);
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Entry cut!');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Entry cut!');
         }
       }
     }
@@ -1263,7 +1263,7 @@ class simpleManagement
     }
     if (!empty($dn) && $ui->allow_snapshot_create($dn, $this->dialogObject->aclCategory)) {
       $this->snapHandler->createSnapshot($dn, $description);
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot created!');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot created!');
     } else {
       msg_dialog::display(_('Permission'), sprintf(_('You are not allowed to restore a snapshot for %s.'), $dn),
           ERROR_DIALOG);
@@ -1280,7 +1280,7 @@ class simpleManagement
     global $ui;
     if (!empty($dn) && $ui->allow_snapshot_restore($dn, $this->dialogObject->aclCategory, $this->dialogObject->global)) {
       $this->snapHandler->restoreSnapshot($dn);
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot restored');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot restored');
       $this->closeDialogs();
     } else {
       msg_dialog::display(_('Permission'), sprintf(_('You are not allowed to restore a snapshot for %s.'), $dn),
@@ -1325,7 +1325,7 @@ class simpleManagement
     global $ui;
     if (!empty($dn) && $ui->allow_snapshot_delete($dn, $this->dialogObject->aclCategory)) {
       $this->snapHandler->removeSnapshot($dn);
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot deleted');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $dn, 'Snaptshot deleted');
     } else {
       msg_dialog::display(_('Permission'), sprintf(_('You are not allowed to delete a snapshot for %s.'), $dn),
           ERROR_DIALOG);
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index e7e778a80..f3cb20b2d 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -243,7 +243,7 @@ class simplePlugin
       /* Set the template flag according to the existence of objectClass fdTemplate */
       if (isset($this->attrs['objectClass'])) {
         if (in_array_ics ('fdTemplate', $this->attrs['objectClass'])) {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, 'found', 'Template check');
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, 'found', 'Template check');
           $this->setTemplate(TRUE);
           $this->templateLoadAttrs($this->attrs);
         }
@@ -252,7 +252,7 @@ class simplePlugin
       /* Is Account? */
       if ($this->is_this_account($this->attrs)) {
         $this->is_account = TRUE;
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, 'found', 'Object check');
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, 'found', 'Object check');
       }
     }
 
@@ -655,7 +655,7 @@ class simplePlugin
    */
   function execute ()
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "execute");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "execute");
 
     /* Reset Lock message POST/GET check array, to prevent preg_match errors */
     session::set('LOCK_VARS_TO_USE', []);
@@ -1077,7 +1077,7 @@ class simplePlugin
    */
   function save_object ()
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'save_object');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'save_object');
     if ($this->displayHeader && isset($_POST[get_class($this).'_modify_state'])) {
       if ($this->is_account && $this->acl_is_removeable()) {
         $this->is_account = FALSE;
@@ -1200,7 +1200,7 @@ class simplePlugin
    */
   function save ()
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "save");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, "save");
     $errors = $this->prepare_save();
     if (!empty($errors)) {
       return $errors;
@@ -1493,7 +1493,7 @@ class simplePlugin
    */
   function check ()
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'check');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'check');
     $messages = [];
 
     foreach ($this->attributesInfo as $sectionInfo) {
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index a74cd121b..5dd21b4d6 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -162,7 +162,7 @@ class simpleTabs
   {
     $baseobject = $this->getBaseObject();
     if (isset($baseobject->base)) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixing base');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixing base');
       if (session::is_set('CurrentMainBase')) {
         $baseobject->base = dn2base('cn=dummy,'.session::get('CurrentMainBase'));
       } else {
@@ -172,9 +172,9 @@ class simpleTabs
         /* For some plugins not yet migrated to simple plugin. */
         $baseobject->baseSelector->setBase($baseobject->base);
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixed base');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $baseobject->base, 'Fixed base');
     } else {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, '', 'no base');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, '', 'no base');
     }
   }
 
@@ -232,7 +232,7 @@ class simpleTabs
 
     /* Save last tab */
     if ($this->last != "") {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->last, "Saving");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->last, "Saving");
 
       $this->by_object[$this->last]->save_object();
     }
@@ -355,7 +355,7 @@ class simpleTabs
     foreach ($this->by_object as $key => $obj) {
       $this->plNotify[$key] = FALSE;
       if (($obj->is_account || $obj->ignore_account) && (!$obj->is_template)) {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Checking");
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Checking");
 
         $msg = $obj->check();
 
@@ -390,7 +390,7 @@ class simpleTabs
     $old_dn     = $this->dn;
     try {
       $new_dn     = $baseobject->compute_dn();
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $new_dn, 'Saving');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $new_dn, 'Saving');
     } catch (FusionDirectoryException $e) {
       return [
         sprintf(_('Failed to compute DN for object: %s'), $e->getMessage())
@@ -419,7 +419,7 @@ class simpleTabs
     /* Save all plugins */
     $first = TRUE;
     foreach ($this->by_object as $key => $obj) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, 'Saving');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, 'Saving');
 
       $obj->dn = $this->dn;
 
@@ -470,7 +470,7 @@ class simpleTabs
   function adapt_from_template ($attrs, $skip = [])
   {
     foreach ($this->by_object as $key => &$obj) {
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting");
       $obj->parent = &$this;
       $obj->adapt_from_template($attrs, $skip);
     }
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index eb012c93c..00c725dc5 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -198,7 +198,7 @@ class aclManagement extends simpleManagement
     set_object_info($this->dn);
 
     $this->openTabObject($tabObject, $this->headpage->getBase());
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Creating new ACL assignment');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dn, 'Creating new ACL assignment');
   }
 
   static function filterLabel ($row, $dn, $pid = 0, $base = '')
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 1ae261449..ef9c1dede 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -195,12 +195,12 @@ class groupManagement extends simpleManagement
           msg_dialog::display(_('Infrastructure service'), msgPool::siError($o_queue->get_error()), ERROR_DIALOG);
         } else {
           if (is_array($res) && count($res) > 1) {
-            msg_dialog::display(_('Action triggered'), sprintf(_('Action called without error (results were "%s")'), implode(', ', $res)), INFO_DIALOG);
+            msg_dialog::display(_('Action triggered'), sprintf(_('Action called without error(results were "%s")'), implode(', ', $res)), INFO_DIALOG);
           } else {
             if (is_array($res)) {
               $res = $res[0];
             }
-            msg_dialog::display(_('Action triggered'), sprintf(_('Action called without error (result was "%s")'), $res), INFO_DIALOG);
+            msg_dialog::display(_('Action triggered'), sprintf(_('Action called without error(result was "%s")'), $res), INFO_DIALOG);
           }
         }
         $this->closeDialogs();
diff --git a/plugins/admin/groups/class_ogroup.inc b/plugins/admin/groups/class_ogroup.inc
index 238ff6ed9..3fa4fffe2 100644
--- a/plugins/admin/groups/class_ogroup.inc
+++ b/plugins/admin/groups/class_ogroup.inc
@@ -52,7 +52,7 @@ class ObjectsAttribute extends GenericDialogAttribute
             break;
           }
         } catch (NonExistingObjectTypeException $e) {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage (), "Objecttype");
+          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage(), "Objecttype");
           unset(ogroup::$objectTypes[$code]);
         }
       }
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 406631973..0a827898e 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -108,7 +108,7 @@ class ogrouptabs extends simpleTabs_noSpecial
 
   function addTab ($class)
   {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, 'Adding tab ');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $class, 'Adding tab ');
     $plInfos = pluglist::pluginInfos($class);
     $this->by_name[$class]  = $plInfos['plShortName'];
     $this->plNotify[$class] = FALSE;
@@ -161,7 +161,7 @@ class ogrouptabs extends simpleTabs_noSpecial
       if (isset($this->by_object[$key])) {
         continue;
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, 'Removing');
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, 'Removing');
 
       $obj->dn = $this->dn;
       $tabErrors = $obj->remove(FALSE);
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 69de796ec..922cc71c1 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -106,7 +106,7 @@ class userManagement extends simpleManagement
       $this->filter->elements['FUNCTIONAL']['set']  = ' (objectClass=*)';
     } else {
       /* The FUNCTIONAL filter must not use inexisting classes */
-      $this->filter->elements['FUNCTIONAL']['set']  = ' (! (| (objectClass='.implode (') (objectClass=', $classes).')))';
+      $this->filter->elements['FUNCTIONAL']['set']  = ' (! (| (objectClass='.implode(') (objectClass=', $classes).')))';
     }
   }
 
diff --git a/plugins/config/class_recoveryConfig.inc b/plugins/config/class_recoveryConfig.inc
index 3fd56b2ca..27ef1ed18 100644
--- a/plugins/config/class_recoveryConfig.inc
+++ b/plugins/config/class_recoveryConfig.inc
@@ -61,7 +61,7 @@ class recoveryConfig extends simplePlugin
             TRUE,
             0, FALSE, 10
           ),
-          new StringAttribute (
+          new StringAttribute(
             _('Salt for tokens'),
             _('Just a security measure, you can put anything in there, even random characters'),
             'fdPasswordRecoverySalt',
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 834c3f7e1..c7a920df3 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -31,7 +31,7 @@ class UserPasswordAttribute extends CompositeAttribute
     /* Create password methods array */
     $pwd_methods = [];
     $this->needPassword = [];
-    foreach($temp['name'] as $id => $name) {
+    foreach ($temp['name'] as $id => $name) {
       $this->needPassword[$name] = $temp[$id]['object']->need_password();
       $pwd_methods[$name] = $name;
       if (!empty($temp[$id]['desc'])) {
@@ -91,7 +91,7 @@ class UserPasswordAttribute extends CompositeAttribute
       if ($this->linearRendering) {
         parent::renderAttribute($attributes, $readOnly);
       } else {
-        foreach($this->attributes as $key => &$attribute) {
+        foreach ($this->attributes as $key => &$attribute) {
           if (is_object($this->plugin) && $this->plugin->is_template && ($key == 2)) {
             /* Do not display confirmation field in template mode */
             continue;
@@ -514,7 +514,7 @@ class user extends simplePlugin
   {
     $fields   = templateHandling::listFields($pattern);
     $attrs    = [];
-    foreach($fields as $field) {
+    foreach ($fields as $field) {
       if (in_array($field, $this->attributes)) {
         $attrs[$field] = $this->$field;
         continue;
-- 
GitLab


From 76299fb1fd397d6c643d0207d4722fa7058c8ee1 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 19 Jul 2022 15:17:06 +0100
Subject: [PATCH 104/117] :sparkles: Feat(1.3.1-core) - Full CodeStyle reworked

Full code style as been reworked to match 1.4
---
 html/autocomplete.php                         |  4 +-
 html/getbin.php                               |  6 +--
 html/index.php                                | 51 +++++++++----------
 html/main.php                                 | 44 ++++++++--------
 html/progress.php                             | 24 ++++-----
 html/setup.php                                |  2 +-
 include/class_IconTheme.inc                   |  4 +-
 include/class_SnapshotHandler.inc             |  2 +-
 include/class_baseSelector.inc                |  2 +-
 include/class_config.inc                      |  4 +-
 include/class_divSelectBox.inc                |  4 +-
 include/class_filter.inc                      |  6 +--
 include/class_ldap.inc                        | 12 ++---
 include/class_ldapFilter.inc                  |  6 +--
 include/class_ldapSizeLimit.inc               |  2 +-
 include/class_listing.inc                     |  8 +--
 include/class_listingSortIterator.inc         |  2 +-
 include/class_msgPool.inc                     |  2 +-
 include/class_objects.inc                     |  2 +-
 include/class_templateHandling.inc            |  4 +-
 include/class_tests.inc                       | 14 ++---
 include/class_userinfo.inc                    |  2 +-
 include/class_xml.inc                         |  2 +-
 include/functions.inc                         | 44 ++++++++--------
 include/functions_debug.inc                   |  2 +-
 .../class_password-methods-crypt.inc          |  2 +-
 .../class_password-methods-md5.inc            |  2 +-
 .../class_password-methods-sha.inc            |  6 +--
 .../class_password-methods-smd5.inc           |  2 +-
 .../class_password-methods-ssha.inc           | 10 ++--
 include/php_setup.inc                         |  6 +--
 .../attributes/class_PhoneNumberAttribute.inc |  2 +-
 .../simpleplugin/class_dialogAttributes.inc   |  2 +-
 .../simpleplugin/class_simpleManagement.inc   |  2 +-
 include/simpleplugin/class_simplePlugin.inc   |  8 +--
 plugins/admin/acl/class_aclManagement.inc     |  2 +-
 .../admin/groups/class_groupManagement.inc    |  4 +-
 plugins/admin/groups/class_ogroup.inc         |  2 +-
 plugins/admin/groups/tabs_ogroups.inc         |  2 +-
 plugins/admin/users/class_userManagement.inc  |  4 +-
 plugins/personal/generic/class_user.inc       |  4 +-
 41 files changed, 156 insertions(+), 159 deletions(-)

diff --git a/html/autocomplete.php b/html/autocomplete.php
index 0b0bce54d..7ef44f98d 100644
--- a/html/autocomplete.php
+++ b/html/autocomplete.php
@@ -22,7 +22,7 @@
 /* Basic setup, remove eventually registered sessions */
 @require_once ("../include/php_setup.inc");
 @require_once ("functions.inc");
-@require_once ("variables.inc");
+@require_once("variables.inc");
 
 session_cache_limiter("private");
 session::start();
@@ -31,7 +31,7 @@ session::set('errorsAlreadyPosted', []);
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
   logging::log('security', 'unknown', '', [], 'Error: autocomplete.php called without session');
-  header ('Location: index.php');
+  header('Location: index.php');
   exit;
 }
 
diff --git a/html/getbin.php b/html/getbin.php
index a41a60e74..6cbd8a73c 100644
--- a/html/getbin.php
+++ b/html/getbin.php
@@ -24,7 +24,7 @@
 @require_once('functions.inc');
 @require_once('variables.inc');
 
-error_reporting (0);
+error_reporting(0);
 session_cache_limiter('private');
 session::start();
 session::set('errorsAlreadyPosted', []);
@@ -32,7 +32,7 @@ session::set('errorsAlreadyPosted', []);
 /* Logged in? Simple security check */
 if (!session::is_set('ui')) {
   logging::log('security', 'unknown', '', [], 'Error: getbin.php called without session');
-  header ('Location: index.php');
+  header('Location: index.php');
   exit;
 }
 
@@ -54,5 +54,5 @@ if (session::is_set($key.'file')) {
 }
 
 echo session::get($key);
-error_reporting (E_ALL | E_STRICT);
+error_reporting(E_ALL | E_STRICT);
 ?>
diff --git a/html/index.php b/html/index.php
index b4821c7b5..12ddfc70f 100644
--- a/html/index.php
+++ b/html/index.php
@@ -22,8 +22,8 @@
 /* Load required includes */
 require_once ("../include/php_setup.inc");
 require_once ("functions.inc");
-require_once ("variables.inc");
-require_once ("class_logging.inc");
+require_once("variables.inc");
+require_once("class_logging.inc");
 
 /* Set headers */
 header('Content-type: text/html; charset=UTF-8');
@@ -43,30 +43,30 @@ function displayLogin ()
   if (isset($_POST['username'])) {
     $username = trim($_POST['username']);
   }
-  $smarty->assign ('date',      gmdate('D, d M Y H:i:s'));
-  $smarty->assign ('username',  $username);
-  $smarty->assign ('revision',  FD_VERSION);
-  $smarty->assign ('year',      date('Y'));
-  $smarty->append ('css_files', get_template_path('login.css'));
+  $smarty->assign('date',      gmdate('D, d M Y H:i:s'));
+  $smarty->assign('username',  $username);
+  $smarty->assign('revision',  FD_VERSION);
+  $smarty->assign('year',      date('Y'));
+  $smarty->append('css_files', get_template_path('login.css'));
   $smarty->assign('title',      _('Sign in'));
 
   /* Some error to display? */
   if (!isset($message)) {
     $message = "";
   }
-  $smarty->assign ("message", $message);
+  $smarty->assign("message", $message);
 
   /* Display SSL mode warning? */
   if (($ssl != '') && ($config->get_cfg_value('warnSSL') == 'TRUE')) {
-    $smarty->assign ('ssl', sprintf(_('Warning: <a href="%s">Session is not encrypted!</a>'), $ssl));
+    $smarty->assign('ssl', sprintf(_('Warning: <a href="%s">Session is not encrypted!</a>'), $ssl));
   } else {
-    $smarty->assign ('ssl', '');
+    $smarty->assign('ssl', '');
   }
 
   if (!$config->check_session_lifetime()) {
-    $smarty->assign ('lifetime', _('Warning: The session lifetime configured in your fusiondirectory.conf will be overridden by php.ini settings.'));
+    $smarty->assign('lifetime', _('Warning: The session lifetime configured in your fusiondirectory.conf will be overridden by php.ini settings.'));
   } else {
-    $smarty->assign ('lifetime', '');
+    $smarty->assign('lifetime', '');
   }
 
   /* Generate server list */
@@ -79,11 +79,11 @@ function displayLogin ()
   foreach ($config->data['LOCATIONS'] as $key => $ignored) {
     $servers[$key] = $key;
   }
-  $smarty->assign ("server_options", $servers);
-  $smarty->assign ("server_id", $selected);
+  $smarty->assign("server_options", $servers);
+  $smarty->assign("server_id", $selected);
 
   /* show login screen */
-  $smarty->assign ("PHPSESSID", session_id());
+  $smarty->assign("PHPSESSID", session_id());
   if (session::is_set('errors')) {
     $smarty->assign("errors", session::get('errors'));
   }
@@ -98,7 +98,7 @@ function displayLogin ()
   $smarty->assign("lang", preg_replace('/_.*$/', '', $lang));
   $smarty->assign("rtl",  Language::isRTL($lang));
 
-  $smarty->display (get_template_path('headers.tpl'));
+  $smarty->display(get_template_path('headers.tpl'));
   $smarty->assign("version", FD_VERSION);
 
   $smarty->display(get_template_path('login.tpl'));
@@ -165,7 +165,7 @@ if (!is_readable(CONFIG_DIR.'/'.CONFIG_FILE)) {
 $config = new config(CONFIG_DIR.'/'.CONFIG_FILE, $BASE_DIR);
 session::set('config', $config);
 session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
-@DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, 'config');
+@DEBUG(DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, 'config');
 
 /* Set template compile directory */
 $smarty->compile_dir = $config->get_cfg_value('templateCompileDirectory', SPOOL_DIR);
@@ -188,7 +188,7 @@ clean_smarty_compile_dir($smarty->compile_dir);
 
 Language::init();
 
-$smarty->assign ('focusfield', 'username');
+$smarty->assign('focusfield', 'username');
 
 if (isset($_POST['server'])) {
   $server = $_POST['server'];
@@ -206,7 +206,7 @@ if (
 
 /* If SSL is forced, just forward to the SSL enabled site */
 if (($config->get_cfg_value('forcessl') == 'TRUE') && ($ssl != '')) {
-  header ("Location: $ssl");
+  header("Location: $ssl");
   exit;
 }
 
@@ -288,7 +288,7 @@ class Index {
       return FALSE;
     } elseif (mb_strlen(static::$password, 'UTF-8') == 0) {
       $message = _('Please specify your password!');
-      $smarty->assign ('focusfield', 'password');
+      $smarty->assign('focusfield', 'password');
       return FALSE;
     }
     return TRUE;
@@ -307,7 +307,7 @@ class Index {
         logging::log('security', 'login', '', [], 'Authentication failed for user "'.static::$username.'"');
       }
       $message = _('Please check the username/password combination.');
-      $smarty->assign ('focusfield', 'password');
+      $smarty->assign('focusfield', 'password');
       return FALSE;
     }
     return TRUE;
@@ -342,7 +342,7 @@ class Index {
       if ($expired == POSIX_ACCOUNT_EXPIRED) {
         logging::log('security', 'login', '', [], 'Account for user "'.static::$username.'" has expired');
         $message = _('Account locked. Please contact your system administrator!');
-        $smarty->assign ('focusfield', 'username');
+        $smarty->assign('focusfield', 'username');
         return FALSE;
       }
     }
@@ -357,7 +357,7 @@ class Index {
     logging::log('security', 'login', '', [], 'User "'.static::$username.'" logged in successfully.');
     session::set('connected', 1);
     session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
-    header ('Location: main.php?global_check=1');
+    header('Location: main.php?global_check=1');
     exit;
   }
 
@@ -521,8 +521,6 @@ class Index {
     /* Reset error messages */
     $message = '';
 
-    //~ phpCAS::setDebug();
-
     // Initialize phpCAS
     phpCAS::client(
       CAS_VERSION_2_0,
@@ -533,7 +531,6 @@ class Index {
 
     // Set the CA certificate that is the issuer of the cert
     phpCAS::setCasServerCACert($config->get_cfg_value('casServerCaCertPath'));
-    //~ phpCAS::setNoCasServerValidation();
 
     // force CAS authentication
     phpCAS::forceAuthentication();
@@ -595,7 +592,7 @@ if ($config->get_cfg_value('httpAuthActivated') == 'TRUE') {
 }
 
 /* Translation of cookie-warning. Whether to display it, is determined by JavaScript */
-$smarty->assign ('cookies', '<b>'._('Warning').':</b> '._('Your browser has cookies disabled. Please enable cookies and reload this page before logging in!'));
+$smarty->assign('cookies', '<b>'._('Warning').':</b> '._('Your browser has cookies disabled. Please enable cookies and reload this page before logging in!'));
 
 /* Set focus to the error button if we've an error message */
 $focus = '';
diff --git a/html/main.php b/html/main.php
index 5f73eeb80..334dfe1ca 100644
--- a/html/main.php
+++ b/html/main.php
@@ -25,7 +25,7 @@ $start = microtime();
 /* Basic setup, remove eventually registered sessions */
 require_once ("../include/php_setup.inc");
 require_once ("functions.inc");
-require_once ("variables.inc");
+require_once("variables.inc");
 
 /* Set headers */
 header('Content-type: text/html; charset=UTF-8');
@@ -45,14 +45,14 @@ session::set('runtime_cache', []);
 session::set('limit_exceeded', FALSE);
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
-  @DEBUG (DEBUG_POST, __LINE__, __FUNCTION__, __FILE__, $_POST, "_POST");
+  @DEBUG(DEBUG_POST, __LINE__, __FUNCTION__, __FILE__, $_POST, "_POST");
 }
-@DEBUG (DEBUG_SESSION, __LINE__, __FUNCTION__, __FILE__, session::get_all (), "_SESSION");
+@DEBUG(DEBUG_SESSION, __LINE__, __FUNCTION__, __FILE__, session::get_all(), "_SESSION");
 
 /* Logged in? Simple security check */
 if (!session::is_set('connected')) {
   logging::log('security', 'login', '', [], 'main.php called without session - logging out');
-  header ('Location: index.php?message=nosession');
+  header('Location: index.php?message=nosession');
   exit;
 }
 
@@ -63,7 +63,7 @@ $config = session::get('config');
 
 /* If SSL is forced, just forward to the SSL enabled site */
 if (($config->get_cfg_value('forcessl') == 'TRUE') && ($ssl != '')) {
-  header ("Location: $ssl");
+  header("Location: $ssl");
   exit;
 }
 
@@ -84,7 +84,7 @@ if (session::get('_LAST_PAGE_REQUEST') != '') {
     if ($request_time > $max_life) {
       session::destroy();
       logging::log('security', 'login', '', [], 'main.php called with expired session - logging out');
-      header ('Location: index.php?signout=1&message=expired');
+      header('Location: index.php?signout=1&message=expired');
       exit;
     }
   }
@@ -92,7 +92,7 @@ if (session::get('_LAST_PAGE_REQUEST') != '') {
 session::set('_LAST_PAGE_REQUEST', time());
 
 
-@DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config");
+@DEBUG(DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config");
 
 /* Set template compile directory */
 $smarty->compile_dir = $config->get_cfg_value("templateCompileDirectory", SPOOL_DIR);
@@ -115,7 +115,7 @@ if (isset($global_check) && $config->get_cfg_value("forceglobals") == "TRUE") {
             FATAL_ERROR_DIALOG);
 
   logging::log('security', 'login', '', [], 'Register globals is on. For security reasons, this should be turned off.');
-  session::destroy ();
+  session::destroy();
   exit;
 }
 
@@ -133,14 +133,14 @@ $smarty->assign("hideMenus", FALSE);
 if ($config->get_cfg_value("handleExpiredAccounts") == "TRUE") {
   $expired = $ui->expired_status();
   if (($expired == POSIX_WARN_ABOUT_EXPIRATION) && !session::is_set('POSIX_WARN_ABOUT_EXPIRATION__DONE')) {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, 'This user account ('.$ui->uid.') is about to expire');
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, 'This user account ('.$ui->uid.') is about to expire');
 
     // The users password is about to xpire soon, display a warning message.
     logging::log('security', 'fusiondirectory', '', [], 'password for user "'.$ui->uid.'" is about to expire');
     msg_dialog::display(_('Password change'), _('Your password is about to expire, please change your password!'), INFO_DIALOG);
     session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE);
   } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE) {
-    @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, "This user account expired");
+    @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $expired, "This user account expired");
 
     // The password is expired, we are now going to enforce a new one from the user.
 
@@ -167,7 +167,7 @@ if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])) {
   session::set('plugin_dir', $plugin_dir);
   if ($plugin_dir == '') {
     logging::log('security', 'fusiondirectory', '', [], "main.php called with invalid plug parameter \"$plug\"");
-    header ('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
+    header('Location: index.php?signout=1&message=invalidparameter&plug='.$plug);
     exit;
   }
 } else {
@@ -201,7 +201,7 @@ if ($old_plugin_dir != $plugin_dir && $old_plugin_dir != "") {
 $ui->getSizeLimitHandler()->update();
 
 /* Check for memory */
-if (function_exists ("memory_get_usage")) {
+if (function_exists("memory_get_usage")) {
   if (memory_get_usage() > (to_byte(ini_get('memory_limit')) - 2048000 )) {
     msg_dialog::display(_("Configuration error"), _("Running out of memory!"), WARNING_DIALOG);
   }
@@ -215,7 +215,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
   foreach ($_POST as $key => $value) {
     if (preg_match("/^back[0-9]+$/", $key)) {
       $back = substr($key, 4);
-      header ("Location: main.php?plug=$back");
+      header("Location: main.php?plug=$back");
       exit;
     }
   }
@@ -223,7 +223,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
 /* Redirect on password back event */
 if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['password_back'])) {
-  header ("Location: main.php");
+  header("Location: main.php");
   exit;
 }
 
@@ -234,11 +234,11 @@ if (isset($_GET['reset'])) {
 }
 
 /* show web frontend */
-$smarty->assign ("date", date("l, dS F Y H:i:s O"));
+$smarty->assign("date", date("l, dS F Y H:i:s O"));
 $lang = session::get('lang');
-$smarty->assign ('lang',  preg_replace('/_.*$/', '', $lang));
-$smarty->assign ('rtl',   Language::isRTL($lang));
-$smarty->assign ('must',  '<span class="must">*</span>');
+$smarty->assign('lang',  preg_replace('/_.*$/', '', $lang));
+$smarty->assign('rtl',   Language::isRTL($lang));
+$smarty->assign('must',  '<span class="must">*</span>');
 if (isset($plug)) {
   $plug = "?plug=$plug";
 } else {
@@ -246,12 +246,12 @@ if (isset($plug)) {
 }
 
 if ($ui->ignore_acl_for_current_user()) {
-  $smarty->assign ('username', '<div style="color:#FF0000;">'._('User ACL checks disabled').'</div>&nbsp;'.$ui->uid);
+  $smarty->assign('username', '<div style="color:#FF0000;">'._('User ACL checks disabled').'</div>&nbsp;'.$ui->uid);
 } else {
-  $smarty->assign ('username', $ui->uid);
+  $smarty->assign('username', $ui->uid);
 }
-$smarty->assign ("menu", $plist->menu);
-$smarty->assign ("plug", "$plug");
+$smarty->assign("menu", $plist->menu);
+$smarty->assign("plug", "$plug");
 
 $smarty->assign("usePrototype", "false");
 
diff --git a/html/progress.php b/html/progress.php
index 6e69027f8..e86554bdd 100644
--- a/html/progress.php
+++ b/html/progress.php
@@ -24,10 +24,10 @@ session_cache_limiter("private");
 
 /* Check for parameter completenes */
 if (!isset($_GET['x']) || !isset($_GET['y']) || !isset($_GET['p'])) {
-  die ("Missing parameters!");
+  die("Missing parameters!");
 }
 if (!is_numeric($_GET['x']) || !is_numeric($_GET['y'])) {
-  die ("Parameters must be numeric!");
+  die("Parameters must be numeric!");
 }
 
 $p = (int)($_GET['p']);
@@ -40,7 +40,7 @@ if ($p < 0) {
 } elseif ($p > 100) {
   $p = 100;
 }
-$p = intval ($p);
+$p = intval($p);
 
 /* Check dimensions */
 if ($x < 3 || $x > 1000) {
@@ -50,7 +50,7 @@ if ($y < 3 || $y > 700) {
   $y = 20;
 }
 
-if (!function_exists ("imagecreate")) {
+if (!function_exists("imagecreate")) {
   syslog(LOG_ERR, "FusionDirectory is missing the gd library, please install php5-gd to be able to see progress images.");
   echo "Please install the php5-gd library, FusionDirectory can't create images without it.";
   exit();
@@ -75,9 +75,9 @@ if (!function_exists ("imagecreate")) {
   }
 
   /* Draw image in GD image stream */
-  $im = imagecreate ($x, $y);
+  $im = imagecreat($x, $y);
   if (!$im) {
-    die ('Cannot Initialize new GD image stream');
+    die('Cannot Initialize new GD image stream');
   }
 
   /* Set colors */
@@ -87,18 +87,18 @@ if (!function_exists ("imagecreate")) {
   $tx_color = imagecolorallocate($im, 240,  10,   90);
 
   /* Draw progress bar */
-  imagerectangle ($im, 0, 0, $x - 1, $y - 1, $br_color);
-  imagefilledrectangle ($im, 1, 1, (($x - 2) * $p / 100),
+  imagerectangle($im, 0, 0, $x - 1, $y - 1, $br_color);
+  imagefilledrectangle($im, 1, 1, (($x - 2) * $p / 100),
       $y - 2, $fi_color);
 
   /* Is font to big for progress bar? */
   if ($font != 0) {
-    imagestring ($im, $font, ($x - $fx) / 2, ($y - $fy) / 2, "$p%", $tx_color);
+    imagestring($im, $font, ($x - $fx) / 2, ($y - $fy) / 2, "$p%", $tx_color);
   }
 
   /* Finally draw the image and remove context */
-  header ("Content-type: image/png");
-  imagepng ($im);
-  imagedestroy ($im);
+  header("Content-type: image/png");
+  imagepng($im);
+  imagedestroy($im);
 }
 ?>
diff --git a/html/setup.php b/html/setup.php
index 4695b6ad1..4569caba6 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -22,7 +22,7 @@
 /* Get standard functions */
 require_once ("../include/php_setup.inc");
 require_once ("functions.inc");
-require_once ("variables.inc");
+require_once("variables.inc");
 
 require_once("../setup/class_setup.inc");
 require_once("../setup/class_setupStep.inc");
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index f47e4b0e1..38f856e8d 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -68,7 +68,7 @@ class IconThemeDir
 
   public function MatchesSize ($size)
   {
-    switch($this->Type) {
+    switch ($this->Type) {
       case 'Fixed':
         return ($this->Size == $size);
       default:
@@ -80,7 +80,7 @@ class IconThemeDir
 
   public function SizeDistance ($size)
   {
-    switch($this->Type) {
+    switch ($this->Type) {
       case 'Fixed':
         return abs($this->Size - $size);
       default:
diff --git a/include/class_SnapshotHandler.inc b/include/class_SnapshotHandler.inc
index 066cdc1df..7fbf9449a 100644
--- a/include/class_SnapshotHandler.inc
+++ b/include/class_SnapshotHandler.inc
@@ -268,7 +268,7 @@ class SnapshotHandler
       $new_dn                           = 'gosaSnapshotTimestamp='.$target['gosaSnapshotTimestamp'].','.$new_base;
       $ldap->cat($new_dn);
       $usec++;
-    } while($ldap->count());
+    } while ($ldap->count());
 
     /* Insert this new snapshot */
     $ldap->cd($this->snapshotRDN);
diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 99f6aa621..9aa823bf9 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -241,7 +241,7 @@ class baseSelector
         }
         $this->tree .= "<ul>\n";
       } elseif ($indent < $last_indent) {
-        for($i = 0; $i < ($last_indent - $indent); $i++) {
+        for ($i = 0; $i < ($last_indent - $indent); $i++) {
           $this->tree .= "</li></ul>\n";
         }
         $this->tree .= "</li>\n";
diff --git a/include/class_config.inc b/include/class_config.inc
index f37217460..40b927297 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -192,7 +192,7 @@ class config
     }
 
     /* Look through attributes */
-    switch($this->tags[$this->level - 1]) {
+    switch ($this->tags[$this->level - 1]) {
       /* Handle location */
       case 'LOCATION':
         if ($this->tags[$this->level - 2] == 'MAIN') {
@@ -980,7 +980,7 @@ class config
           }
         }
       }
-      @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join(',', array_unique($acl)), "Class $class categories");
+      @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, join(',', array_unique($acl)), "Class $class categories");
       /* Feed menu */
       if (isset($plInfo['plSection'])) {
         $section = $plInfo['plSection'];
diff --git a/include/class_divSelectBox.inc b/include/class_divSelectBox.inc
index 369e54e82..1f54867f5 100644
--- a/include/class_divSelectBox.inc
+++ b/include/class_divSelectBox.inc
@@ -167,7 +167,7 @@ class divSelectBox
       if ($this->headers !== FALSE) {
         $this->cols = count($this->headers);
         $str .= '<tr>';
-        for($i = 0; $i < ($this->cols); $i++) {
+        for ($i = 0; $i < ($this->cols); $i++) {
           if ($i >= ($this->cols - 1)) {
             $str .= '<td style="height:100%;border:0px;">&nbsp;</td>';
           } else {
@@ -220,7 +220,7 @@ class divSelectBox
       $s_return .= "\n</tr>";
     }
     $s_return .= "\n<tr>";
-    for($i = 0; $i < ($this->cols); $i++) {
+    for ($i = 0; $i < ($this->cols); $i++) {
       if ($i >= ($this->cols - 1)) {
         $s_return .= '<td style="height:100%;border:0px;"><div style="font-size:1px;">&nbsp;</div></td>';
       } else {
diff --git a/include/class_filter.inc b/include/class_filter.inc
index b82e4aab9..2c5c030a9 100644
--- a/include/class_filter.inc
+++ b/include/class_filter.inc
@@ -333,7 +333,7 @@ class filter
     $c          = 0;
 
     /* Fill cells with charaters */
-    for($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
+    for ($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
       if ($c == 0) {
         $alphabet .= "<tr>";
       }
@@ -398,7 +398,7 @@ class filter
     // Load template and replace elementsHtml[]
     foreach ($this->elements as $tag => $element) {
       $htmlCode = "";
-      switch($element['type']) {
+      switch ($element['type']) {
         case "textfield":
           $htmlCode = $this->getTextfield($element);
           $smarty->assign($tag.'DESC', sprintf(_('Searches in %s'), implode(', ', $element['autocomplete']['attribute'])));
@@ -417,7 +417,7 @@ class filter
           break;
 
         default:
-          throw new Exception ('Unknown element type specified: '.$element['type'].'!');
+          throw new Exception('Unknown element type specified: '.$element['type'].'!');
       }
       $smarty->assign("$tag", $htmlCode);
     }
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 59ce8ad07..6adda3f6b 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -132,11 +132,11 @@ class LDAP
     $this->reconnect  = FALSE;
     if ($this->cid = @ldap_connect($this->hostname)) {
       @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3);
-      if (function_exists ("ldap_set_rebind_proc") && $this->follow_referral) {
+      if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) {
         @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
         @ldap_set_rebind_proc($this->cid, [&$this, "rebind"]);
       }
-      if (function_exists ("ldap_start_tls") && $this->tls) {
+      if (function_exists("ldap_start_tls") && $this->tls) {
         @ldap_start_tls($this->cid);
       }
 
@@ -254,7 +254,7 @@ class LDAP
 
       $start = microtime(TRUE);
       $this->clearResult($srp);
-      switch(strtolower($scope)) {
+      switch (strtolower($scope)) {
         case 'base':
           $this->sr[$srp] = @ldap_read($this->cid, $this->basedn, $filter, $attrs);
           break;
@@ -772,7 +772,7 @@ class LDAP
       $attrs = [$type => $param];
 
       /* Hardcoded classes */
-      switch($type) {
+      switch ($type) {
         case 'ou':
           $attrs['objectClass']  = ['organizationalUnit'];
           break;
@@ -851,7 +851,7 @@ class LDAP
       if (!$this->success()) {
         @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $cdn, 'dn');
         @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $attrs, 'Content');
-        @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->get_error (), 'LDAP error');
+        @DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->get_error(), 'LDAP error');
 
         msg_dialog::display(_('LDAP error'), msgPool::ldaperror($this->get_error(), $cdn, LDAP_ADD, get_class()), LDAP_ERROR);
         return FALSE;
@@ -1250,7 +1250,7 @@ class LDAP
       $objectclasses[$ocname] = [];
 
       foreach ($pattern as $chunk) {
-        switch($chunk) {
+        switch ($chunk) {
 
           case '(':
             $value = '';
diff --git a/include/class_ldapFilter.inc b/include/class_ldapFilter.inc
index cb81838cc..8078627d0 100644
--- a/include/class_ldapFilter.inc
+++ b/include/class_ldapFilter.inc
@@ -55,7 +55,7 @@ class ldapFilter
   function __invoke ($array)
   {
     $stopValue = FALSE;
-    switch($this->operator) {
+    switch ($this->operator) {
       case '!':
         return !$this->subparts[0]($array);
       case '|':
@@ -180,7 +180,7 @@ class ldapFilterLeaf extends ldapFilter
   function __invoke ($array)
   {
     if ($this->dnFilter) {
-      switch($this->operator) {
+      switch ($this->operator) {
         case '~=':
           trigger_error('Filter apply might not work as expected');
         case '=':
@@ -195,7 +195,7 @@ class ldapFilterLeaf extends ldapFilter
         $values = [$values];
       }
       foreach ($values as $value) {
-        switch($this->operator) {
+        switch ($this->operator) {
           case '~=':
             trigger_error('Filter apply might not work as expected');
           case '=':
diff --git a/include/class_ldapSizeLimit.inc b/include/class_ldapSizeLimit.inc
index 1fe0c8da8..1b89d5efb 100644
--- a/include/class_ldapSizeLimit.inc
+++ b/include/class_ldapSizeLimit.inc
@@ -68,7 +68,7 @@ class ldapSizeLimit
   function update ()
   {
     if (isset($_POST['set_size_action']) && isset($_POST['action'])) {
-      switch($_POST['action']) {
+      switch ($_POST['action']) {
         case 'newlimit':
           if (isset($_POST['new_limit']) && tests::is_id($_POST['new_limit'])) {
             $this->sizeLimit  = intval($_POST['new_limit']);
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 1aaf7a76e..2d856971e 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -693,7 +693,7 @@ class listing
         $classes  = "";
         $components = explode(';', $cfg);
         foreach ($components as $part) {
-          switch($part) {
+          switch ($part) {
             case 'r':
               $res .= 'text-align:right;';
               break;
@@ -804,7 +804,7 @@ class listing
       list($cl, $method, $parts, $offset) = $filter;
       $params = [];
       foreach ($parts as $param) {
-        switch($param) {
+        switch ($param) {
           case 'row':
             $params[] = $row;
             break;
@@ -1117,7 +1117,7 @@ class listing
     $params = [func_get_arg(2)];
 
     // Collect sprintf params
-    for($i = 3;$i < func_num_args();$i++) {
+    for ($i = 3;$i < func_num_args();$i++) {
       $val = func_get_arg($i);
       if (empty($val)) {
         continue;
@@ -1415,7 +1415,7 @@ class listing
       }
 
       // Check for special types
-      switch($action['type']) {
+      switch ($action['type']) {
         case 'copypaste':
           $cut    = !isset($action['cut']) || $action['cut'] != "false";
           $copy   = !isset($action['copy']) || $action['copy'] != "false";
diff --git a/include/class_listingSortIterator.inc b/include/class_listingSortIterator.inc
index fee52d0be..f011ebaf0 100644
--- a/include/class_listingSortIterator.inc
+++ b/include/class_listingSortIterator.inc
@@ -75,7 +75,7 @@ class listingSortIterator implements Iterator {
           }
 
           // Take a look at the several types
-          switch($type) {
+          switch ($type) {
             // Sort for string by default
             default:
             case 'string':
diff --git a/include/class_msgPool.inc b/include/class_msgPool.inc
index 1edb06f2c..a4ca10096 100644
--- a/include/class_msgPool.inc
+++ b/include/class_msgPool.inc
@@ -443,7 +443,7 @@ class msgPool {
       $mismatch = "";
 
       mb_internal_encoding('UTF-8');
-      for($i = 0; $i <= mb_strlen($data); $i++) {
+      for ($i = 0; $i <= mb_strlen($data); $i++) {
         $currentChar = mb_substr($data, $i, 1);
         if (preg_match("$regex", $currentChar)) {
           $result .= $currentChar;
diff --git a/include/class_objects.inc b/include/class_objects.inc
index 8ec16c24d..e00d15fa6 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -129,7 +129,7 @@ class objects
                 (strpos($ui->get_permissions($key, $attrsAcls[$attr][0], $attrsAcls[$attr][1]), 'r') === FALSE)) {
               continue;
             }
-            switch($mode) {
+            switch ($mode) {
               case '*':
                 unset($fetched_attrs[$attr]['count']);
               case 'raw':
diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 041a8adca..ef058d674 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -319,7 +319,7 @@ class templateHandling
     }
     $res = '';
     for ($i = 0; $i < $length; ++$i) {
-      switch($chars) {
+      switch ($chars) {
         case 'd':
           /* digits */
           $res .= (string)random_int(0, 9);
@@ -388,7 +388,7 @@ class templateHandling
       $str = reset($str);
     }
     $result = [$str];
-    switch($m) {
+    switch ($m) {
       case 'F':
         // First
         $result = [reset($str)];
diff --git a/include/class_tests.inc b/include/class_tests.inc
index a943c9325..b239d89ab 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -51,7 +51,7 @@ class tests
       return TRUE;
     }
 
-    return preg_match ("/^[\/0-9 ()+*-]+$/", $nr);
+    return preg_match("/^[\/0-9 ()+*-]+$/", $nr);
   }
 
 
@@ -89,7 +89,7 @@ class tests
     }
 
     /* Using @stephenhay regexp from http://mathiasbynens.be/demo/url-regex (removed ftp through) */
-    return preg_match ("@^(https?)://[^\s/$.?#].[^\s]*$@i", $url);
+    return preg_match("@^(https?)://[^\s/$.?#].[^\s]*$@i", $url);
   }
 
 
@@ -104,7 +104,7 @@ class tests
       return TRUE;
     }
 
-    return preg_match ("/^[a-z0-9 _-]+$/i", $dn);
+    return preg_match("/^[a-z0-9 _-]+$/i", $dn);
   }
 
 
@@ -122,9 +122,9 @@ class tests
     /* STRICT adds spaces and case insenstivity to the uid check.
        This is dangerous and should not be used. */
     if (strict_uid_mode()) {
-      return preg_match ("/^[a-z0-9_-]+$/", $uid);
+      return preg_match("/^[a-z0-9_-]+$/", $uid);
     } else {
-      return preg_match ("/^[a-z0-9 _.-]+$/i", $uid);
+      return preg_match("/^[a-z0-9 _.-]+$/i", $uid);
     }
   }
 
@@ -239,7 +239,7 @@ class tests
       return FALSE;
     }
 
-    return preg_match ("/^[0-9]+$/", $id);
+    return preg_match("/^[0-9]+$/", $id);
   }
 
 
@@ -257,7 +257,7 @@ class tests
       return FALSE;
     }
 
-    return preg_match ("/\/.+$/", $path);
+    return preg_match("/\/.+$/", $path);
   }
 
 
diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc
index e7581b17f..07f579dc1 100644
--- a/include/class_userinfo.inc
+++ b/include/class_userinfo.inc
@@ -835,7 +835,7 @@ class userinfo
           }
           $tmp = $this->get_permissions($dn, $category.'/'.$oc);
           $types = $acl;
-          for($i = 0, $l = strlen($types); $i < $l; $i++) {
+          for ($i = 0, $l = strlen($types); $i < $l; $i++) {
             if (strpos($tmp, $types[$i]) === FALSE) {
               $acl = str_replace($types[$i], '', $acl);
             }
diff --git a/include/class_xml.inc b/include/class_xml.inc
index 1d194c544..459bfecd3 100644
--- a/include/class_xml.inc
+++ b/include/class_xml.inc
@@ -44,7 +44,7 @@ class xml {
       return [];
     }
 
-    if (!function_exists ('xml_parser_create')) {
+    if (!function_exists('xml_parser_create')) {
       trigger_error('xml_parser_create function does not exists');
       return [];
     }
diff --git a/include/functions.inc b/include/functions.inc
index 9cbe4ffc4..6a0bbab3d 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -33,16 +33,16 @@ require_once ('functions_debug.inc');
 require_once('accept-to-gettext.inc');
 
 /* Define constants for debugging */
-define ('DEBUG_TRACE',    1); /*! Debug level for tracing of common actions (save, check, etc.) */
-define ('DEBUG_LDAP',     2); /*! Debug level for LDAP queries */
-define ('DEBUG_DB',       4); /*! Debug level for database operations */
-define ('DEBUG_SHELL',    8); /*! Debug level for shell commands */
-define ('DEBUG_POST',     16); /*! Debug level for POST content */
-define ('DEBUG_SESSION',  32); /*! Debug level for SESSION content */
-define ('DEBUG_CONFIG',   64); /*! Debug level for CONFIG information */
-define ('DEBUG_ACL',      128); /*! Debug level for ACL infos */
-define ('DEBUG_SI',       256); /*! Debug level for communication with Argonaut */
-define ('DEBUG_MAIL',     512); /*! Debug level for all about mail (mailAccounts, imap, sieve etc.) */
+define('DEBUG_TRACE',    1); /*! Debug level for tracing of common actions (save, check, etc.) */
+define('DEBUG_LDAP',     2); /*! Debug level for LDAP queries */
+define('DEBUG_DB',       4); /*! Debug level for database operations */
+define('DEBUG_SHELL',    8); /*! Debug level for shell commands */
+define('DEBUG_POST',     16); /*! Debug level for POST content */
+define('DEBUG_SESSION',  32); /*! Debug level for SESSION content */
+define('DEBUG_CONFIG',   64); /*! Debug level for CONFIG information */
+define('DEBUG_ACL',      128); /*! Debug level for ACL infos */
+define('DEBUG_SI',       256); /*! Debug level for communication with Argonaut */
+define('DEBUG_MAIL',     512); /*! Debug level for all about mail (mailAccounts, imap, sieve etc.) */
 define('DEBUG_FAI',      1024); /* FAI(incomplete) */
 
 /* Define shadow states */
@@ -1184,7 +1184,7 @@ function dn2base ($dn, $ou = NULL)
     $dn = preg_replace("/,$ou/i", ',', $dn);
   }
 
-  return preg_replace ('/^[^,]+,/i', '', $dn);
+  return preg_replace('/^[^,]+,/i', '', $dn);
 }
 
 /*!
@@ -1381,7 +1381,7 @@ function gen_uids ($rule, $attributes)
   $stripped   = $rule;
   $variables  = [];
 
-  for($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
+  for ($pos = 0; preg_match('/%([^%]+)%/', $stripped, $m, PREG_OFFSET_CAPTURE, $pos); ) {
     $variables[$pos]  = templateHandling::parseMask($m[1][0], $attributes);
     $replace          = '{'.$pos.'}';
     $stripped         = substr_replace($stripped, $replace, $m[0][1], strlen($m[0][0]));
@@ -1472,7 +1472,7 @@ function to_byte ($value)
 
   if (!is_numeric(substr($value, -1))) {
 
-    switch(substr($value, -1)) {
+    switch (substr($value, -1)) {
       case 'g':
         $mult = 1073741824;
         break;
@@ -1547,7 +1547,7 @@ function generate_alphabet ($count = 10)
   $c          = 0;
 
   /* Fill cells with charaters */
-  for($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
+  for ($i = 0, $l = mb_strlen($characters, 'UTF8'); $i < $l; $i++) {
     if ($c == 0) {
       $alphabet .= "<tr>";
     }
@@ -1800,7 +1800,7 @@ function array_key_ics ($ikey, array $items)
 function array_differs ($src, $dst)
 {
   /* If the count is differing, the arrays differ */
-  if (count ($src) != count ($dst)) {
+  if (count($src) != count($dst)) {
     return TRUE;
   }
 
@@ -2137,7 +2137,7 @@ function send_binary_content ($data, $name, $type = "application/octet-stream")
   header("Content-type: ".$type);
 
   /* Strip name if it is a complete path */
-  if (preg_match ("/\//", $name)) {
+  if (preg_match("/\//", $name)) {
     $name = basename($name);
   }
 
@@ -2316,7 +2316,7 @@ function load_all_classes ()
   }
 }
 
-if (!function_exists ('ldap_escape')) {
+if (!function_exists('ldap_escape')) {
   /* This bloc is for PHP<5.6 */
   define('LDAP_ESCAPE_FILTER', 0x01);
   define('LDAP_ESCAPE_DN',     0x02);
@@ -2336,13 +2336,13 @@ if (!function_exists ('ldap_escape')) {
         $charMaps[0][chr($i)] = sprintf('\\%02x', $i);
       }
 
-      for($i = 0, $l = count($charMaps[LDAP_ESCAPE_FILTER]); $i < $l; $i++) {
+      for ($i = 0, $l = count($charMaps[LDAP_ESCAPE_FILTER]); $i < $l; $i++) {
         $chr = $charMaps[LDAP_ESCAPE_FILTER][$i];
         unset($charMaps[LDAP_ESCAPE_FILTER][$i]);
         $charMaps[LDAP_ESCAPE_FILTER][$chr] = $charMaps[0][$chr];
       }
 
-      for($i = 0, $l = count($charMaps[LDAP_ESCAPE_DN]); $i < $l; $i++) {
+      for ($i = 0, $l = count($charMaps[LDAP_ESCAPE_DN]); $i < $l; $i++) {
         $chr = $charMaps[LDAP_ESCAPE_DN][$i];
         unset($charMaps[LDAP_ESCAPE_DN][$i]);
         $charMaps[LDAP_ESCAPE_DN][$chr] = $charMaps[0][$chr];
@@ -2364,7 +2364,7 @@ if (!function_exists ('ldap_escape')) {
 
     // Remove any chars to ignore from the list
     $ignore = (string)$ignore;
-    for($i = 0, $l = strlen($ignore); $i < $l; $i++) {
+    for ($i = 0, $l = strlen($ignore); $i < $l; $i++) {
       unset($charMap[$ignore[$i]]);
     }
 
@@ -2385,7 +2385,7 @@ if (!function_exists ('ldap_escape')) {
   }
 }
 
-if (!function_exists ('random_int')) {
+if (!function_exists('random_int')) {
   // PHP<7, we fallback on openssl_random_pseudo_bytes
   function random_int ($min, $max)
   {
@@ -2412,7 +2412,7 @@ if (!function_exists ('random_int')) {
       $rnd = hexdec(bin2hex($randomBytes));
       // discard irrelevant bits
       $rnd = $rnd & $filter;
-    } while($rnd > $range);
+    } while ($rnd > $range);
     return $min + $rnd;
   }
 }
diff --git a/include/functions_debug.inc b/include/functions_debug.inc
index 6b834f945..f96bccd44 100644
--- a/include/functions_debug.inc
+++ b/include/functions_debug.inc
@@ -128,7 +128,7 @@ class printAClass {
       $type = gettype($value);
 
       // change the color and format of the value
-      switch($type) {
+      switch ($type) {
         case 'array':
           break;
 
diff --git a/include/password-methods/class_password-methods-crypt.inc b/include/password-methods/class_password-methods-crypt.inc
index 3ff6a5d13..57c3ec583 100644
--- a/include/password-methods/class_password-methods-crypt.inc
+++ b/include/password-methods/class_password-methods-crypt.inc
@@ -46,7 +46,7 @@ class passwordMethodCrypt extends passwordMethod
    */
   function is_available ()
   {
-    return function_exists ('crypt');
+    return function_exists('crypt');
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods-md5.inc b/include/password-methods/class_password-methods-md5.inc
index b13c00109..96e6375e1 100644
--- a/include/password-methods/class_password-methods-md5.inc
+++ b/include/password-methods/class_password-methods-md5.inc
@@ -46,7 +46,7 @@ class passwordMethodMd5 extends passwordMethod
    */
   function is_available ()
   {
-    return function_exists ('md5');
+    return function_exists('md5');
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods-sha.inc b/include/password-methods/class_password-methods-sha.inc
index 30285a1aa..e2e13fb60 100644
--- a/include/password-methods/class_password-methods-sha.inc
+++ b/include/password-methods/class_password-methods-sha.inc
@@ -45,7 +45,7 @@ class passwordMethodsha extends passwordMethod
    */
   function is_available ()
   {
-    return (function_exists ('sha1') || function_exists ('mhash'));
+    return (function_exists('sha1') || function_exists('mhash'));
   }
 
   /*!
@@ -55,9 +55,9 @@ class passwordMethodsha extends passwordMethod
    */
   function generate_hash ($password)
   {
-    if (function_exists ('sha1')) {
+    if (function_exists('sha1')) {
       $hash = '{SHA}' . base64_encode(pack('H*', sha1($password)));
-    } elseif (function_exists ('mhash')) {
+    } elseif (function_exists('mhash')) {
       $hash = '{SHA}' . base64_encode(mHash(MHASH_SHA1, $password));
     } else {
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
diff --git a/include/password-methods/class_password-methods-smd5.inc b/include/password-methods/class_password-methods-smd5.inc
index d5b0a8cef..73886bca0 100644
--- a/include/password-methods/class_password-methods-smd5.inc
+++ b/include/password-methods/class_password-methods-smd5.inc
@@ -45,7 +45,7 @@ class passwordMethodsmd5 extends passwordMethod
    */
   function is_available ()
   {
-    return function_exists ('md5');
+    return function_exists('md5');
   }
 
   /*!
diff --git a/include/password-methods/class_password-methods-ssha.inc b/include/password-methods/class_password-methods-ssha.inc
index 820efd749..705c2378f 100644
--- a/include/password-methods/class_password-methods-ssha.inc
+++ b/include/password-methods/class_password-methods-ssha.inc
@@ -45,7 +45,7 @@ class passwordMethodssha extends passwordMethod
    */
   function is_available ()
   {
-    return (function_exists ('sha1') || function_exists ('mhash'));
+    return (function_exists('sha1') || function_exists('mhash'));
   }
 
   /*!
@@ -55,12 +55,12 @@ class passwordMethodssha extends passwordMethod
    */
   function generate_hash ($pwd)
   {
-    if (function_exists ('sha1')) {
+    if (function_exists('sha1')) {
       $salt = substr(pack('h*', md5(random_int(0, PHP_INT_MAX))), 0, 8);
       $salt = substr(pack('H*', sha1($salt.$pwd)), 0, 4);
       $pwd  = '{SSHA}'.base64_encode(pack('H*', sha1($pwd.$salt)).$salt);
       return $pwd;
-    } elseif (function_exists ('mhash')) {
+    } elseif (function_exists('mhash')) {
       $salt = mhash_keygen_s2k(MHASH_SHA1, $pwd, substr(pack('h*', md5(random_int(0, PHP_INT_MAX))), 0, 8), 4);
       $pwd  = '{SSHA}'.base64_encode(mhash(MHASH_SHA1, $pwd.$salt).$salt);
     } else {
@@ -75,9 +75,9 @@ class passwordMethodssha extends passwordMethod
     $hash = base64_decode(substr($hash, 6));
     $salt = substr($hash, 20);
     $hash = substr($hash, 0, 20);
-    if (function_exists ('sha1')) {
+    if (function_exists('sha1')) {
       $nhash = pack('H*', sha1($pwd . $salt));
-    } elseif (function_exists ('mhash')) {
+    } elseif (function_exists('mhash')) {
       $nhash = mhash(MHASH_SHA1, $pwd.$salt);
     } else {
       msg_dialog::display(_('Configuration error'), msgPool::missingext('mhash'), ERROR_DIALOG);
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 7c09ab3d2..02f5d05f5 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -51,7 +51,7 @@ function html_trace ($errstr = "")
     'cred_decrypt'      => [0,1],
     'LDAP/__construct'  => [1],
   ];
-  if (!function_exists ('debug_backtrace')) {
+  if (!function_exists('debug_backtrace')) {
     return  ['', ''];
   }
   $trace = array_slice(debug_backtrace(), 1);
@@ -70,7 +70,7 @@ function html_trace ($errstr = "")
                     '</td></tr>';
   $return_mailto  = rawurlencode('=== Trace ===');
   /* Generate trace history */
-  for($index = 1, $c = count($trace); $index < $c; $index++) {
+  for ($index = 1, $c = count($trace); $index < $c; $index++) {
     $ct   = $trace[$index];
     $loc  = '';
     $func = '';
@@ -87,7 +87,7 @@ function html_trace ($errstr = "")
       $func .= $ct['function'];
     }
     if (isset($ct['type'])) {
-      switch($ct['type']) {
+      switch ($ct['type']) {
         case "::":
           $type = _("static");
           break;
diff --git a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
index 4d725ff85..522176c84 100644
--- a/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
+++ b/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc
@@ -77,7 +77,7 @@ class phoneSelectDialog extends GenericDialog
   function __construct ($simplePlugin, $attribute, $type)
   {
     $this->attribute  = $attribute;
-    switch($type) {
+    switch ($type) {
       case 'phone':
         $this->dialog = new phoneSelect();
         break;
diff --git a/include/simpleplugin/class_dialogAttributes.inc b/include/simpleplugin/class_dialogAttributes.inc
index edf64a0a9..b305fc146 100644
--- a/include/simpleplugin/class_dialogAttributes.inc
+++ b/include/simpleplugin/class_dialogAttributes.inc
@@ -556,7 +556,7 @@ class GroupsAttribute extends GenericDialogAttribute
     if (!in_array($dn, $this->value)) {
       $display = $entry['cn'][0];
       if (isset($entry['description'][0]) && !empty($entry['description'][0])) {
-        $display .= ' ['.preg_replace ('/^Group of user/', _('Group of user'), $entry['description'][0]).']';
+        $display .= ' ['.preg_replace('/^Group of user/', _('Group of user'), $entry['description'][0]).']';
       }
 
       $this->value[]    = $dn;
diff --git a/include/simpleplugin/class_simpleManagement.inc b/include/simpleplugin/class_simpleManagement.inc
index 2d11f8622..98852aeb0 100644
--- a/include/simpleplugin/class_simpleManagement.inc
+++ b/include/simpleplugin/class_simpleManagement.inc
@@ -830,7 +830,7 @@ class simpleManagement
       if (count($msgs)) {
         msg_dialog::displayChecks($msgs);
       } else {
-        @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Modifications applied!');
+        @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->dns, 'Modifications applied!');
         $this->tabObject->re_init();
       }
     }
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index f3cb20b2d..44a11c05f 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -242,7 +242,7 @@ class simplePlugin
 
       /* Set the template flag according to the existence of objectClass fdTemplate */
       if (isset($this->attrs['objectClass'])) {
-        if (in_array_ics ('fdTemplate', $this->attrs['objectClass'])) {
+        if (in_array_ics('fdTemplate', $this->attrs['objectClass'])) {
           @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, 'found', 'Template check');
           $this->setTemplate(TRUE);
           $this->templateLoadAttrs($this->attrs);
@@ -325,7 +325,7 @@ class simplePlugin
       if (preg_match('/^top$/i', $obj)) {
         continue;
       }
-      if (!isset($attrs['objectClass']) || !in_array_ics ($obj, $attrs['objectClass'])) {
+      if (!isset($attrs['objectClass']) || !in_array_ics($obj, $attrs['objectClass'])) {
         $found = FALSE;
         break;
       }
@@ -1369,7 +1369,7 @@ class simplePlugin
    */
   protected function handle_hooks ($when, $mode, array $addAttrs = [])
   {
-    switch($mode) {
+    switch ($mode) {
       case 'add':
         return $this->callHook($when.'CREATE', $addAttrs);
 
@@ -1837,7 +1837,7 @@ class simplePlugin
         $usableAttributes[] = (string)$attr;
       }
     }
-    for($i = 1; $i < count($usableAttributes); $i++) {
+    for ($i = 1; $i < count($usableAttributes); $i++) {
       foreach (new Combinations($usableAttributes, $i) as $attrs) {
         $dn = $attribute.'='.ldap_escape_dn($this->$attribute);
         foreach ($attrs as $attr) {
diff --git a/plugins/admin/acl/class_aclManagement.inc b/plugins/admin/acl/class_aclManagement.inc
index 00c725dc5..67337af0b 100644
--- a/plugins/admin/acl/class_aclManagement.inc
+++ b/plugins/admin/acl/class_aclManagement.inc
@@ -207,7 +207,7 @@ class aclManagement extends simpleManagement
     if ($dn == $base) {
       $ou = ' . ';
     } else {
-      for($i = 4;$i < func_num_args();$i++) {
+      for ($i = 4;$i < func_num_args();$i++) {
         $val = func_get_arg($i);
         if (empty($val)) {
           continue;
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index ef9c1dede..7e5fd1189 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -286,7 +286,7 @@ class groupManagement extends simpleManagement
                        'alt="'.$infos['plTitle'].'" title="'.$infos['plTitle'].'" '.
                        'name="listing_edit_tab_'.$class.'_'.$row.'" style="padding:1px"/>';
           } else {
-            @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", 'No icon for');
+            @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", 'No icon for');
           }
         } else {
           $result .= '<img src="images/empty.png" alt=" " class="center optional '.$class.'" style="padding:1px"/>';
@@ -301,7 +301,7 @@ class groupManagement extends simpleManagement
   {
     $types  = preg_replace('/[^a-z]/i', '', $gosaGroupObjects[0]);
     $result = '';
-    for($i = 0; $i < strlen($types); $i++) {
+    for ($i = 0; $i < strlen($types); $i++) {
       if ($types[$i] == 'I') {
         continue;
       }
diff --git a/plugins/admin/groups/class_ogroup.inc b/plugins/admin/groups/class_ogroup.inc
index 3fa4fffe2..439aaab2d 100644
--- a/plugins/admin/groups/class_ogroup.inc
+++ b/plugins/admin/groups/class_ogroup.inc
@@ -52,7 +52,7 @@ class ObjectsAttribute extends GenericDialogAttribute
             break;
           }
         } catch (NonExistingObjectTypeException $e) {
-          @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage(), "Objecttype");
+          @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $e->getMessage(), "Objecttype");
           unset(ogroup::$objectTypes[$code]);
         }
       }
diff --git a/plugins/admin/groups/tabs_ogroups.inc b/plugins/admin/groups/tabs_ogroups.inc
index 0a827898e..662e60055 100644
--- a/plugins/admin/groups/tabs_ogroups.inc
+++ b/plugins/admin/groups/tabs_ogroups.inc
@@ -47,7 +47,7 @@ class ogrouptabs extends simpleTabs_noSpecial
         $dtabs  = [];
       }
       $tabs   = FALSE;
-      for($i = 0; $i < strlen($objects); $i++) {
+      for ($i = 0; $i < strlen($objects); $i++) {
         if (in_array($objects[$i], ['I','G'])) {
           /* Ignore unknown objects and groups */
           continue;
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 922cc71c1..0c5956a5d 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -255,7 +255,7 @@ class userManagement extends simpleManagement
                        'alt="'._('User account').'" title="'._('User account information').'" '.
                        'name="listing_edit_tab_user_'.$row.'"/>';
     if (!empty($attrs)) {
-      if (in_array_ics ('fdTemplate', $attrs['objectClass'])) {
+      if (in_array_ics('fdTemplate', $attrs['objectClass'])) {
         $attrs = templateHandling::fieldsFromLDAP($attrs);
       }
       foreach ($usertabs as $class => $usertab) {
@@ -266,7 +266,7 @@ class userManagement extends simpleManagement
                        'alt="'.$infos['plShortName'].'" title="'.$infos['plShortName'].'" '.
                        'name="listing_edit_tab_'.$class.'_'.$row.'"/>';
           } else {
-            @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", "No icon for");
+            @DEBUG(DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $infos['plShortName']." ($class)", "No icon for");
           }
         } else {
           $result .= '<img src="images/empty.png" alt="" class="center optional '.$class.'"/>';
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index c7a920df3..c35aafa2a 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -169,7 +169,7 @@ class UserPasswordAttribute extends CompositeAttribute
     if ($this->plugin->is_template) {
       list($value, $password) = explode('|', $value, 2);
     }
-    if (preg_match ('/^{[^}]+}/', $value)) {
+    if (preg_match('/^{[^}]+}/', $value)) {
       $tmp = passwordMethod::get_method($value);
       if (is_object($tmp)) {
         $pw_storage = $tmp->get_hash();
@@ -616,7 +616,7 @@ class user extends simplePlugin
     parent::adapt_from_template($attrs, $skip);
     if (isset($this->attrs['userPassword']) && !in_array('userPassword', $skip)) {
       list($hash,$password) = explode('|', $this->attrs['userPassword'][0], 2);
-      if (preg_match ('/^{[^}]+}/', $hash)) {
+      if (preg_match('/^{[^}]+}/', $hash)) {
         $tmp = passwordMethod::get_method($hash);
         if (is_object($tmp)) {
           $hash = $tmp->generate_hash($password);
-- 
GitLab


From 68a720405c390ec828cb324a3b58e30e1fb8ba8d Mon Sep 17 00:00:00 2001
From: Thibault Dockx <dockx.thibault@gmail.com>
Date: Tue, 19 Jul 2022 16:57:04 +0100
Subject: [PATCH 105/117] :sparkles: Feat(Core) 1.3.1 - Gitlab CI udpates

Updates on 1.3.1 CI for container testing phpcs
PHP Codestyle will then be used as in 1.4-dev
---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ece2fdb7b..80d5dbbb5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -54,13 +54,13 @@ create_perlcritic_rapport:
 
 # PHP codesniffer
 create_php_code_sniffer_rapport:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
   stage: codestyle
   only:
     - branches
   script:
     - test -d ../dev-tools/ && rm -Rf ../dev-tools/
-    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git -b 1.3 ../dev-tools
+    - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
 
-- 
GitLab


From 7e8249e801bd845b1600cec4ca006920628403c6 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Thu, 28 Jul 2022 12:19:05 +0100
Subject: [PATCH 106/117] :ambulance: Fix(Ldap) - Fixes ldap.inc filter

ldap filter methodes are now fixed
---
 include/class_ldap.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index 6adda3f6b..a287777f9 100644
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
@@ -297,7 +297,7 @@ class LDAP
    *
    * \param array $attrs
    */
-  function ls ($srp, $filter = " (objectclass=*)", $basedn = "", $attrs = ["*"])
+  function ls ($srp, $filter = "(objectclass=*)", $basedn = "", $attrs = ["*"])
   {
     trigger_error('deprecated');
     $this->cd($basedn);
@@ -315,7 +315,7 @@ class LDAP
    *
    * \param string $filter Initialized at "(objectclass=*)"
    */
-  function cat ($srp, $dn, $attrs = ["*"], $filter = " (objectclass=*)")
+  function cat ($srp, $dn, $attrs = ["*"], $filter = "(objectclass=*)")
   {
     if ($this->hascon) {
       if ($this->reconnect) {
@@ -959,7 +959,7 @@ class LDAP
    *
    * \param  $limit        Limits the result.
    */
-  function generateLdif ($dn, $filter = " (objectClass=*)", $scope = 'sub', $limit = 0)
+  function generateLdif ($dn, $filter = "(objectClass=*)", $scope = 'sub', $limit = 0)
   {
     // Ensure that limit is numeric if not skip here.
     if (!empty($limit) && !is_numeric($limit)) {
-- 
GitLab


From 31fe9c191a1959f8a7e3066a1aff5c8f850d0a2a Mon Sep 17 00:00:00 2001
From: bmortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 28 Jul 2022 14:06:23 +0000
Subject: [PATCH 107/117] Merge branch
 '6223-remove-all-reference-to-stretch-registry-images' into '1.4-dev'

Resolve "remove all reference to stretch registry images"

Closes #6223

See merge request fusiondirectory/fd!969

(cherry picked from commit b246399ff2d3dc74565c9f3897e4a3544e0c51d1)

de0ccb48 :ambulance: fix(ci) remove all reference to registry stretch images
---
 .gitlab-ci.yml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 80d5dbbb5..65e81a5d4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,7 @@ stages:
 
 # Perl lint
 create_perl_lint_rapport:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: lint
   only:
     - branches
@@ -27,7 +27,7 @@ create_php_lint_rapport_stretch:
 
 # generate man pages to test validity
 create_manpages_lint_report:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: lint
   only:
     - branches
@@ -43,7 +43,7 @@ create_manpages_lint_report:
 
 # Generate perlcritic rapport
 create_perlcritic_rapport:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: codestyle
   only:
     - branches
@@ -81,7 +81,7 @@ create_php_compatibility_rapport:
 
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
   stage: transifex
   only:
     - branches
@@ -92,7 +92,7 @@ fusiondirectory-update-locale:
 
 # Update transifex
 update-transifex:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
   stage: transifex
   only:
     - /^1.*$/
-- 
GitLab


From 00c768e160f3ccd3101f9de332f625b4df679622 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Thu, 28 Jul 2022 15:36:07 +0100
Subject: [PATCH 108/117] :ambulance: Fix(ci) - checkout ci from HEAD

Checkedout CI from 1.3-fixes HEAD
---
 .gitlab-ci.yml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 80d5dbbb5..65e81a5d4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,7 @@ stages:
 
 # Perl lint
 create_perl_lint_rapport:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: lint
   only:
     - branches
@@ -27,7 +27,7 @@ create_php_lint_rapport_stretch:
 
 # generate man pages to test validity
 create_manpages_lint_report:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: lint
   only:
     - branches
@@ -43,7 +43,7 @@ create_manpages_lint_report:
 
 # Generate perlcritic rapport
 create_perlcritic_rapport:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/perlcodestyle:buster
   stage: codestyle
   only:
     - branches
@@ -81,7 +81,7 @@ create_php_compatibility_rapport:
 
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
   stage: transifex
   only:
     - branches
@@ -92,7 +92,7 @@ fusiondirectory-update-locale:
 
 # Update transifex
 update-transifex:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:stretch
+  image: registry.fusiondirectory.org/fusiondirectory/fd/transifex-cli:buster
   stage: transifex
   only:
     - /^1.*$/
-- 
GitLab


From ba9a8b8ae8fb4dfb947d993fe516ee7ff6c9b92e Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 28 Jul 2022 18:46:26 +0200
Subject: [PATCH 109/117] :ambulance: fix(ci) cherry-pick missed one stretch
 entry :/

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 .gitlab-ci.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 65e81a5d4..c0a04ffa1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,9 +16,9 @@ create_perl_lint_rapport:
   script:
     - perl -cW contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-insert-schema
 
-# PHP lint (stretch)
-create_php_lint_rapport_stretch:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:stretch
+# PHP lint
+create_php_lint_rapport:
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
   stage: lint
   only:
     - branches
-- 
GitLab


From 7683449f5cc81902d34a762b2168f87cc0e42a3c Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 28 Jul 2022 18:50:33 +0200
Subject: [PATCH 110/117] :ambulance: fix(ci) fix cherry-pick that was missing
 one stretch image

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 .gitlab-ci.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 65e81a5d4..c0a04ffa1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,9 +16,9 @@ create_perl_lint_rapport:
   script:
     - perl -cW contrib/bin/fusiondirectory-setup contrib/bin/fusiondirectory-insert-schema
 
-# PHP lint (stretch)
-create_php_lint_rapport_stretch:
-  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:stretch
+# PHP lint
+create_php_lint_rapport:
+  image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
   stage: lint
   only:
     - branches
-- 
GitLab


From 6b4bd39b637346e0ace8fc04eb90fe0b5811dce1 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 8 Sep 2022 14:15:56 +0200
Subject: [PATCH 111/117] :handshake: fix(locales): update locales for 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 locale/af_ZA/fusiondirectory.po       | 169 ++++++++---------
 locale/ar/fusiondirectory.po          | 169 ++++++++---------
 locale/ca/fusiondirectory.po          | 169 ++++++++---------
 locale/cs_CZ/fusiondirectory.po       | 184 +++++++++---------
 locale/de/fusiondirectory.po          | 177 ++++++++----------
 locale/el_GR/fusiondirectory.po       | 169 ++++++++---------
 locale/es/fusiondirectory.po          | 184 +++++++++---------
 locale/es_CO/fusiondirectory.po       | 187 +++++++++----------
 locale/es_VE/fusiondirectory.po       | 184 +++++++++---------
 locale/fa_IR/fusiondirectory.po       | 169 ++++++++---------
 locale/fi_FI/fusiondirectory.po       | 169 ++++++++---------
 locale/fr/fusiondirectory.po          | 202 ++++++++++----------
 locale/hu_HU/fusiondirectory.po       | 169 ++++++++---------
 locale/id/fusiondirectory.po          | 169 ++++++++---------
 locale/it_IT/fusiondirectory.po       | 195 ++++++++++---------
 locale/ja/fusiondirectory.po          | 169 ++++++++---------
 locale/ko/fusiondirectory.po          | 175 +++++++++--------
 locale/lv/fusiondirectory.po          | 169 ++++++++---------
 locale/nb/fusiondirectory.po          | 169 ++++++++---------
 locale/nl/fusiondirectory.po          | 182 +++++++++---------
 locale/pl/fusiondirectory.po          | 169 ++++++++---------
 locale/pt/fusiondirectory.po          | 179 +++++++++---------
 locale/pt_BR/fusiondirectory.po       | 187 +++++++++----------
 locale/ru/fusiondirectory.po          | 174 ++++++++---------
 locale/ru@petr1708/fusiondirectory.po | 169 ++++++++---------
 locale/sv/fusiondirectory.po          | 174 ++++++++---------
 locale/tr_TR/fusiondirectory.po       | 259 +++++++++++++-------------
 locale/ug/fusiondirectory.po          | 169 ++++++++---------
 locale/vi_VN/fusiondirectory.po       | 178 ++++++++----------
 locale/zh/fusiondirectory.po          | 169 ++++++++---------
 locale/zh_TW/fusiondirectory.po       | 169 ++++++++---------
 31 files changed, 2670 insertions(+), 2855 deletions(-)

diff --git a/locale/af_ZA/fusiondirectory.po b/locale/af_ZA/fusiondirectory.po
index 6dda78fb3..664de7f7d 100644
--- a/locale/af_ZA/fusiondirectory.po
+++ b/locale/af_ZA/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Afrikaans (South Africa) (https://www.transifex.com/fusiondirectory/teams/12202/af_ZA/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/ar/fusiondirectory.po b/locale/ar/fusiondirectory.po
index ed2d1accf..cf3d0725c 100644
--- a/locale/ar/fusiondirectory.po
+++ b/locale/ar/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Arabic (https://www.transifex.com/fusiondirectory/teams/12202/ar/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "خطأ"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "النوع"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "تحذير"
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "الإسم"
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/ca/fusiondirectory.po b/locale/ca/fusiondirectory.po
index e995df8a0..2ad81a4d3 100644
--- a/locale/ca/fusiondirectory.po
+++ b/locale/ca/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Catalan (https://www.transifex.com/fusiondirectory/teams/12202/ca/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avís"
@@ -1275,7 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nom"
@@ -1631,7 +1631,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2089,12 +2089,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3444,102 +3444,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4082,98 +4098,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4619,27 +4614,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr "El compte és blocat. Contacteu el vostre administrador de sistemes."
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/cs_CZ/fusiondirectory.po b/locale/cs_CZ/fusiondirectory.po
index 27555cc24..9be96c445 100644
--- a/locale/cs_CZ/fusiondirectory.po
+++ b/locale/cs_CZ/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Czech (Czech Republic) (https://www.transifex.com/fusiondirectory/teams/12202/cs_CZ/)\n"
@@ -40,8 +40,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Chyba"
@@ -147,60 +147,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Soubor"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "linka"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "chyba v PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "třída"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "funkce"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "neměnné"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "metoda"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "stopa"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Typ"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumenty"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "Během vytváření této stránky ohlásil interpret PHP několik chyb!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "zaslat hlášení o chybě vývojářům FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "zaslat hlášení o chybě"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "přepnout informace"
 
@@ -504,7 +504,7 @@ msgstr "LDAP server odpověděl: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varování"
@@ -1330,7 +1330,7 @@ msgstr "Vyberte požadované položky"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Název"
@@ -1695,8 +1695,8 @@ msgid "days"
 msgstr "dny"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
-msgstr "Přidat (dialog)"
+msgid "Add(dialog)"
+msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
 #, php-format
@@ -2163,13 +2163,13 @@ msgstr "Spuštěná akce"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
-msgstr "Akce zavolána bez chyby (výsledky jsou „%s“)"
+msgid "Action called without error(results were \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
-msgstr "Akce zavolána bez chyby (výsledek je „%s“)"
+msgid "Action called without error(result was \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
 #: plugins/admin/groups/class_roleGeneric.inc:55
@@ -3592,102 +3592,118 @@ msgid ""
 msgstr ""
 "Statistiky pro typ „%s“ nebylo možné spočítat kvůli následující chybě: %s"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Identifikátor"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Typ předplatného"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Datum začátku"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Datum ukončení"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "import(ovat)"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Upravit skupiny a role uživatele"
@@ -4258,28 +4274,12 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory toto rozšíření potřebuje pro práci se snímky."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"„register_globals“ je mechanizmus v PHP pro registraci všech globálních "
-"proměnných, které jsou tak dostupné ze skriptů aniž by bylo třeba měnit "
-"jejich rozsah. Jenže to může rizikové z hlediska zabezpečení."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Vyhledejte ve svém php.ini parametr 'register_globals' a nastavte jej na "
-"'off'. "
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP tuto hodnotu používá pro „úklid“ (garbage collector) při odstraňování "
 "starých relací."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4287,7 +4287,7 @@ msgstr ""
 "Nastavení této hodnoty na jeden den zabrání ztrátě relace a cookies dříve, "
 "než skutečně vyprší nastavený časový limit."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4295,12 +4295,12 @@ msgstr ""
 "Vyhledejte ve svém php.ini parametr 'session.gc_maxlifetime' a nastavte jej "
 "na hodnotu '86400' a vyšší."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "vypnuto"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4308,13 +4308,13 @@ msgstr ""
 "Abyste se vyhnuli potížím při používání FusionDirectory, vyhledejte ve svém "
 "php.ini parametr session.auto_start a nastavte jej na hodnotu off ."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Vyhledejte ve svém php.ini parametr 'session.auto_start' a nastavte jej na "
 "'off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4324,14 +4324,14 @@ msgstr ""
 "nevyzpytatelné chyby! Pro rozsáhlá nasazení je třeba tuto hodnotu ještě dále"
 " navýšit."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "V souboru s nastaveními php.ini na svém serveru vyhledejte volbu "
 "memory_limit a nastavte ji na hodnotu 128M a vyšší."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4339,17 +4339,17 @@ msgstr ""
 "Tato volba ovlivňuje to, jak PHP zachází s výstupem. Pro zvýšení výkonu "
 "nastavte na 'vypnuto'."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Vyhledejte ve svém php.ini parametr 'implicit_flush' a nastavte jej na "
 "'off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "PHP skripty by měly dostat čas alespoň 30 vteřin na to, aby proběhly."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4357,7 +4357,7 @@ msgstr ""
 "Vyhledejte ve svém php.ini parametr 'max_execution_time' a nastavte jej na "
 "hodnotu '30' a vyšší."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4365,25 +4365,11 @@ msgstr ""
 "Pro zlepšení zabezpečení nastavte PHP tak, aby neposkytovalo jakékoli "
 "informace o serveru, na kterém běží."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 "Vyhledejte ve svém php.ini parametr 'expose_php' a nastavte jej na 'off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Výkonnost Vašeho serveru můžete zlepšit nastavením parametru "
-"'magic_quotes_gpc' na 'off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Vyhledejte ve svém php.ini parametr 'zend.ze1_compatibility_mode' a nastavte"
-" jej na 'off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "migrovat"
@@ -4864,27 +4850,27 @@ msgstr "Zkontrolujte prosím správnost zadaného uživatelského jména a hesla
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Účet je uzamčen. Prosím kontaktujte svého správce systémů."
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr "V HTTP hlavičce „%s“ nebyla nalezena žádná hodnota"
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr "Uživatel z hlavičky „%s“ se nepodařilo v LDAP najít"
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr "Přihlášení účtem uživatele „%s“ vyvolalo chybu: %s"
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "CAS uživatele z hlavičky „%s“ se nepodařilo v LDAP najít"
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/de/fusiondirectory.po b/locale/de/fusiondirectory.po
index 7acc56faa..0f6d324ed 100644
--- a/locale/de/fusiondirectory.po
+++ b/locale/de/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: German (https://www.transifex.com/fusiondirectory/teams/12202/de/)\n"
@@ -40,8 +40,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fehler"
@@ -142,62 +142,62 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Datei"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Zeile"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "PHP Fehler"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "Klasse"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "Funktion"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statisch"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "Methode"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Ablaufverfolgung"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Typ"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumente"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "Der PHP-Interpreter meldete einen oder mehrere Fehler beim Erzeugen dieser "
 "Seite!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Bugreport an das FusionDirectory Team senden"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Fehlerbericht senden"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Zeige/Verstecke Informationen"
 
@@ -494,7 +494,7 @@ msgstr "Der LDAP-Server meldete: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Warnung"
@@ -1310,7 +1310,7 @@ msgstr "Bitte wählen Sie die gewünschten Einträge"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Name"
@@ -1666,7 +1666,7 @@ msgid "days"
 msgstr "Tage"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2126,12 +2126,12 @@ msgstr "Aktion ausgelöst"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3521,102 +3521,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Kennung"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Abonnementstyp"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Startdatum"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Enddatum"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importieren"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Gruppen und Rollen des Benutzers bearbeiten"
@@ -4173,27 +4189,12 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory benötigt diese Erweiterung um Snapshots zu verwalten."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals ist ein PHP-Mechanismus, welcher alle globalen Variablen "
-"für Skripte direkt zugänglich macht. Dies kann ein Sicherheitsrisiko sein."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Suchen Sie nach 'register_globals' in Ihrer php.ini und setzen Sie es auf "
-"'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP verwendet diese Einstellungen für den Garbage Collector, um alte "
 "Sessions zu entfernen."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4202,7 +4203,7 @@ msgstr ""
 " Sitzung und den zugehörigen Cookie verlieren, bevor diese tatsächlich ihre "
 "Gültigkeit verlieren."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4210,12 +4211,12 @@ msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'session.gc_maxlifetime' und setzen Sie es "
 "auf 84600 oder höher."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Aus"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4223,13 +4224,13 @@ msgstr ""
 "Um FusionDirectory ohne Probleme benutzen zu können, muss die Option "
 "session.auto_start in Ihrer php.ini auf 'Off' gestellt werden."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'session.auto_start' und setzen Sie es auf "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4238,14 +4239,14 @@ msgstr ""
 "unter dieses Limit gesetzt, kann dies unreproduzierbare Fehler hervorrufen. "
 "Erhöhen Sie dies für größere Installationen."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Suchen nach 'memory_limit' in Ihrer php.ini und setzen auf '128M' oder "
 "höher."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4253,17 +4254,17 @@ msgstr ""
 "Diese Einstellung beeinflusst die Verarbeitung der Ausgabe. Stellen Sie "
 "diese auf 'off', um die Leistung zu erhöhen."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'implicit_flush' und setzen Sie es auf "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Die Ausführungszeit sollte mindestens 30 Sekunden betragen."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4271,7 +4272,7 @@ msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'max_execution_time' und setzen Sie es auf "
 "'30' oder höher."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4280,25 +4281,11 @@ msgstr ""
 "setzen. PHP wird in dieser Einstellung keine Informationen über Ihren "
 "laufenden Server senden."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 "Suchen Sie in Ihrer php.ini nach 'expose_php' und setzen Sie es auf 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Erhöhen Sie die Leistung des Servers, indem sie magic_quotes_gpc auf 'off' "
-"stellen."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Suchen Sie in Ihrer php.ini nach 'zend.ze1_compatibility_mode' und setzen "
-"Sie es auf 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrieren"
@@ -4768,27 +4755,27 @@ msgstr "Bitte überprüfen Sie die Kombination von Benutzernamen und Passwort."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Das Konto ist gesperrt. Bitte benachrichtigen Sie den Administrator!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/el_GR/fusiondirectory.po b/locale/el_GR/fusiondirectory.po
index ea3622181..46e0595da 100644
--- a/locale/el_GR/fusiondirectory.po
+++ b/locale/el_GR/fusiondirectory.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: LOUKAS SKOUROLIAKOS, 2021\n"
 "Language-Team: Greek (Greece) (https://www.transifex.com/fusiondirectory/teams/12202/el_GR/)\n"
@@ -40,8 +40,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Σφάλμα"
@@ -141,60 +141,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Αρχείο"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Γραμμή"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "κλάση"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "συνάρτηση"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "στατικό"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "μέθοδος"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Ανίχνευση"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Τύπος"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Ορίσματα"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Αποστολή αναφοράς σφάλματος"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Εναλλαγή πληροφοριών"
 
@@ -487,7 +487,7 @@ msgstr "Ο διακομιστής LDAP επίστρεψε: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Προειδοποίηση"
@@ -1285,7 +1285,7 @@ msgstr "Παρακαλώ επιλέξτε τις επιθυμητές εγγρα
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Όνομα"
@@ -1641,7 +1641,7 @@ msgid "days"
 msgstr "ημέρες"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2099,12 +2099,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3475,102 +3475,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Id"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Τύπος συνδρομής"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Ημερομηνία Εκκίνησης "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Εισαγωγή"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Επεξεργασία ομάδων και ρόλων του χρήστη"
@@ -4119,98 +4135,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Μετακίνηση"
@@ -4656,27 +4651,27 @@ msgstr "Παρακαλώ ελέγξτε το συνδυασμό όνομα χρ
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/es/fusiondirectory.po b/locale/es/fusiondirectory.po
index cf97f0471..576973765 100644
--- a/locale/es/fusiondirectory.po
+++ b/locale/es/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Spanish (https://www.transifex.com/fusiondirectory/teams/12202/es/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
@@ -141,61 +141,61 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Archivo"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Linea"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Error PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "clase"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "función"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "estático"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "método"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Traza"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumentos"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "¡La generación de esta página ha provocado errores en el interprete PHP!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Enviar informe de errores al equipo de FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Enviar informe de errores"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Modificar información"
 
@@ -493,7 +493,7 @@ msgstr "El servidor LDAP devolvio: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -1306,7 +1306,7 @@ msgstr "Por favor seleccione las entradas que desee"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1662,7 +1662,7 @@ msgid "days"
 msgstr "días"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2120,12 +2120,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3479,102 +3479,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importar"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4127,26 +4143,12 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory requiere esta extensión para manejar capturas."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"registr_globals es un mecanismo de PHP para registrar todas las variables "
-"globales de tal manera que sean accesible desde scripts sin que cambien su "
-"ámbito. Esto puede ser un problema de seguridad."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr "Busque 'register_globals' en su php.ini y modifíquelo por 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP usa este valor en el recolector de basura para eliminar las sesiones "
 "antiguas."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4154,40 +4156,40 @@ msgstr ""
 "Ajustando este valor a un día impedirá la perdida de sesiones y cookies "
 "antes de que realmente se desconecte por tiempo."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 "Busque 'sessio.gc_maxlifetime' en su php.ini y modifíquelo a 86400 o mayor."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Off"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr "Busque 'session.auto_start' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4195,22 +4197,22 @@ msgstr ""
 "Esta opción está relacionada con el manejo de salida de PHP. Desactive esta "
 "opción poniéndola en off para mejorar el rendimiento."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Busque 'implicit_flush' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "El tiempo de ejecución debe ser de al menos 30 segundos."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 "Busque 'max_execution_time' en su php.ini y modifíquelo a '30' o mayor."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4219,22 +4221,10 @@ msgstr ""
 "'off'. PHP no debería enviar ningún tipo de información sobre el servidor "
 "que esta ejecutando la aplicación."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Busque 'expose_php' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Aumente el rendimiento de su servidor modificando 'magic_quotes_gpc' a 'off'"
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
@@ -4697,27 +4687,27 @@ msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 "Cuenta bloqueada. ¡Por favor contacte con su administrador de sistemas!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4772,6 +4762,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4787,6 +4778,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4801,6 +4793,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4811,6 +4804,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4822,18 +4816,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4848,6 +4845,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/es_CO/fusiondirectory.po b/locale/es_CO/fusiondirectory.po
index ab1c11790..ee5b253b2 100644
--- a/locale/es_CO/fusiondirectory.po
+++ b/locale/es_CO/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Spanish (Colombia) (https://www.transifex.com/fusiondirectory/teams/12202/es_CO/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_CO\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
@@ -141,60 +141,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Archivo"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Line"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Error PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "clase"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "función"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "static"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "método"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Trace"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumentos"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "¡Al generar esta página se han generado errores en el intérprete PHP!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Enviar un reporte de fallo al equipo de FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Enviar reporte de errores"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Alternar información"
 
@@ -491,7 +491,7 @@ msgstr "El servidor LDAP respondió: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Precacuión"
@@ -1307,7 +1307,7 @@ msgstr "Por favor elija las entradas que desea"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1665,7 +1665,7 @@ msgid "days"
 msgstr "días"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2125,12 +2125,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3537,102 +3537,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Editar grupos y roles del usuario"
@@ -4196,27 +4212,12 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory requiere esta extensión para manejar snapshots."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals  es un mecanismo PHP para registrar todas las variables "
-"globales y que puedan accederse mediante scripts sin cambiar el foco. Esto "
-"puede ser un riesgo de seguridad."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Buscar por 'register_globals' en su archivo php.ini y cámbielo a 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP utiliza este valor para que el colector de basura borre las sesiones "
 "obsoletas."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4224,7 +4225,7 @@ msgstr ""
 "Configurando este valor a 'un día' prevendrá perder sesiones y cookies antes"
 " de que realmente expiren."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4232,12 +4233,12 @@ msgstr ""
 "Buscar por  'session.gc_maxlifetime' en su archivo php.ini y configurarlo a "
 "86400 o superior."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Apagado"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4245,12 +4246,12 @@ msgstr ""
 "Para utilizar FusionDirectory sin problemas la opción session.auto_start  en"
 " su archivo php.ini debe estar configurada en 'Off'."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Buscar  'session.auto_start'  en su archivo php.ini y configurarlo en 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4259,14 +4260,14 @@ msgstr ""
 "que esto ¡puede causar errores que no son reproducibles! aumente la memoria "
 "para instalaciones grandes."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Buscar 'memory_limit' en su archivo php.ini y configurarlo con '128MB' o "
 "superior."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4274,16 +4275,16 @@ msgstr ""
 "Esta opción afecta el manejo de la salida PHP. Deshabilitar esta opción con "
 "'off' mejorará el rendimiento."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Busca 'omplicit_flush' en su archivo php.ini y lo establece como 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "El tiempo de ejecución debería ser al menos de 30 segundos."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4291,7 +4292,7 @@ msgstr ""
 "Busca 'max_execution_time' en su archivo php.ini y lo establece como '30' o "
 "superior."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4299,24 +4300,10 @@ msgstr ""
 "Incrementa la seguridad del servidor estableciendo 'expose_php' como 'Off'. "
 "PHP no enviará información de su  servidor en este caso."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Busca 'expose_php' en su archivo php.ini y lo establece como 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Incrementa el rendimiento del servidor estableciendo 'magic_quotes_gpc' como"
-" 'Off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Busca  'zend.ze1_compatibility_mode' en su archivo php.ini y lo establece "
-"como 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
@@ -4799,27 +4786,27 @@ msgstr "Por favor verifique su combinación de usuario/contraseña"
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Cuenta bloqueada. ¡Por favor contacte a su administrador!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4876,6 +4863,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4891,6 +4879,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4905,6 +4894,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4915,6 +4905,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4926,18 +4917,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4952,6 +4946,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/es_VE/fusiondirectory.po b/locale/es_VE/fusiondirectory.po
index fe2c47729..6a0b96dc7 100644
--- a/locale/es_VE/fusiondirectory.po
+++ b/locale/es_VE/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Spanish (Venezuela) (https://www.transifex.com/fusiondirectory/teams/12202/es_VE/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Error"
@@ -141,61 +141,61 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Archivo"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Linea"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Error PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "clase"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "función"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "estático"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "método"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Traza"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumentos"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "¡La generación de esta página ha provocado errores en el interprete PHP!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Enviar informe de errores al equipo de FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Enviar informe de errores"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Modificar información"
 
@@ -493,7 +493,7 @@ msgstr "El servidor LDAP devolvio: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -1306,7 +1306,7 @@ msgstr "Por favor seleccione las entradas que desee"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nombre"
@@ -1662,7 +1662,7 @@ msgid "days"
 msgstr "días"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2120,12 +2120,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3479,102 +3479,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importar"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4127,26 +4143,12 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory requiere esta extensión para manejar capturas."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"registr_globals es un mecanismo de PHP para registrar todas las variables "
-"globales de tal manera que sean accesible desde scripts sin que cambien su "
-"ámbito. Esto puede ser un problema de seguridad."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr "Busque 'register_globals' en su php.ini y modifíquelo por 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP usa este valor en el recolector de basura para eliminar las sesiones "
 "antiguas."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4154,19 +4156,19 @@ msgstr ""
 "Ajustando este valor a un día impedirá la perdida de sesiones y cookies "
 "antes de que realmente se desconecte por tiempo."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 "Busque 'sessio.gc_maxlifetime' en su php.ini y modifíquelo a 86400 o mayor."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Off"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4174,22 +4176,22 @@ msgstr ""
 "Para poder usar FusionDirectory sin problemas, la opción session.auto_start "
 "debe estar configurada en 'Off' en su php.ini."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr "Busque 'session.auto_start' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4197,22 +4199,22 @@ msgstr ""
 "Esta opción está relacionada con el manejo de salida de PHP. Desactive esta "
 "opción poniéndola en off para mejorar el rendimiento."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Busque 'implicit_flush' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "El tiempo de ejecución debe ser de al menos 30 segundos."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 "Busque 'max_execution_time' en su php.ini y modifíquelo a '30' o mayor."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4221,22 +4223,10 @@ msgstr ""
 "'off'. PHP no debería enviar ningún tipo de información sobre el servidor "
 "que esta ejecutando la aplicación."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Busque 'expose_php' en su php.ini y modifíquelo a 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Aumente el rendimiento de su servidor modificando 'magic_quotes_gpc' a 'off'"
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrar"
@@ -4699,27 +4689,27 @@ msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 "Cuenta bloqueada. ¡Por favor contacte con su administrador de sistemas!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4774,6 +4764,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4789,6 +4780,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4803,6 +4795,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4813,6 +4806,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4824,18 +4818,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4850,6 +4847,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/fa_IR/fusiondirectory.po b/locale/fa_IR/fusiondirectory.po
index 24d2ab92e..c816ed20e 100644
--- a/locale/fa_IR/fusiondirectory.po
+++ b/locale/fa_IR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2017\n"
 "Language-Team: Persian (Iran) (https://www.transifex.com/fusiondirectory/teams/12202/fa_IR/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "خطا"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4617,27 +4612,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/fi_FI/fusiondirectory.po b/locale/fi_FI/fusiondirectory.po
index c02fa5bc8..0f1a5db0d 100644
--- a/locale/fi_FI/fusiondirectory.po
+++ b/locale/fi_FI/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Finnish (Finland) (https://www.transifex.com/fusiondirectory/teams/12202/fi_FI/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Virhe"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tyyppi"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varoitus"
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nimi"
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Alkupäivämäärä"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Loppupäivämäärä"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/fr/fusiondirectory.po b/locale/fr/fusiondirectory.po
index 304f13d50..ecde72526 100644
--- a/locale/fr/fusiondirectory.po
+++ b/locale/fr/fusiondirectory.po
@@ -6,22 +6,22 @@
 # Translators:
 # MCMic, 2018
 # fusiondirectory <contact@fusiondirectory.org>, 2021
-# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021
+# Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2022
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2021\n"
+"Last-Translator: Benoit Mortier <benoit.mortier@fusiondirectory.org>, 2022\n"
 "Language-Team: French (https://www.transifex.com/fusiondirectory/teams/12202/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -41,8 +41,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erreur"
@@ -151,61 +151,61 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Fichier"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Ligne"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Erreur PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "classe"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "fonction"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statique"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "méthode"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Trace"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Type"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Arguments"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "La génération de cette page a causé des erreurs dans l'interpréteur PHP !"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Envoyer le rapport de bugs à l'équipe FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Envoyer le rapport de bug"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Afficher/Cacher l'information"
 
@@ -510,7 +510,7 @@ msgstr "Le serveur LDAP a retourné : %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avertissement"
@@ -1345,7 +1345,7 @@ msgstr "Veuillez sélectionner les entrées désirées"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nom"
@@ -1715,7 +1715,7 @@ msgid "days"
 msgstr "jours"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr "Ajouter (dialogue)"
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2191,12 +2191,12 @@ msgstr "Action déclenchée"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
-msgstr "Action lancée sans erreur (Le résultat était « %s »)"
+msgid "Action called without error(results were \"%s\")"
+msgstr "Action appelée sans erreur (résultat : \"%s\")"
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr "Action appelée sans erreur (résultat : \"%s\")"
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3642,81 +3642,81 @@ msgstr ""
 "Les statistiques pour le type «%s» n'ont pas pu être calculées en raison de "
 "l'erreur suivante : %s"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr "Abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr "Information d'abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr "Informations sur votre abonnement FusionDirectory"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr "Texte d'information pour l'abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr "Nom de l'abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Id"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr "Identifiant d'abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Type d'inscription"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr "Contrat"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr "Référence du contrat"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Date de début"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr "Date de début de cet abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Date de fin"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr "Date de fin de cet abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr "Importez votre abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr "Texte d'information pour l'abonnement expiré"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr "Importer l'abonnement"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importer"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
@@ -3726,7 +3726,7 @@ msgstr ""
 "FusionDirectory. Veuillez visiter %s pour une liste des options disponibles."
 " "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
@@ -3735,14 +3735,30 @@ msgstr ""
 "Votre abonnement a expiré pour cette instance de FusionDirectory.\n"
 "Veuillez visiter %s pour le renouveler."
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr "Erreur d'importation"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr "Pas de données. Avez-vous oublié de télécharger un fichier ?"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr "Échec de l'analyse du fichier importé"
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr "Section \"%s\" manquante dans le fichier importé"
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr "Attribut \"%s\" manquant dans le fichier importé"
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Éditer les groupes et rôles de l’utilisateur"
@@ -4324,26 +4340,10 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory a besoin de ce module pour gérer les instantanés."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals est un mécanisme PHP pour enregistrer toutes les variables "
-"globales afin que les scripts puissent y accéder sans changer la porté des "
-"variables. Cela peut constituer un risque de sécurité."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Cherchez l'option 'register_globals' dans votre php.ini et mettez la à "
-"'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr "PHP utilise cette variable pour effacer des anciennes sessions."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4351,7 +4351,7 @@ msgstr ""
 "Mettre cette valeur à 1 jour permet d'éviter de perde les cookies et les "
 "sessions avant qu'elles ne soient réellement expirées."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4359,12 +4359,12 @@ msgstr ""
 "Cherchez 'session.gc_maxlifetime' dans votre php.ini et mettez le à 86400 ou"
 " plus."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Éteint"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4372,13 +4372,13 @@ msgstr ""
 "Pour pouvoir utiliser FusionDirectory sans problèmes, la variable "
 "session.auto_start doit être à 'Off' dans votre php.ini."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Cherchez la variable 'session.auto_start' dans votre php.ini et mettez la à "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4387,14 +4387,14 @@ msgstr ""
 "causera des erreurs imprévisibles, qui ne seront pas reproductibles ! "
 "Augmentez la mémoire pour les installations plus complexes."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Cherchez 'memory_limit' dans votre fichier php.ini votre et mettez le à "
 "'128M' ou plus."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4402,15 +4402,15 @@ msgstr ""
 "Cette option défini la gestion des sorties, mettez cette option à 'Off' pour"
 " améliorer les performances."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Cherchez 'implicit_flush' dans votre php.ini et mettez le à 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Le temps d'exécution doit être au moins de 30 secondes."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4418,7 +4418,7 @@ msgstr ""
 "Chercher l'option 'max_execution_time' dans votre php.ini et mettez la à "
 "'30' ou plus."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4426,24 +4426,10 @@ msgstr ""
 "Augmentez la sécurité de votre serveur en mettant l'option expose_php à "
 "'Off'. PHP n'enverra pas d'information à propos du serveur."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Cherchez 'expose_php' dans votre php.ini et mettez le à 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Améliorez la performance de votre serveur en mettant magic_quotes_gpc à "
-"'off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Cherchez l'option 'zend.ze1_compatibility_mode' dans votre hp.ini et mettez "
-"la à 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrer"
@@ -4736,8 +4722,8 @@ msgstr "Smarty"
 #, php-format
 msgid "Directory '%s' specified as compile directory is not accessible!"
 msgstr ""
-"Le répertoire '%s' spécifié comme répertoire de compilation est inaccessible"
-" !"
+"Le répertoire '%s' spécifié comme répertoire de compilation est "
+"inaccessible !"
 
 #: html/class_passwordRecovery.inc:119
 #, php-format
@@ -4891,8 +4877,8 @@ msgstr "Erreur Smarty"
 #, php-format
 msgid "Directory \"%s\" specified as compile directory is not accessible!"
 msgstr ""
-"Le répertoire «%s» spécifié comme répertoire de compilation est inaccessible"
-" !"
+"Le répertoire «%s» spécifié comme répertoire de compilation est "
+"inaccessible !"
 
 #: html/index.php:216
 msgid "Your FusionDirectory session has expired!"
@@ -4931,28 +4917,28 @@ msgstr "Veuillez vérifier le nom d'utilisateur et le mot de passe."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Compte verrouillé. Veuillez contacter votre administrateur système !"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr "Aucune valeur trouvée dans l’entête HTTP «%s»"
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 "L'utilisateur «%s» mentionné dans l’entête n'existe pas dans l'annuaire LDAP"
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr "La connexion avec l'utilisateur «%s» a provoqué l'erreur : %s"
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "L'utilisateur CAS «%s» n'existe pas dans l'annuaire LDAP"
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -5012,6 +4998,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] "Il y a un compte expiré"
 msgstr[1] "Il y a %1 comptes expirés"
+msgstr[2] "Il y a %1 comptes expirés"
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -5027,6 +5014,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] "Il y a un compte qui expire dans les %1 prochain jours"
 msgstr[1] "Il y a %2 comptes qui expirent dans les %1 prochains jours"
+msgstr[2] "Il y a %2 comptes qui expirent dans les %1 prochains jours"
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -5041,6 +5029,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] "Il y a 1 groupe :"
 msgstr[1] "Il y a %1 groupes :"
+msgstr[2] "Il y a %1 groupes :"
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -5051,6 +5040,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] "L'un deux est un groupe %1"
 msgstr[1] "%2 sont des groupes %1"
+msgstr[2] "%2 sont des groupes %1"
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -5062,18 +5052,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] "Il y a 1 utilisateur :"
 msgstr[1] "Il y a %1 utilisateurs :"
+msgstr[2] "Il y a %1 utilisateurs :"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] "Un d'entre eux utilise la méthode %1"
 msgstr[1] "%2 d’entre eux utilisent la méthode %1"
+msgstr[2] "%2 d’entre eux utilisent la méthode %1"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] "Un est verrouille"
 msgstr[1] "%1 d’entre eux sont verrouillés"
+msgstr[2] "%1 d’entre eux sont verrouillés"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -5088,6 +5081,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] "L'un d'entre eux a un compte %1"
 msgstr[1] "%2 d’entre eux ont un compte %1"
+msgstr[2] "%2 d’entre eux ont un compte %1"
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/hu_HU/fusiondirectory.po b/locale/hu_HU/fusiondirectory.po
index 60e8cf3f3..51d5d64d1 100644
--- a/locale/hu_HU/fusiondirectory.po
+++ b/locale/hu_HU/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2016\n"
 "Language-Team: Hungarian (Hungary) (https://www.transifex.com/fusiondirectory/teams/12202/hu_HU/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Név"
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/id/fusiondirectory.po b/locale/id/fusiondirectory.po
index c8d949ebc..fa6be1779 100644
--- a/locale/id/fusiondirectory.po
+++ b/locale/id/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Indonesian (https://www.transifex.com/fusiondirectory/teams/12202/id/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/it_IT/fusiondirectory.po b/locale/it_IT/fusiondirectory.po
index 6e14c0a2b..652310562 100644
--- a/locale/it_IT/fusiondirectory.po
+++ b/locale/it_IT/fusiondirectory.po
@@ -4,7 +4,7 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# Paola Penati <paola.penati@fusiondirectory.org>, 2019
+# Paola Penati <paola.penati@opensides.be>, 2019
 # fusiondirectory <contact@fusiondirectory.org>, 2021
 # Paola <paola.penati@fusiondirectory.org>, 2021
 # 
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Paola <paola.penati@fusiondirectory.org>, 2021\n"
 "Language-Team: Italian (Italy) (https://www.transifex.com/fusiondirectory/teams/12202/it_IT/)\n"
@@ -21,7 +21,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -41,8 +41,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Errore"
@@ -149,63 +149,63 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "File"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Linea"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Errore PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "classe"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "funzione"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statico"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "metodo"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Traccia"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argomenti"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "La creazione di questa pagina, secondo l'interprete PHP, ha generato degli "
 "errori ! "
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 "Invia i tuoi commenti a proposito di un bug al Team di FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Invia un rapporto di bug"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Mostra/Nascondi l'informazione"
 
@@ -510,7 +510,7 @@ msgstr "Il server LDAP ha risposto: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Avvertimento"
@@ -1341,7 +1341,7 @@ msgstr "Seleziona le entries desiderate"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1708,8 +1708,8 @@ msgid "days"
 msgstr "giorni"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
-msgstr "Aggiungi (finestra di dialogo)"
+msgid "Add(dialog)"
+msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
 #, php-format
@@ -2185,13 +2185,13 @@ msgstr "Azione innescata"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
-msgstr "Azione chiamata senza errori (i risultati sono stati \"%s\")"
+msgid "Action called without error(results were \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
-msgstr "Azione chiamata senza errori (il risultato è stato \"%s\")"
+msgid "Action called without error(result was \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
 #: plugins/admin/groups/class_roleGeneric.inc:55
@@ -3632,81 +3632,81 @@ msgstr ""
 "Le statistiche per il tipo \"%s\" non possono essere calcolate a causa del "
 "seguente errore: %s"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr "Abbonamento"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr "Informazioni sull'abbonamento"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr "Informazioni sul tuo abbonamento FusionDirectory "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr "Testo informativo per l'abbonamento"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr "Nome dell'abbonamento"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Id"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr "ID abbonamento "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Tipo di sottoscrizione"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr "Contratto"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr "Riferimento del contratto "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Data d'inizio"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr "Data di inizio di questo abbonamento"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Data di fine"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr "Data di fine di questo abbonamento "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr "Importa il tuo abbonamento "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr "Testo informativo per abbonamento scaduto "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr "Importa abbonamento "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importa"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
@@ -3715,7 +3715,7 @@ msgstr ""
 "Non disponi di un abbonamento valido per questa istanza di FusionDirectory. "
 "Visitare %s per un elenco delle opzioni disponibili. "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
@@ -3724,14 +3724,30 @@ msgstr ""
 "L'abbonamento è scaduto per questa istanza di FusionDirectory. Si prega di "
 "visitare %s per rinnovarlo. "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr "Nessun dato. Hai dimenticato di caricare un file? "
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr "Impossibile analizzare il file importato "
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr "Manca la sezione \"%s\" nel file importato "
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr "Attributo \"%s\"mancante nel file importato "
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Modifica gruppi e ruoli degli utenti"
@@ -4313,25 +4329,10 @@ msgstr ""
 " copie istantanee)."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals è un meccanismo PHP che permette di registrare tutte le "
-"variabili globali affinchè gli scripts possano accedervi senza cambiare la "
-"portata delle variabili. Questo puó generare un rischio per la sicurezza."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Cerca l'opzione register_globals nel tuo file php.ini e impostalo su 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr "PHP utilizza questa variabile per cancellare delle vecchie sessioni."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4339,7 +4340,7 @@ msgstr ""
 "Impostare questa variabile a \"1 giorno\" eviterà di perdere i coockies e le"
 " sessioni prima che siano realmente scadute."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4347,12 +4348,12 @@ msgstr ""
 "Cerca la variabile 'session.gc_maxlifetime' nel tuo file php.ini e impostala"
 " a 86400 o un valore più grande."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Off"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4360,13 +4361,13 @@ msgstr ""
 "Per non avere problemi nell'uso di FusionDirectory, è necessario impostare "
 "l'opzione 'session.auto_start' su 'Off' nel file php.ini."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Cerca la variabile 'session.auto_start' nel file php.ini e impostala su "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4375,14 +4376,14 @@ msgstr ""
 "memoria causeranno degli errori imprevisti che non saranno riproducibili ! "
 "Aumenta la memoria per delle installazioni più complesse."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Cerca la variabile 'memory_limit' nel file php.ini e impostala su '128MB' o "
 "un valore più grande."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4390,16 +4391,16 @@ msgstr ""
 "Questa opzione influenza la gestione delle uscite. Per aumentare le "
 "prestazioni, impostala su 'Off'."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Cerca la variabile 'implicit_flush' nel file php.ini e impostala su 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Il tempo di esecuzione deve essere di almeno 30 secondi."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4407,7 +4408,7 @@ msgstr ""
 "Cerca la variabile 'max_execution_time' nel file php.ini e impostala su '30'"
 " o un valore più grande."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4416,25 +4417,11 @@ msgstr ""
 "'Off'. PHP non trasmetterà alcuna informazione a proposito del server che "
 "stai configurando."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 "Cerca la variabile 'expose_php' nel file php.ini e impostala su 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Aumenta le prestazioni del tuo server impostando la variabile "
-"'magic_quotes_gpc' su 'Off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Cerca la variabile 'zend.ze1_compatibility_mode' nel file php.ini e "
-"impostala su 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migra"
@@ -4918,27 +4905,27 @@ msgstr "Verifica il nome utente e la password."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Conto bloccato. Contatta l'amministratore del sistema!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr "Nessun valore trovato nell'header HTTP \"%s\""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr "L'utente header \"%s\"  non è stato trovato nel LDAP"
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr "L'accesso con utente \"%s\" ha innescato l'errore: %s"
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "Impossibile trovare l'utente \"%s\" CAS nell'annuario LDAP"
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4997,6 +4984,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] "C'é un account scaduto"
 msgstr[1] "Ci sono %1 account scaduti"
+msgstr[2] "Ci sono %1 account scaduti"
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -5012,6 +5000,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] "C'é un account in scadenza nei prossimi %1 giorni"
 msgstr[1] "Ci sono %2 accounts in scadenza nei prossimi %1 giorni"
+msgstr[2] "Ci sono %2 accounts in scadenza nei prossimi %1 giorni"
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -5026,6 +5015,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] "C'é 1 gruppo:"
 msgstr[1] "Vi sono %1 gruppi:"
+msgstr[2] "Vi sono %1 gruppi:"
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -5036,6 +5026,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] "Uno di essi é un gruppo %1"
 msgstr[1] "%2 sono %1 gruppi"
+msgstr[2] "%2 sono %1 gruppi"
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -5047,18 +5038,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] "C'é 1 utente:"
 msgstr[1] "Ci sono %1 utenti:"
+msgstr[2] "Ci sono %1 utenti:"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] "Uno di essi usa %1  metodo"
 msgstr[1] "%2 di essi usano %1 metodo"
+msgstr[2] "%2 di essi usano %1 metodo"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] "Uno di essi é bloccato"
 msgstr[1] "%1 di essi sono bloccati"
+msgstr[2] "%1 di essi sono bloccati"
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -5073,6 +5067,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] "Uno di essi ha %1 account"
 msgstr[1] "%2 di essi hanno un %1 account"
+msgstr[2] "%2 di essi hanno un %1 account"
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/ja/fusiondirectory.po b/locale/ja/fusiondirectory.po
index 9845ac36f..9b8164ce1 100644
--- a/locale/ja/fusiondirectory.po
+++ b/locale/ja/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Japanese (https://www.transifex.com/fusiondirectory/teams/12202/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/ko/fusiondirectory.po b/locale/ko/fusiondirectory.po
index 29edaf493..2f2c70d18 100644
--- a/locale/ko/fusiondirectory.po
+++ b/locale/ko/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: Choi Chris <chulwon.choi@gmail.com>, 2021\n"
 "Language-Team: Korean (https://www.transifex.com/fusiondirectory/teams/12202/ko/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "오류"
@@ -141,60 +141,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "파일"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "라인"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "PHP 오류"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "클래스"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "함수"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "정적"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "메소드"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Trace"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "타입"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "인수"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "이 페이지를 생성하면 PHP 인터프리터에서 오류가 발생됩니다!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "FusionDirectory 팀에 버그 보고서 보내기"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "버그 리포트 보내기"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "정보 토글"
 
@@ -481,7 +481,7 @@ msgstr "LDAP 서버에서 반환 : %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "ã…—"
@@ -1277,7 +1277,7 @@ msgstr "원하는 항목을 선택하십시오."
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "명칭"
@@ -1635,8 +1635,8 @@ msgid "days"
 msgstr "일"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
-msgstr "추가(대화창)"
+msgid "Add(dialog)"
+msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
 #, php-format
@@ -2093,13 +2093,13 @@ msgstr "실행 된 작업"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
-msgstr "오류없이 호출된 작업 (결과는 \"%s\")"
+msgid "Action called without error(results were \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
-msgstr "오류없이 호출된 작업 (결과는 \"%s\")"
+msgid "Action called without error(result was \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
 #: plugins/admin/groups/class_roleGeneric.inc:55
@@ -3448,102 +3448,118 @@ msgid ""
 "error: %s"
 msgstr "다음 오류로 인해 유형 \"%s\"의 통계를 계산할 수 없습니다 : %s"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "아이디"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "가입 유형"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "시작일자"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "종료일자"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "가져오기"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4086,98 +4102,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "끄"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4622,27 +4617,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr "계정이 잠겼습니다. 시스템 관리자에게 문의하십시오!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr "HTTP 헤더 \"%s\"에 값이 없습니다."
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr "헤더 사용자 \"%s\"를 LDAP에서 찾을 수 없습니다."
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr "사용자 \"%s\"로 로그인 시 오류가 발생했습니다: %s"
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "LDAP에서 CAS 사용자 \"%s\"를 찾을 수 없습니다."
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/lv/fusiondirectory.po b/locale/lv/fusiondirectory.po
index c0c28243c..dbc5edf16 100644
--- a/locale/lv/fusiondirectory.po
+++ b/locale/lv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Latvian (https://www.transifex.com/fusiondirectory/teams/12202/lv/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Kļūda"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Veids"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Brīdinājums"
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Vārds "
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/nb/fusiondirectory.po b/locale/nb/fusiondirectory.po
index 61556733a..1125cc772 100644
--- a/locale/nb/fusiondirectory.po
+++ b/locale/nb/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Norwegian Bokmål (https://www.transifex.com/fusiondirectory/teams/12202/nb/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Feil"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Navn"
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/nl/fusiondirectory.po b/locale/nl/fusiondirectory.po
index 14c12caf6..700d0604a 100644
--- a/locale/nl/fusiondirectory.po
+++ b/locale/nl/fusiondirectory.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Dutch (https://www.transifex.com/fusiondirectory/teams/12202/nl/)\n"
@@ -41,8 +41,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fout"
@@ -147,61 +147,61 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Bestand"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Regel"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "PHP fout"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "klasse"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "functie"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statisch"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "methode"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Trace"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Type"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumenten"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "Er is minimaal één PHP fout opgetreden bij het genereren van deze pagina!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Stuur probleemrapport naar het FusionDirectory Team"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Stuur probleemrapport"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Informatie weergeven/verbergen"
 
@@ -507,7 +507,7 @@ msgstr "LDAP server weergegeven: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Waarschuwing"
@@ -1334,7 +1334,7 @@ msgstr "Gelieve de items te selecteren"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Naam"
@@ -1698,8 +1698,8 @@ msgid "days"
 msgstr "dagen"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
-msgstr "Toevoegen (dialoog)"
+msgid "Add(dialog)"
+msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
 #, php-format
@@ -2168,13 +2168,13 @@ msgstr "Actie gestart"
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
-msgstr "Actie opgevraagd zonder fout (resultaat waren \"%s\")"
+msgid "Action called without error(results were \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
-msgstr "Actie opgevraagd zonder fout (resultaat was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
+msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
 #: plugins/admin/groups/class_roleGeneric.inc:55
@@ -3599,102 +3599,118 @@ msgstr ""
 "Statistieken voor type \"%s\" kunnen niet verwerkt worden vanwege de "
 "volgende fout: %s"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Id"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Subscription type"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Startdatum"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Einddatum"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importeren"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr "Bewerk gebruikers groepen en rollen"
@@ -4268,26 +4284,12 @@ msgstr ""
 "FusionDirectory heeft deze extensie nodig om snapshots te kunnen behandelen."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals is een PHP mechanisme om alle globale variabelen te "
-"registreren en toegankelijk te maken vanuit scripts zonder de scope te "
-"moeten aanpassen. Dit kan een veiligheidsrisico vormen. "
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr "Zoek voor 'register_globals' in je php.ini en schakel het 'uit'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP gebruikt deze waarde voor de vuilbak verzamelaar en om oude sessies te "
 "verwijderen."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4295,7 +4297,7 @@ msgstr ""
 "Deze waarde naar 1 dag plaatsen kan het verliezen van de sessies en "
 "cookiesdoor timeout voorkomen."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4303,12 +4305,12 @@ msgstr ""
 "Zoek voor 'session.gc_maxlifetime' in je php.ini en plaats het naar 86400 of"
 " hoger."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Uit"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4316,12 +4318,12 @@ msgstr ""
 "Om FusionDirectory zonder problemen te kunnen gebruiken, de moet je de "
 "session.auto_start optie in je php.ini naar 'Off' wijzigen."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Zoek naar 'session.auto_start' in je php.ini en zet de waarde naar 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4330,13 +4332,13 @@ msgstr ""
 "limiet plaatsen kan errors veroorzaken die niet hergeproduceerd kunnen "
 "worden! Vergroot deze waarde voor grotere installaties."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Zoek voor 'memory_limit' in je php.ini en plaats het naar '128M' of hoger."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4344,22 +4346,22 @@ msgstr ""
 "Deze optie beinvloed de PHP output handling. Zet deze optie uit, om "
 "performantie te verhogen."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Zoek naar 'implicit_flush' in je php.ini and zet de waarde 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "De uitvoertijd zou minstens 30 seconden moeten zijn."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 "Zoek naar 'max_execution_time' in je php.ini en zet het naar '30' of hoger."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4368,24 +4370,10 @@ msgstr ""
 "plaatsen. PHP zal geen informatie over de server die je draait verzenden als"
 " je dit doet."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Zoek naar 'expose_php' in je php.ini en zet het naar 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Verhoog je server performantie door de optie magic_quotes_gpc naar 'off' te "
-"plaatsen."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Zoek naar 'zend.ze1_compatibility_mode' in je php.ini en plaats het naar "
-"'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migratie"
@@ -4866,27 +4854,27 @@ msgstr "Controleer a.u.b. de gebruikersnaam/paswoord combinatie."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Accound geblokkeerd. Contacteer a.u.b. je systeembeheerder!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr "Geen waarde gevonden in HTTP header \"%s\""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr "Header gebruiker \"%s\" kan niet gevonden worden in de LDAP"
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr "Login met gebruiker \"%s\" geactiveerde fout: %s"
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "CAS gebruiker \"%s\" kon niet gevonden worden in de LDAP"
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/pl/fusiondirectory.po b/locale/pl/fusiondirectory.po
index b15d5546d..b1cfc7695 100644
--- a/locale/pl/fusiondirectory.po
+++ b/locale/pl/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Polish (https://www.transifex.com/fusiondirectory/teams/12202/pl/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Błąd"
@@ -139,60 +139,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Plik"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Linia"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "błąd PHP:"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "klasa"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "funkcja"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statyczna"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "metoda"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Åšledzenie"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Typ"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argumenty"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "Tworzenie tej strony spowodowało, że interpreter PHP zwrócił błędy!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Przełącz informacje"
 
@@ -481,7 +481,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Ostrzeżenie"
@@ -1275,7 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "ImiÄ™"
@@ -1631,7 +1631,7 @@ msgid "days"
 msgstr "dni"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2089,12 +2089,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3444,102 +3444,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Import"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4082,98 +4098,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Wyłączone"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4618,27 +4613,27 @@ msgstr "Proszę sprawdzić kombinację login/hasło."
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/pt/fusiondirectory.po b/locale/pt/fusiondirectory.po
index c95e724f1..edca28e50 100644
--- a/locale/pt/fusiondirectory.po
+++ b/locale/pt/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Portuguese (https://www.transifex.com/fusiondirectory/teams/12202/pt/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erro"
@@ -141,60 +141,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -481,7 +481,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Atenção"
@@ -1275,7 +1275,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1631,7 +1631,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2090,12 +2090,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3445,102 +3445,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4083,98 +4099,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4619,27 +4614,27 @@ msgstr "Por favor, verifique a combinação usuário / senha"
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4694,6 +4689,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4709,6 +4705,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4723,6 +4720,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4733,6 +4731,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4744,18 +4743,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4770,6 +4772,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/pt_BR/fusiondirectory.po b/locale/pt_BR/fusiondirectory.po
index 268b383b2..0d039d796 100644
--- a/locale/pt_BR/fusiondirectory.po
+++ b/locale/pt_BR/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/fusiondirectory/teams/12202/pt_BR/)\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: include/class_msg_dialog.inc:136 include/class_msg_dialog.inc:172
 #: include/class_config.inc:354 include/class_listing.inc:530
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Erro"
@@ -139,60 +139,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Arquivo"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Tipo"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Aviso"
@@ -1277,7 +1277,7 @@ msgstr "Por favor, selecione as entradas desejadas"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Nome"
@@ -1633,7 +1633,7 @@ msgid "days"
 msgstr "dias"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2091,12 +2091,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3460,102 +3460,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr "Tipo de inscrição"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Importar"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4108,31 +4124,16 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory requer esta extensão para lidar com snapshots."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals é um mecanismo do PHP utilizado para registrar todas as "
-"variáveis globais para serem acessíveis por meio de scripts sem modificar o "
-"escopo. Isto pode ser um risco à segurança."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Procurar por 'register_globals' em seu php.ini e marcado como 'Desativado'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr "PHP usa este valor para deletar sessões antigas do garbage collector."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4140,51 +4141,51 @@ msgstr ""
 "Procurar por 'session.gc_maxlifetime' no seu php.ini e configurá-lo para "
 "86400 ou maior."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Desativar"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Pesquisar por 'session.auto_start' no seu php.ini e configurá-lo como "
 "'Desligado'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Procurar por 'implicit_flush' no seu php.ini e configurá-lo como "
 "'Desligado'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "O tempo de Execução deve ser no mínimo 30 segundos."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4192,31 +4193,17 @@ msgstr ""
 "Pesquisa por 'max_execution_time' no seu php.ini e defina-o como '30' ou "
 "superior."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 "Pesquisar por 'expose_php' no seu php.ini e defina-o como 'Desligado'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Aumente o desempenho do seu servidor definindo magic_quotes_gpc para "
-"'desligado'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Pesquisar por 'zend.ze1_compatibility_mode' no seu php.ini e defina-o como "
-"'Desligado'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4673,27 +4660,27 @@ msgstr "Por favor, verifique o usuário ou senha."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Conta bloqueada. Entre em contato com o administrador do sistema!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4748,6 +4735,7 @@ msgid "There is one expired account"
 msgid_plural "There are %1 expired accounts"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:5
 msgid "There is no expired account"
@@ -4763,6 +4751,7 @@ msgid "There is one account expiring in the next %1 days"
 msgid_plural "There are %2 accounts expiring in the next %1 days"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_accounts.tpl.c:17
 msgid "There is no account expiring in the next %1 days"
@@ -4777,6 +4766,7 @@ msgid "There is 1 group:"
 msgid_plural "There are %1 groups:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:5
 msgid "There are no groups"
@@ -4787,6 +4777,7 @@ msgid "One of them is a %1 group"
 msgid_plural "%2 are %1 groups"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/groups_stats.tpl.c:11
 msgid "There is no %1 group"
@@ -4798,18 +4789,21 @@ msgid "There is 1 user:"
 msgid_plural "There are %1 users:"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:5
 msgid "One of them use %1 method"
 msgid_plural "%2 of them use %1 method"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:8
 msgid "One of them is locked"
 msgid_plural "%1 of them are locked"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/pwd_stats.tpl.c:11
 msgid "None of them is locked"
@@ -4824,6 +4818,7 @@ msgid "One of them have a %1 account"
 msgid_plural "%2 of them have a %1 account"
 msgstr[0] ""
 msgstr[1] ""
+msgstr[2] ""
 
 #: plugins/addons/dashboard/users_stats.tpl.c:11
 msgid "None of them have a %1 account"
diff --git a/locale/ru/fusiondirectory.po b/locale/ru/fusiondirectory.po
index 1744da7f9..1a1263c15 100644
--- a/locale/ru/fusiondirectory.po
+++ b/locale/ru/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Russian (https://www.transifex.com/fusiondirectory/teams/12202/ru/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Ошибка"
@@ -141,61 +141,61 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Файл"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Строка"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Ошибка PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Тип"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Аргументы"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 "Создание этой страницы помогла PHP интерпретатору выявить некоторые ошибки!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Послать отчет об ошибке команде FusionDirectory"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Отправить отчет об ошибке"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -490,7 +490,7 @@ msgstr "LDAP сервер вернул: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Предупреждение"
@@ -1303,7 +1303,7 @@ msgstr "Пожалуйста выберете нужные записи"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Название"
@@ -1659,7 +1659,7 @@ msgid "days"
 msgstr "дни"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2121,12 +2121,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3513,102 +3513,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr "Ид"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr "Дата начала"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr "Дата окончания"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "Импортировать"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4157,30 +4173,17 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr "FusionDirectory требуется расширение для обработки снапшотов."
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals механизм PHP, предоставляющий доступ ко всем глобальным "
-"переменным из скриптов без изменения области видимости. Это не безопасно."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr "Найдите 'register_globals' в вашем php.ini и переключите в 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "Это значение используется PHP сборщиком мусора, чтобы удалять старые сессии."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4188,12 +4191,12 @@ msgstr ""
 "Найдите 'session.gc_maxlifetime' в вашем php.ini и установите в 86400 или "
 "больше."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Выкл"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4201,12 +4204,12 @@ msgstr ""
 "Чтобы во время использования FusionDirectory не возникло ни каких проблем, "
 "опция 'session.auto_start' должна быть установлена в 'Off' в вашем php.ini."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Найдите 'session.auto_start' в вашем php.ini и установите его в 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4215,27 +4218,27 @@ msgstr ""
 "может привести к ошибкам, которые не воспроизводятся! Увеличьте его в "
 "большинстве случаев."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Найдите 'memory_limit' в вашем php.ini и установите его в '128M' или больше."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Найдите 'implicit_flush' в вашем php.ini и установите его в 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Время исполнения, должно быть не менее 30 секунд."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4243,7 +4246,7 @@ msgstr ""
 "Найдите 'max_execution_time' в вашем php.ini и установите его в значение "
 "'30' или больше."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4251,23 +4254,10 @@ msgstr ""
 "Повысить безопасность сервера установив опцию expose_php в 'off'. PHP не "
 "будет отправлять ни какую информацию о сервере, запускающему, в этом случае."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Найдите 'expose_php' в вашем php.ini и установите в 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Повысите производительность вашего сервер установив setting magic_quotes_gpc"
-" в 'off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Найдите 'zend.ze1_compatibility_mode' в вашем php.ini и установите в 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Перемещение"
@@ -4734,27 +4724,27 @@ msgstr ""
 "Учетная запись заблокирована. Пожалуйста свяжитесь с вашим системным "
 "администратором."
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr "CAS пользователь \"%s\" не может быть найден в LDAP"
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/ru@petr1708/fusiondirectory.po b/locale/ru@petr1708/fusiondirectory.po
index 2db8dcfe9..b80791e9e 100644
--- a/locale/ru@petr1708/fusiondirectory.po
+++ b/locale/ru@petr1708/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Russian Petrine orthography (https://www.transifex.com/fusiondirectory/teams/12202/ru@petr1708/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/sv/fusiondirectory.po b/locale/sv/fusiondirectory.po
index f382863b9..8cd1d38af 100644
--- a/locale/sv/fusiondirectory.po
+++ b/locale/sv/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Swedish (https://www.transifex.com/fusiondirectory/teams/12202/sv/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Fel"
@@ -140,60 +140,60 @@ msgstr "PDF"
 msgid "CSV"
 msgstr "CSV"
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "Fil"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Rad"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "PHP-fel"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "klass"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "funktion"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "statisk"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "metod"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Spårning"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Typ"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Argument"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "Generering av denna sida gjorde att PHP-tolken observerade några fel!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr "Skicka buggrapport till FusionDirectory-teamet"
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Skicka buggrapport"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Växla informationsläge"
 
@@ -488,7 +488,7 @@ msgstr "LDAP-server returnerade %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Varning"
@@ -1303,7 +1303,7 @@ msgstr "Välj önskade poster"
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Namn"
@@ -1659,7 +1659,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2117,12 +2117,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3505,102 +3505,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4156,27 +4172,12 @@ msgstr ""
 "FusionDirectory kräver det här tillägget för att hantera ögonblicksbilder"
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"register_globals är en PHP-mekanism för att registrera alla globala "
-"variabler så de är tillgängliga från skript utan att ändra scope. Detta kan "
-"vara en säkerhetsrisk."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Sök efter 'register_globals' i din php.ini och ställ in den som 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP använder det här värdet för garage collection för att ta bort gamla "
 "sessioner"
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4184,7 +4185,7 @@ msgstr ""
 "Att ställa in det här värdet till en dag kommer att förhindra förlust av "
 "sessioner och cookies innan de verkligen når time out."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4192,12 +4193,12 @@ msgstr ""
 "Sök efter 'session.gc_maxlifetime' i din php.ini och sätt den till 86400 "
 "eller högre."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Av"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
@@ -4205,11 +4206,11 @@ msgstr ""
 "För att använda FusionDirectory utan problem, bör session.auto_start i din "
 "php.ini sättas till 'Off'."
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr "Sök efter 'session.auto_start' i din php.ini och sätt den till 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
@@ -4218,14 +4219,14 @@ msgstr ""
 "gräns kan orsaka fel som inte är reproducerbara. Öka värdet för större "
 "installationer."
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 "Sök efter 'memory_limit' i din php.ini och ställ in den på '128M' eller "
 "högre."
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4233,22 +4234,22 @@ msgstr ""
 "Den här inställningen påverkar PHPs utdata-hantering. Stäng av den för att "
 "öka prestanda."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr "Sök efter 'implicit_flush' i din php.ini och sätt den till 'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Exekveringstiden bör vara åtminstone 30 sekunder."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 "Sök efter 'max_execution_time' i php.ini och sätt den till '30' eller högre."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4256,21 +4257,10 @@ msgstr ""
 "Öka serversäkerheten genom att sätta expose_php till 'off'. PHP kommer i så "
 "fall inte sända någon information om servern du kör på."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr "Sök efter 'expose_php' i din php.ini och sätt den till 'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr "Öka din serverprestanda genom att sätta magic_quotes_gpc till 'off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Sök efter 'zend.ze1_compatibility_mode' i php.ini och sätt den till 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Migrera"
@@ -4736,27 +4726,27 @@ msgstr "Kontrollera användarnamn/lösenord-kombinationen."
 msgid "Account locked. Please contact your system administrator!"
 msgstr "Kontot låst. Kontakta systemadministratören!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/tr_TR/fusiondirectory.po b/locale/tr_TR/fusiondirectory.po
index 756b35178..a506eeb63 100644
--- a/locale/tr_TR/fusiondirectory.po
+++ b/locale/tr_TR/fusiondirectory.po
@@ -4,16 +4,16 @@
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 # 
 # Translators:
-# abc Def <hdogan1974@gmail.com>, 2020
+# abc Def <hdogan1974@gmail.com>, 2021
 # 
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
-"Last-Translator: abc Def <hdogan1974@gmail.com>, 2020\n"
+"Last-Translator: abc Def <hdogan1974@gmail.com>, 2021\n"
 "Language-Team: Turkish (Turkey) (https://www.transifex.com/fusiondirectory/teams/12202/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Hata"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
-msgstr ""
+msgstr "Dosya"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
-msgstr ""
+msgstr "Tür"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -219,7 +219,7 @@ msgstr ""
 
 #: include/class_listing.inc:364 setup/setup_migrate_accounts.tpl.c:23
 msgid "Select all"
-msgstr ""
+msgstr "Hepsini seç"
 
 #: include/class_listing.inc:567
 msgid "created by"
@@ -258,16 +258,16 @@ msgstr ""
 
 #: include/class_listing.inc:1655 include/class_listing.inc:1708
 msgid "Copy"
-msgstr ""
+msgstr "Kopyala"
 
 #: include/class_listing.inc:1661 include/class_listing.inc:1696
 msgid "Cut"
-msgstr ""
+msgstr "Kes"
 
 #: include/class_listing.inc:1669 include/class_listing.inc:1671
 #: include/class_CopyPasteHandler.inc:330
 msgid "Paste"
-msgstr ""
+msgstr "Yapıştır"
 
 #: include/class_listing.inc:1696
 msgid "Cut this entry"
@@ -413,7 +413,7 @@ msgstr ""
 
 #: include/class_ldapSizeLimit.inc:131
 msgid "Configure"
-msgstr ""
+msgstr "Yapılandır"
 
 #: include/class_ldapSizeLimit.inc:136
 msgid "incomplete"
@@ -479,10 +479,10 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
-msgstr ""
+msgstr "İkaz"
 
 #: include/functions.inc:783
 msgid ""
@@ -932,7 +932,7 @@ msgstr ""
 #: ihtml/themes/breezy/msg_dialog.tpl.c:17
 #: ihtml/themes/breezy/islocked.tpl.c:17
 msgid "Cancel"
-msgstr ""
+msgstr "İptal et"
 
 #: include/class_msgPool.inc:487 setup/class_setupStepMigrate.inc:138
 #: setup/setup_checks.tpl.c:5 ihtml/themes/breezy/msg_dialog.tpl.c:14
@@ -946,12 +946,12 @@ msgstr ""
 
 #: include/class_msgPool.inc:503
 msgid "Save"
-msgstr ""
+msgstr "Kaydet"
 
 #: include/class_msgPool.inc:513
 #, php-format
 msgid "Add"
-msgstr ""
+msgstr "Ekle"
 
 #: include/class_msgPool.inc:513
 #, php-format
@@ -964,7 +964,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclEditionDialog.inc:194
 #, php-format
 msgid "Delete"
-msgstr ""
+msgstr "Sil"
 
 #: include/class_msgPool.inc:523
 #, php-format
@@ -974,7 +974,7 @@ msgstr ""
 #: include/class_msgPool.inc:533
 #, php-format
 msgid "Edit..."
-msgstr ""
+msgstr "Düzenle..."
 
 #: include/class_msgPool.inc:533
 #, php-format
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1329,16 +1329,16 @@ msgstr ""
 #: include/simpleplugin/attributes/class_DateAttribute.inc:200
 #: include/simpleplugin/attributes/class_DateAttribute.inc:274
 msgid "Hours"
-msgstr ""
+msgstr "Saatler"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:205
 #: include/simpleplugin/attributes/class_DateAttribute.inc:279
 msgid "Minutes"
-msgstr ""
+msgstr "Dakikalar"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:210
 msgid "Seconds"
-msgstr ""
+msgstr "Saniyeler"
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:298
 #: include/class_SnapshotDialogs.inc:143 include/class_SnapshotDialogs.inc:149
@@ -1347,7 +1347,7 @@ msgstr ""
 
 #: include/simpleplugin/attributes/class_DateAttribute.inc:304
 msgid "Time"
-msgstr ""
+msgstr "Zaman"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:33
 #: include/simpleplugin/attributes/class_FileAttribute.inc:36
@@ -1388,12 +1388,12 @@ msgstr ""
 #: include/simpleplugin/attributes/class_FileAttribute.inc:418
 #: include/simpleplugin/attributes/class_FileAttribute.inc:419
 msgid "Upload"
-msgstr ""
+msgstr "Yükleme"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:171
 #: include/simpleplugin/attributes/class_FileAttribute.inc:172
 msgid "Download"
-msgstr ""
+msgstr "İndir"
 
 #: include/simpleplugin/attributes/class_FileAttribute.inc:368
 #, php-format
@@ -1423,7 +1423,7 @@ msgstr ""
 #: plugins/admin/groups/group-list.xml:150
 #: plugins/admin/users/user-list.xml:115
 msgid "Remove"
-msgstr ""
+msgstr "Kaldır"
 
 #: include/simpleplugin/attributes/class_PhoneNumberAttribute.inc:37
 msgid "Number"
@@ -1443,7 +1443,7 @@ msgstr ""
 #: plugins/admin/users/user-list.xml:108
 #: plugins/admin/aclrole/class_aclEditionDialog.inc:192
 msgid "Edit"
-msgstr ""
+msgstr "Düzenle"
 
 #: include/simpleplugin/attributes/class_IntAttribute.inc:50
 #, php-format
@@ -1594,42 +1594,42 @@ msgstr ""
 
 #: include/simpleplugin/class_helpersAttribute.inc:268
 msgid "B"
-msgstr ""
+msgstr "B"
 
 #: include/simpleplugin/class_helpersAttribute.inc:269
 msgid "KiB"
-msgstr ""
+msgstr "KiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:270
 msgid "MiB"
-msgstr ""
+msgstr "MiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:271
 msgid "GiB"
-msgstr ""
+msgstr "GiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:272
 msgid "TiB"
-msgstr ""
+msgstr "TiB"
 
 #: include/simpleplugin/class_helpersAttribute.inc:286
 msgid "seconds"
-msgstr ""
+msgstr "seconds"
 
 #: include/simpleplugin/class_helpersAttribute.inc:287
 msgid "minutes"
-msgstr ""
+msgstr "dakikalar"
 
 #: include/simpleplugin/class_helpersAttribute.inc:288
 msgid "hours"
-msgstr ""
+msgstr "saatler"
 
 #: include/simpleplugin/class_helpersAttribute.inc:289
 msgid "days"
-msgstr ""
+msgstr "günler"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -1712,7 +1712,7 @@ msgstr ""
 #: plugins/admin/groups/group-list.xml:66 plugins/admin/users/user-list.xml:73
 #: setup/class_setupStepMigrate.inc:829
 msgid "Create"
-msgstr ""
+msgstr "OluÅŸtur"
 
 #: include/class_acl.inc:35 include/class_acl.inc:39
 msgid "ACL"
@@ -1742,7 +1742,7 @@ msgstr ""
 #: include/class_acl.inc:173
 #, php-format
 msgid "All users"
-msgstr ""
+msgstr "Tüm kullanıcılar"
 
 #: include/class_ldap.inc:277
 msgid "Performance warning"
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -2944,7 +2944,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:153
 msgid "Password settings"
-msgstr ""
+msgstr "Parola ayarları"
 
 #: plugins/config/class_configInLdap.inc:156
 msgid "Password default hash"
@@ -2964,7 +2964,7 @@ msgstr ""
 
 #: plugins/config/class_configInLdap.inc:165
 msgid "Password minimum length"
-msgstr ""
+msgstr "Parola asgari uzunluÄŸu"
 
 #: plugins/config/class_configInLdap.inc:165
 msgid "Minimum length of user passwords"
@@ -3395,7 +3395,7 @@ msgstr ""
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:26
 msgid "Passwords"
-msgstr ""
+msgstr "Parolalar"
 
 #: plugins/addons/dashboard/class_dashBoardPasswords.inc:27
 msgid "Statistics about passwords"
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -3567,7 +3583,7 @@ msgstr ""
 #: ihtml/themes/legacy/login.tpl.c:23 ihtml/themes/breezy/login.tpl.c:17
 #: ihtml/themes/breezy/login.tpl.c:20 ihtml/themes/breezy/login.tpl.c:23
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
 #: plugins/personal/generic/class_user.inc:51
 msgid "Password (Leave empty if you do not wish to change it)"
@@ -3806,7 +3822,7 @@ msgstr ""
 #: ihtml/themes/legacy/recovery.tpl.c:29 ihtml/themes/breezy/recovery.tpl.c:23
 #: ihtml/themes/breezy/recovery.tpl.c:26 ihtml/themes/breezy/recovery.tpl.c:29
 msgid "New password"
-msgstr ""
+msgstr "Yeni parola"
 
 #: plugins/personal/generic/class_user.inc:724
 msgid "The password used as new and current are too similar."
@@ -3901,7 +3917,7 @@ msgstr ""
 
 #: setup/class_setupStepLdap.inc:80
 msgid "Admin password"
-msgstr ""
+msgstr "Yönetici parolası"
 
 #: setup/class_setupStepLdap.inc:80
 msgid "Password for the admin account to use for binding to the LDAP"
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4511,7 +4506,7 @@ msgstr ""
 
 #: html/main.php:140
 msgid "Password change"
-msgstr ""
+msgstr "Parola deÄŸiÅŸtir"
 
 #: html/main.php:140
 msgid "Your password is about to expire, please change your password!"
@@ -4616,27 +4611,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
@@ -4905,11 +4900,11 @@ msgstr ""
 
 #: setup/setup_finish.tpl.c:8
 msgid "Download configuration"
-msgstr ""
+msgstr "İndirme yapılandırması"
 
 #: setup/setup_finish.tpl.c:11
 msgid "Status: "
-msgstr ""
+msgstr "Durum:"
 
 #: setup/setup_migrate_accounts.tpl.c:2
 msgid ""
@@ -4980,7 +4975,7 @@ msgstr ""
 
 #: ihtml/themes/legacy/recovery.tpl.c:41 ihtml/themes/breezy/recovery.tpl.c:41
 msgid "Password strength"
-msgstr ""
+msgstr "Parola kuvvetliliÄŸi"
 
 #: ihtml/themes/legacy/recovery.tpl.c:44 ihtml/themes/legacy/recovery.tpl.c:47
 #: ihtml/themes/legacy/recovery.tpl.c:50 ihtml/themes/legacy/recovery.tpl.c:86
@@ -5047,7 +5042,7 @@ msgstr ""
 
 #: ihtml/themes/legacy/login.tpl.c:26 ihtml/themes/breezy/login.tpl.c:26
 msgid "I forgot my password"
-msgstr ""
+msgstr "Ben ÅŸifremi unuttum"
 
 #: ihtml/themes/legacy/login.tpl.c:41 ihtml/themes/breezy/login.tpl.c:41
 msgid "Click here to log in"
diff --git a/locale/ug/fusiondirectory.po b/locale/ug/fusiondirectory.po
index 75ecc0a27..3f4cbab29 100644
--- a/locale/ug/fusiondirectory.po
+++ b/locale/ug/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Uyghur (https://www.transifex.com/fusiondirectory/teams/12202/ug/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/vi_VN/fusiondirectory.po b/locale/vi_VN/fusiondirectory.po
index 662d118d9..d6d405b3a 100644
--- a/locale/vi_VN/fusiondirectory.po
+++ b/locale/vi_VN/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2018\n"
 "Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/fusiondirectory/teams/12202/vi_VN/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "Lá»—i"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "File"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "Dòng"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "Lá»—i PHP"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "lá»›p"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "chức năng"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "tĩnh"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "phương pháp"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "Dò theo"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "Loại"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "Tranh luận"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "Tạo ra trang này khiến cho bộ dịch PHP sinh ra một số lỗi!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr "Gửi thông báo lỗi"
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "Thông tin Toggle"
 
@@ -488,7 +488,7 @@ msgstr "LDAP server trả về: %s"
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "Cảnh báo"
@@ -1294,7 +1294,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "Tên"
@@ -1650,7 +1650,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2109,12 +2109,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3464,102 +3464,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4102,27 +4118,11 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-"đăng ký_toàn cầu (register_globals) là một cơ chế PHP dùng để đăng ký tất cả"
-" các biến số toàn cầu mà có thể truy cập từ các tập lệnh mà không phải thay "
-"đổi phạm vi. Đây có thể là một rủi ro về bảo mật."
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-"Tìm kiếm 'register_globals' trong thư mục php.ini của bạn và chuyển nó thành"
-" 'Off'."
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 "PHP sử dụng giá trị này để phần mềm thu dọn rác có thể sóa các phiên cũ đi."
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
@@ -4130,7 +4130,7 @@ msgstr ""
 "Thiết lập giá trị này đến một ngày sẽ ngăn cản việc mất đi các phiên và "
 "cookies trước khi chúng thực sự hết hạn."
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
@@ -4138,35 +4138,35 @@ msgstr ""
 "Tìm kiếm  'session.gc_maxlifetime' trong thư mục php.ini của bạn và thiết "
 "lập nó đển 86400 hoặc cao hơn."
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr "Tắt"
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 "Tìm kiếm  'session.auto_start' trong thư mục php.ini của bạn và đặt nó thành"
 " 'Off'."
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
@@ -4174,17 +4174,17 @@ msgstr ""
 "Lựa chọn này sẽ ảnh hưởng tới việc sử lý đầu vào PHP. Tắt chức năng này đi, "
 "để tăng khả năng hoạt động."
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 "Tìm kiếm 'implicit_flush' trong thư mục php.ini của bạn và chuyển nó sang "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr "Thời gian chạy ít nhất là 30 giây."
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
@@ -4192,7 +4192,7 @@ msgstr ""
 "Tìm kiếm 'max_execution_time' trong thư mục php.ini của bạn và thiết lập nó "
 "đến '30' hoặc cao hơn."
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
@@ -4201,26 +4201,12 @@ msgstr ""
 " sẽ không gửi bất cứ thông tin nào về server bạn đang chạy trong trường hợp "
 "này."
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 "Tìm kiếm 'expose_php' trong thư much php.ini của bạn và chuyển nó thành "
 "'Off'."
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-"Tăng cường khả năng hoạt động cho server của bạn bằng việc thiết lập "
-"magic_quotes_gpc thành 'off'."
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-"Tìm kiếm 'zend.ze1_compatibility_mode' trong thư mục  php.ini và chuyển nó "
-"thành 'Off'."
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr "Di trú"
@@ -4669,27 +4655,27 @@ msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 "Tài khoản bị khóa. Xin hãy liên lạc với admin quản trị hệ thống của bạn!"
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/zh/fusiondirectory.po b/locale/zh/fusiondirectory.po
index 6ce8a7142..6c836a07d 100644
--- a/locale/zh/fusiondirectory.po
+++ b/locale/zh/fusiondirectory.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Last-Translator: fusiondirectory <contact@fusiondirectory.org>, 2021\n"
 "Language-Team: Chinese (https://www.transifex.com/fusiondirectory/teams/12202/zh/)\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr "错误"
@@ -139,60 +139,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr "文件"
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr "行"
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr "PHP 错误"
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr "ç±»"
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr "功能"
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr "静态"
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr "方法"
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr "跟踪"
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr "类型"
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr "参数"
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr "生成这个页面导致 PHP 解析器发生一些错误!"
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr "切换信息"
 
@@ -479,7 +479,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr "警告"
@@ -1273,7 +1273,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr "名称"
@@ -1629,7 +1629,7 @@ msgid "days"
 msgstr "天"
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2087,12 +2087,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3442,102 +3442,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr "导入"
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4080,98 +4096,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4616,27 +4611,27 @@ msgstr "请检查用户名/口令。"
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
diff --git a/locale/zh_TW/fusiondirectory.po b/locale/zh_TW/fusiondirectory.po
index 0e84ad9b2..b5b96a289 100644
--- a/locale/zh_TW/fusiondirectory.po
+++ b/locale/zh_TW/fusiondirectory.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FusionDirectory VERSION\n"
 "Report-Msgid-Bugs-To: bugs@fusiondirectory.org\n"
-"POT-Creation-Date: 2021-03-18 15:28+0000\n"
+"POT-Creation-Date: 2022-07-28 16:55+0000\n"
 "PO-Revision-Date: 2016-08-29 14:52+0000\n"
 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/fusiondirectory/teams/12202/zh_TW/)\n"
 "MIME-Version: 1.0\n"
@@ -35,8 +35,8 @@ msgstr ""
 #: include/simpleplugin/class_simplePlugin.inc:697
 #: include/simpleplugin/class_simpleTabs.inc:73
 #: include/simpleplugin/class_multiPlugin.inc:78
-#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:461
-#: html/index.php:475 html/index.php:485 html/index.php:542 html/index.php:552
+#: plugins/addons/dashboard/class_dashBoardUsers.inc:192 html/index.php:465
+#: html/index.php:479 html/index.php:489 html/index.php:543 html/index.php:553
 #: setup/setup_checks.tpl.c:8 ihtml/themes/breezy/msg_dialog.tpl.c:2
 msgid "Error"
 msgstr ""
@@ -135,60 +135,60 @@ msgstr ""
 msgid "CSV"
 msgstr ""
 
-#: include/php_setup.inc:45 include/php_setup.inc:132
+#: include/php_setup.inc:61 include/php_setup.inc:148
 msgid "File"
 msgstr ""
 
-#: include/php_setup.inc:47 include/php_setup.inc:132
+#: include/php_setup.inc:63 include/php_setup.inc:148
 msgid "Line"
 msgstr ""
 
-#: include/php_setup.inc:53
+#: include/php_setup.inc:69
 msgid "PHP error"
 msgstr ""
 
-#: include/php_setup.inc:62
+#: include/php_setup.inc:78
 msgid "class"
 msgstr ""
 
-#: include/php_setup.inc:70
+#: include/php_setup.inc:86
 msgid "function"
 msgstr ""
 
-#: include/php_setup.inc:76
+#: include/php_setup.inc:92
 msgid "static"
 msgstr ""
 
-#: include/php_setup.inc:80
+#: include/php_setup.inc:96
 msgid "method"
 msgstr ""
 
-#: include/php_setup.inc:131 ihtml/themes/breezy/msg_dialog.tpl.c:11
+#: include/php_setup.inc:147 ihtml/themes/breezy/msg_dialog.tpl.c:11
 msgid "Trace"
 msgstr ""
 
-#: include/php_setup.inc:132
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: include/php_setup.inc:148
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Type"
 msgstr ""
 
-#: include/php_setup.inc:133
+#: include/php_setup.inc:149
 msgid "Arguments"
 msgstr ""
 
-#: include/php_setup.inc:231
+#: include/php_setup.inc:247
 msgid "Generating this page caused the PHP interpreter to raise some errors!"
 msgstr ""
 
-#: include/php_setup.inc:236
+#: include/php_setup.inc:252
 msgid "Send bug report to the FusionDirectory Team"
 msgstr ""
 
-#: include/php_setup.inc:237
+#: include/php_setup.inc:253
 msgid "Send bugreport"
 msgstr ""
 
-#: include/php_setup.inc:242
+#: include/php_setup.inc:258
 msgid "Toggle information"
 msgstr ""
 
@@ -475,7 +475,7 @@ msgstr ""
 #: setup/class_setupStepMigrate.inc:580 setup/class_setupStepMigrate.inc:1028
 #: setup/class_setupStepMigrate.inc:1147 setup/class_setupStepMigrate.inc:1258
 #: setup/class_setupStepMigrate.inc:1333 setup/class_setupStepMigrate.inc:1377
-#: html/main.php:156 html/index.php:594 setup/setup_checks.tpl.c:11
+#: html/main.php:156 html/index.php:595 setup/setup_checks.tpl.c:11
 #: ihtml/themes/breezy/msg_dialog.tpl.c:5 ihtml/themes/breezy/islocked.tpl.c:5
 msgid "Warning"
 msgstr ""
@@ -1269,7 +1269,7 @@ msgstr ""
 #: plugins/admin/aclrole/class_aclRole.inc:99
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:64
 #: plugins/addons/dashboard/class_dashBoardUsers.inc:69
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 #: setup/setup_migrate_adminAccount.tpl.c:8
 msgid "Name"
 msgstr ""
@@ -1625,7 +1625,7 @@ msgid "days"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:254
-msgid "Add (dialog)"
+msgid "Add(dialog)"
 msgstr ""
 
 #: include/simpleplugin/class_dialogAttributes.inc:517
@@ -2083,12 +2083,12 @@ msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:198
 #, php-format
-msgid "Action called without error (results were \"%s\")"
+msgid "Action called without error(results were \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:203
 #, php-format
-msgid "Action called without error (result was \"%s\")"
+msgid "Action called without error(result was \"%s\")"
 msgstr ""
 
 #: plugins/admin/groups/class_groupManagement.inc:263
@@ -3438,102 +3438,118 @@ msgid ""
 "error: %s"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:36
+#: plugins/addons/subscription/class_subscriptionInfo.inc:40
 msgid "Subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:37
-#: plugins/addons/subscription/class_subscriptionInfo.inc:43
-#: plugins/addons/subscription/class_subscriptionInfo.inc:58
+#: plugins/addons/subscription/class_subscriptionInfo.inc:41
+#: plugins/addons/subscription/class_subscriptionInfo.inc:47
+#: plugins/addons/subscription/class_subscriptionInfo.inc:63
 msgid "Subscription information"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:38
+#: plugins/addons/subscription/class_subscriptionInfo.inc:42
 msgid "Information about your FusionDirectory subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:64
+#: plugins/addons/subscription/class_subscriptionInfo.inc:69
 msgid "Information text for subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:68
+#: plugins/addons/subscription/class_subscriptionInfo.inc:73
 msgid "Subscription name"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:72
+#: plugins/addons/subscription/class_subscriptionInfo.inc:77
 msgid "Subscription id"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:76
+#: plugins/addons/subscription/class_subscriptionInfo.inc:81
 msgid "Subscription type"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:80
+#: plugins/addons/subscription/class_subscriptionInfo.inc:85
 msgid "Contract reference"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:84
+#: plugins/addons/subscription/class_subscriptionInfo.inc:89
 msgid "Start date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:89
+#: plugins/addons/subscription/class_subscriptionInfo.inc:94
 msgid "End date of this subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:96
+#: plugins/addons/subscription/class_subscriptionInfo.inc:101
 msgid "Import your subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:99
+#: plugins/addons/subscription/class_subscriptionInfo.inc:104
 msgid "Information text for expired subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:103
+#: plugins/addons/subscription/class_subscriptionInfo.inc:108
 msgid "Import subscription"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:109
+#: plugins/addons/subscription/class_subscriptionInfo.inc:114
 msgid "Import"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:126
+#: plugins/addons/subscription/class_subscriptionInfo.inc:131
 #, php-format
 msgid ""
 "You do not have a valid subscription for this instance of FusionDirectory.\n"
 "Please visit %s for a list of available options."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:131
+#: plugins/addons/subscription/class_subscriptionInfo.inc:136
 #, php-format
 msgid ""
 "Your subscription is expired for this instance of FusionDirectory.\n"
 "Please visit %s to renew it."
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:175
+#: plugins/addons/subscription/class_subscriptionInfo.inc:177
+#: plugins/addons/subscription/class_subscriptionInfo.inc:184
+#: plugins/addons/subscription/class_subscriptionInfo.inc:204
+msgid "Import error"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:178
 msgid "No data. Did you forgot to upload a file?"
 msgstr ""
 
-#: plugins/addons/subscription/class_subscriptionInfo.inc:182
+#: plugins/addons/subscription/class_subscriptionInfo.inc:185
 msgid "Failed to parse imported file"
 msgstr ""
 
+#: plugins/addons/subscription/class_subscriptionInfo.inc:192
+#, php-format
+msgid "Missing section \"%s\" in imported file"
+msgstr ""
+
+#: plugins/addons/subscription/class_subscriptionInfo.inc:197
+#, php-format
+msgid "Missing attribute \"%s\" in imported file"
+msgstr ""
+
 #: plugins/personal/roles/class_userRoles.inc:34
 msgid "Edit user's groups and roles"
 msgstr ""
@@ -4076,98 +4092,77 @@ msgid "FusionDirectory requires this extension to handle snapshots."
 msgstr ""
 
 #: setup/class_setupStepChecks.inc:172
-msgid ""
-"register_globals is a PHP mechanism to register all global variables to be "
-"accessible from scripts without changing the scope. This may be a security "
-"risk."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:173
-msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:180
 msgid "PHP uses this value for the garbage collector to delete old sessions."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:181
+#: setup/class_setupStepChecks.inc:173
 msgid ""
 "Setting this value to one day will prevent loosing session and cookies "
 "before they really timeout."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:182
+#: setup/class_setupStepChecks.inc:174
 msgid ""
 "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:189 setup/class_setupStepChecks.inc:205
-#: setup/class_setupStepChecks.inc:221 setup/class_setupStepChecks.inc:229
+#: setup/class_setupStepChecks.inc:181 setup/class_setupStepChecks.inc:197
+#: setup/class_setupStepChecks.inc:213
 msgid "Off"
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:190
+#: setup/class_setupStepChecks.inc:182
 msgid ""
 "In Order to use FusionDirectory without any trouble, the session.auto_start "
 "option in your php.ini should be set to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:191
+#: setup/class_setupStepChecks.inc:183
 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:198
+#: setup/class_setupStepChecks.inc:190
 msgid ""
 "FusionDirectory needs at least 128MB of memory. Setting it below this limit "
 "may cause errors that are not reproducable! Increase it for larger setups."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:199
+#: setup/class_setupStepChecks.inc:191
 msgid ""
 "Search for 'memory_limit' in your php.ini and set it to '128M' or higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:206
+#: setup/class_setupStepChecks.inc:198
 msgid ""
 "This option influences the PHP output handling. Turn this Option off, to "
 "increase performance."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:207
+#: setup/class_setupStepChecks.inc:199
 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:214
+#: setup/class_setupStepChecks.inc:206
 msgid "The Execution time should be at least 30 seconds."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:215
+#: setup/class_setupStepChecks.inc:207
 msgid ""
 "Search for 'max_execution_time' in your php.ini and set it to '30' or "
 "higher."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:222
+#: setup/class_setupStepChecks.inc:214
 msgid ""
 "Increase the server security by setting expose_php to 'off'. PHP won't send "
 "any information about the server you are running in this case."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:223
+#: setup/class_setupStepChecks.inc:215
 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'."
 msgstr ""
 
-#: setup/class_setupStepChecks.inc:230
-msgid "Increase your server performance by setting magic_quotes_gpc to 'off'."
-msgstr ""
-
-#: setup/class_setupStepChecks.inc:231
-msgid ""
-"Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to "
-"'Off'."
-msgstr ""
-
 #: setup/class_setupStepMigrate.inc:162 setup/setup_migrate_baseOC.tpl.c:11
 msgid "Migrate"
 msgstr ""
@@ -4612,27 +4607,27 @@ msgstr ""
 msgid "Account locked. Please contact your system administrator!"
 msgstr ""
 
-#: html/index.php:463
+#: html/index.php:467
 #, php-format
 msgid "No value found in HTTP header \"%s\""
 msgstr ""
 
-#: html/index.php:477
+#: html/index.php:481
 #, php-format
 msgid "Header user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:487 html/index.php:554
+#: html/index.php:491 html/index.php:555
 #, php-format
 msgid "Login with user \"%s\" triggered error: %s"
 msgstr ""
 
-#: html/index.php:544
+#: html/index.php:545
 #, php-format
 msgid "CAS user \"%s\" could not be found in the LDAP"
 msgstr ""
 
-#: html/index.php:594
+#: html/index.php:595
 msgid ""
 "Your browser has cookies disabled. Please enable cookies and reload this "
 "page before logging in!"
-- 
GitLab


From fe3ba4224483cb30e4840cc4ce85b968f932af3f Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Thu, 8 Sep 2022 17:30:29 +0200
Subject: [PATCH 112/117] :handshake: fix(Authors): added recent authors for
 FusionDirectory 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 AUTHORS.md | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/AUTHORS.md b/AUTHORS.md
index 8758b3003..abeb3421a 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -221,3 +221,17 @@ documentation and additional help.
 
 * Renato Ramonda
   Support for SSH ed25519 keys
+
+* Judicael Courant <judicael.courant@orange.com>
+  Weak random generator use in fusiondirectory-setup
+
+* Sinan Sekerci - Dreamlab
+  Security Audit of FusionDirectory
+  Full Path Disclosure
+  Cross-Site Scripting (XSS)
+  Arbitrary File Access (PNG files only)
+
+* Manuel Pellegrinet <manuel.pellegrinet@yoroi.company>
+  Security Audit of FusionDirectory
+  Cross-Site Scripting (XSS)
+  Improper session handling
-- 
GitLab


From be6cca026d798692a219e5017c80e3658ed1b907 Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 9 Sep 2022 10:31:16 +0200
Subject: [PATCH 113/117] :handshake: fix(changelog) add new changelog.md for
 1.3.1

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 Changelog.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

diff --git a/Changelog.md b/Changelog.md
index b37aadd11..1526c0012 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,40 +1,67 @@
-## %"FusionDirectory 1.3.1" - 2019-07-04
+## %"FusionDirectory 1.3.1" - 2022-09-09
 
 ### Added
 
 #### fusiondirectory
 - fd#5985 We don't have LDAP tab on FusionDirectory configuration
+- fd#6152 Add subscription screen
 
 #### fusiondirectory-plugins
 - fd-plugins#5911 supannRefId field is missing for "etablissement"
 - fd-plugins#5938 Make %passwordClear% available to sambaAccount hooks
 - fd-plugins#5939 create icons for ipmi and weblink
 - fd-plugins#5940 We don't have LDAP tab on FusionDirectory configuration
+- fd-plugins#5956 add mapping sinaps to Fd mapping for diffusion
 - fd-plugins#5957 creating icons for the sinaps plugin
 
 ### Changed
 
+#### fusiondirectory
+- fd#6024 Cleanup session handling
+- fd#6038 Move the "Click the 'Edit' button" message to the left
+- fd#6220 [CodeStyle] - 1.3.1 Requires adaptation to align code style with 1.4
+- fd#6221 [Enhancement] - Change CI 1.3.1 - CodeStyle to refelect 1.4 rules
+
 #### fusiondirectory-plugins
+- fd-plugins#5897 When a user is removed from Sinaps, we need to send back a deletion acquisition
 - fd-plugins#5913 Avoid mass acquistion when editing group gidNumber
 - fd-plugins#5948 description of a user should'nt be updated from SINAPS
+- fd-plugins#5993 _getTabFooter has been renamed getTabFooter
+- fd-plugins#6103 Adapt 1.3-fixes code to subscription core merge
+- fd-plugins#6180 [CodeStyle] 1.3.1 Plugin - Requires adaptation to align code style with 1.4
 
 ### Removed
 
 #### fusiondirectory-plugins
 - fd-plugins#5901 Remove Google+ from personal social accounts tab
+- fd-plugins#5992 Email icon should be moved to core
 
 ### Fixed
 
 #### fusiondirectory
+- fd#5862 filtering and "Unknown element type specified: !"
 - fd#5942 PHP >= 7.2 triggering error when count() is called with invalid countable
 - fd#5967 Systems dashboard crashes
+- fd#5974 Workflow problem when applying a template to an object triggers errors
 - fd#5978 when renaming branch aka department roles are not updated correctly
 - fd#5983 Write ACL on user/userRoles/groupsMembership not working when not having full user/user read right
 - fd#5987 ImagickException are not catched when showing an ImageAttribute
+- fd#5995 Audit events DN are too long
 - fd#5997 Incorrect error message when the mail cannot be sent by recovery
+- fd#6005 Problem with gidNumber in posix group template
 - fd#6006 expiration date in dashboard is 02.01.1970
+- fd#6017 IntAttribute badly handle empty value when minimum is set
+- fd#6023 Email icon missing from core
+- fd#6030 correct the get help section in the readme.md
+- fd#6097 Smarty path is not set correctly by fusiondirectory-setup --write-vars
+- fd#6122 Problems with FD web setup
+- fd#6142 The filter for configuration is wrong in fusiondirectory-setup
+- fd#6173 PHP error: Array to string conversion in class_fiInventory.inc:199
+- fd#6222 [1.3.1] - Fixing LDAP Search filter code style
 
 #### fusiondirectory-plugins
+- fd-plugins#5825 LDAP error in audit plugin
+- fd-plugins#5912 Unable to spread a user to FD from sinaps if the user is affected to an etablissement
 - fd-plugins#5917 flag_ownmailbox cannot be used with partage mail method
 - fd-plugins#5918 SINAPS : acquisition couldn't be sent because primary affectation isn't set
 - fd-plugins#5923 cname record appear on another domain when they contain the machine cn
@@ -44,6 +71,28 @@
 - fd-plugins#5944 add addvalues/delvalues documentation
 - fd-plugins#5945 unable to add SINAPS Structure
 - fd-plugins#5949 Systems dashboard crashes
+- fd-plugins#5963 error in SINAPS workflow
+- fd-plugins#5966 dovecot connection error
+- fd-plugins#5976 Problem with gidNumber in posix group template
+- fd-plugins#5970 Compatibility error between sudo and mixedgroup plugins
+- fd-plugins#5978 GPG key addition crash
+- fd-plugins#5991 ORCID last character may be 'X' and not a number
+- fd-plugins#6000 correct the get help section in the readme.md
+- fd-plugins#6063 Argument 4 passed to DhcpHostsAttribute::postLdapSave() must be of the type array, string given
+- fd-plugins#6079 reload dns map from dns interface didn't work , but from server it works
+- fd-plugins#6125 PHP error: Array to string conversion in class_fiInventory.inc:199
+
+### Security
+
+#### fusiondirectory
+- fd#6021 Failed LDAP operations may appear as Success
+- fd#6135 Security problems uncovered by audit
+- fd#6086 XSS in login screen
+- fd#6136 Weak random generator use in fusiondirectory-setup
+- fd#6137 XSS in management filters
+- fd#6217 [Security] - Set Cookie settings to TRUE for option "HttpOnly"
+- fd#6219 [security] - Cookie session is not renewed or set after authentification
+
 
 ## %"FusionDirectory 1.3" - 2019-03-04
 
-- 
GitLab


From b44e28e6c3c43e45d8d9c327d0775fcba6ec804b Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Fri, 7 Oct 2022 12:02:28 +0200
Subject: [PATCH 114/117] :handshake: fix(chalog) final conversion of the
 Changelog inot Changelog.md

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 Changelog    | 249 +------------------------
 Changelog.md | 502 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 503 insertions(+), 248 deletions(-)

diff --git a/Changelog b/Changelog
index 11a2a7c29..bfdf0a8a6 100644
--- a/Changelog
+++ b/Changelog
@@ -1,249 +1,2 @@
-FusionDirectory changelog
-=========================
-
-* FusionDirectory 1.0.4
-
-[Fix] Pre/post script not working properly with mail command
-[Fix] Address incorrect in source code and documentation files
-[Fix] Cleaning code for php 5.4
-[Fix] Save_object is called twice on services
-[Fix] The disk partitionning part the size should be in GB by default not mb in the fai plugin
-[Fix] There should be a password recovery link on the login page
-[Fix] Rewrote accept-to-gettext for browser language detection
-[Fix] Problem of auto inclusion of the class_pdf.inc
-[Fix] Smarty3 Support
-[Fix] Smarty3 and gettext support
-[Fix] Recovery.schema should follow LDAP naming rules
-[Fix] fdQuota.schema and argonaut.schema should follow LDAP naming rules
-[Fix] Incorrect directory for the supann schema.
-[Fix] Wrong my $path in fusiondirectory-insert-schema
-[Fix] Check for group conflicts case-insensitively
-[Fix] Correct password hooks docs
-[Fix] password Hook is called in different manner in password and userManagement.
-[Fix] Setup.php must use an absolute path for the template
-[Fix] Actions menu does not work with lighttpd
-[Fix] In style.css, line-height line 1528 seems wrong
-[Fix] The date picker is not working anymore
-[Fix] Failed to add packages in "Package list" dialog
-[Fix] Fusiondirectory-setup is wrong in connection to ldap
-[Fix] Pop-up error when locking/unlocking user
-[Fix] Line 310 of class_msgPool.inc is wrong
-[Fix] Class_filterLDAP.inc don't check correctly the base and objectStorage
-[Fix] Wizard goes into an infinite loop if the popen function is not available
-[Fix] Check if popen is allowed before using it
-[Fix] French accents in password recovery mailbody
-[Fix] Removing the code activation ob_start as it not recommended way of compression
-[Fix] When i click on the link for password recovery on the main page, it say not activated but as you can see in debug text its not
-[Fix] Option -i not in fusiondirectory-insert-schema manual
-[Fix] The code for adding icons into applications is broken
-[Fix] The code for reading image is broken in getfax.php
-[Fix] Type:8, Message:Trying to get property of non-object $date in headers.tpl
-[Fix] Popup not working with smarty3
-[Fix] Standardazing the argonaut menu service entries
-[Fix] Standardazing the spam and antivirus menu service entries
-[Fix] Standardizing log service entries
-[Fix] Standardizing fax service entries
-[Fix] Removing all obsolete opsi code from various plugins
-[Fix] Removing the dependancies to the fai.schema for systems
-[Fix] The ip should be mandatory on server, terminal and printer objects
-[Fix] The filter for windows workstations come into conflict with the network device one
-[Fix] Separation of the class_databaseManagement.inc in his own package to remove dependancy on mdb2.php
-[Fix] In the setup it still show we need more than 64MB it should be 128MB
-[Fix] The wording is not just in setup for windows pc we said "workstations" but that should be Windows workstations
-[Fix] Adapat Service.manage like action to make it wokr with argonaut 1.0
-[Fix] When restarting a service trought argonaut some LDAP error appear
-[Fix] Crash when mailmethod is in FusionDirectory config file and the user entry contains a mail addresss
-[Fix] When updating a the cn of a windows workstation, the uid is not updated
-[Fix] Copy paste is not working for winstations
-[Fix] Copy paste for terminal, server, printer, workstations mac an ip are not mandatory
-[Fix] Phone we cannot change ip and mac when doing copy/paste
-[Fix] Smarty Bug with 1.0.4 and Wheezy
-[Fix] Fusiondirectory-insert-schema dont work correctly
-[Fix] Step 2 of password recovery has been removed
-[Fix] The check for existing winstations is not working
-[Fix] The ip should be mandatory on server, terminal and printer objects
-[Fix] Filter for windows workstations come into conflict with the network device one
-[Fix] Remove the code showing the type of object in object group title member objects
-[Fix] Remove the artificial limit to two different objects in objects group
-[Fix] The refresh dns function is not correct from the system generic page
-[Fix] Cannot initialise the phoneAccount class
-[Fix] Handle ldif schema changes
-[Feature] SupportDaemon should allow to call modules method easily
-[Feature] Add spanish venezuelan into the setup
-[Feature] Adding spanish venezuelan language to FusionDirectory
-[Feature] Add Dutch into the setup
-[Feature] Adding Dutch language to FusionDirectory
-[Feature] Guide in how to make a plugin with the simple-plugin framework
-[Feature] Adresse email alternative pour Password recovery
-[Feature] Update documentation for Repository plugin
-[Feature] Creating Windows pc from the interface
-[Feature] Having the mac address next to the ip address in filter system list
-[Feature] Integration of the board plugin - a Small dashbaord for FusionDirectory
-[Feature] Simple plugin framework is mandatory and used by Recovery PAssword and Board plugin
-[Feature] Adding some Windows attributes to the printer object to use opsi usage
-[Feature] Provide ldif updates files for recovery.ldif, goto.ldif, goserver.ldif
-[Feature] Provide ldif updates files for fdQuota.ldif and argonaut.ldif
-
-* FusionDirectory 1.0.3
-
-[Feature] Improve the FusionDirectory API
-[Feature] Improve the FusionDirectory API
-[Fix] Change explication in Restoring object snapshots
-[Feature] added jeremy williame to authors
-[Feature] Adding a sasl password method
-[Fix] Spaces into response to prompt break the fusiondirectory setup command
-[Fix] Restoring snapshot isn't working anymore
-[Fix] Fusiondirectory-setup doesnt install the plugin-correctly from tar.gz
-[Feature] Use fusiondirectory-insert-schema to install others schema
-[Fix] Fusiondirectory-setup should not go into the contrib dir
-[Feature] Change color banner and go_logo
-[Feature] We should have a PHP CodeSniffer standard to check Guidelines respect
-[Fix] Rewrote the INSTALL document on how to install fusiondirectory from tar.gz
-[Fix] Remove the fusiondirectory-migrate-users program its has been merge into fusiondirectory-setup
-[Fix] Remove the debian centrics path into fusiondirectory-setup
-[Fix] Remove the debian centric dir in contrib/fusiondirectory-apache.conf
-[Fix] The fusiondirectory.conf contains all the service definition and other needed entries for all the plugins
-[Fix] The message explaining to use fusiondirectory-setup to fix classes loading is wrong
-[Fix] Removing non usefull menu text
-[Feature] Added the password recovery plugin into core
-[Fix] Create a new favicon for fusiondirectory
-[Fix] Lost password feature in Gosa - removing obsloleted code
-[Fix] The protocol of json rpc (http or https) should not be encoded in the code and be saved into the ldap
-[Fix] Incorrect include path in php_setup.inc file
-[Fix] Not enough memory for the PHP module
-[Fix] ACL to allow enabling / disabling of user accounts
-[Fix] Put all the docs togheter inside contrib/docs
-[Fix] Added cn generation parameter on install screen
-[Fix] Adding a default ou for netgroupRDN
-[Fix] PHP errors when asking logs on a new server
-[Fix] PHP error in password.tpl
-[Feature] Backported timeout seesion handler from GOsa 2.7
-[Fix] Inconsistency in coding guidelines
-[Feature] Backported locking user in color from GOsa 2.7
-[Fix] PHP errors in support Daemon
-[Fix] Error when gosaunittag not defined in ldap in class_supportDaemon.inc
-[Feature] fusiondirectory-setup parameters must be settable in command-line
-[Feature] Added migrate-repositories to fusiondirectory-setup will migrate network repos
-[Feature] Added --check-config to fusiondirectory-setup
-[Fix] Rewrote the mail collector
-[Fix] Removing the obsoleted and non maintened plugin for phpgw
-[Fix] Windows workstations are now in ou=computers by default
-[Fix] Removed the click trough gpl for fusiondirectory setup
-[Fix] In the objectgroup the filter for applications is missing in the select box
-[Fix] Added the missing passwordMethod::is_harmless in class_password.inc
-[Feature] Use the pam_check_host_attr feature when using the trust model
-[Fix] The selection filter for the samba plugins workstations in the user tab don't show windows pc
-[Fix] In object group we cannot select windows pc
-[Fix] Moved class from include/utils to include to be more consistant
-[Fix] Moved all xsd files into contrib
-[Fix] Removed obsolete function function set_acl() from class_tabs.inc
-[Fix] Removed leftover var from copypastehandler.inc
-[Fix] Removed non used function function saveFilter(, ) in functions.inc
-[Fix] Removed non used function function obj_is_readable(, , ) in functions.inc
-[Fix] Removed svn_version can be removed in functions.inc
-[Fix] Removed the goto-si code in function.inc
-[Fix] Removed get_gosa_version() and replaced by a static var in variables.inc
-[Fix] Changed the HTTP_GOSA_KEY to HTTP_FD_KEY
-[Fix] Removed obsoleted socket class for the old goto-si code
-[Fix] Renamed gosa_array_merge to fusiondirectory_array_merge
-[Fix] Renamed gosa_log to fusiondirectory_log
-[Fix] Changed session name from GOsa to FusionDirectory
-[Fix] Changed the name of extensions in error message from GOsa to FusionDirectory
-[Fix] Removed feedback step in setup
-[Fix] Removed the internet explorer 6 suppor for png
-[Fix] Removed fixed path from setup
-[Fix] Removed samba rid and sid from setup
-[Fix] Removed space in login user / password
-[Fix] Removed leftover of old mysql logging system
-[Fix] Incorrect description of posixGroup created
-[Fix] LDAP query failed : 'root object' is missing
-[Fix] Undefined variable: _SERVERREMOTE_ADDR
-[Fix] Bug when generating config with the wizard when snapshot not selected
-[Fix] Adding catalan support in fusiondirectory
-[Fix] jpegPhoto automatically changed/altered when updating user information
-[Fix] Removed the smarty plugins file from the include directory
-[Fix] Problem in fd setup when migrating from gosa2.6
-[Fix] The dns and logging services don't have the start/stop/restart button
-[Fix] The dhcp service misses the stop/start/restart button in the service view
-[Fix] Problem on Copy & paste wizard for a server or workstation
-[Fix] Remove show opsi based client from the code
-[Feature] Adding (Czech Republic) to the supported language
-[Fix] Gofon plugin is not structured correclty relating to directories
-[Fix] Gofax plugins dir are wrong
-[Feature] Putting supann into official plugins
-[Feature] Putting quota into official plugins
-[Feature] Putting openstack-compute into official plugins
-[Fix] The netgroup plugin doesnt have an icon in the list wiew
-[Feature] Putting an icon in the system list showing that there is an argonaut service presnt on this system
-[Fix] Renaming the netatalk plugin to netatalkAccount to be more in sync with other plugins
-[Feature] Making a client argonaut service
-[Feature] Adding support for custom release in fai Repository
-[Feature] Architectures should be in FAIrepository value
-[Fix] Moving all plugins systems files to /var/cache/fusiondirectory/<name of the plugin>/
-[Fix] Removed kerberos-heimdal leftover
-[Fix] When creating a terminal it yell at me that wake event doesnt exist
-[Fix] Remove all non needed readme in the plugins
-[Feature] An abstraction Layer is now used to connect to all database : MDB2
-[Feature] Button to launch ladp2bind from the DNS configuration page
-[Fix] Fai branch not created when adding a repository
-[Fix] Dhcp/Parent node on Winstation object not changeable
-[Fix] Package descriptions don't work if + in name
-[Fix] PHP errors in goto plugin
-[Fix] There is a problem when there is not an ntp server added to the workstations, the saving fails
-[Fix] Showing the log interface without log on a unsaved workstation
-[Fix] PHP errors in class_workstationService.inc
-[Fix] Error message when I click on the tab Deployment summary of a workstation
-[Fix] Wrong icon for Systems option on main FD interface
-[Fix] Removing the obsoleted and non maintened plugin for phpgw
-[Fix] Cleaning code for php 5.4
-[Fix] Removing obsoleted code from apache plugin
-[Fix] In applications remove the restriction for c:"
-[Fix] Removing the export xls from ldapmanager plugin
-[Fix] Remove goto-si code from class_termDns.inc
-[Fix] The plinfo fonction should always be the latest function in the .inc files
-[Fix] Update the datbase schema in gophon
-[Fix] Removing mail addons
-[Fix] Removing non maintened files for nagios 2.0
-[Fix] Removing contrib code we don't want to maintain and usefull only for a little amount of people
-[Fix] removing gosa.conf leftover, putting @fusiondirectory.org email address in examples
-[Fix] switched from tab to space in the code
-[Fix] Renamed gosa_array_merge to fusiondirectory_array_merge
-[Fix] Renamed gosa_log to fusiondirectory_log
-[Fix] Cleaning goto / systems plugins
-[Fix] Provided fusiondirectory dhcp schema modified without changing openldap OID
-[Fix] Invalid structural object class chain (account/person) in the samba plugin
-[Fix] dhcpHost not removed if system is removed
-[Fix] FSF address incorrect in source code and documentation files
-
-
-* FusionDirectory 1.0.2
-  - Removed old GOsa-si code
-  - Added jsonrpc client library
-  - Added new daemon class with json rpc methods
-  - All deployment are now done through the Argonaut json rpc server
-  - New system to get the packages and debconf without a local mirror
-  - Cvs import fixes to make it more flexible and usable
-  - Corrected css for Firefox 5 and beyond
-  - New setup command fusiondirectory-setup that help fixes common setup issues
-  - All the console tools are in perl, most are in fusiondirectory-setup
-  - Added tools to easily convert and upload schema in an ldap-tree
-  - Completely test and rewrote the help to use php safe mode
-  - Put all the application data into /var/cache/fusiondirectory
-  - Fixed timezone issues
-  - Corrected FSF address
-  - Added the netgroups plugin into official sources
-  - Removed the opsi (pending rewrite)
-  - Removed log plugin, everything is done with the rsyslog plugin
-
-* FusionDirectory 1.0.1
-  - New Release
-  - Removed advanced options from setup
-  - Corrected online help
-  - Corrected wording on plugins
-  - Removed the need for magic_quotes_gpc
-  - Removed the fusiondirectory-desktop package
-  - Removed program version checking from svn
-  - Added the apache plugin
-  - Put final logo
-  - Full italian language
+See Changelog.md
 
diff --git a/Changelog.md b/Changelog.md
index 1526c0012..4609da665 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -3319,3 +3319,505 @@
 
 #### fusiondirectory-plugins
 - fd-plugins#2140 the template don't escape the html inside itself
+
+## %"FusionDirectory 1.0.4" - 2012-06-30
+
+### Added
+
+#### fusiondirectory
+- fd#913 There should be a password recovery link on the login page
+- fd#1018 supportDaemon should allow to call modules method easily
+- fd#1038 Handle schema changes
+- fd#1041 we need to add a new parameter to fusiondirectory.conf manpage asteriskParameterDelimiter
+- fd#1118 Adresse email alternative pour Password recovery
+- fd#1173 javascript should contain an inArray function
+- fd#1204 add spanish venezuela into the setup
+- fd#1205 we need to add the locale dir and the config for transifex es_ve
+- fd#1209 add 2 more attributes in network printer
+- fd#1220 Automatic return to login page after password change
+- fd#1246 ambiguous error message in installation check
+- fd#1280 provide ldif update files for recovery.ldif and goto.ldif
+- fd#1308 add one more attribute in network printer
+- fd#1328 add the entries in fusiondirectory.conf for board plugin
+- fd#1402 merge simple-plugin 1.0 into core
+
+#### fusiondirectory-plugins
+- fd-plugins#1032 asterisk application parameter delimiter changed from | to , (gosa bug 1177)
+- fd-plugins#1207 add 2 more attributes in network printer
+- fd-plugins#1260 we want to provision Windows pc from the interface
+- fd-plugins#1266 having the mac address next to the ip address in filter system list
+- fd-plugins#1356 integrating board into fusiondirectory-plugins
+- fd-plugins#1374 Handle schema changes
+
+### Changed
+
+#### fusiondirectory
+- fd#674 cleaning code for php 5.4
+- fd#984 accept-to-gettext should be re-wrote
+- fd#1069 Check for group conflicts case-insensitively
+- fd#1096 FusionDirectory menu should use plInfo
+- fd#1100 Plugin header system should allow to have multiple plugins on the same page
+- fd#1134 dn2base should handle a sesond parameter
+- fd#1211 style.css should be adapted to have some css about simplePlugin
+- fd#1243 Rewrite password recovery plugin with simplePlugin framework
+- fd#1270 remove the artificial limit to two different objects in objects group
+- fd#1277 rework the README.cnconfig
+- fd#1278 all the manpages from fusiondirectory should be updated
+- fd#1358 in the setup it still show we need more than 64MB it should be 128
+- fd#1359 the wording is not just in setup for windows pc we said "workstations" but that should be Windows pc
+- fd#1438 board plugin must go in addons
+
+#### fusiondirectory-plugins
+- fd-plugins#675 cleaning code for php 5.4
+- fd-plugins#1238 standardazing the argonaut menu service entries
+- fd-plugins#1239 standardazing the spam and antivirus menu service entries
+- fd-plugins#1240 standardizing log service entries
+- fd-plugins#1241 standardizing fax service entries
+- fd-plugins#1276 the ip should be mandatory on server, terminal and printer objects
+- fd-plugins#1309 Board should use simplePlugin
+- fd-plugins#1414 getFAIstatus.php should not be packaged in main
+- fd-plugins#1421 move the include/jsonRPCClient.php to the argonaut pacakge
+
+### Removed
+
+#### fusiondirectory
+- fd#1216 remove the check for the library as fusiondirectory-makentpassword use it internaly
+- fd#1224 we should remove the code activation ob_start as it not recommended way of compression
+- fd#1257 moving the update-locales script to management tools
+- fd#1271 remove the code showing the type of object in object group title member objects
+- fd#1302 Step 2 of password recovery should be removed
+- fd#1327 remove repositoryBranchHook from manpage
+- fd#1382 the supportDaemon.inc class should be moved the argonaut plugin
+- fd#1415 Argonaut does not support message sending, the feature should be removed
+- fd#1416 getFAIstatus.php should not be packaged in main
+- fd#1420 move the include/jsonRPCClient.php to the argonaut pacakge
+- fd#1448 remove dead code from the source
+
+#### fusiondirectory-plugins
+- fd-plugins#1037 update_entries function should be remove from supportDaemon
+- fd-plugins#1254 remove old code saving goSyslogServer
+- fd-plugins#1261 removing all obsolete opsi code from various plugins
+- fd-plugins#1273 this code is not correct now that the fusiondirectory.conf contains all the entries
+
+### Fixed
+
+#### fusiondirectory
+- fd#508 pre/post script not working properly with mail command
+- fd#586 FSF address incorrect in source code and documentation files
+- fd#999 Problem of auto inclusion of the class_pdf.inc
+- fd#1011 smarty3 with gettext generate funky errors :/
+- fd#1021 recovery.schema should follow LDAP naming rules
+- fd#1031 Web interface silently fails with passwords > 40 characters in length (gosa bug 1168)
+- fd#1039 wrong my $path in fusiondirectory-insert-schema
+- fd#1084 password Hook is called in different manner in password and userManagement.
+- fd#1106 setup.php must use an absolute path for the template
+- fd#1120 In style.css, line-height line 1528 seems wrong
+- fd#1121 The date picker is not working anymore
+- fd#1163 fusiondirectory-setup is wrong in connection to ldap
+- fd#1180 Pop-up error when locking/unlocking user
+- fd#1181 Line 310 of class_msgPool.inc is wrong
+- fd#1183 class_filterLDAP.inc don't check correctly the base and objectStorage
+- fd#1214 Wizard goes into an infinite loop if the popen function is not available
+- fd#1221 French accents in password recovery mailbody
+- fd#1225 when i click on the link for password recovery on the main page, it say not activated but as you can see in debug text its not
+- fd#1226 option -i not in fusiondirectory-insert-schema manual
+- fd#1230 Type:8, Message:Trying to get property of non-object $date in headers.tpl
+- fd#1242 Password recovery doesn't use the configured set address
+- fd#1245 installation doesn't continue after installing "missing" driver
+- fd#1248 [wizard] Add non blocking test for MDB2 drivers on wizard checks step.
+- fd#1256 error in rsyslog view
+- fd#1264 Debian 6 - commande : fusiondirectory-insert-schema
+- fd#1275 this code is not correct now that the fusiondirectory.conf contains all the entries
+- fd#1281 change the name of the reponsible person inside all the schema and ldif
+- fd#1299 fusiondirectory-insert-schema dont work correctly
+- fd#1333 supportDaemon can cause some PHP errors
+- fd#1334 the passwordRecoveryUseAlternate fonction is no longer in the code
+- fd#1346 when restarting a service trought argonaut some LDAP error appear
+- fd#1347 in 1.0.4 with patch to support Service.manage like action it doesn't work
+- fd#1360 complete the INSTALL to mention how to work with or without mdb2.php from tar.gz
+- fd#1410 password recovery translation
+- fd#1424 wrong copyright
+- fd#1464 error in update-goserver.ldif and update-goto.ldif
+
+#### fusiondirectory-plugins
+- fd-plugins#848 save_object is called twice on services
+- fd-plugins#1019 Some systems plugins call for deprecated ldap2zone action
+- fd-plugins#1022 fdQuota.schema and argonaut.schema should follow LDAP naming rules
+- fd-plugins#1036 Incorrect directory for the supann schema.
+- fd-plugins#1104 Some plugins have bad names in plInfo
+- fd-plugins#1160 Failed to add packages in "Package list" dialog
+- fd-plugins#1215 check if popen is allowed before using it
+- fd-plugins#1228 the code for adding icons into applications is broken
+- fd-plugins#1229 the code for reading image is broken in getfax.php
+- fd-plugins#1232 popup not working with smarty3 :/
+- fd-plugins#1252 error in rsyslog view
+- fd-plugins#1258 FSF address incorrect in source code and documentation files
+- fd-plugins#1267 the refresh dns is not correct from the system generic page
+- fd-plugins#1269 Input of already existing IP
+- fd-plugins#1274 filter for windows workstations come into conflict with the network device one
+- fd-plugins#1283 the check for existing winstations is not working
+- fd-plugins#1284 copy paste is not working for winstations
+- fd-plugins#1285 in copy paste for terminal, server, printer, workstations mac an ip are not mandatory
+- fd-plugins#1286 in phone we cannot change ip and mac when doing copy/paste
+- fd-plugins#1306 List DHCP not displayed in full
+- fd-plugins#1321 When updating a winstation cn the uid is not updated
+- fd-plugins#1332 fd crash when mailmethod is in config file and the entry contains a mail addresss
+- fd-plugins#1349 in 1.0.4 with patch to support Service.manage like action it doesn't work
+- fd-plugins#1350 error smarty with addressbook plugins
+- fd-plugins#1380 switch off action does not do anything on servGeneric
+- fd-plugins#1399 [board-plugin] Missing counters for some elements
+- fd-plugins#1400 [board-plugin] Missing uppercases.
+- fd-plugins#1401 [board-plugin] Missing icon for systems counter
+- fd-plugins#1890 gotoGroupAdminPrinter attribute is missing in system-fd.schema
+
+## %"FusionDirectory 1.0.3" - 2012-04-30
+
+### Added
+
+#### fusiondirectory
+- fd#43 Lost password feature in Gosa
+- fd#119 add cn generation parameter on install screen
+- fd#273 add sasl support for password
+- fd#454 Features from GOsa 2.7 that should be in FusionDirectory
+- fd#471 fusiondirectory-setup parameters must be settable in command-line
+- fd#483 adding --check-config to fusiondirectory-setup
+- fd#506 FAQ: scripts for Pre and Post events
+- fd#528 Possibility to use the pam_check_host_attr feature when using the trust model
+- fd#554 catalan support in fusiondirectory
+- fd#598 in object group we cannot select windows pc
+- fd#632 an abstraction layer so be used to allow different databases to be used
+- fd#665 modify fusiondirectory-insert-schema to install ldapns.schema
+- fd#668 add the missing passwordMethod::is_harmless in class_password.inc
+- fd#716 migrate-repositories option of fusiondirectory-setup will migrate network repos
+- fd#736 making a client argonaut service
+- fd#773 we must test for mdb2 in the setup
+- fd#805 fusiondirectory-setup must generate the SUPANN_DIR also
+- fd#806 all the templates should be read from /var/cache/fusiondirectory/mail
+- fd#807 all the templates should be read from /var/cache/fusiondirectory/system
+- fd#808 all the templates should be read from /var/cache/fusiondirectory/asterisk
+- fd#810 fusiondirectory-setup must generate the ASTERISK_DIR also
+- fd#811 fusiondirectory-setup must generate the SYSTEMS_DIR also
+- fd#812 fusiondirectory-setup must generate the MAIL_DIR also
+- fd#822 fusiondirectory-setup should create the mail, systems, asterisk and supann dir in the fusiondirectory cache
+- fd#824 the fusiondirectory.conf should contains all the service definition and other needed entries for all the plugins
+- fd#829 adding a default ou for netgroupRDN
+- fd#831 we need to modify fusiondirectory insert-schema to insert the recovery schema by default
+- fd#883 Architectures should be in FAIrepository value
+- fd#909 Add custom repositorories
+- fd#914 creating a new favicon for fusiondirectory
+- fd#916 No picture for the Openstack compute plugin
+- fd#917 password recovery doesnt have an icon for the main menu
+- fd#922 when suppan is installed but mapping in fd conf is not we got this error, we should provide a default branch in class_config.inc
+- fd#936 add (Czech Republic) to the locale
+- fd#941 DNS record : SRV type is properly useable in dns plugin
+- fd#942 fusiondirectory-insert-schema installation of others schema
+- fd#944 add the missing option to the fusiondirectory-setup manpages
+- fd#977 the sasl password method should have an option for exop operations
+- fd#978 the saslRealm and saslExop should be put in the fusiondirectory manpage
+
+#### fusiondirectory-plugins
+- fd-plugins#357 button to launch ladp2bind from the DNS configuration page
+- fd-plugins#490 cleaning goto / systems plugins
+- fd-plugins#585 i18n nb.po for NIS netgroups plugin
+- fd-plugins#625 in getxls.php the path should be in variables.inc
+- fd-plugins#634 add new AUTHORS
+- fd-plugins#679 integrate the nova user ldap plugin into FusionDirectory
+- fd-plugins#729 making a client argonaut service
+- fd-plugins#735 putting suppan plugin into core plugins
+- fd-plugins#739 we must create a service to store the config of all the argonaut tools
+- fd-plugins#742 fai branc not created when adding a repository
+- fd-plugins#863 ext4 is missing in the fai plugin
+- fd-plugins#884 Architectures should be in FAIrepository value
+- fd-plugins#889 an icon in the system list showing that there is an argonaut service presnt on this system
+- fd-plugins#896 Add custom repositorories
+- fd-plugins#918 we added the support of the custom release to system deployment plugin but the fai.schema miss an attribute for this
+- fd-plugins#937 add (Czech Republic) to the locale
+- fd-plugins#953 the netgroup plugin doesnt have an icon in the list wiew
+- fd-plugins#959 putting quoat into official plugins
+
+### Changed
+
+#### fusiondirectory
+- fd#502 Remove the smarty plugins file from the include directory
+- fd#520 removing fixed path from setup
+- fd#541 the version number is not visible enough
+- fd#588 the branch for computers should be ou=computers no ou=winstations by default
+- fd#592 cleaning goto / systems plugins
+- fd#620 rewrite the mail collector
+- fd#621 the plinfo fonction should always be the latest function in the .inc files
+- fd#628 gosamba.pl should be rewrote and put in fusiondirectory-setup
+- fd#633 change the HTTP_GOSA_KEY to HTTP_FD_KEY
+- fd#637 move all xsd files into contrib and see if there is an issue
+- fd#655 move class from include/utils to include to be more consistant
+- fd#670 windows workstations are now in ou=computers
+- fd#672 this function from class_posixAccount.inc should be in function.inc
+- fd#673 this function should be in functions.inc
+- fd#718 install-directories needs to be rewrote
+- fd#721 Indentation consistency and useless ldap attributes in supportDaemon
+- fd#724 useless ldap attributes in supportDaemon
+- fd#725 changing the sentence at the end of setup of fusiondirectory
+- fd#768 session should time out after 10 min
+- fd#800 all the templates should be read from /var/cache/fusiondirectory/supann
+- fd#823 the posix plugin should read is template from SYSTEMS_DIR
+- fd#859 put all the docs togheter inside contrib/docs
+- fd#861 Not enough memory for the PHP module
+- fd#866 change color banner and go_logo
+- fd#931 the message explaining to use fusiondirectory-setup to fix classes loading is wrong
+- fd#945 remove the debian centrics path into fusiondirectory-setup
+- fd#949 we should remove the debian centric dir in contrib/fusiondirectory-apache.conf
+- fd#954 rewrite the INSTALL document on how to install fusiondirectory from tar.gz
+- fd#969 change explication in "Restoring object snapshots"
+- fd#976 the keyword should be renamed as saslRealm to be more in sync with other keywords
+
+#### fusiondirectory-plugins
+- fd-plugins#597 in applications remove the restriction for c:\
+- fd-plugins#619 show opsi based clients should be removed ?
+- fd-plugins#626 fix_munged.php to be converted to perl
+- fd-plugins#631 update the datbase schema in gophon
+- fd-plugins#651 the plinfo fonction should always be the latest function in the .inc files
+- fd-plugins#728 replacing the code that loo into the config file for argonautServer
+- fd-plugins#814 all the templates should be read from /var/cache/fusiondirectory/asterisk
+- fd-plugins#815 all the templates should be read from /var/cache/fusiondirectory/system
+- fd-plugins#816 all the templates should be read from /var/cache/fusiondirectory/mail
+- fd-plugins#817 moving /etc contents to contrib to be more correct for the mail plugin
+- fd-plugins#819 removing the encoding file from /etc and putting it in contrib in the system plugin
+- fd-plugins#843 file from the gofon etc/asterisk plugin should go to contrib/asterisk
+- fd-plugins#865 in the fai partion disk plugin the setup storage checkbox should be checked by default
+- fd-plugins#894 split the argonautconfig service
+- fd-plugins#924 Service names should go into the LDAP
+- fd-plugins#930 renaming the netatalk plugin to netatalkAccount to be more in sync with other plugins
+- fd-plugins#961 gofon plugin is not structured correclty relating to directories
+- fd-plugins#962 gofax plugins dir are wrong
+
+### Removed
+
+#### fusiondirectory
+- fd#171 second mandatory field in department / country is not checked for empty
+- fd#485 removing samba rid and sid from setup
+- fd#495 removing all old GOsaSupportdaemon code
+- fd#496 the mailqueue plugin use goto si for his functions
+- fd#501 i propose to remove the click trough gpl for fusiondirectory setup
+- fd#591 remove leftover of old mysql logging system
+- fd#594 remove the internet explorer 6 suppor for png
+- fd#622 remove the goto-si code in function.inc
+- fd#623 get_gosa_version() should be removed and replace by a static var in variables.inc
+- fd#641 svn_version can be removed in functions.inc
+- fd#647 remove non used function in functions.inc
+- fd#648 remove non used function function obj_is_readable($dn, $object, $attribute) in functions.inc
+- fd#649 remove non used function function saveFilter($a_filter, $values) in functions.inc
+- fd#650 remove obsolete function function set_acl($acl) from class_tabs.inc
+- fd#683 remove the opsi stuff from the fusiondirectory.conf
+- fd#687 now that fusiondirectory is only for kolab22 we should remove kolab from config
+- fd#694 removing the obsoleted and non maintened plugin for phpgw
+- fd#818 removing the encoding file from /etc and putting it in contrib in the system plugin
+- fd#948 remove the fusiondirectory-migrate-users program its has been merge into fusiondirectory-setup
+
+#### fusiondirectory-plugins
+- fd-plugins#618 mail addons should be removed
+- fd-plugins#627 remove goto-si code from class_termDns.inc
+- fd-plugins#630 removing the code for kolab1
+- fd-plugins#638 look if this can really be removed from class_servApacheEditVhost.inc
+- fd-plugins#653 the export xls should be removed from ldapmanager plugin
+- fd-plugins#693 removing the obsoleted and non maintened plugin for phpgw
+- fd-plugins#825 Remove all non needed readme in the plugins
+- fd-plugins#878 the cleanup option should be removed from the argonaut config service because its mandatory
+- fd-plugins#964 remove show opsi based client from the code
+
+### Fixed
+
+#### fusiondirectory
+- fd#330 FSF address incorrect in source code and documentation files
+- fd#409 shadowLastChange Not set if POSIX extensions added latter
+- fd#431 ACL to allow enabling / disabling of user accounts
+- fd#473 fusiondirectory-setup -  Bad tests on directories rights
+- fd#475 fusiondirectory setup --install-plugins should launch the update of FD locales / cache
+- fd#476 problem in fd setup when migrating from gosa2.6
+- fd#477 LDAP query failed : 'root object' is missing
+- fd#484 bug when generating config with the wizard when snapshot not selected
+- fd#488 configuration file path not settable in variables.inc
+- fd#489 error : argonautServer not defined in config - suite
+- fd#491 Hardcoded dir name in install_plugins function
+- fd#492 No tests on directory path entered by user for plugin installation
+- fd#500 the glp licence use for the setup is an old version we sould put there the new version
+- fd#504 Cache subdirectories creation missing step in INSTALL file
+- fd#514 Classes and Locales not correctly upgraded
+- fd#518 skip space in login
+- fd#519 fusiondirectory-setup not operational with perl version < 5.10
+- fd#521 the vacation dir should be a in variables.inc also
+- fd#522 fixed path in setup for php
+- fd#523 searching for fixed path in fusiondirectory
+- fd#556 Incorrect description of posixGroup created
+- fd#565 jpegPhoto automatically changed/altered when updating user information
+- fd#567 FD allows DNS entries with '_' (underscores) in hostnames
+- fd#577 Package descriptions don't work if "+" in name
+- fd#589 Erreur PHP "Undefined variable: _SERVERREMOTE_ADDR"
+- fd#639 when there is no argonaut server we got an error in the log
+- fd#640 when there is no dir with data from fai for the system we got errors in the logs
+- fd#642 in functions.inc the  sambaMachineAccountRDN should be ou=computers
+- fd#646 remove leftover var from copypastehandler.inc
+- fd#654 the export xls should be removed from ldapmanager plugin
+- fd#662 when just typing the fusiondirectory-schem2ldif i got an error
+- fd#663 when running fusiondirectory-schema2ldif i got this error
+- fd#664 fusiondirectory-schema2ldif doesnt insert the return carriage correctly
+- fd#666 fusiondirectory-insert-schema doesnt install goto-mime.schema
+- fd#667 The selection filter for the samba plugins workstations in the user tab don't show windows pc
+- fd#669 in the objectgroup the filter for applications is missing in the select box
+- fd#671 uid=pcwin005$,ou=computers,dc=labo,dc=opensides,dc=be is not a user and should not be show to be migrated in the user section
+- fd#709 the cn of the system admin is not right in fusiondirectory setup
+- fd#714 Duplicated code in index.php
+- fd#715 migrate-repositories option of fusiondirectory-setup should check FAIclass
+- fd#727 replacing the code that loo into the config file for argonautServer
+- fd#730 PHP errors in class_supportDaemon.inc
+- fd#732 error when gosaunittag not defined in ldap in class_supportDaemon.inc
+- fd#741 PHP errors in support Daemon
+- fd#757 PHP_DIR is wrongly put in the include PHP path
+- fd#761 Inconsistency in coding guidelines
+- fd#777 PHP error in password.tpl
+- fd#778 tokens is treated like it needs to be migrated
+- fd#779 Weird french translation in migrate step
+- fd#795 Erreur documentation
+- fd#839 The name of the password generator for nt changed names, so we need to change in the setup
+- fd#844 PHP errors when asking logs on a new server
+- fd#860 Incorrect include path in php_setup.inc file
+- fd#886 the protocol of json rpc (http or https) should not be encoded in the code and be saved into the ldap
+- fd#891 Unable to load the User Nova tab
+- fd#901 check the copyright is correct on all files
+- fd#928 The icon path for password recovery is wrong
+- fd#950 fusiondirectory-setup should not go into the contrib dir
+- fd#952 fusiondirectory-setup doesnt install the plugin correctly from tar.gz
+- fd#960 restoring snapshot isn't working anymore
+- fd#963 spaces into response to prompt break the fusiondirectory setup command
+- fd#973 when switching a user to sasl it doesnt remove the samba hases from the user entry in ldap
+- fd#974 when switching a user to sasl and going to password change it accept to change and generate an error
+- fd#975 when creating a new user and selecting sasl as password method it still write samba entries
+- fd#982 FD-core: setup wizard starts in English regardless of language requested by browser
+- fd#983 FD-core: language list in setup wizard is always (partly) translated into Czech, even in case when wizard started in English
+- fd#990 when the keyword is missing we get php errors in salspassword method
+- fd#992 In setup, automatic option for language should be the first one
+- fd#1005 when there is more than one argonaut server configured it doesnt work at all it just say nothing is there
+
+#### fusiondirectory-plugins
+- fd-plugins#284 provided fusiondirectory dhcp schema modified without changing openldap OID
+- fd-plugins#287 invalid structural object class chain (account/person)
+- fd-plugins#312 dhcp/Parent node on Winstation object not changeable
+- fd-plugins#505 Software Deployment - Debug message visible in production mode
+- fd-plugins#553 dhcpHost not removed if system is removed
+- fd-plugins#562 Error message when I click on the tab "Deployment summary" of a workstation
+- fd-plugins#572 The required field 'NTP server' is empty!
+- fd-plugins#695 Wrong icon for "Systems" option on main FD interface
+- fd-plugins#710 in the nova plugin we don't have the remove button
+- fd-plugins#726 we missed the start/stop/restart button on the argonaut service
+- fd-plugins#731 PHP errors in class_workstationService.inc
+- fd-plugins#733 showing the log interface without log on a unsaved workstation
+- fd-plugins#734 there is a problem when there is not an ntp server added to the workstations, the saving fails
+- fd-plugins#737 PHP errors in goto plugin
+- fd-plugins#748 PHP error caused by servDHCP
+- fd-plugins#766 Address book should follow code guidelines
+- fd-plugins#776 LDAP Manager: incomplete change of field ("," -> ";") separator for CSV files
+- fd-plugins#836 when creating a terminal it yell at me that wake event doesnt exist
+- fd-plugins#841 [openstack-compute] - Mismatch in directory naming
+- fd-plugins#842 [mail-plugin] missing mailMethodKolab class
+- fd-plugins#867 the argonaut-fuse config service display an error vhen saving to ldap
+- fd-plugins#885 the protocol of json rpc (http or https) should not be encoded in the code and be saved into the ldap
+- fd-plugins#890 now we have all the release on the mirror evne non installable one on the filer list in  List of deployment classes and products
+- fd-plugins#897 the serverrepository service should not create ou=xxx,ou=fai if its not an install release
+- fd-plugins#902 check the copyright is correct on all files
+- fd-plugins#920 the package class creation in system deployement has to store the custom release if used into the package class
+- fd-plugins#929 renaming the novauser to novaaccount to be in sync with other plugins
+- fd-plugins#940 DNS record : SRV type is properly useable in dns plugin
+- fd-plugins#958 ACLs should be used in templates
+- fd-plugins#970 Quota interface
+- fd-plugins#972 in the rsyslog plugin we got an error when we try to use the system log plugin
+- fd-plugins#985 when clicking on the rsyslog addons i got ton of error about static methods
+- fd-plugins#986 error when clicking into the nova icon in the my account
+- fd-plugins#988 error when saving a dns service after editing it
+- fd-plugins#989 Problem on Copy & paste wizard for a server or workstation
+- fd-plugins#1000 the dhcp service misses the stop/start/restart button in the service view
+
+## %"FusionDirectory 1.0.2" - 2011-09-26
+
+### Added
+
+#### fusiondirectory
+- fd#138 script for .schema to .ldif conversion
+- fd#371 Please allow a way to do the LDAP integrity checks after FD is installed
+- fd#406 update ldif files to be used in cn=config directly
+- fd#417 Plugins Installation - Lack of documentation
+
+#### fusiondirectory-plugins
+- fd-plugins#379 Add tls management in update_vacation script
+
+### Changed
+
+#### fusiondirectory
+- fd#388 Spool directory hardcoded
+- fd#389 Temporary dir hardcoded in copyPasteHandler class
+- fd#390 fusiondirectory.conf file hardcoded
+- fd#391 Embedeed smarty removal
+- fd#399 the fusion-setup command should be rewritten in perl
+- fd#401 mkntpasswd should be written in perl and check the availability of the library
+- fd#405 repace the actual README.cnconfig by the content from the website
+
+### Removed
+
+#### fusiondirectory
+- fd#274 Same contrib files available in two plugins (krb5 and heimdal)
+
+#### fusiondirectory-plugins
+- fd-plugins#362 removing the syslog part from the log plugin and create a syslog plugin
+- fd-plugins#366 removing the opsi plugin from the official plugins
+
+### Fixed
+
+#### fusiondirectory
+- fd#272 PHP error on client IP detection
+- fd#275 Generic user information: Incorrect Warning
+- fd#281 Last rows of page overlapping with a lot of objects
+- fd#328 [Wizard] Bad temporary file name in Step 1
+- fd#332 fixing the scrolling height in firefox 5
+- fd#334 mkntpasswd creation page
+- fd#349 timezone Berlin is missing
+- fd#365 include check in update-fusiondirectory for cache problems
+- fd#368 FD can end up creating an invalid configuration file
+- fd#370 FD complains about "Missing GOsa extensions" in the generic attributes
+- fd#372 Setup wizard won't fix users in all cases
+- fd#373 updated the loading of the cache file
+- fd#376 Hardened error_handler
+- fd#377 fixed Smarty handling for GOsa 2.6
+- fd#385 modify schema2lidf to not add by default a x-origin tag to the schema file
+- fd#387 changing update-fusiondirectory into fusiondirectory-setup
+- fd#393 "Gérer" instead of "Gèrer"
+- fd#403 test php safe mode
+- fd#404 rewrite the INSTALL doc
+- fd#410 dateofBirth not taken while importing with CSV
+- fd#418 replace update-fusiondirectory by fusiondirectory-setup in all files
+- fd#439 Rpm/Centos/Imagemagick
+- fd#450 Wrong data import for Samba Idmap
+- fd#457 the fusiondirectory-insert-schema should look if the samba.schema is in the ldap tree
+- fd#460 Shell environment variables different in Mageia
+- fd#466 it seems that adding the -y broke the multi parameter in fusiondirectory-setup
+- fd#467 using fusiondirectory-setup to install from tar.gz
+- fd#472 fusiondirectory-setup - Apache_user variable is not defined
+
+#### fusiondirectory-plugins
+- fd-plugins#232 askignfor goto-si even when nothing is in the fusiondirectory.conf
+- fd-plugins#420 the example in queue management for the cvs entry to be put is wrong
+- fd-plugins#464 php error while clic on "apply" after FAI plugin's installation
+- fd-plugins#465 debug screen in FD after FAI plugin installation
+
+## %"FusionDirectory 1.0.1" - 2011-05-02
+
+ - Removed advanced options from setup
+ - Corrected online help
+ - Corrected wording on plugins
+ - Removed the need for magic_quotes_gpc
+ - Removed the fusiondirectory-desktop package
+ - Removed program version checking from svn
+ - Added the apache plugin
+ - Put final logo
+ - Full italian language
+
+## %"FusionDirectory 1.0" - 2011-03-20
+
+- First stable release
+
-- 
GitLab


From 449d98a77cb10296b6d045324dee4c8aa80daa14 Mon Sep 17 00:00:00 2001
From: Jonathan Swaelens <jonathan.swaelens@fusiondirectory.org>
Date: Mon, 10 Oct 2022 13:10:59 +0000
Subject: [PATCH 115/117] :sparkles: feat(ci): Remove build-release

Remove build-release
---
 .gitlab-ci.yml | 13 -------------
 1 file changed, 13 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c0a04ffa1..e4c95c1d4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -118,19 +118,6 @@ build-tarballs:
       - fusiondirectory-1.3.1.tar.gz
     expire_in: 30d
 
-build-release:
-  stage: tarballs
-  only:
-    - tags
-  script:
-    - mkdir "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
-    - cp -a ./* "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
-    - mv "../fusiondirectory-$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')" ./
-  artifacts:
-    name: fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
-    paths:
-    - ./fusiondirectory-"$(grep '%' Changelog.md | head -n1 | cut -d ' ' -f3 | tr -d '"')"
-
 trigger-plugins:
   variables:
     GROUP: $GROUP
-- 
GitLab


From fc96e5a0207854671192f5647e404284304279a9 Mon Sep 17 00:00:00 2001
From: dockx thibault <thibault.dockx@fusiondirectory.org>
Date: Tue, 11 Oct 2022 11:59:35 +0000
Subject: [PATCH 116/117] :sparkles: Feat(Gitlabci) - 1.3 PHPCS Update

Updates phpcs to match fix release within compositor
---
 .gitlab-ci.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e4c95c1d4..1d0db2c7f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -62,7 +62,7 @@ create_php_code_sniffer_rapport:
     - test -d ../dev-tools/ && rm -Rf ../dev-tools/
     - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
-    - phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
+    - /root/.composer/vendor/bin/phpcs --standard=../dev-tools/php-codesniffer-rules/FDStandard/ruleset.xml --file-list=./filelist
 
 create_php_compatibility_rapport:
   image: registry.fusiondirectory.org/fusiondirectory/fd/phpcodesniffer-cli:buster
@@ -75,9 +75,9 @@ create_php_compatibility_rapport:
     - find . -type f -name '*.php' -o -name '*.inc' > ./filelist
     - git clone --depth 1 https://github.com/PHPCompatibility/PHPCompatibility.git ../PHPCompatibility
     - git clone --depth 1 https://github.com/PHPCSStandards/PHPCSUtils.git ../PHPCSUtils
-    - phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
+    - /root/.composer/vendor/bin/phpcs --config-set installed_paths /builds/fusiondirectory/PHPCompatibility,/builds/fusiondirectory/PHPCSUtils
     - PHP_MIN_VERSION=$(grep PHP_MIN_VERSION include/variables_common.inc| cut -d\' -f4| cut -d"." -f 1-2)
-    - phpcs --standard=../dev-tools/php-codesniffer-rules/PHPCompatibility-fd1.3/ruleset.xml --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
+    - /root/.composer/vendor/bin/phpcs --standard=../dev-tools/php-codesniffer-rules/PHPCompatibility-fd1.3/ruleset.xml --runtime-set testVersion $PHP_MIN_VERSION-7.4 --file-list=./filelist
 
 # fusiondirectory-update-locale
 fusiondirectory-update-locale:
-- 
GitLab


From ce14f5947b03f8b7f5a6bc49a15d3fd610f5139c Mon Sep 17 00:00:00 2001
From: Benoit Mortier <benoit.mortier@fusiondirectory.org>
Date: Wed, 12 Oct 2022 10:42:21 +0200
Subject: [PATCH 117/117] :ambulance: feat(php) update the php min version

Signed-off-by: Benoit Mortier <benoit.mortier@fusiondirectory.org>
---
 include/variables_common.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/variables_common.inc b/include/variables_common.inc
index ff4c496f6..06378dd60 100644
--- a/include/variables_common.inc
+++ b/include/variables_common.inc
@@ -73,7 +73,7 @@ define("CONFIGRDN", "cn=config,ou=fusiondirectory,"); /*! Define FusionDirectory
 /*!
  * \brief Minimum PHP version
  */
-define('PHP_MIN_VERSION', '5.6.0');
+define('PHP_MIN_VERSION', '7.3.0');
 
 /*!
  * \brief Toggle crashing on PHP error, used for test suites
-- 
GitLab