2 commits - lib/api lib/ext

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Thu Nov 1 16:23:15 CET 2012


 lib/api/kolab_api_service_form_value.php |   33 +++++++++++++++++++++++++++++--
 lib/ext/Net/LDAP3.php                    |   28 ++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 2 deletions(-)

New commits:
commit 498503cfbcd607d21f3d2a3cafd38c4ae809a844
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Nov 1 16:21:01 2012 +0100

    Preserve additional aliases that may have been configured
    Allow an additional parameter "validate" to be set to false for object type attributes, to allow objects with external attributes to be configured
    Do not (int) mailquota as it is not needed any longer
    Set the astaccountrealmedpassword from the userpassword if available

diff --git a/lib/api/kolab_api_service_form_value.php b/lib/api/kolab_api_service_form_value.php
index 25c44b5..2beee83 100644
--- a/lib/api/kolab_api_service_form_value.php
+++ b/lib/api/kolab_api_service_form_value.php
@@ -223,6 +223,8 @@ class kolab_api_service_form_value extends kolab_api_service
 
             if (array_key_exists($attr_name, $attribs['form_fields']) && !empty($attribs['form_fields'][$attr_name]['optional']) && !$attribs['form_fields'][$attr_name]['optional']) {
                 $result[$attr_name] = $this->{$method_name}($attr_value, $postdata);
+            } elseif (array_key_exists($attr_name, $attribs['form_fields']) && !empty($attribs['form_fields'][$attr_name]['validate']) && !$attribs['form_fields'][$attr_name]['validate']) {
+                $result[$attr_name] = $attr_value;
             } else {
                 try {
                     $result[$attr_name] = $this->{$method_name}($attr_value, $postdata);
@@ -240,7 +242,29 @@ class kolab_api_service_form_value extends kolab_api_service
 
     private function generate_alias($postdata, $attribs = array())
     {
-        return $this->generate_secondary_mail($postdata, $attribs);
+        $rcpt_pol_aliases = $this->generate_secondary_mail($postdata, $attribs);
+
+        $service = $this->controller->get_service('user');
+        $user_attrs  = $service->user_info(Array( "user" => $postdata['id']), null);
+
+        if (!empty($user_attrs['alias'])) {
+            $cur_aliases = $user_attrs['alias'];
+        } else {
+            $cur_aliases = Array();
+        }
+
+        if (!is_array($cur_aliases)) {
+            $cur_aliases = (array)($cur_aliases);
+        }
+
+        sort($rcpt_pol_aliases);
+        sort($cur_aliases);
+
+        $form_aliases = array_unique(array_merge($rcpt_pol_aliases, $cur_aliases));
+
+        Log::trace("kolab_api_service_form_value::generate_alias() \$form_aliases: " . var_export($form_aliases, TRUE));
+
+        return array_values($form_aliases);
     }
 
     private function generate_astaccountcallerid($postdata, $attribs = array())
@@ -1006,6 +1030,10 @@ class kolab_api_service_form_value extends kolab_api_service
 
     private function validate_astaccountrealmedpassword($value, $postdata)
     {
+        if (!array_key_exists('userpassword', $postdata) || empty($postdata['userpassword'])) {
+            return $value;
+        }
+
         if (!array_key_exists('uid', $postdata) || empty($postdata['uid'])) {
             $postdata['uid'] = $this->generate_uid($postdata);
         }
@@ -1042,7 +1070,8 @@ class kolab_api_service_form_value extends kolab_api_service
 
     private function validate_mailquota($value)
     {
-        return (int)($value);
+        //return (int)($value);
+        return $value;
     }
 
     private function validate_mailalternateaddress($value)


commit 0a0089a7aee4c22e07b68bc91650ad1cf5dc0e31
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Nov 1 16:19:20 2012 +0100

    Ensure attributes that are multi-valued but only contain one item are compared correctly

diff --git a/lib/ext/Net/LDAP3.php b/lib/ext/Net/LDAP3.php
index c857ee9..76c6702 100644
--- a/lib/ext/Net/LDAP3.php
+++ b/lib/ext/Net/LDAP3.php
@@ -989,7 +989,21 @@ class Net_LDAP3
         // in the new attrs, if any.
         foreach ($old_attrs as $attr => $old_attr_value) {
 
+            if (is_array($old_attr_value)) {
+                if (count($old_attr_value) == 1) {
+                    $old_attrs[$attr] = $old_attr_value[0];
+                    $old_attr_value = $old_attrs[$attr];
+                }
+            }
+
             if (array_key_exists($attr, $new_attrs)) {
+
+                if (is_array($new_attrs[$attr])) {
+                    if (count($new_attrs[$attr]) == 1) {
+                        $new_attrs[$attr] = $new_attrs[$attr][0];
+                    }
+                }
+
                 if (is_array($old_attrs[$attr]) && is_array($new_attrs[$attr])) {
                     $_sort1 = $new_attrs[$attr];
                     sort($_sort1);
@@ -1086,7 +1100,21 @@ class Net_LDAP3
         }
 
         foreach ($new_attrs as $attr => $value) {
+            if (is_array($value)) {
+                if (count($value) == 1) {
+                    $new_attrs[$attr] = $value[0];
+                    $value = $new_attrs[$attr];
+                }
+            }
+
             if (array_key_exists($attr, $old_attrs)) {
+
+                if (is_array($old_attrs[$attr])) {
+                    if (count($old_attrs[$attr]) == 1) {
+                        $old_attrs[$attr] = $old_attrs[$attr][0];
+                    }
+                }
+
                 if (is_array($new_attrs[$attr]) && is_array($old_attrs[$attr])) {
                     $_sort1 = $old_attrs[$attr];
                     sort($_sort1);





More information about the commits mailing list