pkgsrc-Changes archive

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

CVS commit: [pkgsrc-2024Q1] pkgsrc/databases/phpldapadmin



Module Name:    pkgsrc
Committed By:   bsiegert
Date:           Fri Jun  7 13:52:44 UTC 2024

Modified Files:
        pkgsrc/databases/phpldapadmin [pkgsrc-2024Q1]: Makefile distinfo
        pkgsrc/databases/phpldapadmin/patches [pkgsrc-2024Q1]:
            patch-lib_PLAAttribute.php patch-lib_xmlTemplates.php
Added Files:
        pkgsrc/databases/phpldapadmin/patches [pkgsrc-2024Q1]:
            patch-lib_TemplateRender.php patch-lib_page.php
            patch-lib_schema__functions.php
Removed Files:
        pkgsrc/databases/phpldapadmin/patches [pkgsrc-2024Q1]:
            patch-htdocs_collapse.php patch-htdocs_draw__tree__node.php
            patch-htdocs_expand.php patch-htdocs_refresh.php
            patch-lib_Attribute.php patch-lib_AttributeFactory.php
            patch-lib_BinaryAttribute.php patch-lib_DateAttribute.php
            patch-lib_DnAttribute.php patch-lib_GidAttribute.php
            patch-lib_MultiLineAttribute.php patch-lib_ObjectClassAttribute.php
            patch-lib_PageRender.php patch-lib_PasswordAttribute.php
            patch-lib_SelectionAttribute.php patch-lib_ShadowAttribute.php
            patch-lib_Tree.php patch-lib_Visitor.php patch-lib_common.php
            patch-lib_ds__ldap.php patch-lib_ds__ldap__pla.php
            patch-lib_functions.php

Log Message:
Pullup ticket #6857 - requested by taca
databases/phpldapadmin: security fix

Revisions pulled up:
- databases/phpldapadmin/Makefile                               1.48
- databases/phpldapadmin/distinfo                               1.21
- databases/phpldapadmin/patches/patch-htdocs_collapse.php      deleted
- databases/phpldapadmin/patches/patch-htdocs_draw__tree__node.php deleted
- databases/phpldapadmin/patches/patch-htdocs_expand.php        deleted
- databases/phpldapadmin/patches/patch-htdocs_refresh.php       deleted
- databases/phpldapadmin/patches/patch-lib_Attribute.php        deleted
- databases/phpldapadmin/patches/patch-lib_AttributeFactory.php deleted
- databases/phpldapadmin/patches/patch-lib_BinaryAttribute.php  deleted
- databases/phpldapadmin/patches/patch-lib_DateAttribute.php    deleted
- databases/phpldapadmin/patches/patch-lib_DnAttribute.php      deleted
- databases/phpldapadmin/patches/patch-lib_GidAttribute.php     deleted
- databases/phpldapadmin/patches/patch-lib_MultiLineAttribute.php deleted
- databases/phpldapadmin/patches/patch-lib_ObjectClassAttribute.php deleted
- databases/phpldapadmin/patches/patch-lib_PLAAttribute.php     1.2
- databases/phpldapadmin/patches/patch-lib_PageRender.php       deleted
- databases/phpldapadmin/patches/patch-lib_PasswordAttribute.php deleted
- databases/phpldapadmin/patches/patch-lib_SelectionAttribute.php deleted
- databases/phpldapadmin/patches/patch-lib_ShadowAttribute.php  deleted
- databases/phpldapadmin/patches/patch-lib_TemplateRender.php   1.3
- databases/phpldapadmin/patches/patch-lib_Tree.php             deleted
- databases/phpldapadmin/patches/patch-lib_Visitor.php          deleted
- databases/phpldapadmin/patches/patch-lib_common.php           deleted
- databases/phpldapadmin/patches/patch-lib_ds__ldap.php         deleted
- databases/phpldapadmin/patches/patch-lib_ds__ldap__pla.php    deleted
- databases/phpldapadmin/patches/patch-lib_functions.php        deleted
- databases/phpldapadmin/patches/patch-lib_page.php             1.1
- databases/phpldapadmin/patches/patch-lib_schema__functions.php 1.1
- databases/phpldapadmin/patches/patch-lib_xmlTemplates.php     1.2

---
   Module Name: pkgsrc
   Committed By:        khorben
   Date:                Wed May  8 21:32:20 UTC 2024

   Modified Files:
        pkgsrc/databases/phpldapadmin: Makefile distinfo
        pkgsrc/databases/phpldapadmin/patches: patch-lib_PLAAttribute.php
            patch-lib_xmlTemplates.php
   Added Files:
        pkgsrc/databases/phpldapadmin/patches: patch-lib_TemplateRender.php
            patch-lib_page.php patch-lib_schema__functions.php
   Removed Files:
        pkgsrc/databases/phpldapadmin/patches: patch-htdocs_collapse.php
            patch-htdocs_draw__tree__node.php patch-htdocs_expand.php
            patch-htdocs_refresh.php patch-lib_Attribute.php
            patch-lib_AttributeFactory.php patch-lib_BinaryAttribute.php
            patch-lib_DateAttribute.php patch-lib_DnAttribute.php
            patch-lib_GidAttribute.php patch-lib_MultiLineAttribute.php
            patch-lib_ObjectClassAttribute.php patch-lib_PageRender.php
            patch-lib_PasswordAttribute.php patch-lib_SelectionAttribute.php
            patch-lib_ShadowAttribute.php patch-lib_Tree.php
            patch-lib_Visitor.php patch-lib_common.php patch-lib_ds__ldap.php
            patch-lib_ds__ldap__pla.php patch-lib_functions.php

   Log Message:
   phpldapadmin: update to version 1.2.6.7

   This fixes an XSS vulnerability when importing using a file upload without a
   valid LDIF.

   Tested on NetBSD/amd64, Darwin/amd64.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.47.16.1 pkgsrc/databases/phpldapadmin/Makefile
cvs rdiff -u -r1.20 -r1.20.16.1 pkgsrc/databases/phpldapadmin/distinfo
cvs rdiff -u -r1.1 -r0 \
    pkgsrc/databases/phpldapadmin/patches/patch-htdocs_collapse.php \
    pkgsrc/databases/phpldapadmin/patches/patch-htdocs_draw__tree__node.php \
    pkgsrc/databases/phpldapadmin/patches/patch-htdocs_expand.php \
    pkgsrc/databases/phpldapadmin/patches/patch-htdocs_refresh.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_Attribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_AttributeFactory.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_BinaryAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_DateAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_DnAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_GidAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_MultiLineAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_ObjectClassAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_PasswordAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_SelectionAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_ShadowAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_Tree.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_Visitor.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_common.php
cvs rdiff -u -r1.1 -r1.1.16.1 \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php
cvs rdiff -u -r1.2 -r0 \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_PageRender.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_ds__ldap.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_ds__ldap__pla.php
cvs rdiff -u -r0 -r1.3.2.2 \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_TemplateRender.php
cvs rdiff -u -r1.5 -r0 \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_functions.php
cvs rdiff -u -r0 -r1.1.2.2 \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_page.php \
    pkgsrc/databases/phpldapadmin/patches/patch-lib_schema__functions.php

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/databases/phpldapadmin/Makefile
diff -u pkgsrc/databases/phpldapadmin/Makefile:1.47 pkgsrc/databases/phpldapadmin/Makefile:1.47.16.1
--- pkgsrc/databases/phpldapadmin/Makefile:1.47 Sat Apr 16 03:11:28 2022
+++ pkgsrc/databases/phpldapadmin/Makefile      Fri Jun  7 13:52:43 2024
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.47 2022/04/16 03:11:28 khorben Exp $
+# $NetBSD: Makefile,v 1.47.16.1 2024/06/07 13:52:43 bsiegert Exp $
 
 DISTNAME=      phpldapadmin-${VERSION}
 PKGNAME=       ${PHP_PKG_PREFIX}-${DISTNAME}
@@ -20,7 +20,7 @@ DEPENDS+=     ${PHP_PKG_PREFIX}-gettext>=4.1
 
 USE_TOOLS+=    pax
 
-VERSION=       1.2.6.3
+VERSION=       1.2.6.7
 NO_BUILD=      YES
 
 CONF_FILES+=   ${PREFIX}/share/examples/phpldapadmin/config.php.example \

Index: pkgsrc/databases/phpldapadmin/distinfo
diff -u pkgsrc/databases/phpldapadmin/distinfo:1.20 pkgsrc/databases/phpldapadmin/distinfo:1.20.16.1
--- pkgsrc/databases/phpldapadmin/distinfo:1.20 Sat Apr 16 03:11:28 2022
+++ pkgsrc/databases/phpldapadmin/distinfo      Fri Jun  7 13:52:43 2024
@@ -1,29 +1,10 @@
-$NetBSD: distinfo,v 1.20 2022/04/16 03:11:28 khorben Exp $
+$NetBSD: distinfo,v 1.20.16.1 2024/06/07 13:52:43 bsiegert Exp $
 
-BLAKE2s (phpldapadmin-1.2.6.3.tar.gz) = 357714bc52f95ce722eb85b008b395ce22843b223e312e9ec22e5ecb7304a2e9
-SHA512 (phpldapadmin-1.2.6.3.tar.gz) = 66aeb81c812830968df5d3a2f0ccdd479fe5d7ed3bb729c0fb9991d3efa20263a493b38bfe48c99ad2c93c2ee549f51f53e064fb1381bc7e126ca2ad2bfc3167
-Size (phpldapadmin-1.2.6.3.tar.gz) = 1130061 bytes
-SHA1 (patch-htdocs_collapse.php) = 2ba096f8ba5c8304e27f3d10818605da667be72c
-SHA1 (patch-htdocs_draw__tree__node.php) = 63ec819e6fdc7be05188df9a4d603e0d01261b2e
-SHA1 (patch-htdocs_expand.php) = 06b83f5093e23f1628cb1be7a741b0eabe5e0e97
-SHA1 (patch-htdocs_refresh.php) = ea724a89cd540191ec4c2e2adbb3c25b359cdbe6
-SHA1 (patch-lib_Attribute.php) = e0d95fc787e19da0b779dc0b974a2755f0d1c0e7
-SHA1 (patch-lib_AttributeFactory.php) = 7db91e50bc649ee0a4bea6a63cb9f055be3f9340
-SHA1 (patch-lib_BinaryAttribute.php) = 108b6fdca6f0013513adc81c6f092ef85c821a2b
-SHA1 (patch-lib_DateAttribute.php) = 051ebe274fa7ebb53955464d7b6a63d34c334d4b
-SHA1 (patch-lib_DnAttribute.php) = 8014cf8e8fe278298979197aaf8370b31adf65cb
-SHA1 (patch-lib_GidAttribute.php) = 483c4a5ad673a2244cbdf5efd008395174520544
-SHA1 (patch-lib_MultiLineAttribute.php) = e5ac91a1d20b1103fd708c463b3bab1b42cc3b4d
-SHA1 (patch-lib_ObjectClassAttribute.php) = 710741d4938345b4548c7fdc7b281c7f50c18eab
-SHA1 (patch-lib_PLAAttribute.php) = 4ea90a667d341789a825f2d3a022d47e0c31f582
-SHA1 (patch-lib_PageRender.php) = b9dfb3a1eb7d7170fc054b46ce78a333a5693047
-SHA1 (patch-lib_PasswordAttribute.php) = 6c75b2e79c185ab213f4b5b12838c457b56641fc
-SHA1 (patch-lib_SelectionAttribute.php) = 541fa3d50c0d971d86eb57c53c2cafbb2ed79076
-SHA1 (patch-lib_ShadowAttribute.php) = f75dbda7c48172381d786d170cde674232673798
-SHA1 (patch-lib_Tree.php) = 3a19a78e12c125d86e5c61abcceee40e620f2558
-SHA1 (patch-lib_Visitor.php) = fa7606271887feaa94eb74f80933d6c2f572f21b
-SHA1 (patch-lib_common.php) = e039f34c44640022cb3501cc0e625b1dfc348268
-SHA1 (patch-lib_ds__ldap.php) = 5ef5eabcbca6b4c4d877f864e8beae3cb6d84c41
-SHA1 (patch-lib_ds__ldap__pla.php) = 69f1fd2e6b019ed741595099f6acfe5052a65833
-SHA1 (patch-lib_functions.php) = 1a2fa831a150d84b67dd3c9e5dde9d153d5e6383
-SHA1 (patch-lib_xmlTemplates.php) = f58ea751b9d2c9f5adfc968a73dcb94a3fe121c2
+BLAKE2s (phpldapadmin-1.2.6.7.tar.gz) = 36020f7bf84bc1171d74002cf7d0e142a29a568566ba88513c30bfe1c8b39fee
+SHA512 (phpldapadmin-1.2.6.7.tar.gz) = 4a0ea1cb5bfeeb6a6a242b29137cdd26c014788d771ce9cf5dcef771756b38575a2fd3e04d00cd3ff5181bf8891037bc347d4f933c67958376d2246fa72752c7
+Size (phpldapadmin-1.2.6.7.tar.gz) = 1133418 bytes
+SHA1 (patch-lib_PLAAttribute.php) = d95e873f4ee418d9a5fb3a88fa99968a6f0cf883
+SHA1 (patch-lib_TemplateRender.php) = 3b0945d796152cb4a432d5219a2ea3841eb1c160
+SHA1 (patch-lib_page.php) = 6721e35db12e5f71352a113e8dda680214cef20b
+SHA1 (patch-lib_schema__functions.php) = 4c723edaed93458f71e9a54245366b5e62b8e8a9
+SHA1 (patch-lib_xmlTemplates.php) = a6e70d783fb8bbc18b127f64c3ebb221644a151e

Index: pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php
diff -u pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php:1.1 pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php:1.1.16.1
--- pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php:1.1        Sat Apr 16 03:11:28 2022
+++ pkgsrc/databases/phpldapadmin/patches/patch-lib_PLAAttribute.php    Fri Jun  7 13:52:43 2024
@@ -1,922 +1,16 @@
-$NetBSD: patch-lib_PLAAttribute.php,v 1.1 2022/04/16 03:11:28 khorben Exp $
+$NetBSD: patch-lib_PLAAttribute.php,v 1.1.16.1 2024/06/07 13:52:43 bsiegert Exp $
 
---- lib/PLAAttribute.php.orig  2022-04-15 22:53:04.000000000 +0000
+Avoid deprecation warnings.
+
+--- lib/PLAAttribute.php.orig  2024-01-10 22:23:54.000000000 +0000
 +++ lib/PLAAttribute.php
-@@ -0,0 +1,917 @@
-+<?php
-+/**
-+ * Classes and functions for the template engine.
-+ *
-+ * @author The phpLDAPadmin development team
-+ * @package phpLDAPadmin
-+ */
-+
-+/**
-+ * Represents an attribute of a template.
-+ *
-+ * @package phpLDAPadmin
-+ * @subpackage Templates
-+ */
-+class PLAAttribute {
-+      # Attribute Name
-+      public $name;
-+      # Source of this attribute definition
-+      protected $source;
-+
-+      # Current and Old Values
-+      protected $oldvalues = array();
-+      protected $values = array();
-+
-+      # MIN/MAX number of values
-+      protected $min_value_count = -1;
-+      protected $max_value_count = -1;
-+
-+      # Is the attribute internal
-+      protected $internal = false;
-+      # Has the attribute been modified
-+      protected $modified = false;
-+      # Is the attribute being deleted because of an object class removal
-+      protected $forcedelete = false;
-+      # Is the attribute visible
-+      protected $visible = false;
-+      protected $forcehide = false;
-+      # Is the attribute modifiable
-+      protected $readonly = false;
-+      # LDAP attribute type MUST/MAY
-+      protected $ldaptype = null;
-+      # Attribute property type (eg password, select, multiselect)
-+      protected $type = '';
-+      # Attribute value to keep unique
-+      protected $unique = false;
-+
-+      # Display parameters
-+      protected $display = '';
-+      protected $icon = '';
-+      protected $hint = '';
-+      # Helper details
-+      protected $helper = array();
-+      protected $helpervalue = array();
-+      # Onchange details
-+      protected $onchange = array();
-+      # Show spacer after this attribute is rendered
-+      protected $spacer = false;
-+      protected $verify = false;
-+
-+      # Component size
-+      protected $size = 0;
-+      # Value max length
-+      protected $maxlength = 0;
-+      # Text Area sizings
-+      protected $cols = 0;
-+      protected $rows = 0;
-+
-+      # Public for sorting
-+      public $page = 1;
-+      public $order = 255;
-+      public $ordersort = 255;
-+      public $rdn = false;
-+
-+      # Schema Aliases for this attribute (stored in lowercase)
-+      protected $aliases = array();
-+
-+      # Configuration for automatically generated values
-+      protected $autovalue = array();
-+      protected $postvalue = array();
-+
-+      public function __construct($name,$values,$server_id,$source=null) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $server = $_SESSION[APPCONFIG]->getServer($server_id);
-+
-+              $sattr = $server->getSchemaAttribute($name);
-+              if ($sattr) {
-+                      $this->name = $sattr->getName(false);
-+                      $this->setLDAPdetails($sattr);
-+
-+              } else
-+                      $this->name = $name;
-+
-+              $this->source = $source;
-+
-+              # XML attributes are shown by default
-+              switch ($source) {
-+                      case 'XML': $this->show();
-+                              $this->setXML($values);
-+
-+                              break;
-+
-+                      default:
-+                              if (! isset($values['values']))
-+                                      debug_dump_backtrace('no index "values"',1);
-+
-+                              $this->initValue($values['values']);
-+              }
-+
-+              # Should this attribute be hidden
-+              if ($server->isAttrHidden($this->name))
-+                      $this->forcehide = true;
-+
-+              # Should this attribute value be read only
-+              if ($server->isAttrReadOnly($this->name))
-+                      $this->readonly = true;
-+
-+              # Should this attribute value be unique
-+              if ($server->isAttrUnique($this->name))
-+                      $this->unique = true;
-+      }
-+
-+      /**
-+       * Return the name of the attribute.
-+       *
-+       * @param boolean $lower - Return the attribute in normal or lower case (default lower)
-+       * @param boolean $real - Return the real attribute name (with ;binary, or just the name)
-+       * @return string Attribute name
-+       */
-+      public function getName($lower=true,$real=false) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->name);
-+
-+              if ($real)
-+                      return $lower ? strtolower($this->name) : $this->name;
-+              else
-+                      return $lower ? strtolower($this->real_attr_name()) : $this->real_attr_name();
-+      }
-+
-+      public function getValues() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->values);
-+
-+              return $this->values;
-+      }
-+
-+      public function getOldValues() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->oldvalues);
-+
-+              return $this->oldvalues;
-+      }
-+
-+      public function getValueCount() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->values);
-+
-+              return count($this->values);
-+      }
-+
-+      public function getSource() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->source);
-+
-+              return $this->source;
-+      }
-+
-+      /**
-+       * Autovalue is called after the attribute is initialised, and thus the values from the ldap server will be set.
-+       */
-+      public function autoValue($new_val) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->values)
-+                      return;
-+
-+              $this->values = $new_val;
-+      }
-+
-+      public function initValue($new_val) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->values || $this->oldvalues) {
-+                      debug_dump(array('new_val'=>$new_val,'this'=>$this));
-+                      debug_dump_backtrace('new and/or old values are set',1);
-+              }
-+
-+              $this->values = $new_val;
-+      }
-+
-+      public function clearValue() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->values = array();
-+      }
-+
-+      public function setOldValue($val) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->oldvalues = $val;
-+      }
-+
-+      public function setValue($new_val) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->values) {
-+                      if ($this->values == $new_val)
-+                              return;
-+
-+                      if ($this->oldvalues) {
-+                              debug_dump($this);
-+                              debug_dump_backtrace('old values are set',1);
-+                      } else
-+                              $this->oldvalues = $this->values;
-+              }
-+
-+              if ($new_val == $this->values)
-+                      return;
-+
-+              $this->values = $new_val;
-+              $this->justModified();
-+      }
-+
-+      public function addValue($new_val,$i=-1) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($i < 0)
-+                      $i = $this->getValueCount();
-+
-+              $old_val = $this->getValue($i);
-+              if (is_null($old_val) || ($old_val != $new_val))
-+                      $this->justModified();
-+
-+              $this->values[$i] = $new_val;
-+      }
-+
-+      public function delValue($i=-1) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($i < 0)
-+                      $this->setValue(array());
-+
-+              if (! $this->hasBeenModified())
-+                      $this->oldvalues = $this->values;
-+
-+              if (isset($this->values[$i])) {
-+                      unset($this->values[$i]);
-+                      $this->values = array_values($this->values);
-+                      $this->justModified();
-+              }
-+      }
-+
-+      public function getValue($i) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if (isset($this->values[$i]))
-+                      return $this->values[$i];
-+              else
-+                      return null;
-+      }
-+
-+      public function getOldValue($i) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if (isset($this->oldvalues[$i]))
-+                      return $this->oldvalues[$i];
-+              else
-+                      return null;
-+      }
-+
-+      public function getMinValueCount() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->min_value_count);
-+
-+              return $this->min_value_count;
-+      }
-+
-+      public function setMinValueCount($min) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->min_value_count = $min;
-+      }
-+
-+      public function getMaxValueCount() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->max_value_count);
-+
-+              return $this->max_value_count;
-+      }
-+
-+      public function setMaxValueCount($max) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->max_value_count = $max;
-+      }
-+
-+      public function haveMoreValues() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->getMaxValueCount() < 0 || ($this->getValueCount() < $this->getMaxValueCount()))
-+                      return true;
-+              else
-+                      return false;
-+      }
-+
-+      public function justModified() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->modified = true;
-+      }
-+
-+      public function hasBeenModified() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->modified);
-+
-+              return $this->modified;
-+      }
-+
-+      public function isForceDelete() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->forcedelete);
-+
-+              return $this->forcedelete;
-+      }
-+
-+      public function setForceDelete() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->forcedelete = true;
-+              $this->oldvalues = $this->values;
-+              $this->values = array();
-+              $this->justModified();
-+      }
-+
-+      public function isInternal() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->internal);
-+
-+              return $this->internal;
-+      }
-+
-+      public function setInternal() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->internal = true;
-+      }
-+
-+      public function isRequired() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->getMinValueCount() > 0)
-+                      return true;
-+              elseif ($this->ldaptype == 'must')
-+                      return true;
-+              elseif ($this->isRDN())
-+                      return true;
-+              else
-+                      return false;
-+      }
-+
-+      public function isMay() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if (($this->ldaptype == 'may') && ! $this->isRequired())
-+                      return true;
-+              else
-+                      return false;
-+      }
-+
-+      public function setType($type) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->type = strtolower($type);
-+      }
-+
-+      public function getType() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->type);
-+
-+              return $this->type;
-+      }
-+
-+      public function setLDAPtype($type) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->ldaptype = strtolower($type);
-+      }
-+
-+      public function getLDAPtype() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->ldaptype);
-+
-+              return $this->ldaptype;
-+      }
-+
-+      public function setProperties($properties) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              foreach ($properties as $index => $value) {
-+                      if ($index == 'maxvalnb') {
-+                              $this->setMaxValueCount($value);
-+                              continue;
-+
-+                      } elseif ($index == 'minvalnb') {
-+                              $this->setMinValueCount($value);
-+                              continue;
-+
-+                      } elseif ($index == 'maxlength') {
-+                              $this->setMinValueCount($value);
-+                              continue;
-+
-+                      } elseif ($index == 'hidden') {
-+                              $this->visible = $value;
-+                              continue;
-+
-+                      } elseif (in_array($index,array('cols','rows'))) {
-+                              # @todo To be implemented
-+                              continue;
-+                      }
-+
-+                      if (isset($this->$index))
-+                              $this->$index = $value;
-+                      else {
-+                              debug_dump($this);
-+                              debug_dump_backtrace(sprintf('Unknown property (%s) with value (%s) for (%s)',$index,$value,$this->getName()),1);
-+                      }
-+              }
-+      }
-+
-+      public function setRequired() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if ($this->getMinValueCount() <= 0)
-+                      $this->setMinValueCount(1);
-+      }
-+
-+      public function setOptional() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->setMinValueCount(0);
-+      }
-+
-+      public function isReadOnly() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->readonly);
-+
-+              return $this->readonly;
-+      }
-+
-+      public function setReadOnly() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->readonly = true;
-+      }
-+
-+      public function isMultiple() {
-+              return false;
-+      }
-+
-+      public function isVisible() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              return $this->visible && (! $this->forcehide);
-+      }
-+
-+      public function hide() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->visible = false;
-+      }
-+
-+      public function show() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->visible = true;
-+      }
-+
-+      public function haveFriendlyName() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              return $_SESSION[APPCONFIG]->haveFriendlyName($this);
-+      }
-+
-+      public function getFriendlyName() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->display);
-+
-+              if ($this->display)
-+                      return $this->display;
-+              else
-+                      return $_SESSION[APPCONFIG]->getFriendlyName($this);
-+      }
-+
-+      public function setDescription($description) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->description = $description;
-+      }
-+
-+      public function getDescription() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->description);
-+
-+              return $this->description;
-+      }
-+
-+      public function setIcon($icon) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->icon = $icon;
-+      }
-+
-+      public function getIcon() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->icon);
-+
-+              return $this->icon ? sprintf('%s/%s',IMGDIR,$this->icon) : '';
-+      }
-+
-+      public function getHint() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->hint);
-+
-+              return $this->hint;
-+      }
-+
-+      public function setHint($hint) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->hint = $hint;
-+      }
-+
-+      public function getMaxLength() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->maxlength);
-+
-+              return $this->maxlength;
-+      }
-+
-+      public function setMaxLength($maxlength) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->maxlength = $maxlength;
-+      }
-+
-+      public function getSize() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->size);
-+
-+              return $this->size;
-+      }
-+
-+      public function setSize($size) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->size = $size;
-+      }
-+
-+      public function getSpacer() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->spacer);
-+
-+              return $this->spacer;
-+      }
-+
-+      public function getPage() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->page);
-+
-+              return $this->page;
-+      }
-+      public function setPage($page) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->page = $page;
-+      }
-+
-+      public function getOnChange() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->onchange);
-+
-+              return $this->onchange;
-+      }
-+
-+      public function getHelper() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->helper);
-+
-+              return $this->helper;
-+      }
-+
-+      public function getHelperValue() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->helpervalue);
-+
-+              return $this->helpervalue;
-+      }
-+
-+      public function getVerify() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->verify);
-+
-+              return $this->verify;
-+      }
-+
-+      public function setRDN($rdn) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->rdn = $rdn;
-+      }
-+
-+      /**
-+       * Return if this attribute is an RDN attribute
-+       *
-+       * @return boolean
-+       */
-+      public function isRDN() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs,$this->rdn);
-+
-+              return $this->rdn;
-+      }
-+
-+      /**
-+       * Capture all the LDAP details we are interested in
-+       *
-+       * @param sattr Schema Attribute
-+       */
-+      private function setLDAPdetails($sattr) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              # By default, set this as a MAY attribute, later processing should make it a MUST attribute if it is.
-+              if (! $this->ldaptype)
-+                      $this->ldaptype = 'may';
-+
-+              # Store our Aliases
-+              foreach ($sattr->getAliases() as $alias)
-+                      array_push($this->aliases,strtolower($alias));
-+
-+              if ($sattr->getIsSingleValue())
-+                      $this->setMaxValueCount(1);
-+      }
-+
-+      /**
-+       * Return a list of aliases for this Attribute (as defined by the schema)
-+       * This list will be lowercase.
-+       */
-+      public function getAliases() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->aliases);
-+
-+              return $this->aliases;
-+      }
-+
-+      public function getAutoValue() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->autovalue);
-+
-+              return $this->autovalue;
-+      }
-+
-+      public function getPostValue() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->postvalue);
-+
-+              return $this->postvalue;
-+      }
-+
-+      public function setPostValue($postvalue) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              $this->postvalue = $postvalue;
-+      }
-+
-+      public function setXML($values) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              # Mostly all the time, this should be an array
-+              if (is_array($values))
-+                      foreach ($values as $index => $value)
-+                              switch ($index) {
-+                                      # Helpers should be accompanied with a <post> attribute.
-+                                      case 'helper':
-+                                              if (! isset($values['post']) && ! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning'))
-+                                                      system_message(array(
-+                                                              'title'=>sprintf('%s [<i>%s</i>]',_('Missing [post] setting in XML file'),$index),
-+                                                              'body'=>_('[helper] needs an accompanying [post] action.'),
-+                                                              'type'=>'warn'));
-+
-+                                              if (isset($value['value']) && ! is_array($value['value']) && preg_match('/^=php\.(\w+)\((.*)\)$/',$value['value'],$matches)) {
-+                                                      $this->helpervalue['function'] = $matches[1];
-+                                                      $this->helpervalue['args'] = $matches[2];
-+
-+                                                      unset ($value['value']);
-+                                              }
-+
-+                                              foreach ($value as $i => $detail) {
-+                                                      if (! in_array($i,array('default','display','id','value'))) {
-+                                                              if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning'))
-+                                                                      system_message(array(
-+                                                                              'title'=>sprintf('%s [<i>%s</i>]',_('Unknown XML setting'),$i),
-+                                                                              'body'=>sprintf('%s <small>[%s]</small>',_('Unknown XML type setting for helper will be ignored.'),$detail),
-+                                                                              'type'=>'warn'));
-+
-+                                                              unset($value[$i]);
-+                                                      }
-+                                              }
-+
-+                                              $this->$index = $value;
-+
-+                                              break;
-+
-+                                      case 'hidden': $value ? $this->visible = false : $this->visible = true;
-+                                              break;
-+
-+                                      case 'spacer': $value ? $this->$index = true : $this->$index = false;
-+                                              break;
-+
-+                                      # Essentially, we ignore type, it is used to select an Attribute type in the Factory. But we'll generated a warning if there is an unknown type.
-+                                      case 'type':
-+                                              if (! in_array($value,array('password','multiselect','select','textarea')) && ! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning'))
-+                                                      system_message(array(
-+                                                              'title'=>sprintf('%s [<i>%s</i>]',_('Unknown XML setting'),$index),
-+                                                              'body'=>sprintf('%s <small>[%s]</small>',_('Unknown XML type setting will be ignored.'),$value),
-+                                                              'type'=>'warn'));
-+
-+                                              break;
-+
-+                                      case 'post':
-+                                              if (preg_match('/^=php\.(\w+)\((.*)\)$/',$value,$matches)) {
-+                                                      $this->postvalue['function'] = $matches[1];
-+                                                      $this->postvalue['args'] = $matches[2];
-+
-+                                              } else
-+                                                      if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning'))
-+                                                              system_message(array(
-+                                                                      'title'=>sprintf('%s [<i>%s</i>]',_('Unknown XML setting'),$index),
-+                                                                      'body'=>sprintf('%s <small>[%s]</small>',_('Unknown XML type setting will be ignored.'),$value),
-+                                                                      'type'=>'warn'));
-+
-+                                      case 'value':
-+                                              if (is_array($value))
-+                                                      foreach ($value as $x => $y) {
-+                                                              if (! $this->haveMoreValues()) {
-+                                                                      system_message(array(
-+                                                                      'title'=>_('Automatically removed attribute values from template'),
-+                                                                              'body'=>sprintf('%s <small>[%s]</small>',_('Template defines more values than can be accepted by 
attribute.'),$this->getName(true)),
-+                                                                              'type'=>'warn'));
-+
-+                                                                      $this->clearValue();
-+
-+                                                                      break;
-+
-+                                                              } else
-+                                                                      $this->addValue($x,$y);
-+                                                      }
-+
-+                                              else
-+                                                      # Check to see if the value is auto generated.
-+                                                      if (preg_match('/^=php\.(\w+)\((.*)\)$/',$value,$matches)) {
-+                                                              $this->autovalue['function'] = $matches[1];
-+                                                              $this->autovalue['args'] = $matches[2];
-+
-+                                                              # We'll add a hint too
-+                                                              if (! $this->hint)
-+                                                                      $this->hint = _('Automatically determined');
-+
-+                                                      } else
-+                                                              $this->addValue($value);
-+
-+                                              break;
-+
-+                                      # Queries
-+                                      case 'ordersort':
-+
-+                                      # Creation/Editing Templates
-+                                      case 'cols':
-+                                      case 'default':
-+                                      case 'display':
-+                                      case 'hint':
-+                                      case 'icon':
-+                                      case 'maxlength':
-+                                      case 'onchange':
-+                                      case 'order':
-+                                      case 'page':
-+                                      case 'readonly':
-+                                      case 'rows':
-+                                      case 'size':
-+                                      case 'values':
-+                                      case 'verify': $this->$index = $value;
-+                                              break;
-+
-+                                      case 'max':
-+                                              if ($this->getMaxValueCount() == -1)
-+                                                      $this->setMaxValueCount($value);
-+
-+                                      default:
-+                                              if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning'))
-+                                                      system_message(array(
-+                                                              'title'=>sprintf('%s [<i>%s</i>]',_('Unknown XML setting'),$index),
-+                                                              'body'=>sprintf('%s <small>[%s]</small>',_('Unknown attribute setting will be ignored.'),serialize($value)),
-+                                                              'type'=>'warn'));
-+                              }
-+
-+              elseif (is_string($values) && (strlen($values) > 0))
-+                      $this->values = array($values);
-+      }
-+
-+      /**
-+       * Display the values removed in an attribute.
-+       */
-+      public function getRemovedValues() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              return array_diff($this->getOldValues(),$this->getValues());
-+      }
-+
-+      /**
-+       * Display the values removed in an attribute.
-+       */
-+      public function getAddedValues() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              return array_diff($this->getValues(),$this->getOldValues());
-+      }
-+
-+      /**
-+       * Prunes off anything after the ";" in an attr name. This is useful for
-+       * attributes that may have ";binary" appended to their names. With
-+       * real_attr_name(), you can more easily fetch these attributes' schema
-+       * with their "real" attribute name.
-+       *
-+       * @param string $attr_name The name of the attribute to examine.
-+       * @return string
-+       */
-+      private function real_attr_name() {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,1,__FILE__,__LINE__,__METHOD__,$fargs,$this->name);
-+
-+              return preg_replace('/;.*$/U','',$this->name);
-+      }
-+
-+      /**
-+       * Does this attribute need supporting JS
-+       */
-+      public function needJS($type=null) {
-+              if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
-+                      debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
-+
-+              if (is_null($type)) {
-+                      foreach (array('focus','blur','validate') as $type)
-+                              if ($this->needJS($type))
-+                                      return true;
-+
-+                      return false;
-+
-+              } elseif ($type == 'focus') {
-+                      # We dont have any focus javascript routines.
-+                      return false;
-+
-+              } elseif ($type == 'blur') {
-+                      if ($this->onchange || $this->isRequired())
-+                              return true;
-+                      else
-+                              return false;
-+
-+              } elseif ($type == 'validate') {
-+                      if ($this->isRequired())
-+                              return true;
-+                      else
-+                              return false;
-+
-+              } else
-+                      debug_dump_backtrace(sprintf('Unknown JS request %s',$type),1);
-+      }
-+}
-+?>
+@@ -78,6 +78,9 @@ class PLAAttribute {
+       protected $autovalue = array();
+       protected $postvalue = array();
+ 
++      # Additional properties
++      public $js;
++
+       public function __construct($name,$values,$server_id,$source=null) {
+               if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
+                       debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);
Index: pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php
diff -u pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php:1.1 pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php:1.1.16.1
--- pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php:1.1        Sat Apr 16 03:11:28 2022
+++ pkgsrc/databases/phpldapadmin/patches/patch-lib_xmlTemplates.php    Fri Jun  7 13:52:44 2024
@@ -1,13 +1,16 @@
-$NetBSD: patch-lib_xmlTemplates.php,v 1.1 2022/04/16 03:11:28 khorben Exp $
+$NetBSD: patch-lib_xmlTemplates.php,v 1.1.16.1 2024/06/07 13:52:44 bsiegert Exp $
 
---- lib/xmlTemplates.php.orig  2012-10-01 06:54:14.000000000 +0000
+Avoid deprecation warnings.
+
+--- lib/xmlTemplates.php.orig  2024-01-10 22:23:54.000000000 +0000
 +++ lib/xmlTemplates.php
-@@ -140,7 +140,7 @@ abstract class xmlTemplates {
- 
-               if ($changed) {
-                       masort($this->templates,'title');
--                      set_cached_item($server_id,$class['item'],'null',$this->templates);
-+                      set_cached_item($server_id,$this->templates,$class['item'],'null');
-               }
-       }
+@@ -272,6 +272,9 @@ abstract class xmlTemplate {
+       # The TEMPLATE attributes as per the template definition, or the DN entry
+       protected $attributes = array();
  
++      # Additional properties
++      protected $askcontainer;
++
+       public function __construct($server_id,$name='',$filename=null,$type=null,$id=null) {
+               if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
+                       debug_log('Entered (%%)',5,0,__FILE__,__LINE__,__METHOD__,$fargs);

Added files:

Index: pkgsrc/databases/phpldapadmin/patches/patch-lib_TemplateRender.php
diff -u /dev/null pkgsrc/databases/phpldapadmin/patches/patch-lib_TemplateRender.php:1.3.2.2
--- /dev/null   Fri Jun  7 13:52:44 2024
+++ pkgsrc/databases/phpldapadmin/patches/patch-lib_TemplateRender.php  Fri Jun  7 13:52:43 2024
@@ -0,0 +1,16 @@
+$NetBSD: patch-lib_TemplateRender.php,v 1.3.2.2 2024/06/07 13:52:43 bsiegert Exp $
+
+Avoid deprecation warnings.
+
+--- lib/TemplateRender.php.orig        2024-01-10 22:23:54.000000000 +0000
++++ lib/TemplateRender.php
+@@ -16,6 +16,9 @@ class TemplateRender extends PageRender
+       # Page number
+       private $pagelast;
+ 
++      # Additional properties
++      private $layout, $url_base;
++
+       /** CORE FUNCTIONS **/
+ 
+       /**

Index: pkgsrc/databases/phpldapadmin/patches/patch-lib_page.php
diff -u /dev/null pkgsrc/databases/phpldapadmin/patches/patch-lib_page.php:1.1.2.2
--- /dev/null   Fri Jun  7 13:52:44 2024
+++ pkgsrc/databases/phpldapadmin/patches/patch-lib_page.php    Fri Jun  7 13:52:44 2024
@@ -0,0 +1,16 @@
+$NetBSD: patch-lib_page.php,v 1.1.2.2 2024/06/07 13:52:44 bsiegert Exp $
+
+Avoid deprecation warnings.
+
+--- lib/page.php.orig  2024-05-08 18:12:37.313204677 +0000
++++ lib/page.php
+@@ -25,6 +25,9 @@ class page {
+       # Default values array.
+       protected $_default;
+ 
++      # Additional properties
++      protected $index, $sysmsg, $_block;
++
+       public function __construct($index=null) {
+               if (defined('DEBUG_ENABLED') && DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
+                       debug_log('Entered (%%)',129,0,__FILE__,__LINE__,__METHOD__,$fargs);
Index: pkgsrc/databases/phpldapadmin/patches/patch-lib_schema__functions.php
diff -u /dev/null pkgsrc/databases/phpldapadmin/patches/patch-lib_schema__functions.php:1.1.2.2
--- /dev/null   Fri Jun  7 13:52:44 2024
+++ pkgsrc/databases/phpldapadmin/patches/patch-lib_schema__functions.php       Fri Jun  7 13:52:44 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_schema__functions.php,v 1.1.2.2 2024/06/07 13:52:44 bsiegert Exp $
+
+Avoid deprecation warnings.
+
+--- lib/schema_functions.php.orig      2024-01-10 22:23:54.000000000 +0000
++++ lib/schema_functions.php
+@@ -24,7 +24,7 @@ abstract class SchemaItem {
+       # The description of this schema item.
+       protected $description = '';
+       # Boolean value indicating whether this objectClass is obsolete
+-      private $is_obsolete = false;
++      protected $is_obsolete = false;
+ 
+       public function setOID($oid) {
+               if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))



Home | Main Index | Thread Index | Old Index