Branch 'dev/edit-existing-entries' - 4 commits - lib/api lib/client

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Sat Mar 31 19:25:19 CEST 2012


 lib/api/kolab_api_service_form_value.php |   75 +++++++++++++++++++++++++++++--
 lib/api/kolab_api_service_group.php      |    1 
 lib/client/kolab_client_task_group.php   |    2 
 lib/client/kolab_client_task_user.php    |    2 
 4 files changed, 74 insertions(+), 6 deletions(-)

New commits:
commit eb79ffcceaccd909f7b0cd09b025b2dfb6c426e0
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Mar 31 19:24:47 2012 +0200

    Generate the uid and preseed it into the recipient policy if it does not already exist.

diff --git a/lib/api/kolab_api_service_form_value.php b/lib/api/kolab_api_service_form_value.php
index fe3cf6c..f601bd9 100644
--- a/lib/api/kolab_api_service_form_value.php
+++ b/lib/api/kolab_api_service_form_value.php
@@ -346,6 +346,12 @@ class kolab_api_service_form_value extends kolab_api_service
                 }
             }
 
+            if (array_key_exists('uid', $attribs['auto_form_fields'])) {
+                if (!array_key_exists('uid', $postdata)) {
+                    $postdata['uid'] = $this->generate_uid($postdata, $attribs);
+                }
+            }
+
             $primary_mail = kolab_recipient_policy::primary_mail($postdata);
 
             return $primary_mail;
@@ -387,6 +393,12 @@ class kolab_api_service_form_value extends kolab_api_service
                 }
             }
 
+            if (array_key_exists('uid', $attribs['auto_form_fields'])) {
+                if (!array_key_exists('uid', $postdata)) {
+                    $postdata['uid'] = $this->generate_uid($postdata, $attribs);
+                }
+            }
+
             $secondary_mail = kolab_recipient_policy::secondary_mail($postdata);
 
             return $secondary_mail;


commit a727b5b890b7f7937c8df542289cafc7534e7f61
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Mar 31 14:50:02 2012 +0200

    Add 'edit' to capabilities

diff --git a/lib/api/kolab_api_service_group.php b/lib/api/kolab_api_service_group.php
index 76e8cfd..e7fef8a 100644
--- a/lib/api/kolab_api_service_group.php
+++ b/lib/api/kolab_api_service_group.php
@@ -40,6 +40,7 @@ class kolab_api_service_group extends kolab_api_service
         return array(
             'add'          => 'w',
             'delete'       => 'w',
+            'edit'         => 'w',
             'info'         => 'r',
             'members_list' => 'r',
         );


commit 8ef5f5b7efb8f2aafd120c7963ce26be2bb138f5
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Mar 31 14:41:32 2012 +0200

    Actually generate the uidnumber and gidnumber

diff --git a/lib/api/kolab_api_service_form_value.php b/lib/api/kolab_api_service_form_value.php
index 6e39a9b..fe3cf6c 100644
--- a/lib/api/kolab_api_service_form_value.php
+++ b/lib/api/kolab_api_service_form_value.php
@@ -243,12 +243,42 @@ class kolab_api_service_form_value extends kolab_api_service
 
     private function generate_gidnumber($postdata, $attribs = array())
     {
-        if (isset($attribs['auto_form_fields']) && isset($attribs['auto_form_fields']['uidnumber'])) {
+        if (isset($attribs['auto_form_fields']) && isset($attribs['auto_form_fields']['gidnumber'])) {
             $auth = Auth::get_instance($_SESSION['user']->get_domain());
+            $conf = Conf::get_instance();
 
             // TODO: Take a policy to use a known group ID, a known group (by name?)
             // and/or create user private groups.
-            return 500;
+
+            $search = Array(
+                    'params' => Array(
+                            'objectclass' => Array(
+                                    'type' => 'exact',
+                                    'value' => 'posixgroup',
+                                ),
+                        ),
+                );
+
+            $groups = $auth->list_groups(NULL, Array('gidnumber'), $search);
+
+            $highest_gidnumber = $conf->get('gidnumber_lower_barrier');
+            if (!$highest_gidnumber) {
+                $highest_gidnumber = 1000;
+            }
+
+            foreach ($groups as $dn => $attributes) {
+                if (!array_key_exists('gidnumber', $attributes)) {
+                    continue;
+                }
+
+                if ($attributes['gidnumber'] > $highest_gidnumber) {
+                    $highest_gidnumber = $attributes['gidnumber'];
+                }
+            }
+
+            //$users = $auth->list_users();
+            //console($groups);
+            return ($highest_gidnumber + 1);
         }
     }
 
@@ -403,9 +433,34 @@ class kolab_api_service_form_value extends kolab_api_service
     {
         if (isset($attribs['auto_form_fields']) && isset($attribs['auto_form_fields']['uidnumber'])) {
             $auth = Auth::get_instance($_SESSION['user']->get_domain());
+            $conf = Conf::get_instance();
+
+            $search = Array(
+                    'params' => Array(
+                            'objectclass' => Array(
+                                    'type' => 'exact',
+                                    'value' => 'posixaccount',
+                                ),
+                        ),
+                );
+
+            $users = $auth->list_users(NULL, Array('uidnumber'), $search);
+
+            $highest_uidnumber = $conf->get('uidnumber_lower_barrier');
+            if (!$highest_uidnumber) {
+                $highest_uidnumber = 1000;
+            }
 
-            // TODO: Actually poll $auth for users with a uidNumber set, and take the next one.
-            return 500;
+            foreach ($users as $dn => $attributes) {
+                if (!array_key_exists('uidnumber', $attributes)) {
+                    continue;
+                }
+
+                if ($attributes['uidnumber'] > $highest_uidnumber) {
+                    $highest_uidnumber = $attributes['uidnumber'];
+                }
+            }
+            return ($highest_uidnumber + 1);
         }
     }
 


commit ccaca4003972445d8f3301ed670901da84e601ed
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Mar 31 13:58:27 2012 +0200

    Also translate the edit success notification

diff --git a/lib/client/kolab_client_task_group.php b/lib/client/kolab_client_task_group.php
index eb20069..0e04e4a 100644
--- a/lib/client/kolab_client_task_group.php
+++ b/lib/client/kolab_client_task_group.php
@@ -271,7 +271,7 @@ class kolab_client_task_group extends kolab_client_task
 
         $form->set_title(kolab_html::escape($title));
 
-        $this->output->add_translation('group.add.success', 'group.delete.success');
+        $this->output->add_translation('group.add.success', 'group.edit.success', 'group.delete.success');
 
         return $form->output();
     }
diff --git a/lib/client/kolab_client_task_user.php b/lib/client/kolab_client_task_user.php
index d1e5b9f..f4ef0ea 100644
--- a/lib/client/kolab_client_task_user.php
+++ b/lib/client/kolab_client_task_user.php
@@ -312,7 +312,7 @@ class kolab_client_task_user extends kolab_client_task
         $form->set_title(kolab_html::escape($title));
 
         $this->output->add_translation('user.password.mismatch',
-            'user.add.success', 'user.delete.success');
+            'user.add.success', 'user.edit.success', 'user.delete.success');
 
         return $form->output();
     }





More information about the commits mailing list