[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#927433: marked as done (stretch-pu: package gosa/2.7.4+reloaded2-13+deb9u2)



Your message dated Sat, 18 Jul 2020 13:07:00 +0100
with message-id <b8d89cdfeeda7b6d1ef96a8706a20f9525c2151b.camel@adam-barratt.org.uk>
and subject line Closing requests for fixes included in 9.13 point release
has caused the Debian Bug report #927433,
regarding stretch-pu: package gosa/2.7.4+reloaded2-13+deb9u2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
927433: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927433
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian.org@packages.debian.org
Usertags: pu

Dear stable release team,

now that we could avoid the full backport of gosa from buster to stretch
(see #927306), the Debian Edu team would still like to introduce various
fixes for gosa to the next Debian 9 point release.

Some issues require a fix (RC / important), some are small fixes here and
there that caused people pain and have been resolved in Debian buster's
gosa.

Resorting the patches, the most critical come first:


Critical (appear often, problematic for the users):

+    + Add 1043_smarty-add-on-function-param-types.patch.
+      Fix missing password field, caused by PHP error "parameter 2 expected
+      to be a reference, value given". (Closes: #918578).

-> definitely happens in Debian buster, I have seen it once on Debian
stretch.

+    + Add 1045_dont_use_filter_caching.patch. Disable filter caching via
+      $_SESSION. The approach stores PHP object in $_SESSION; since php7.0
+      this leads to unexpected results and flawed rendering of class_management
+      based listings. (Closes: #907815).

-> issue is reproducable on Debian stretch, may be a security issue in
fact (as sort-of-random / old data gets accessed).

+    + Add 1031_no-context-loose-continues.patch.
+      Avoid stray continue expression. (Closes: #879105).

-> issue occurs on PHP7, rendering of management view gets aborted with error.


Important fixes (as they can break things when they occur):

+    + Add 1029_better-whitespace-cleanup-in-genuid.patch.
+      Prevent gen_uids() from generating UIDs containing blanks.

-> we saw login uids generated with blanks. If the pattern is
3 initial from last name, 3 from first name, and the user is
Chen Wu -> login uid: "wu che" (which is bad on POSIX).

+    + Add 1032_fix_select_acl_role.patch.
+      Use ACL from role definition: Select the correct role.

-> When returning to ACL editing and a role was used for an
ACL and there are more than one role, always the top role (not
the one configured) gets pre-selected.

+    + Add 1033_fix_unable_to_delete_acl_asignment.patch.
+      Fix removing ACLs from objects (e.g. groups).

-> self-explaining.


Really really nice to have (while at it anyway):

+    + Rebase / update 1016_allow-same-user-ids-as-adduser.patch and
+      1026_fix-deprecated-constructor-format.patch.

-> required

+    + Add 1035_acl_override_to_allow_delete_of_group_members.patch.
+      Support member removal from groups, if someone has the right
+      to edit the group.

-> self-explaining

+    + Add 1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch.
+      Propagate shadow expiry from user templates to created user objects.

-> otherwise, the user won't be able to store the shadowExpiry value.

+    + Add 1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_
+      tmplate_setting.patch. Fix date calculations for sambaKickoffTime and
+      propagation from template to created user object.

-> self-explaining

+    + Add 1040_inactive_pwd_fields_when_using_pwd_proposal.patch.
+      Disable password entry text fields when password proposal is to be used.

-> if people use the password proposal feature/hook (activatable via a
radio button), the password entry field should be disabled. Otherwise, users
are able to select the proposed password _and_ enter one of their own and
wonder, why the entered password won't work.

+    + Add 1041_ref_param_error_in_My_Parser.patch.
+      Compat fix for PHP > 5.4. Hand over real variable to function.

-> self-explaining


Cosmetic fixes (while at it anyway):

+    + Add 1030_column-header-titles-group-members.patch.
+      Fix column titles in member lists of POSIX groups.
+    + Update 1026_fix-deprecated-constructor-format.patch. Drop an unwanted
+      find+replace artefact in class_userFilter.
+    + Add 1034_remove_superfluous__get_post__call_from__save_object.patch.
+      class_sortableListing: Remove superfluous get_post() call
+      from_ save_object()
+    + Add 1036_remove_double_groupList_setEditable_setting.patch.
+      Remove duplicate setEditable() for POSIX group lists.
+    + Add 1038_shadowexpire_in_one_line.patch.
+      Show shadow expiry (esp. the calendar icon) in one line on screen (html
+      template adjustment).


light+love,
Mike

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-2-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru gosa-2.7.4+reloaded2/debian/changelog gosa-2.7.4+reloaded2/debian/changelog
--- gosa-2.7.4+reloaded2/debian/changelog	2018-07-04 09:15:17.000000000 +0200
+++ gosa-2.7.4+reloaded2/debian/changelog	2019-04-19 19:03:52.000000000 +0200
@@ -1,3 +1,57 @@
+gosa (2.7.4+reloaded2-13+deb9u2) stretch; urgency=medium
+
+  [ Mike Gabriel ]
+  * debian/patches:
+    + Add 1029_better-whitespace-cleanup-in-genuid.patch.
+      Prevent gen_uids() from generating UIDs containing blanks.
+    + Add 1030_column-header-titles-group-members.patch.
+      Fix column titles in member lists of POSIX groups.
+    + Add 1043_smarty-add-on-function-param-types.patch.
+      Fix missing password field, caused by PHP error "parameter 2 expected
+      to be a reference, value given". (Closes: #918578).
+    + Update 1026_fix-deprecated-constructor-format.patch. Drop an unwanted
+      find+replace artefact in class_userFilter.
+    + Add 1045_dont_use_filter_caching.patch. Disable filter caching via
+      $_SESSION. The approach stores PHP object in $_SESSION; since php7.0
+      this leads to unexpected results and flawed rendering of class_management
+      based listings. (Closes: #907815).
+    + Rebase / update 1016_allow-same-user-ids-as-adduser.patch and
+      1026_fix-deprecated-constructor-format.patch.
+
+  [ Benjamin Zapiec ]
+  * debian/patches:
+    + Add 1031_no-context-loose-continues.patch.
+      Avoid stray continue expression. (Closes: #879105).
+
+  [ Christian Schwamborn ]
+  * debian/patches:
+    + Add 1032_fix_select_acl_role.patch.
+      Use ACL from role definition: Select the correct role.
+    + Add 1033_fix_unable_to_delete_acl_asignment.patch.
+      Fix removing ACLs from objects (e.g. groups).
+    + Add 1034_remove_superfluous__get_post__call_from__save_object.patch.
+      class_sortableListing: Remove superfluous get_post() call
+      from_ save_object()
+    + Add 1035_acl_override_to_allow_delete_of_group_members.patch.
+      Support member removal from groups, if someone has the right
+      to edit the group.
+    + Add 1036_remove_double_groupList_setEditable_setting.patch.
+      Remove duplicate setEditable() for POSIX group lists.
+    + Add 1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch.
+      Propagate shadow expiry from user templates to created user objects.
+    + Add 1038_shadowexpire_in_one_line.patch.
+      Show shadow expiry (esp. the calendar icon) in one line on screen (html
+      template adjustment).
+    + Add 1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_
+      tmplate_setting.patch. Fix date calculations for sambaKickoffTime and
+      propagation from template to created user object.
+    + Add 1040_inactive_pwd_fields_when_using_pwd_proposal.patch.
+      Disable password entry text fields when password proposal is to be used.
+    + Add 1041_ref_param_error_in_My_Parser.patch.
+      Compat fix for PHP > 5.4. Hand over real variable to function.
+
+ -- Mike Gabriel <sunweaver@debian.org>  Fri, 19 Apr 2019 19:03:52 +0200
+
 gosa (2.7.4+reloaded2-13+deb9u1) stretch-security; urgency=medium
 
   * debian/patches:
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1016_allow-same-user-ids-as-adduser.patch gosa-2.7.4+reloaded2/debian/patches/1016_allow-same-user-ids-as-adduser.patch
--- gosa-2.7.4+reloaded2/debian/patches/1016_allow-same-user-ids-as-adduser.patch	2018-07-04 09:14:21.000000000 +0200
+++ gosa-2.7.4+reloaded2/debian/patches/1016_allow-same-user-ids-as-adduser.patch	2019-04-19 19:03:52.000000000 +0200
@@ -51,18 +51,3 @@
      }
      if (!tests::is_url($this->labeledURI)){
        $message[]= msgPool::invalid(_("Homepage"), "", "", "http://www.your-domain.com/yourname";);
---- a/fai/admin/fai/class_faiTemplateEntry.inc
-+++ b/fai/admin/fai/class_faiTemplateEntry.inc
-@@ -254,11 +254,7 @@
-     if($this->group == ""){
-       $message[] = msgPool::required(_("Group"));
-     }elseif (!tests::is_uid($this->group)){
--      if (strict_uid_mode()){
--        $message[]= msgPool::invalid(_("Group"), $this->group, "/[a-z0-9_-]/");
--      } else {
--        $message[]= msgPool::invalid(_("Group"), $this->group, "/[a-z0-9_-]/i");
--      }
-+      $message[]= msgPool::invalid(_("Group"), $this->group, "/".get_uid_regexp()."/");
-     }
- 
-     return ($message);
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1026_fix-deprecated-constructor-format.patch gosa-2.7.4+reloaded2/debian/patches/1026_fix-deprecated-constructor-format.patch
--- gosa-2.7.4+reloaded2/debian/patches/1026_fix-deprecated-constructor-format.patch	2018-07-04 09:14:21.000000000 +0200
+++ gosa-2.7.4+reloaded2/debian/patches/1026_fix-deprecated-constructor-format.patch	2019-04-19 19:03:52.000000000 +0200
@@ -300,390 +300,6 @@
  
          $this->DisplayName = _("DNS service");
  
---- a/fai/admin/fai/class_askClassName.inc
-+++ b/fai/admin/fai/class_askClassName.inc
-@@ -13,11 +13,11 @@
-   var $ClassAlreadyExists = false;
-   var $parent;
- 
--  function askClassName (&$config,$dn,$ui,$objectClass)
-+  function __construct(&$config,$dn,$ui,$objectClass)
-   {
-     $this->ui = $ui;
-     $this->objectClass = $objectClass;
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-   }
- 
-   function execute()
---- a/fai/admin/fai/class_debconfTemplate.inc
-+++ b/fai/admin/fai/class_debconfTemplate.inc
-@@ -8,7 +8,7 @@
-   var $template= array();
- 
- 
--  function debconf($language= "")
-+  function __construct($language= "")
-   {
-     $this->set_language($language);
-   }
---- a/fai/admin/fai/class_faiDiskEntry.inc
-+++ b/fai/admin/fai/class_faiDiskEntry.inc
-@@ -26,9 +26,9 @@
-   
-   var $lvmDevices          = array();
- 
--  function faiDiskEntry (&$config, $dn= NULL,$parent,$disk,$type)
-+  function __construct(&$config, $dn= NULL,$parent,$disk,$type)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-   
-     // Set default attributes 
-     $this->parent = $parent;
---- a/fai/admin/fai/class_faiHookEntry.inc
-+++ b/fai/admin/fai/class_faiHookEntry.inc
-@@ -27,9 +27,9 @@
-   var $write_protect = FALSE;
- 
-   
--  function faiHookEntry (&$config, $dn= NULL,$object=false)
-+  function __construct(&$config, $dn= NULL,$object=false)
-   {
--    plugin::plugin ($config, NULL);
-+    plugin::__construct ($config, NULL);
-     if($dn != "new"){
-       $this->orig_cn= $object['cn'];
-       $this->dn=$object['dn'];
---- a/fai/admin/fai/class_faiHook.inc
-+++ b/fai/admin/fai/class_faiHook.inc
-@@ -33,10 +33,10 @@
-   var $FAIstate         = "";  
-   var $ui;
- 
--  function faiHook (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     /* If "dn==new" we try to create a new entry
-      * Else we must read all objects from ldap which belong to this entry.
---- a/fai/admin/fai/class_faiPackageConfiguration.inc
-+++ b/fai/admin/fai/class_faiPackageConfiguration.inc
-@@ -20,9 +20,9 @@
-       @param  String  The release name (e.g. edge)
-       @param  Array   The current package configuration.
-    */
--  function faiPackageConfiguration (&$config, $dn= NULL,$obj,$release,$pkg_config)
-+  function __construct(&$config, $dn= NULL,$obj,$release,$pkg_config)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-     $this->obj = $obj;
-     $this->release = $release;
-     $this->pkg_config = $pkg_config;
---- a/fai/admin/fai/class_faiPackage.inc
-+++ b/fai/admin/fai/class_faiPackage.inc
-@@ -55,10 +55,10 @@
-       "pending", "dpkgc" );
- 
- 
--  function faiPackage (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     /* If "dn==new" we try to create a new entry
-      * Else we must read all objects from ldap which belong to this entry.
---- a/fai/admin/fai/class_faiPartitionTableEntry.inc
-+++ b/fai/admin/fai/class_faiPartitionTableEntry.inc
-@@ -16,9 +16,9 @@
-   var $old_cn               = "";
-   var $parent               = null;
- 
--  function faiPartitionTableEntry (&$config, $dn= NULL,&$parent,$disk=false)
-+  function __construct(&$config, $dn= NULL,&$parent,$disk=false)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-     $this->UsedAttrs  = array("cn","description","FAIpartitionType","FAIpartitionNr","FAIfsType","FAImountPoint","FAIpartitionSize",
-                          "FAImountOptions","FAIfsOptions","FAIpartitionFlags");
- 
---- a/fai/admin/fai/class_faiPartitionTable.inc
-+++ b/fai/admin/fai/class_faiPartitionTable.inc
-@@ -25,10 +25,10 @@
- 
-   var $view_logged      = FALSE;
- 
--  function faiPartitionTable (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     /* If "dn==new" we try to create a new entry
-      * Else we must read all objects from ldap which belong to this entry.
---- a/fai/admin/fai/class_faiProfile.inc
-+++ b/fai/admin/fai/class_faiProfile.inc
-@@ -25,10 +25,10 @@
- 
-     var $classSelect;
- 
--    function faiProfile(&$config, $dn= NULL)
-+    function __construct(&$config, $dn= NULL)
-     {
-         /* Load Attributes */
--        plugin::plugin ($config, $dn);
-+        plugin::__construct ($config, $dn);
-         $ldap=$this->config->get_ldap_link();
- 
-         $this->ui = get_userinfo();
---- a/fai/admin/fai/class_faiScriptEntry.inc
-+++ b/fai/admin/fai/class_faiScriptEntry.inc
-@@ -23,9 +23,9 @@
-     var $enc_after_edit = "";
-     var $write_protect = FALSE;
- 
--    function faiScriptEntry (&$config, $dn= NULL,$object=false)
-+    function __construct(&$config, $dn= NULL,$object=false)
-     {
--        plugin::plugin ($config, NULL);
-+        plugin::__construct ($config, NULL);
-         if($dn != "new"){
-             $this->orig_cn= $object['cn'];
-             $this->dn=$object['dn'];
---- a/fai/admin/fai/class_faiScript.inc
-+++ b/fai/admin/fai/class_faiScript.inc
-@@ -37,10 +37,10 @@
-   var $view_logged = FALSE;
-   var $ui;
- 
--  function faiScript (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     /* If "dn==new" we try to create a new entry
-      * Else we must read all objects from ldap which belong to this entry.
---- a/fai/admin/fai/class_faiSummaryTab.inc
-+++ b/fai/admin/fai/class_faiSummaryTab.inc
-@@ -33,9 +33,9 @@
-   var $parent         = NULL; 
-   var $ui             = NULL;
- 
--  function faiSummaryTab(&$config,$dn)//,$parent)
-+  function __construct(&$config,$dn)//,$parent)
-   {
--    plugin::plugin($config,$dn);//,$parent);
-+    plugin::__construct($config,$dn);//,$parent);
- 
-     $this->ui = get_userinfo();
- 
---- a/fai/admin/fai/class_faiTemplateEdit.inc
-+++ b/fai/admin/fai/class_faiTemplateEdit.inc
-@@ -13,9 +13,9 @@
-   var $write_protect = FALSE;
-   var $mb_extension = TRUE;
- 
--  function faiTemplateEdit (&$config, $dn, $value)
-+  function __construct(&$config, $dn, $value)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-     if(!function_exists("mb_detect_encoding")){
-       $this->mb_extension = FALSE;
-     }else{
---- a/fai/admin/fai/class_faiTemplateEntry.inc
-+++ b/fai/admin/fai/class_faiTemplateEntry.inc
-@@ -23,9 +23,9 @@
-   var $parent        = NULL;
-   var $FAIstate      = "";
-   
--  function faiTemplateEntry (&$config, $dn= NULL,$object=false)
-+  function __construct(&$config, $dn= NULL,$object=false)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     if((isset($object['cn'])) && (!empty($object['cn']))){
-       $this->orig_cn= $object['cn'];
---- a/fai/admin/fai/class_faiTemplate.inc
-+++ b/fai/admin/fai/class_faiTemplate.inc
-@@ -34,10 +34,10 @@
-   var $ui;
-   var $view_logged      = FALSE;
- 
--  function faiTemplate (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     /* If "dn==new" we try to create a new entry
-      * Else we must read all objects from ldap which belong to this entry.
---- a/fai/admin/fai/class_faiVariableEntry.inc
-+++ b/fai/admin/fai/class_faiVariableEntry.inc
-@@ -16,9 +16,9 @@
-   var $parent        = NULL;
-   var $FAIstate      = "";
-   
--  function faiVariableEntry (&$config, $dn= NULL,$object=false)
-+  function __construct(&$config, $dn= NULL,$object=false)
-   {
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
-     if((isset($object['cn'])) && (!empty($object['cn']))){
-       $this->orig_cn= $object['cn'];
-       $this->dn=$object['dn'];
---- a/fai/admin/fai/class_faiVariable.inc
-+++ b/fai/admin/fai/class_faiVariable.inc
-@@ -33,10 +33,10 @@
-   var $ui   ;
-   var $view_logged      = FALSE;
- 
--  function faiVariable (&$config, $dn= NULL)
-+  function __construct(&$config, $dn= NULL)
-   {
-     /* Load Attributes */
--    plugin::plugin ($config, $dn);
-+    plugin::__construct ($config, $dn);
- 
-     if($dn != "new"){
-       $this->dn =$dn;
---- a/fai/admin/fai/tabsHook.inc
-+++ b/fai/admin/fai/tabsHook.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsHook($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn,$category);
-+	tabs::__construct($config, $data, $dn,$category);
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
-   }
---- a/fai/admin/fai/tabsPackage.inc
-+++ b/fai/admin/fai/tabsPackage.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsPackage($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn,$category);
-+	tabs::__construct($config, $data, $dn,$category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/fai/tabsPartition.inc
-+++ b/fai/admin/fai/tabsPartition.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsPartition($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn,$category);
-+	tabs::__construct($config, $data, $dn,$category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/fai/tabsProfile.inc
-+++ b/fai/admin/fai/tabsProfile.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsProfile($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn,$category);
-+	tabs::__construct($config, $data, $dn,$category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/fai/tabsScript.inc
-+++ b/fai/admin/fai/tabsScript.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsScript($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn,$category);
-+	tabs::__construct($config, $data, $dn,$category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/fai/tabsTemplate.inc
-+++ b/fai/admin/fai/tabsTemplate.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsTemplate($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn, $category);
-+	tabs::__construct($config, $data, $dn, $category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/fai/tabsVariable.inc
-+++ b/fai/admin/fai/tabsVariable.inc
-@@ -5,9 +5,9 @@
-   var $base= "";
-   var $parent ="";
- 
--  function tabsVariable($config, $data, $dn,$category)
-+  function __construct($config, $data, $dn,$category)
-   {
--	tabs::tabs($config, $data, $dn, $category);
-+	tabs::__construct($config, $data, $dn, $category);
- 
- 	/* Add references/acls/snapshots */
- #	$this->addSpecialTabs();
---- a/fai/admin/systems/services/repository/class_servRepository.inc
-+++ b/fai/admin/systems/services/repository/class_servRepository.inc
-@@ -20,9 +20,9 @@
- 
-     var $repositoryMangement = NULL;
- 
--    function servrepository (&$config, $dn= NULL, $parent= NULL)
-+    function __construct(&$config, $dn= NULL, $parent= NULL)
-     {
--        plugin::plugin ($config, $dn,$parent);
-+        plugin::__construct ($config, $dn,$parent);
- 
-         $this->DisplayName = _("Repository service");
- 
---- a/fai/admin/systems/services/repository/class_servRepositorySetup.inc
-+++ b/fai/admin/systems/services/repository/class_servRepositorySetup.inc
-@@ -17,9 +17,9 @@
-     var $cn               = "";
-     var $parent           = "";
- 
--    function servRepositorySetup (&$config, $dn= NULL,$data = false)
-+    function __construct(&$config, $dn= NULL,$data = false)
-     {
--        plugin::plugin ($config, $dn);
-+        plugin::__construct ($config, $dn);
- 
-         if(isset($this->attrs['cn'][0])){
-             $this->cn=$this->attrs['cn'][0];
 --- a/gofax/admin/systems/services/gofax/class_goFaxServer.inc
 +++ b/gofax/admin/systems/services/gofax/class_goFaxServer.inc
 @@ -24,9 +24,9 @@
@@ -1083,23 +699,6 @@
      $this->dn= $dn;
 --- a/gosa-core/include/class_userFilter.inc
 +++ b/gosa-core/include/class_userFilter.inc
-@@ -16,13 +16,13 @@
-    */
-   static function userFilteringAvailable()
-   {
--    if(!session::is_set('userFilter::userFilteringAvailable')){
-+    if(!session::is_set('userFilter::__constructingAvailable')){
-       global $config;
-       $ldap = $config->get_ldap_link();
-       $ocs = $ldap->get_objectclasses();
--      session::set('userFilter::userFilteringAvailable', isset($ocs['gosaProperties']));
-+      session::set('userFilter::__constructingAvailable', isset($ocs['gosaProperties']));
-     }
--    return(session::get('userFilter::userFilteringAvailable'));
-+    return(session::get('userFilter::__constructingAvailable'));
-   }
-   
-  
 @@ -32,7 +32,7 @@
    {
      // Initialize this plugin with the users dn to gather user defined filters.
@@ -2267,31 +1866,6 @@
  
          // Get attributes from parent object 
          if(isset($this->attrs['uid'])){
---- a/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc
-+++ b/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc
-@@ -52,9 +52,9 @@
-       @param  String  The object dn we are currently editing.
-       @param  Object  The parent object.
-    */ 
--  public function goKrbServer(&$config,$dn,$parent)
-+  public function __construct(&$config,$dn,$parent)
-   {
--    goService::goService($config,$dn);
-+    goService::__construct($config,$dn);
-     $this->DisplayName = _("Kerberos service");
-     $this->parent = $parent;
- 
---- a/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc
-+++ b/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc
-@@ -57,7 +57,7 @@
-   var $attrs                  = array();
-   var $is_account             = FALSE;
- 
--	function passwordMethodheimdal(&$config,$dn = "new")  
-+	function __construct(&$config,$dn = "new")  
- 	{
-     $this->config= $config;
-     $this->parent_dn = $dn;
 --- a/kolab/admin/systems/services/kolab/class_servKolab.inc
 +++ b/kolab/admin/systems/services/kolab/class_servKolab.inc
 @@ -37,14 +37,14 @@
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1029_better-whitespace-cleanup-in-genuid.patch gosa-2.7.4+reloaded2/debian/patches/1029_better-whitespace-cleanup-in-genuid.patch
--- gosa-2.7.4+reloaded2/debian/patches/1029_better-whitespace-cleanup-in-genuid.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1029_better-whitespace-cleanup-in-genuid.patch	2019-04-19 18:55:25.000000000 +0200
@@ -0,0 +1,16 @@
+Description: Remove all white-spaces from attributes before generating the UIDs.
+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+Abstract:
+ During development of the GOsa² SchoolManager Add-On, it was discovered that in
+ some cases the gen_uids() function would return UIDs that contained blanks.
+
+--- a/gosa-core/include/functions.inc
++++ b/gosa-core/include/functions.inc
+@@ -3804,6 +3804,7 @@
+              $value = iconv('UTF-8', 'US-ASCII//TRANSLIT', $value);
+         }
+         $value = preg_replace('/[^(\x20-\x7F)]*/','',$value);
++        $value = preg_replace('/\s/', '', $value);
+         $attributes[$name] = strtolower($value);
+     }
+     
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1030_column-header-titles-group-members.patch gosa-2.7.4+reloaded2/debian/patches/1030_column-header-titles-group-members.patch
--- gosa-2.7.4+reloaded2/debian/patches/1030_column-header-titles-group-members.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1030_column-header-titles-group-members.patch	2019-04-19 18:56:42.000000000 +0200
@@ -0,0 +1,14 @@
+Description: Fix column titles in member lists of POSIX groups
+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+
+--- a/gosa-core/plugins/admin/groups/class_group.inc
++++ b/gosa-core/plugins/admin/groups/class_group.inc
+@@ -207,7 +207,7 @@
+         $this->memberList->setEditable(false);
+         $this->memberList->setWidth("100%");
+         $this->memberList->setHeight("300px");
+-        $this->memberList->setHeader(array('~',_("Given name"),_("Surname"),_("UID")));
++        $this->memberList->setHeader(array('~',_("Surname"),_("Given name"),_("UID")));
+         $this->memberList->setColspecs(array('20px','*','*','*','20px'));
+         $this->memberList->setDefaultSortColumn(1);
+ 
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1031_no-context-loose-continues.patch gosa-2.7.4+reloaded2/debian/patches/1031_no-context-loose-continues.patch
--- gosa-2.7.4+reloaded2/debian/patches/1031_no-context-loose-continues.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1031_no-context-loose-continues.patch	2019-04-19 18:57:06.000000000 +0200
@@ -0,0 +1,17 @@
+Description: Avoid stray continue. Fails with PHP7.
+Author: Benjamin Zapiec <bzapiec@gonicus.de>
+
+--- a/mail/admin/groups/mail/class_groupMail.inc
++++ b/mail/admin/groups/mail/class_groupMail.inc
+@@ -1164,7 +1164,10 @@
+      */
+     function addAlternate($address)
+     {
+-        if(empty($address)) continue;
++        if(empty($address)) {
++            return "";
++        }
++
+         $ldap= $this->config->get_ldap_link();
+ 
+         $address= strtolower($address);
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1032_fix_select_acl_role.patch gosa-2.7.4+reloaded2/debian/patches/1032_fix_select_acl_role.patch
--- gosa-2.7.4+reloaded2/debian/patches/1032_fix_select_acl_role.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1032_fix_select_acl_role.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,14 @@
+Description: Use ACL from role definition: Select the correct role.
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/include/class_acl.inc	2017-10-17 15:59:31.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/include/class_acl.inc	2018-01-23 07:46:01.234550732 +0000
+@@ -423,7 +423,7 @@
+             if(isset($_POST['selected_role']) && $_POST['aclType'] == 'role'){
+                 $this->aclContents = "";
+                 $this->aclContents = base64_decode(get_post('selected_role'));
+-            }else{
++            } elseif (isset($_POST['cancel_new_acl'])) {
+                 if(is_string($this->aclContents))
+                     $this->aclContents = array();
+             }
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1033_fix_unable_to_delete_acl_asignment.patch gosa-2.7.4+reloaded2/debian/patches/1033_fix_unable_to_delete_acl_asignment.patch
--- gosa-2.7.4+reloaded2/debian/patches/1033_fix_unable_to_delete_acl_asignment.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1033_fix_unable_to_delete_acl_asignment.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,13 @@
+Description: Fix removing ACLs from objects (e.g. groups)
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/include/class_acl.inc	2017-10-17 15:59:31.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/include/class_acl.inc	2018-01-23 07:48:34.985241374 +0000
+@@ -285,6 +285,7 @@
+         if(!$this->list){ 
+             $this->list = new sortableListing($this->gosaAclEntry,array(),TRUE);
+             $this->list->setDeleteable(true);
++            $this->list->setInstantDelete(true);
+             $this->list->setEditable(true);
+             $this->list->setColspecs(array('*'));
+             $this->list->setWidth("100%");
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1034_remove_superfluous__get_post__call_from__save_object.patch gosa-2.7.4+reloaded2/debian/patches/1034_remove_superfluous__get_post__call_from__save_object.patch
--- gosa-2.7.4+reloaded2/debian/patches/1034_remove_superfluous__get_post__call_from__save_object.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1034_remove_superfluous__get_post__call_from__save_object.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,16 @@
+Description: class_sortableListing: Remove superfluous get_post() call from_ save_object()
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/include/class_sortableListing.inc	2017-10-17 15:59:31.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/include/class_sortableListing.inc	2018-01-23 07:50:54.616057235 +0000
+@@ -425,10 +425,8 @@
+         $this->action = "";
+         if (strpos($this->acl, 'd') !== false){
+             foreach ($_POST as $key => $value) {
+-                $value = get_post($key);
+                 if (preg_match('/^del_'.$this->id.'_([0-9]+)$/', $key, $matches)) {
+ 
+-
+                     if(!isset($this->mapping[$matches[1]])) return;
+ 
+                     $this->active_index= $this->mapping[$matches[1]];
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1035_acl_override_to_allow_delete_of_group_members.patch gosa-2.7.4+reloaded2/debian/patches/1035_acl_override_to_allow_delete_of_group_members.patch
--- gosa-2.7.4+reloaded2/debian/patches/1035_acl_override_to_allow_delete_of_group_members.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1035_acl_override_to_allow_delete_of_group_members.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,18 @@
+Description: Support member removal from groups, if someone has the right to edit the group.
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/admin/groups/class_group.inc	2017-10-17 15:59:31.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/admin/groups/class_group.inc	2018-01-23 07:54:13.150381395 +0000
+@@ -236,6 +236,12 @@
+ 
+             // Check if list is available, depends on multi- or sinlge- group editing. 
+             if($this->$list){
++                // ensure we can delete group members if we have
++                // write permission to the memberUid attribute
++                $mu_acl = $this->getacl("memberUid");
++                if (preg_match("/w/",$mu_acl) && !preg_match("/d/",$mu_acl)) {
++                    $this->$list->setAcl($mu_acl.'d');
++                }
+                 $this->$list->save_object();
+                 $action = $this->$list->getAction();
+                 if($action['action'] == 'delete' && preg_match("/w/",$this->getacl("memberUid"))){
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1036_remove_double_groupList_setEditable_setting.patch gosa-2.7.4+reloaded2/debian/patches/1036_remove_double_groupList_setEditable_setting.patch
--- gosa-2.7.4+reloaded2/debian/patches/1036_remove_double_groupList_setEditable_setting.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1036_remove_double_groupList_setEditable_setting.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,13 @@
+Description: Remove duplicate setEditable() for POSIX group lists.
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/personal/posix/class_posixAccount.inc	2018-01-23 07:58:31.308215370 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/personal/posix/class_posixAccount.inc	2018-01-23 07:58:45.676095237 +0000
+@@ -254,7 +254,6 @@
+     $this->groupList->setEditable(false);
+     $this->groupList->setDeleteable(true);
+     $this->groupList->setInstantDelete(false);
+-    $this->groupList->setEditable(false);
+     $this->groupList->setReorderable(false);
+     $this->groupList->setDefaultSortColumn(1);
+     $this->groupList->setHeight("150px");
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch gosa-2.7.4+reloaded2/debian/patches/1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch
--- gosa-2.7.4+reloaded2/debian/patches/1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,15 @@
+Description: Propagate shadow expiry from user templates to created user objects.
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- a/gosa-core/plugins/personal/posix/class_posixAccount.inc
++++ b/gosa-core/plugins/personal/posix/class_posixAccount.inc
+@@ -1147,7 +1147,8 @@
+     }
+ 
+     /* Adjust shadow checkboxes */
+-    foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive") as $val){
++    foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive",
++          "shadowExpire") as $val){
+       if ($this->$val != 0){
+         $oval= "activate_".$val;
+         $this->$oval= "1";
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1038_shadowexpire_in_one_line.patch gosa-2.7.4+reloaded2/debian/patches/1038_shadowexpire_in_one_line.patch
--- gosa-2.7.4+reloaded2/debian/patches/1038_shadowexpire_in_one_line.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1038_shadowexpire_in_one_line.patch	2019-04-19 18:59:02.000000000 +0200
@@ -0,0 +1,18 @@
+Description: Show shadow expiry (esp. the calendar icon) in one line on screen (html template adjustment).
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/personal/posix/posix_shadow.tpl	2010-04-13 13:15:15.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/personal/posix/posix_shadow.tpl	2018-02-12 13:36:07.283901219 +0000
+@@ -58,10 +58,10 @@
+ 
+     <table summary="{t}Password expiration settings{/t}" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+-      <td>
++      <td style="vertical-align:middle">
+        {t}Password expires on{/t}&nbsp;
+       </td>
+-      <td style='width:125px'>
++      <td style='width:200px'>
+ 
+        {render acl=$shadowExpireACL}
+         <input type="text" id="shadowExpire" name="shadowExpire" class="date" style='width:100px' value="{$shadowExpire}">
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_tmplate_setting.patch gosa-2.7.4+reloaded2/debian/patches/1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_tmplate_setting.patch
--- gosa-2.7.4+reloaded2/debian/patches/1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_tmplate_setting.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_tmplate_setting.patch	2019-04-19 19:01:04.000000000 +0200
@@ -0,0 +1,64 @@
+Description: Fix date calculations for sambaKickoffTime and propagation from template to created user object.
+Author: Christian Schwamborn <cs@imap.architektur.tu-darmstadt.de>
+
+--- gosa-2.7.4+reloaded2.a/samba/personal/samba/class_sambaAccount.inc	2017-10-17 15:59:31.000000000 +0000
++++ gosa-2.7.4+reloaded2.b/samba/personal/samba/class_sambaAccount.inc	2018-02-12 13:43:03.437594823 +0000
+@@ -144,9 +144,13 @@
+         $this->loadFlagsFromSource($this->attrs);
+ 
+         // Set kickOffTime to date
+-        if(isset($this->attrs['sambaKickoffTime'][0])){
+-            $this->sambaKickoffTime = date("d.m.Y", $this->sambaKickoffTime);
+-            $this->flag_sambaKickoffTime = TRUE;
++        if (isset($this->attrs['sambaKickoffTime'][0])){
++            if ($this->sambaKickoffTime == 2147483647){
++                $this->sambaKickoffTime = "";
++            } elseif (!$this->sambaKickoffTime == ""){
++                $this->sambaKickoffTime = date("d.m.Y", $this->sambaKickoffTime);
++                $this->flag_sambaKickoffTime = TRUE;
++            }
+         }
+     }
+ 
+@@ -859,10 +863,10 @@
+         /* Call common method to give check the hook */
+         $message= plugin::check();
+ 
+-        if($this->flag_sambaKickoffTime){
+-            if(!preg_match("/^[0-3][0-9]\.[0-1][0-9]\.([0-9]){4}$/",$this->sambaKickoffTime)){
++        if ($this->flag_sambaKickoffTime){
++            if (!preg_match("/^[0-3][0-9]\.[0-1][0-9]\.([0-9]){4}$/",$this->sambaKickoffTime)){
+                 $message[] = msgPool::invalid(_("Account expires after"));
+-            }elseif(!strtotime($this->sambaKickoffTime) || strtotime($this->sambaKickoffTime) >= 2147483647){
++            } elseif (!strtotime($this->sambaKickoffTime) || strtotime($this->sambaKickoffTime) > 2147483647){
+                 $message[] = msgPool::invalid(_("Account expires after"));
+             }
+         }
+@@ -1165,6 +1169,18 @@
+ 
+         // Load flags from source.
+         $this->loadFlagsFromSource($this->attrs);
++
++        /* Convert sambaKickoffTime for usage */
++        if ($this->sambaKickoffTime == 2147483647){
++            $this->sambaKickoffTime = "";
++        } elseif (!$this->sambaKickoffTime == "") {
++            $this->sambaKickoffTime = date("d.m.Y", $this->sambaKickoffTime);
++        }
++
++        /* Adjust sambaKickoffTime checkbox */
++        if (!$this->sambaKickoffTime == ""){
++            $this->flag_sambaKickoffTime = TRUE;
++        }
+     }
+ 
+ 
+@@ -1262,7 +1278,7 @@
+         if(in_array_strict("sambaKickoffTime", $this->multi_boxes) && $this->flag_sambaKickoffTime){
+             if(!preg_match("/^[0-3][0-9]\.[0-1][0-9]\.([0-9]){4}$/",$this->sambaKickoffTime)){
+                 $message[] = msgPool::invalid(_("Account expires after"));
+-            }elseif(!strtotime($this->sambaKickoffTime) || strtotime($this->sambaKickoffTime) >= 2147483647){
++            } elseif (!strtotime($this->sambaKickoffTime) || strtotime($this->sambaKickoffTime) > 2147483647){
+                 $message[] = msgPool::invalid(_("Account expires after"));
+             }
+         }
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1040_inactive_pwd_fields_when_using_pwd_proposal.patch gosa-2.7.4+reloaded2/debian/patches/1040_inactive_pwd_fields_when_using_pwd_proposal.patch
--- gosa-2.7.4+reloaded2/debian/patches/1040_inactive_pwd_fields_when_using_pwd_proposal.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1040_inactive_pwd_fields_when_using_pwd_proposal.patch	2019-04-19 19:01:27.000000000 +0200
@@ -0,0 +1,205 @@
+Description: Disable password fields if password proposal gets selected as new password by the user.
+Author: Christian Schwamborn <christian.schwamborn@nswit.de>
+
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/admin/users/password.tpl	2010-10-14 18:07:10.000000000 +0200
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/admin/users/password.tpl	2018-06-27 11:42:01.895777889 +0200
+@@ -39,7 +39,8 @@
+   <table summary="{t}Password input dialog{/t}" cellpadding=4 border=0>
+     <tr>
+       <td>
+-        <input type='radio' value='1' name='proposalSelected' id='proposalSelected_true' onClick='updateFields();'
++        <input type='radio' value='1' name='proposalSelected' id='proposalSelected_true'
++            onClick="changeState('new_password'); changeState('repeated_password');"
+             {if $proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_true">{t}Use proposal{/t}</LABEL></b>
+       </td>
+       <td>
+@@ -57,7 +58,8 @@
+     </tr>
+     <tr>
+       <td>
+-        <input type='radio' value='0' name='proposalSelected' id='proposalSelected_false' onClick='updateFields();'
++        <input type='radio' value='0' name='proposalSelected' id='proposalSelected_false'
++            onClick="changeState('new_password'); changeState('repeated_password'); nextfield='new_password'; focus_field('new_password');"
+             {if !$proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_false">{t}Manually specify a password{/t}</LABEL></b>
+       </td>
+     </tr>
+@@ -65,14 +67,14 @@
+       <td style='padding-left:40px;'><b><LABEL for="new_password">{t}New password{/t}</LABEL></b></td>
+       <td>
+           {factory type='password' id='new_password' name='new_password' 
+-              onfocus="nextfield='repeated_password';" onkeyup="testPasswordCss(\$('new_password').value);"}
++              onfocus="nextfield='repeated_password';" onkeyup="testPasswordCss(\$('new_password').value);" disabled=1}
+       </td>
+     </tr>
+     <tr>
+       <td style='padding-left:40px;'><b><LABEL for="repeated_password">{t}Repeat new password{/t}</LABEL></b></td>
+       <td>
+           {factory type='password' id='repeated_password' name='repeated_password'
+-              onfocus="nextfield='password_finish';"}
++              onfocus="nextfield='password_finish';" disabled=1}
+       </td>
+     </tr>
+     <tr>
+@@ -106,36 +108,7 @@
+ 
+ <!-- Place cursor -->
+ <script language="JavaScript" type="text/javascript">
+-  	nextfield= "new_password";
+-	focus_field('new_password');
+-
+-    function updateFields()
+-    {
+-        if($('proposalSelected').checked){
+-            $('new_password').disable();
+-            $('repeated_password').disable();
+-            $('proposalText').setStyle(
+-                 'background-color:#FFF;' +
+-                 'color:#000;' +
+-                 'width:180px;' +
+-                 'border:1px solid #CCC;' +
+-                 'padding:3px;' +
+-                 'padding-top:5px;' +
+-                 'padding-bottom:4px;');
+-        }else{
+-            $('new_password').enable();
+-            $('repeated_password').enable();
+-            $('proposalText').setStyle(
+-                 'background-color:#F0F0F0;' +
+-                 'color:#666;' +
+-                 'width:180px;' +
+-                 'border:1px solid #CCC;' +
+-                 'padding:3px;' +
+-                 'padding-top:5px;' +
+-                 'padding-bottom:4px;');
+-        }
+-    }
+-    updateFields();
++  nextfield='new_password';
++  focus_field('new_password');
+ </script>
+ 
+-
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/personal/password/password.tpl	2012-05-02 11:49:01.000000000 +0200
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/personal/password/password.tpl	2018-06-27 11:52:42.344283813 +0200
+@@ -60,7 +60,8 @@
+     </tr>
+     <tr>
+       <td>
+-        <input type='radio' value='1' id='proposalSelected_true' name='proposalSelected' onClick='updateFields();'
++        <input type='radio' value='1' id='proposalSelected_true' name='proposalSelected'
++            onClick="changeState('new_password'); changeState('repeated_password');"
+             {if $proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_true">{t}Use proposal{/t}</LABEL></b>
+       </td>
+       <td>
+@@ -79,7 +80,8 @@
+     </tr>
+     <tr>
+       <td>
+-        <input type='radio' value='0' name='proposalSelected' id='proposalSelected_false' onClick='updateFields();'
++        <input type='radio' value='0' name='proposalSelected' id='proposalSelected_false'
++            onClick="changeState('new_password'); changeState('repeated_password'); nextfield='new_password'; focus_field('new_password');"
+             {if !$proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_false">{t}Manually specify a password{/t}</LABEL></b>
+       </td>
+     </tr>
+@@ -87,13 +89,13 @@
+       <td style='padding-left:40px;'><b><LABEL for="new_password">{t}New password{/t}</LABEL></b></td>
+       <td>
+           {factory type='password' name='new_password' id='new_password' 
+-              onkeyup="testPasswordCss(\$('new_password').value)"  onfocus="nextfield= 'repeated_password';"}
++              onkeyup="testPasswordCss(\$('new_password').value)"  onfocus="nextfield= 'repeated_password';" disabled=1}
+       </td>
+     </tr>
+     <tr>
+       <td style='padding-left:40px;'><b><LABEL for="repeated_password">{t}Repeat new password{/t}</LABEL></b></td>
+       <td>
+-          {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
++          {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';" disabled=1}
+       </td>
+     </tr>
+     <tr>
+@@ -119,37 +121,8 @@
+ 
+ <!-- Place cursor -->
+ <script language="JavaScript" type="text/javascript">
+-    nextfield= 'current_password';
+-	focus_field('current_password');
+-
+-
+-    function updateFields()
+-    {
+-        if($('proposalSelected').checked){
+-            $('new_password').disable();
+-            $('repeated_password').disable();
+-            $('proposalText').setStyle(
+-                 'background-color:#FFF;' +
+-                 'color:#000;' + 
+-                 'width:180px;' + 
+-                 'border:1px solid #CCC;' + 
+-                 'padding:3px;' + 
+-                 'padding-top:5px;' + 
+-                 'padding-bottom:4px;');
+-        }else{
+-            $('new_password').enable();
+-            $('repeated_password').enable();
+-            $('proposalText').setStyle(
+-                 'background-color:#F0F0F0;' +
+-                 'color:#666;' + 
+-                 'width:180px;' + 
+-                 'border:1px solid #CCC;' + 
+-                 'padding:3px;' + 
+-                 'padding-top:5px;' +
+-                 'padding-bottom:4px;');
+-        }
+-    }
+-    updateFields();
++  nextfield='current_password';
++  focus_field('current_password');
+ </script>
+ 
+ {/if}
+--- gosa-2.7.4+reloaded2.a/gosa-core/plugins/personal/myaccount/password.tpl	2010-10-14 18:07:10.000000000 +0200
++++ gosa-2.7.4+reloaded2.b/gosa-core/plugins/personal/myaccount/password.tpl	2018-06-27 11:51:59.768514041 +0200
+@@ -46,6 +46,7 @@
+     <tr>
+       <td>
+         <input type='radio' value='1' name='proposalSelected' id='proposalSelected_true'
++            onClick="changeState('new_password'); changeState('repeated_password');"
+             {if $proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_true">{t}Use proposal{/t}</LABEL></b>
+       </td>
+       <td>
+@@ -64,6 +65,7 @@
+     <tr>
+       <td>
+         <input type='radio' value='0' name='proposalSelected' id='proposalSelected_false'
++            onClick="changeState('new_password'); changeState('repeated_password'); nextfield='new_password'; focus_field('new_password');"
+             {if !$proposalSelected} checked {/if}>&nbsp;<b><LABEL for="proposalSelected_false">{t}Manually specify a password{/t}</LABEL></b>
+       </td>
+     </tr>
+@@ -71,13 +73,13 @@
+       <td style='padding-left:40px;'><b><LABEL for="new_password">{t}New password{/t}</LABEL></b></td>
+       <td>
+           {factory type='password' name='new_password' id='new_password' 
+-              onkeyup="testPasswordCss(\$('new_password').value)"  onfocus="nextfield= 'repeated_password';"}
++              onkeyup="testPasswordCss(\$('new_password').value)"  onfocus="nextfield= 'repeated_password';" disabled=1}
+       </td>
+     </tr>
+     <tr>
+       <td style='padding-left:40px;'><b><LABEL for="repeated_password">{t}Repeat new password{/t}</LABEL></b></td>
+       <td>
+-          {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
++          {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';" disabled=1}
+       </td>
+     </tr>
+     <tr>
+@@ -103,9 +105,7 @@
+ 
+ <!-- Place cursor -->
+ <script language="JavaScript" type="text/javascript">
+-  <!-- // First input field on page
+   nextfield= 'current_password';
+-	focus_field('current_password');
+-  -->
++  focus_field('current_password');
+ </script>
+ 
+
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1041_ref_param_error_in_My_Parser.patch gosa-2.7.4+reloaded2/debian/patches/1041_ref_param_error_in_My_Parser.patch
--- gosa-2.7.4+reloaded2/debian/patches/1041_ref_param_error_in_My_Parser.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1041_ref_param_error_in_My_Parser.patch	2019-04-19 19:01:39.000000000 +0200
@@ -0,0 +1,15 @@
+Description: Compat fix for PHP > 5.4. Hand over real variable to function.
+Author: Christian Schwamborn <christian.schwamborn@nswit.de>
+
+--- a/mail/personal/mail/sieve/class_My_Parser.inc
++++ b/mail/personal/mail/sieve/class_My_Parser.inc
+@@ -42,7 +42,8 @@
+ 		$this->registeredExtensions_ = array();
+         $this->status_text = "incomplete";
+         $this->script_ = $script;
+-        $this->tree_ = new My_Tree(@Scanner::scriptStart(),$this);
++        $scanner_start = @Scanner::scriptStart();
++        $this->tree_ = new My_Tree($scanner_start,$this);
+         $this->tree_->setDumpFunc(array(&$this, 'dumpToken_'));
+         $this->scanner_ = new My_Scanner($this->script_);
+         $this->scanner_->setCommentFunc(array($this, 'comment_'));
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1043_smarty-add-on-function-param-types.patch gosa-2.7.4+reloaded2/debian/patches/1043_smarty-add-on-function-param-types.patch
--- gosa-2.7.4+reloaded2/debian/patches/1043_smarty-add-on-function-param-types.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1043_smarty-add-on-function-param-types.patch	2019-04-19 19:03:52.000000000 +0200
@@ -0,0 +1,91 @@
+Description: Use correct smarty3 API.
+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+Forwarded: https://github.com/gosa-project/gosa-core/pull/25
+Abstract.
+ For the {render} add-on block, drop the &$smarty reference parameter
+ entirely.
+ .
+ Drop the complete {tr} add-on block. Not registered as a plugin, not
+ used.
+ .
+ For the add-on image and add-on factory functions, switch from
+ reference &$smarty to value $smarty.
+
+--- a/gosa-core/include/smartyAddons/block.render.php
++++ b/gosa-core/include/smartyAddons/block.render.php
+@@ -1,6 +1,6 @@
+ <?php
+ 
+-function smarty_block_render($params, $text, &$smarty)
++function smarty_block_render($params, $text)
+ {
+ 	/* Skip closing tag </render> */	
+ 	if(empty($text)) {
+--- a/gosa-core/include/smartyAddons/block.tr.php
++++ /dev/null
+@@ -1,25 +0,0 @@
+-<?php
+-function smarty_block_tr($params, $text, &$smarty)
+-{
+-    $plugin = "";
+-    if(!isset($params['domain'])){
+-        if(strlen($text) != 0){
+-            $trace = debug_backtrace();
+-            $base = preg_replace("/\/html/","",getcwd());
+-            foreach($trace as $t_entry){
+-                if(preg_match("/^".preg_quote($base,'/')."\/plugins\//", $t_entry['file'])){
+-                    $plugin = preg_replace("/^".preg_quote($base,'/')."\/plugins\/([^\/]*).*$/", "\\1", $t_entry['file']);
+-                    break;
+-                }
+-            }
+-        }
+-    }
+-  
+- 
+-    if($plugin != ""){ 
+-        return(dgettext($plugin, $text));
+-    }
+-    return(gettext($text));
+-}
+-
+-?>
+--- a/gosa-core/include/smartyAddons/function.factory.php
++++ b/gosa-core/include/smartyAddons/function.factory.php
+@@ -1,6 +1,6 @@
+ <?php
+ 
+-function smarty_function_factory($params, &$smarty)
++function smarty_function_factory($params, $smarty)
+ {
+ 
+     // Capture params
+--- a/gosa-core/include/smartyAddons/function.image.php
++++ b/gosa-core/include/smartyAddons/function.image.php
+@@ -1,6 +1,6 @@
+ <?php
+ 
+-function smarty_function_image($params, &$smarty)
++function smarty_function_image($params, $smarty)
+ {
+   $path = (isset($params['path']))? $params['path'] :"";
+   $action = (isset($params['action']))? $params['action'] :"";
+--- a/gosa-core/include/smartyAddons/function.msgPool.php
++++ b/gosa-core/include/smartyAddons/function.msgPool.php
+@@ -1,6 +1,6 @@
+ <?php
+ 
+-function smarty_function_msgPool($params, &$smarty)
++function smarty_function_msgPool($params, $smarty)
+ {
+ 	if(class_available("msgPool") && isset($params['type'])){
+ 		$parameter = array();
+--- a/gosa-core/include/php_setup.inc
++++ b/gosa-core/include/php_setup.inc
+@@ -317,7 +317,6 @@
+     if(preg_match("/\.php$/", $file)) require_once("$BASE_DIR/include/smartyAddons/{$file}");
+ }
+ 
+-#$smarty->registerPlugin("block", "tr", "smarty_block_tr");
+ $smarty->registerPlugin("block", "t", "smarty_block_t");
+ $smarty->registerPlugin("block", "render", "smarty_block_render");
+ $smarty->registerPlugin("function", "msgPool", "smarty_function_msgPool");
diff -Nru gosa-2.7.4+reloaded2/debian/patches/1045_dont_use_filter_caching.patch gosa-2.7.4+reloaded2/debian/patches/1045_dont_use_filter_caching.patch
--- gosa-2.7.4+reloaded2/debian/patches/1045_dont_use_filter_caching.patch	1970-01-01 01:00:00.000000000 +0100
+++ gosa-2.7.4+reloaded2/debian/patches/1045_dont_use_filter_caching.patch	2019-04-19 19:03:52.000000000 +0200
@@ -0,0 +1,27 @@
+Description: Disable flawed filter caching (which works via storing unserialized objects in $_SESSION)
+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+Forwarded: https://github.com/gosa-project/gosa-core/issues/28
+Abstract:
+ All required information is in the above upstream bug report.
+ .
+ This patch has work-around status. It is no proper solution.
+
+--- a/gosa-core/include/class_management.inc
++++ b/gosa-core/include/class_management.inc
+@@ -131,7 +131,15 @@
+     $this->registerAction("cancelFilter","cancelFilter");
+ 
+     // To temporay disable the filter caching UNcomment this line.
+-    #session::global_un_set(get_class($this)."_filter");
++
++    /*
++     * As a work-around for flawed object storage in the PHP $_SESSION array
++     * the filter caching has been deactivated since gosa 2.7.4+reloaded3-8.
++     *
++     * See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907815#31 for
++     * details.
++     */
++    session::global_un_set(get_class($this)."_filter");
+   }
+ 
+   
diff -Nru gosa-2.7.4+reloaded2/debian/patches/series gosa-2.7.4+reloaded2/debian/patches/series
--- gosa-2.7.4+reloaded2/debian/patches/series	2018-07-04 09:14:36.000000000 +0200
+++ gosa-2.7.4+reloaded2/debian/patches/series	2019-04-19 19:03:52.000000000 +0200
@@ -33,9 +33,24 @@
 1026_fix-deprecated-constructor-format.patch
 1027_fix-sudo-fqdn.patch
 1028_use-mysqli-instead-of-mysql.patch
+1029_better-whitespace-cleanup-in-genuid.patch
+1030_column-header-titles-group-members.patch
+1031_no-context-loose-continues.patch
+1032_fix_select_acl_role.patch
+1033_fix_unable_to_delete_acl_asignment.patch
+1034_remove_superfluous__get_post__call_from__save_object.patch
+1035_acl_override_to_allow_delete_of_group_members.patch
+1036_remove_double_groupList_setEditable_setting.patch
+1037_fix_shadowexpire_checkbox_from_tmplate_setting.patch
+1038_shadowexpire_in_one_line.patch
+1039_fix_sambakickofftime_checkbox_and_sambakickofftime_date_from_tmplate_setting.patch
 2001_fix-smarty-location.patch
 2002_fix-template-location.patch
 2003_fix-class-mapping.patch
 2004_fix-locale-location.patch
 2005_allow-Debian-blends-to-override-gosa-conf.patch
 0013_escape-html-entities-for-uid-to-avoid-code-execution-CVE-2018-1000528.patch
+1040_inactive_pwd_fields_when_using_pwd_proposal.patch
+1041_ref_param_error_in_My_Parser.patch
+1043_smarty-add-on-function-param-types.patch
+1045_dont_use_filter_caching.patch

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 9.13

Hi,

All of these requests relate to updates that were included in today's
stretch point release.

Regards,

Adam

--- End Message ---

Reply to: