Package: release.debian.org
Severity: normal
Tags: bookworm
User: release.debian....@packages.debian.org
Usertags: pu
X-Debbugs-Cc: g...@packages.debian.org
Control: affects -1 + src:gosa

GOsa²'s PHP 8.2 support was rather poor at the release time of Debian 12.
This update will amend various issues found while testing GOsa² with
Debian Edu.

[ Reason ]
Various issues could be resolved:

  * deprecation warnings
  * missing smarty template file
  * broken debug support

[ Impact ]
Only GOsa² users will be affected by this upload.

[ Tests ]
Manual tests on Debian Edu TJENER system.

[ Risks ]
Introduction of regressions in GOsa² in Debian 12.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]

+  [ Mike Gabriel ]
+  * debian/patches:
+    + Add 1003_php-deprecations.patch. Silence various PHP 8.2 deprecation
+      warnings. (Closes: #1038682).
+
+  [ Daniel Teichmann ]
+  * debian/patches:
+    + Add 1004_missing_templates.patch. (Closes: #1039697)
+    + Update 1002_php82-allow-dynamic-properties.patch: Tolerate dyn. prop. for
+      ALL PHP classes. (Closes: #1039894)
+    + Add 1005_preg_replace_deprecation.patch.
+    + Add 1006_fix-overflow-debug-print_a-func.patch. (Closes: #1040839)


[ Other info ]
This might not be the last pu of GOsa² to bookworm. But various noises
should be reduced after this update has landed. We also work with
upstream on amending the patched issues there.
diff -Nru gosa-2.8~git20230203.10abe45+dfsg/debian/changelog 
gosa-2.8~git20230203.10abe45+dfsg/debian/changelog
--- gosa-2.8~git20230203.10abe45+dfsg/debian/changelog  2023-02-06 
20:43:44.000000000 +0100
+++ gosa-2.8~git20230203.10abe45+dfsg/debian/changelog  2023-07-12 
23:12:05.000000000 +0200
@@ -1,3 +1,20 @@
+gosa (2.8~git20230203.10abe45+dfsg-1+deb12u1) bookworm; urgency=medium
+
+  [ Mike Gabriel ]
+  * debian/patches:
+    + Add 1003_php-deprecations.patch. Silence various PHP 8.2 deprecation
+      warnings. (Closes: #1038682).
+
+  [ Daniel Teichmann ]
+  * debian/patches:
+    + Add 1004_missing_templates.patch. (Closes: #1039697)
+    + Update 1002_php82-allow-dynamic-properties.patch: Tolerate dyn. prop. for
+      ALL PHP classes. (Closes: #1039894)
+    + Add 1005_preg_replace_deprecation.patch.
+    + Add 1006_fix-overflow-debug-print_a-func.patch. (Closes: #1040839)
+
+ -- Mike Gabriel <sunwea...@debian.org>  Wed, 12 Jul 2023 23:12:05 +0200
+
 gosa (2.8~git20230203.10abe45+dfsg-1) unstable; urgency=medium
 
   * New upstream Git snapshot.
diff -Nru 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1002_php82-allow-dynamic-properties.patch
 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1002_php82-allow-dynamic-properties.patch
--- 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1002_php82-allow-dynamic-properties.patch
  2023-01-21 20:42:25.000000000 +0100
+++ 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1002_php82-allow-dynamic-properties.patch
  2023-07-12 23:10:08.000000000 +0200
@@ -1,6 +1,200 @@
-Description: Tolerate dynamic properties in managepws class, deprecated in PHP 
8.2
-Author: Mike Gabriel <mike.gabr...@das-netzwerkteam.de>
-
+Description: Tolerate dynamic properties in all classes, deprecated in PHP 8.2
+Author: Daniel Teichmann <daniel.teichm...@das-netzwerkteam.de>
+ 
+--- a/include/class_CopyPasteHandler.inc
++++ b/include/class_CopyPasteHandler.inc
+@@ -22,6 +22,7 @@
+ 
+ define("LDAP_DUMP_PATH","/var/cache/gosa/tmp");
+ 
++#[\AllowDynamicProperties]
+ class CopyPasteHandler {
+ 
+   var $config;
+--- a/include/class_GOsaRegistration.inc
++++ b/include/class_GOsaRegistration.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class GOsaRegistration 
+ {
+     
+--- a/include/class_ItemSelector.inc
++++ b/include/class_ItemSelector.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class ItemSelector {
+ 
+     public $base;
+--- a/include/class_SnapShotDialog.inc
++++ b/include/class_SnapShotDialog.inc
+@@ -21,6 +21,7 @@
+  */
+ 
+ /* Snap shot dialog class */
++#[\AllowDynamicProperties]
+ class SnapShotDialog extends plugin
+ {
+     var $config;
+--- a/include/class_SnapshotHandler.inc
++++ b/include/class_SnapshotHandler.inc
+@@ -21,6 +21,7 @@
+  */
+ 
+ 
++#[\AllowDynamicProperties]
+ class SnapshotHandler {
+ 
+   var $config;
+--- a/include/class_acl.inc
++++ b/include/class_acl.inc
+@@ -21,6 +21,8 @@
+  */
+ 
+ /*! \brief ACL management plugin */
++
++#[\AllowDynamicProperties]
+ class acl extends plugin
+ {
+     /* Definitions */
+--- a/include/class_baseSelector.inc
++++ b/include/class_baseSelector.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class baseSelector
+ {
+     private $base;
+--- a/include/class_certificate.inc
++++ b/include/class_certificate.inc
+@@ -26,6 +26,7 @@
+ define("PEM","pem");
+ define("DER","der");
+ 
++#[\AllowDynamicProperties]
+ class certificate 
+ {
+   /* vars */
+--- a/include/class_config.inc
++++ b/include/class_config.inc
+@@ -27,6 +27,7 @@
+  * gosa configuration file.
+  */
+ 
++#[\AllowDynamicProperties]
+ class config  {
+ 
+     /* XML parser */
+--- a/include/class_configRegistry.inc
++++ b/include/class_configRegistry.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class configRegistry{
+ 
+     public $config = NULL;
+@@ -573,7 +574,7 @@
+     }
+ }
+ 
+-
++#[\AllowDynamicProperties]
+ class gosaProperty
+ {
+     protected $name = "";
+--- a/include/class_core.inc
++++ b/include/class_core.inc
+@@ -106,6 +106,7 @@
+  */
+ 
+ 
++#[\AllowDynamicProperties]
+ class all extends plugin {
+     static function plInfo()
+     {
+@@ -122,6 +123,7 @@
+     }
+ }
+ 
++#[\AllowDynamicProperties]
+ class core extends plugin {
+ 
+     static function getPropertyValues($class,$name,$value,$type)
+--- a/include/class_departmentSortIterator.inc
++++ b/include/class_departmentSortIterator.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class departmentSortIterator implements Iterator {
+   private $data;
+ 
+--- a/include/class_filter.inc
++++ b/include/class_filter.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class filter
+ {
+     public $searches = [];
+--- a/include/class_filterLDAP.inc
++++ b/include/class_filterLDAP.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterLDAP {
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= array(""))
+--- a/include/class_filterNOACL.inc
++++ b/include/class_filterNOACL.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterNOACL extends filterLDAPBlacklist{
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= array(""))
+--- a/include/class_jsonRPC.inc
++++ b/include/class_jsonRPC.inc
+@@ -1,6 +1,7 @@
+ <?php
+ 
+ 
++#[\AllowDynamicProperties]
+ class jsonRPC {
+ 
+     private $curlHandler = NULL;
+--- a/include/class_ldap.inc
++++ b/include/class_ldap.inc
+@@ -28,6 +28,7 @@
+ define("INSERT_OK",10000);
+ define("SPECIALS_OVERRIDE", TRUE);
+ 
++#[\AllowDynamicProperties]
+ class LDAP
+ {
+     public static $characterMap = NULL;
+--- a/include/class_ldapMultiplexer.inc
++++ b/include/class_ldapMultiplexer.inc
+@@ -21,6 +21,7 @@
+  */
+ 
+ 
++#[\AllowDynamicProperties]
+ class ldapMultiplexer {
+ 
+   /* Internal stuff */
 --- a/include/class_listing.inc
 +++ b/include/class_listing.inc
 @@ -20,6 +20,7 @@
@@ -11,6 +205,16 @@
  class listing
  {
      public $xmlData;
+--- a/include/class_listingSortIterator.inc
++++ b/include/class_listingSortIterator.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class listingSortIterator implements Iterator {
+   private $data;
+ 
 --- a/include/class_management.inc
 +++ b/include/class_management.inc
 @@ -20,6 +20,7 @@
@@ -21,6 +225,75 @@
  class management
  {
      // Public
+--- a/include/class_msg_dialog.inc
++++ b/include/class_msg_dialog.inc
+@@ -27,6 +27,7 @@
+ define("OK_CANCEL_DIALOG"     , 10005);
+ define("FATAL_ERROR_DIALOG"   , 10006);
+ 
++#[\AllowDynamicProperties]
+ class msg_dialog
+ {
+     private $s_Title  = "Undefined";
+--- a/include/class_multi_plug.inc
++++ b/include/class_multi_plug.inc
+@@ -121,6 +121,7 @@
+     2. All given objects specified by '$dn' will be initialized and the 
collected
+      data from the dummy object will be populated to them.
+  */
++#[\AllowDynamicProperties]
+ class multi_plug
+ {
+   /* Tab handler for each given dn entry */
+--- a/include/class_pathNavigator.inc
++++ b/include/class_pathNavigator.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class pathNavigator
+ {
+     public static function registerPlugin($class, $title = '')
+--- a/include/class_plugin.inc
++++ b/include/class_plugin.inc
+@@ -30,6 +30,7 @@
+   within this class. Extend your plugins from this class.
+  */
+ 
++#[\AllowDynamicProperties]
+ class plugin
+ {
+   /*! \brief    The title shown in path menu while this plugin is visible.
+--- a/include/class_pluglist.inc
++++ b/include/class_pluglist.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class pluglist
+ {
+     // The id of the last registered plugin id
+--- a/include/class_releaseSelector.inc
++++ b/include/class_releaseSelector.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class releaseSelector {
+ 
+     public $base;
+--- a/include/class_remoteObject.inc
++++ b/include/class_remoteObject.inc
+@@ -6,6 +6,7 @@
+  *           on the server using RPC calls.
+  *          Properties will bestored directly (directStorage=TRUE) or when 
commit() is called.
+  */
++#[\AllowDynamicProperties]
+ class remoteObject
+ {
+     private $rpcHandle;
 --- a/include/class_session.inc
 +++ b/include/class_session.inc
 @@ -20,6 +20,7 @@
@@ -31,3 +304,1060 @@
  class session {
  
      public static function get_session_size()
+--- a/include/class_socketClient.inc
++++ b/include/class_socketClient.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class Socket_Client
+ {
+   private $host       = "";
+--- a/include/class_sortableListing.inc
++++ b/include/class_sortableListing.inc
+@@ -24,6 +24,7 @@
+ define('LIST_MARKED', 1);
+ define('LIST_DISABLED', 2);
+ 
++#[\AllowDynamicProperties]
+ class sortableListing
+ {
+     private $header= null;
+--- a/include/class_stats.inc
++++ b/include/class_stats.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class stats 
+ {
+ 
+--- a/include/class_tabs.inc
++++ b/include/class_tabs.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class tabs
+ {
+   var $dn;
+--- a/include/class_userFilter.inc
++++ b/include/class_userFilter.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class userFilter extends plugin
+ {
+     public $pathTitle= "Filter";
+--- a/include/class_userFilterEditor.inc
++++ b/include/class_userFilterEditor.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class userFilterEditor extends plugin 
+ {
+     public $pathTitle= "Edit";
+--- a/include/class_userinfo.inc
++++ b/include/class_userinfo.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class userinfo
+ {
+   var $dn;
+--- a/include/exporter/class_csvExporter.inc
++++ b/include/exporter/class_csvExporter.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class csvExporter
+ {
+   var $result;
+--- a/include/exporter/class_pdfExporter.inc
++++ b/include/exporter/class_pdfExporter.inc
+@@ -10,6 +10,7 @@
+   include('class_PDF.inc');
+ }
+ 
++#[\AllowDynamicProperties]
+ class pdfExporter
+ {
+   var $result;
+--- a/include/functions_debug.inc
++++ b/include/functions_debug.inc
+@@ -65,6 +65,7 @@
+ ** Stephan Pirson (Saibot)
+ ************************************************/
+ 
++#[\AllowDynamicProperties]
+ class Print_a_class {
+       
+       # this can be changed to FALSE if you don't like the fancy string 
formatting
+--- a/include/functions_helpviewer.inc
++++ b/include/functions_helpviewer.inc
+@@ -21,6 +21,7 @@
+  */
+ 
+ /* Simple class to parse the xml help file */
++#[\AllowDynamicProperties]
+ class parseXml
+ {
+   var $parser;
+--- a/include/password-methods/class_password-methods-clear.inc
++++ b/include/password-methods/class_password-methods-clear.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodClear extends passwordMethod
+ {
+   var $lockable = FALSE;
+--- a/include/password-methods/class_password-methods-crypt.inc
++++ b/include/password-methods/class_password-methods-crypt.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodCrypt extends passwordMethod
+ {
+   function __construct($config)
+--- a/include/password-methods/class_password-methods-md5.inc
++++ b/include/password-methods/class_password-methods-md5.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodMd5 extends passwordMethod
+ {
+       function __construct($config)  
+--- a/include/password-methods/class_password-methods-remote.inc
++++ b/include/password-methods/class_password-methods-remote.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodRemote extends passwordMethod
+ {
+   var $dn  = "";
+--- a/include/password-methods/class_password-methods-sasl.inc
++++ b/include/password-methods/class_password-methods-sasl.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodsasl extends passwordMethod
+ {
+   var $dn  = "";
+--- a/include/password-methods/class_password-methods-sha.inc
++++ b/include/password-methods/class_password-methods-sha.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodsha extends passwordMethod
+ {
+   function __construct($config)
+--- a/include/password-methods/class_password-methods-smd5.inc
++++ b/include/password-methods/class_password-methods-smd5.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodsmd5 extends passwordMethod
+ {
+   function __construct($config)
+--- a/include/password-methods/class_password-methods-ssha.inc
++++ b/include/password-methods/class_password-methods-ssha.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethodssha extends passwordMethod
+ {
+   function __construct($config)
+--- a/include/password-methods/class_password-methods.inc
++++ b/include/password-methods/class_password-methods.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class passwordMethod
+ {
+     var $config = false;
+--- a/include/utils/class_msgPool.inc
++++ b/include/utils/class_msgPool.inc
+@@ -7,6 +7,7 @@
+ define ("LDAP_AUTH",   6);
+ 
+ /*! \brief Some common needed messages */ 
++#[\AllowDynamicProperties]
+ class msgPool
+ {
+ 
+--- a/include/utils/class_tests.inc
++++ b/include/utils/class_tests.inc
+@@ -31,6 +31,7 @@
+  * The functions need to be handled with care, because they are not as strict
+  * as one might expect.
+  */ 
++#[\AllowDynamicProperties]
+ class tests {
+ 
+   /*! \brief Test if the given string is a phone number */
+--- a/include/utils/class_timezone.inc
++++ b/include/utils/class_timezone.inc
+@@ -18,6 +18,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class timezone {
+ 
+   /* This function returns the offset for the default timezone. 
+--- a/include/utils/class_xml.inc
++++ b/include/utils/class_xml.inc
+@@ -19,6 +19,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class xml {
+ 
+   static function validate($file, $schema) {
+--- a/include/utils/excel/class.writeexcel_biffwriter.inc.php
++++ b/include/utils/excel/class.writeexcel_biffwriter.inc.php
+@@ -24,6 +24,7 @@
+  * Spreadsheet::WriteExcel was written by John McNamara, jmcnam...@cpan.org
+  */
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_biffwriter {
+     var $byte_order;
+     var $BIFF_version;
+--- a/include/utils/excel/class.writeexcel_format.inc.php
++++ b/include/utils/excel/class.writeexcel_format.inc.php
+@@ -24,6 +24,7 @@
+  * Spreadsheet::WriteExcel was written by John McNamara, jmcnam...@cpan.org
+  */
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_format {
+ 
+     var $_xf_index;
+--- a/include/utils/excel/class.writeexcel_formula.inc.php
++++ b/include/utils/excel/class.writeexcel_formula.inc.php
+@@ -66,6 +66,7 @@
+     // @const SPREADSHEET_EXCEL_WRITER_NE token identifier for character "<>"
+ 
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_formula {
+ 
+ 
###############################################################################
+--- a/include/utils/excel/class.writeexcel_olewriter.inc.php
++++ b/include/utils/excel/class.writeexcel_olewriter.inc.php
+@@ -24,6 +24,7 @@
+  * Spreadsheet::WriteExcel was written by John McNamara, jmcnam...@cpan.org
+  */
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_olewriter {
+     var $_OLEfilename;
+     var $_OLEtmpfilename; /* ABR */
+--- a/include/utils/excel/class.writeexcel_workbook.inc.php
++++ b/include/utils/excel/class.writeexcel_workbook.inc.php
+@@ -29,6 +29,7 @@
+ require_once "class.writeexcel_formula.inc.php";
+ require_once "class.writeexcel_olewriter.inc.php";
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_workbook extends writeexcel_biffwriter {
+ 
+     var $_filename;
+--- a/include/utils/excel/class.writeexcel_worksheet.inc.php
++++ b/include/utils/excel/class.writeexcel_worksheet.inc.php
+@@ -26,6 +26,7 @@
+ 
+ require_once "class.writeexcel_biffwriter.inc.php";
+ 
++#[\AllowDynamicProperties]
+ class writeexcel_worksheet extends writeexcel_biffwriter {
+ 
+     var $_name;
+--- a/plugins/addons/dyngroup/class_DynamicLdapGroup.inc
++++ b/plugins/addons/dyngroup/class_DynamicLdapGroup.inc
+@@ -25,6 +25,7 @@
+  * @author Thomas Chemineau - thomas.chemineau<at>gmail.com
+  * @version 0.01
+  */
++#[\AllowDynamicProperties]
+ class DynamicLdapGroup extends plugin
+ {
+ 
+--- a/plugins/addons/propertyEditor/class_commandVerifier.inc
++++ b/plugins/addons/propertyEditor/class_commandVerifier.inc
+@@ -1,4 +1,5 @@
+ <?php
++#[\AllowDynamicProperties]
+ class commandVerifier
+ {
+     private $property = NULL;
+--- a/plugins/addons/propertyEditor/class_filterProperties.inc
++++ b/plugins/addons/propertyEditor/class_filterProperties.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterCONFIGPROPERTIES {
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= "")
+--- a/plugins/addons/propertyEditor/class_propertyEditor.inc
++++ b/plugins/addons/propertyEditor/class_propertyEditor.inc
+@@ -1,6 +1,7 @@
+ <?php
+ 
+ 
++#[\AllowDynamicProperties]
+ class propertyEditor extends management
+ {
+     var $plHeadline     = "Preferences";
+--- a/plugins/addons/propertyEditor/migration/class_migrateRDN.inc
++++ b/plugins/addons/propertyEditor/migration/class_migrateRDN.inc
+@@ -2,6 +2,7 @@
+ 
+ 
+ 
++#[\AllowDynamicProperties]
+ class migrateRDN implements propertyMigration
+ {
+     protected $property = NULL;
+--- a/plugins/admin/acl/class_aclManagement.inc
++++ b/plugins/admin/acl/class_aclManagement.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class aclManagement extends management
+ {
+   var $plHeadline     = "Access control";
+--- a/plugins/admin/acl/class_aclRole.inc
++++ b/plugins/admin/acl/class_aclRole.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class aclrole extends acl
+ {
+   /* Definitions */
+--- a/plugins/admin/acl/class_filterACL.inc
++++ b/plugins/admin/acl/class_filterACL.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterACL {
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= "")
+--- a/plugins/admin/acl/migration/class_migrate_aclRoleRDN.inc
++++ b/plugins/admin/acl/migration/class_migrate_aclRoleRDN.inc
+@@ -1,4 +1,5 @@
+ <?php 
++#[\AllowDynamicProperties]
+ class migrate_aclRoleRDN extends migrateRDN implements propertyMigration
+ {
+       protected $filter = "(&(objectClass=gosaRole)%s)";
+--- a/plugins/admin/acl/tabs_acl.inc
++++ b/plugins/admin/acl/tabs_acl.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class acltab extends tabs
+ {
+ 
+--- a/plugins/admin/acl/tabs_acl_role.inc
++++ b/plugins/admin/acl/tabs_acl_role.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class aclroletab extends tabs
+ {
+ 
+--- a/plugins/admin/departments/class_countryGeneric.inc
++++ b/plugins/admin/departments/class_countryGeneric.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class country extends department
+ {
+     /* attribute list for save action */
+--- a/plugins/admin/departments/class_dcObject.inc
++++ b/plugins/admin/departments/class_dcObject.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class dcObject extends department
+ {
+     /* attribute list for save action */
+--- a/plugins/admin/departments/class_department.inc
++++ b/plugins/admin/departments/class_department.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class department extends plugin
+ {
+     /* department attributes */
+--- a/plugins/admin/departments/class_departmentManagement.inc
++++ b/plugins/admin/departments/class_departmentManagement.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class departmentManagement extends management
+ {
+   var $plHeadline     = "Directory structure";
+--- a/plugins/admin/departments/class_domain.inc
++++ b/plugins/admin/departments/class_domain.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class domain extends department
+ {
+     /* attribute list for save action */
+--- a/plugins/admin/departments/class_filterDEPARTMENT.inc
++++ b/plugins/admin/departments/class_filterDEPARTMENT.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterDEPARTMENT {
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= array(""))
+--- a/plugins/admin/departments/class_localityGeneric.inc
++++ b/plugins/admin/departments/class_localityGeneric.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class locality extends department
+ {
+     /* attribute list for save action */
+--- a/plugins/admin/departments/class_organizationGeneric.inc
++++ b/plugins/admin/departments/class_organizationGeneric.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class organization extends department
+ {
+     /* attribute list for save action */
+--- a/plugins/admin/departments/tabs_department.inc
++++ b/plugins/admin/departments/tabs_department.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class deptabs extends tabs
+ {
+   var $base= "";
+--- a/plugins/admin/groups/class_filterGroupLDAP.inc
++++ b/plugins/admin/groups/class_filterGroupLDAP.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterGroupLDAP {
+ 
+     static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= "")
+--- a/plugins/admin/groups/class_group.inc
++++ b/plugins/admin/groups/class_group.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */ 
+ 
++#[\AllowDynamicProperties]
+ class group extends plugin
+ {
+     // Group attributes
+--- a/plugins/admin/groups/class_groupManagement.inc
++++ b/plugins/admin/groups/class_groupManagement.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class groupManagement extends management
+ {
+     public $plHeadline     = "Groups";
+--- a/plugins/admin/groups/migration/class_migrate_groupRDN.inc
++++ b/plugins/admin/groups/migration/class_migrate_groupRDN.inc
+@@ -1,4 +1,5 @@
+ <?php 
++#[\AllowDynamicProperties]
+ class migrate_groupRDN extends migrateRDN implements propertyMigration
+ {
+     protected $filter = "(&(objectClass=posixGroup)%s)";
+--- a/plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc
++++ b/plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class singleUserSelect extends management
+ {
+ 
+--- a/plugins/admin/groups/tabs_group.inc
++++ b/plugins/admin/groups/tabs_group.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class grouptabs extends tabs
+ {
+ 
+--- a/plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc
++++ b/plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class userGroupSelect extends management
+ {
+     // Tab definition 
+--- a/plugins/admin/groups/userSelect/class_userSelect.inc
++++ b/plugins/admin/groups/userSelect/class_userSelect.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class userSelect extends management
+ {
+     public $plHeadline = "User selection";
+--- a/plugins/admin/ogroups/class_ogroup.inc
++++ b/plugins/admin/ogroups/class_ogroup.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class ogroup extends plugin
+ {
+     public $typeToClass = array(
+--- a/plugins/admin/ogroups/class_ogroupManagement.inc
++++ b/plugins/admin/ogroups/class_ogroupManagement.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class ogroupManagement extends management
+ {
+     var $plHeadline     = "Object groups";
+--- a/plugins/admin/ogroups/migration/class_migrate_ogroupRDN.inc
++++ b/plugins/admin/ogroups/migration/class_migrate_ogroupRDN.inc
+@@ -1,4 +1,5 @@
+ <?php 
++#[\AllowDynamicProperties]
+ class migrate_ogroupRDN extends migrateRDN implements propertyMigration
+ {
+     protected $filter = "(&(objectClass=gosaGroupOfNames)%s)";
+--- 
a/plugins/admin/ogroups/objectSelect/class_filterLDAPDepartmentBlacklist.inc
++++ 
b/plugins/admin/ogroups/objectSelect/class_filterLDAPDepartmentBlacklist.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterLDAPDepartmentBlacklist  extends filterLDAPBlacklist{
+ 
+     static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= "")
+--- a/plugins/admin/ogroups/objectSelect/class_objectSelect.inc
++++ b/plugins/admin/ogroups/objectSelect/class_objectSelect.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class objectSelect extends management
+ {
+     // Tab definition 
+--- a/plugins/admin/ogroups/tabs_ogroups.inc
++++ b/plugins/admin/ogroups/tabs_ogroups.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class ogrouptabs extends tabs
+ {
+     var $base= "";
+--- a/plugins/admin/users/class_userManagement.inc
++++ b/plugins/admin/users/class_userManagement.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class userManagement extends management
+ {
+     var $plHeadline     = "Users";
+--- a/plugins/admin/users/migration/class_migrate_userRDN.inc
++++ b/plugins/admin/users/migration/class_migrate_userRDN.inc
+@@ -1,4 +1,5 @@
+ <?php 
++#[\AllowDynamicProperties]
+ class migrate_userRDN extends migrateRDN implements propertyMigration
+ {
+     protected $filter = 
'(&(objectClass=gosaAccount)(!(&(objectClass=sambaSamAccount)(uid=*$)))%s)';
+--- a/plugins/admin/users/tabs_user.inc
++++ b/plugins/admin/users/tabs_user.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class usertabs extends tabs
+ {
+   var $base;
+--- a/plugins/generic/dashBoard/Register/class_RegistrationDialog.inc
++++ b/plugins/generic/dashBoard/Register/class_RegistrationDialog.inc
+@@ -6,6 +6,7 @@
+  *
+  */
+ 
++#[\AllowDynamicProperties]
+ class RegistrationDialog extends plugin
+ {
+     protected $selectedRegistrationType = "registrate";
+--- a/plugins/generic/dashBoard/class_dashBoard.inc
++++ b/plugins/generic/dashBoard/class_dashBoard.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class dashBoard extends plugin
+ {
+     var $plHeadline = 'Dash board';
+--- a/plugins/generic/dashBoard/class_rssReader.inc
++++ b/plugins/generic/dashBoard/class_rssReader.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class rssReader{
+ 
+     public static $attributes = array( 
+--- a/plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc
++++ b/plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class dbChannelStatus extends plugin
+ {
+     function __construct($config)
+--- a/plugins/generic/dashBoard/dbInformation/class_dbInformation.inc
++++ b/plugins/generic/dashBoard/dbInformation/class_dbInformation.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class dbInformation extends plugin
+ {
+     function __construct($config)
+--- a/plugins/generic/dashBoard/dbNotifications/class_dbNotifications.inc
++++ b/plugins/generic/dashBoard/dbNotifications/class_dbNotifications.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class dbNotifications extends plugin
+ {
+     function __construct($config)
+--- a/plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc
++++ b/plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class dbPluginStatus extends plugin
+ {
+ 
+--- a/plugins/generic/infoPage/class_infoPage.inc
++++ b/plugins/generic/infoPage/class_infoPage.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class infoPage extends plugin
+ {
+     private $ui;
+--- a/plugins/generic/references/class_aclResolver.inc
++++ b/plugins/generic/references/class_aclResolver.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class aclResolver
+ {
+     private $classMapping = array();
+--- a/plugins/generic/references/class_ldifViewer.inc
++++ b/plugins/generic/references/class_ldifViewer.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class ldifViewer extends plugin
+ {
+     private $ldif;
+--- a/plugins/generic/references/class_reference.inc
++++ b/plugins/generic/references/class_reference.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class reference extends plugin
+ {
+     var $attributes= array('uid','modifyTimestamp');
+--- a/plugins/generic/statistics/chartClasses/class_actionSelectChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_actionSelectChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class actionSelectChart extends statChart
+ {
+     protected $title = 'Action count per plugin';
+--- a/plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc
++++ b/plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class categoryActionsOverTime extends statChart
+ {
+     protected $title = 'Plugin usage over time';
+--- a/plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class cpuLoadChart extends memoryUsageChart
+ {
+     protected $title = 'CPU load';
+--- a/plugins/generic/statistics/chartClasses/class_durationTimeChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_durationTimeChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class durationTimeChart extends memoryUsageChart
+ {
+     protected $title = 'Plugin duration';
+--- a/plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class memoryUsageChart extends statChart
+ {
+     protected $title = 'Memory usage';
+--- a/plugins/generic/statistics/chartClasses/class_objectCountChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_objectCountChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class objectCountChart extends statChart
+ {
+     protected $title = 'Object count';
+--- a/plugins/generic/statistics/chartClasses/class_passwordChangeChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_passwordChangeChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class passwordChangeChart extends statChart
+ {
+     protected $title = 'Password changes';
+--- a/plugins/generic/statistics/chartClasses/class_pieChart1.inc
++++ b/plugins/generic/statistics/chartClasses/class_pieChart1.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class pieChart1 extends statChart
+ {
+     protected $title = 'Plugin usage';
+--- a/plugins/generic/statistics/chartClasses/class_pieChart2.inc
++++ b/plugins/generic/statistics/chartClasses/class_pieChart2.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class pieChart2 extends pieChart1
+ {
+     protected $title = 'Action usage';
+--- a/plugins/generic/statistics/chartClasses/class_renderTimeChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_renderTimeChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class renderTimeChart extends memoryUsageChart
+ {
+     protected $title = 'Render time';
+--- a/plugins/generic/statistics/chartClasses/class_statChart.inc
++++ b/plugins/generic/statistics/chartClasses/class_statChart.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class statChart{
+ 
+     // Graph data
+--- a/plugins/generic/statistics/class_statistics.inc
++++ b/plugins/generic/statistics/class_statistics.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class statistics extends plugin
+ {
+     var $plHeadline = 'Statistics';
+--- a/plugins/generic/welcome/class_welcome.inc
++++ b/plugins/generic/welcome/class_welcome.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class welcome extends plugin
+ {
+    var $plHeadline      = "Back to main menu";
+--- a/plugins/personal/generic/class_user.inc
++++ b/plugins/personal/generic/class_user.inc
+@@ -31,6 +31,7 @@
+   from/to the LDAP. It does syntax checking and displays the formulars 
required.
+  */
+ 
++#[\AllowDynamicProperties]
+ class user extends plugin
+ {
+   /* Definitions */
+--- a/plugins/personal/myaccount/MyAccountTabs.inc
++++ b/plugins/personal/myaccount/MyAccountTabs.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class MyAccountTabs extends tabs
+ {
+   var $password_change_needed = FALSE;
+--- a/plugins/personal/myaccount/class_MyAccount.inc
++++ b/plugins/personal/myaccount/class_MyAccount.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class MyAccount extends plugin
+ {
+   var $plHeadline= "My account";
+--- a/plugins/personal/password/class_password.inc
++++ b/plugins/personal/password/class_password.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class password extends plugin
+ {
+     /* Definitions */
+--- a/plugins/personal/posix/class_posixAccount.inc
++++ b/plugins/personal/posix/class_posixAccount.inc
+@@ -31,6 +31,7 @@
+   does syntax checking and displays the formulars required.
+  */
+ 
++#[\AllowDynamicProperties]
+ class posixAccount extends plugin
+ {
+   /* Definitions */
+--- a/plugins/personal/posix/groupSelect/class_filterLDAPBlacklist.inc
++++ b/plugins/personal/posix/groupSelect/class_filterLDAPBlacklist.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class filterLDAPBlacklist {
+ 
+   static function query($base, $scope, $filter, $attributes, $category, 
$objectStorage= "")
+--- a/plugins/personal/posix/groupSelect/class_groupSelect.inc
++++ b/plugins/personal/posix/groupSelect/class_groupSelect.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class groupSelect extends management
+ {
+ 
+--- a/plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc
++++ b/plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc
+@@ -1,5 +1,6 @@
+ <?php
+ 
++#[\AllowDynamicProperties]
+ class trustModeDialog extends plugin 
+ {
+     public $attributes  = array("accessTo","trustModel");
+--- a/plugins/personal/posix/trustSelect/class_trustSelect.inc
++++ b/plugins/personal/posix/trustSelect/class_trustSelect.inc
+@@ -20,6 +20,7 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+ 
++#[\AllowDynamicProperties]
+ class trustSelect extends management
+ {
+ 
+--- a/setup/class_setup.inc
++++ b/setup/class_setup.inc
+@@ -23,6 +23,7 @@
+ require_once("class_setupStep.inc");
+ 
+ 
++#[\AllowDynamicProperties]
+ class setup
+ {
+     var $i_steps  = 9;  // Number of setup steps
+--- a/setup/class_setupStep.inc
++++ b/setup/class_setupStep.inc
+@@ -20,6 +20,7 @@
+ */
+ 
+ 
++#[\AllowDynamicProperties]
+ class setup_step extends plugin
+ {
+   var $s_title      = "Still undefined";
+--- a/setup/class_setupStep_Checks.inc
++++ b/setup/class_setupStep_Checks.inc
+@@ -20,6 +20,7 @@
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  */
+ 
++#[\AllowDynamicProperties]
+ class Step_Checks extends setup_step
+ {
+   var $basic_checks = array();
+--- a/setup/class_setupStep_Finish.inc
++++ b/setup/class_setupStep_Finish.inc
+@@ -20,6 +20,7 @@
+  */
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_Finish extends setup_step
+ {
+   var $gosa_conf_contrib   = "/gosa.conf";
+--- a/setup/class_setupStep_Language.inc
++++ b/setup/class_setupStep_Language.inc
+@@ -20,6 +20,7 @@
+ */
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_Language extends setup_step
+ {
+   var $lang_selected  = "";       /* Language selected from select box  */
+--- a/setup/class_setupStep_Ldap.inc
++++ b/setup/class_setupStep_Ldap.inc
+@@ -20,6 +20,7 @@
+ */
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_Ldap extends setup_step
+ {
+   var $connection = "ldap://localhost:389";;
+--- a/setup/class_setupStep_License.inc
++++ b/setup/class_setupStep_License.inc
+@@ -20,6 +20,7 @@
+ */
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_License extends setup_step
+ {
+   var $license_found  = false;
+--- a/setup/class_setupStep_Migrate.inc
++++ b/setup/class_setupStep_Migrate.inc
+@@ -22,6 +22,7 @@
+ 
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_Migrate extends setup_step
+ {
+     var $header_image   = "images/setup/migrate.png";
+--- a/setup/class_setupStep_Schema.inc
++++ b/setup/class_setupStep_Schema.inc
+@@ -20,6 +20,7 @@
+ */
+ 
+ 
++#[\AllowDynamicProperties]
+ class Step_Schema extends setup_step
+ {
+     var $checked = array();
+--- a/setup/class_setupStep_Welcome.inc
++++ b/setup/class_setupStep_Welcome.inc
+@@ -19,7 +19,7 @@
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+ 
+-
++#[\AllowDynamicProperties]
+ class Step_Welcome  extends setup_step
+ {
+   var $languages      = array();
diff -Nru 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1003_php-deprecations.patch 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1003_php-deprecations.patch
--- 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1003_php-deprecations.patch    
    1970-01-01 01:00:00.000000000 +0100
+++ 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1003_php-deprecations.patch    
    2023-07-12 23:10:08.000000000 +0200
@@ -0,0 +1,60 @@
+Description: Silence various PHP 8.2 deprecation warnings.
+Author: Mike Gabriel <mike.gabr...@das-netzwerkteam.de>
+
+--- a/include/class_acl.inc
++++ b/include/class_acl.inc
+@@ -1213,7 +1213,7 @@
+ 
+                 switch ($this->theme) {
+                     case 'classic':
+-                        $display .= "   <td style='border-top:1px solid 
#A0A0A0;${rb}width:".(int)(100/$cols)."%'>
++                        $display .= "   <td style='border-top:1px solid 
#A0A0A0;{$rb}width:".(int)(100/$cols)."%'>
+                                             <b>$dsc</b> 
($attr)<br>".$this->mkrwbx($key."_".$attr, $state)."
+                                         </td>$end";
+                         break;
+@@ -1314,20 +1314,20 @@
+         if($this->acl_is_writeable("")){
+             switch ($this->theme) {
+                 case 'classic':
+-                    return "<input id='acl_".$tname."_r' type='checkbox' 
name='acl_${name}_r' $rstate>
++                    return "<input id='acl_".$tname."_r' type='checkbox' 
name='acl_{$name}_r' $rstate>
+                             <label 
for='acl_".$tname."_r'>"._("read")."</label>
+-                            <input id='acl_".$tname."_w' type='checkbox' 
name='acl_${name}_w' $wstate>
++                            <input id='acl_".$tname."_w' type='checkbox' 
name='acl_{$name}_w' $wstate>
+                             <label 
for='acl_".$tname."_w'>"._("write")."</label>";
+                 default:
+                     return "<label>
+                                 <p>
+-                                    <input type='checkbox' 
id='acl_".$tname."_r' name='acl_${name}_r' $rstate>
++                                    <input type='checkbox' 
id='acl_".$tname."_r' name='acl_{$name}_r' $rstate>
+                                     <span>"._("read")."</span>
+                                 </p>
+                             </label>
+                             <label>
+                                 <p>
+-                                    <input type='checkbox' 
id='acl_".$tname."_w' name='acl_${name}_w' $wstate>
++                                    <input type='checkbox' 
id='acl_".$tname."_w' name='acl_{$name}_w' $wstate>
+                                     <span>"._("write")."</span>
+                                 </p>
+                             </label>" ;
+--- a/include/class_config.inc
++++ b/include/class_config.inc
+@@ -31,7 +31,7 @@
+ class config  {
+ 
+     /* XML parser */
+-    static $parser;
++    static $parser = NULL;
+     var $config_found= FALSE;
+     var $tags= array();
+     var $level= 0;
+--- a/include/class_sortableListing.inc
++++ b/include/class_sortableListing.inc
+@@ -322,6 +322,7 @@
+                         foreach ($this->displayData[$row] as $column) {
+ 
+                             // Do NOT use the onClick statement for columns 
that contain links or buttons.
++                            $column = is_null($column) ? "" : $column;
+                             if (preg_match("<.*type=.submit..*>", $column) || 
preg_match("<a.*href=.*>", $column)) {
+                                 $result.= "   <td$first>".$column."</td>\n";
+                             } else {
diff -Nru 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1004_missing_templates.patch 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1004_missing_templates.patch
--- 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1004_missing_templates.patch   
    1970-01-01 01:00:00.000000000 +0100
+++ 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1004_missing_templates.patch   
    2023-07-12 23:10:13.000000000 +0200
@@ -0,0 +1,156 @@
+Description: Add missing template files to user plugin. (Just copied from 
classic theme.)
+Author: Daniel Teichmann <daniel.teichm...@das-netzwerkteam.de>
+
+Index: gosa-core/plugins/admin/users/default/template.tpl
+===================================================================
+--- /dev/null
++++ gosa-core/plugins/admin/users/default/template.tpl
+@@ -0,0 +1,71 @@
++<div style="font-size:18px;">
++  {t}Creating a new user using templates{/t}
++</div>
++
++<p>
++ {t}Creating a new user can be assisted by using templates. Many database 
records will be filled automatically. Choose 'none' to skip the usage of 
templates.{/t}
++</p>
++
++<hr>
++
++<br>
++
++<table summary="{t}User template selection dialog{/t}" cellpadding=4 border=0>
++  <tr>
++    <td><b><LABEL for="template">{t}Template{/t}</LABEL></b></td>
++    <td>
++      <select size="1" name="template" id="template">
++       {html_options options=$templates selected=$template}
++      </select>
++    </td>
++  </tr>
++  <tr>
++    <td><b><LABEL for="sn">{t}Last name{/t}</LABEL></b></td>
++    <td><input type='text' name="sn" id="sn" size="30" maxlength="40" 
value="{$sn}"></td>
++  </tr>
++  <tr>
++    <td><b><LABEL for="givenName">{t}First name{/t}</LABEL></b></td>
++    <td><input type='text' name="givenName" id="givenName" size="30" 
maxlength="40" value="{$givenName}"></td>
++  </tr>
++  {if $got_uid eq "true"}
++  <tr>
++    <td><b>{t}Login{/t}</b></td>
++    <td>
++      {if $edit_uid eq "false"}
++        {if $allowUidProposalModification == "true"}
++           <select size="1" name="uidSelect" id='uidSelect' onChange="
++                document.getElementById('uid').value = 
document.getElementById('uidSelect').value;">
++            {html_options output=$uids values=$uids selected=$uid}
++          </select>
++          <input type='text' id="uid" name="uid" size="30" maxlength="40" 
value="{$uid}" 
++                style="display: none;">
++          <img src="images/lists/edit.png" onClick="$('uid').toggle();" 
++                title="{t}Modify the uid proposal{/t}">
++        {else}
++           <select size="1" name="uid">
++            {html_options output=$uids values=$uids selected=$uid}
++          </select>
++        {/if}
++      {else}                    
++          <input type='text' id="uid" name="uid" size="30" maxlength="40" 
value="{$uid}">
++      {/if}
++    </td>
++  </tr>
++  {/if}
++</table>
++
++
++<hr>
++<div class="plugin-actions">
++ <button type='submit' name='template_continue'>{t}Continue{/t}</button>
++ <button type='submit' name='edit_cancel'>{msgPool type=cancelButton}</button>
++</div>
++
++
++
++<!-- Place cursor -->
++<script language="JavaScript" type="text/javascript">
++  <!-- // First input field on page
++      focus_field('sn');
++  -->
++</script>
+Index: gosa-core/plugins/admin/users/default/templatize.tpl
+===================================================================
+--- /dev/null
++++ gosa-core/plugins/admin/users/default/templatize.tpl
+@@ -0,0 +1,42 @@
++<div class="template-wrapper">
++  <h2>{t}Applying a template{/t}</h2>
++
++  <p>
++    {t}Applying a template to several users will replace all user attributes 
defined in the template.{/t}
++  </p>
++
++  {if $templates}
++    <div class="row">
++      <div class="col s6">
++        <div class="input-field">
++          <select size="1" name="template" id="template">
++            {html_options options=$templates}
++          </select>
++          <label for="template">{t}Template{/t}</label>
++        </div>
++      </div>
++    </div>
++
++    <div class="plugin-actions card-action">
++      <button class="btn-small primary" type='submit' 
name='templatize_continue'>{msgPool type=applyButton}</button>
++      <button class="btn-small primary" type='submit' 
name='edit_cancel'>{msgPool type=cancelButton}</button>
++    </div>
++  {else}
++    <p class="no-templates">
++      {t}No templates available!{/t}
++    </p>
++
++    <div class="plugin-actions card-action">
++      <button class="btn-small primary" type='submit' 
name='edit_cancel'>{msgPool type=cancelButton}</button>
++    </div>
++
++  {/if}
++
++
++  <!-- Place cursor -->
++  <script language="JavaScript" type="text/javascript">
++    <!-- // First input field on page
++    focus_field('template');
++    -->
++  </script>
++</div>
+Index: gosa-core/plugins/admin/users/default/user-list.tpl
+===================================================================
+--- /dev/null
++++ gosa-core/plugins/admin/users/default/user-list.tpl
+@@ -0,0 +1,25 @@
++<div id="mainlist">
++
++  <div class="mainlist-header">
++   <p>{$HEADLINE}&nbsp;{$SIZELIMIT}</p>
++   <div class="mainlist-nav">
++    <table summary="{$HEADLINE}">
++     <tr>
++      <td>{$ROOT}</td>
++      <td>{$BACK}</td>
++      <td>{$HOME}</td>
++      <td>{$RELOAD}</td>
++      <td class="left-border">{t}Base{/t} {$BASE}</td>
++      <td class="left-border">{$ACTIONS}</td>
++      <td class="left-border">{$FILTER}</td>
++     </tr>
++    </table>
++   </div>
++  </div>
++  
++  {$LIST}
++</div>
++
++<div class="clear"></div>
++
++<input type="hidden" name="ignore">
diff -Nru 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1005_preg_replace_deprecation.patch
 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1005_preg_replace_deprecation.patch
--- 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1005_preg_replace_deprecation.patch
        1970-01-01 01:00:00.000000000 +0100
+++ 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1005_preg_replace_deprecation.patch
        2023-07-12 23:11:12.000000000 +0200
@@ -0,0 +1,17 @@
+Description: Fix deprecation warning for calling preg_replace with NULL at 
argument #3.
+Author: Daniel Teichmann <daniel.teichm...@das-netzwerkteam.de>
+   
+--- a/html/main.php
++++ b/html/main.php
+@@ -340,6 +340,11 @@
+   set_object_info();
+ }
+ 
++/* Avoid calling preg_replace with NULL */
++if (!isset($lang)) {
++  $lang = "";
++}
++
+ /* show web frontend */
+ $smarty->assign ("title","GOsa");
+ $smarty->assign ("logo", get_template_path("images/logo.png"));
diff -Nru 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1006_fix-overflow-debug-print_a-func.patch
 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1006_fix-overflow-debug-print_a-func.patch
--- 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1006_fix-overflow-debug-print_a-func.patch
 1970-01-01 01:00:00.000000000 +0100
+++ 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/1006_fix-overflow-debug-print_a-func.patch
 2023-07-12 23:11:18.000000000 +0200
@@ -0,0 +1,25 @@
+Description: Make table of print_a() scrollable and allow overflow on body. 
This makes debugLevel > 0 usable again.
+Author: Daniel Teichmann <daniel.teichm...@das-netzwerkteam.de>
+
+--- a/include/functions_debug.inc
++++ b/include/functions_debug.inc
+@@ -226,7 +226,7 @@
+       if($return_mode) {
+               return $output;
+       } else {
+-              print $output;
++              print "<div style='overflow: scroll; width: auto; max-height: 
500px;'>" . $output . "</div>";
+               return TRUE;
+       }
+ }
+--- a/html/themes/default/css/main.css
++++ b/html/themes/default/css/main.css
+@@ -9,7 +9,7 @@
+     margin: 0;
+     font-family: "LiberationSans", Arial, Verdana, sans-serif;
+     font-size: 12px;
+-    overflow-y: hidden;
++    /* overflow-y: hidden; */
+ }
+ 
+ h1 {
diff -Nru gosa-2.8~git20230203.10abe45+dfsg/debian/patches/series 
gosa-2.8~git20230203.10abe45+dfsg/debian/patches/series
--- gosa-2.8~git20230203.10abe45+dfsg/debian/patches/series     2023-02-06 
20:43:26.000000000 +0100
+++ gosa-2.8~git20230203.10abe45+dfsg/debian/patches/series     2023-07-12 
23:11:29.000000000 +0200
@@ -1,3 +1,4 @@
+1004_missing_templates.patch
 2001_fix-smarty-location.patch
 2002_fix-template-location.patch
 2003_fix-class-mapping.patch
@@ -7,3 +8,6 @@
 2007_no-pChart.patch
 2008_set-version-file-path.patch
 1002_php82-allow-dynamic-properties.patch
+1003_php-deprecations.patch
+1005_preg_replace_deprecation.patch
+1006_fix-overflow-debug-print_a-func.patch

Reply via email to