3 commits - lib/Auth lib/kolab_api_service.php

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Thu Aug 30 17:27:04 CEST 2012


 lib/Auth/LDAP.php         |   69 ++++++++++++++++++++++++++++++----------------
 lib/kolab_api_service.php |    6 +++-
 2 files changed, 51 insertions(+), 24 deletions(-)

New commits:
commit 9119719bf8469d07eb7be3932fea2f6f622dfae3
Merge: feb8126 3163890
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Aug 30 17:26:51 2012 +0200

    Merge branch 'master' of ssh://git.kolab.org/git/kolab-wap



commit feb8126609e248b4627e1a889ee8dac0ad271574
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Aug 30 17:25:34 2012 +0200

    Fix search by making sure we poll for the 'params'

diff --git a/lib/kolab_api_service.php b/lib/kolab_api_service.php
index 823996a..3d70ef0 100644
--- a/lib/kolab_api_service.php
+++ b/lib/kolab_api_service.php
@@ -348,7 +348,11 @@ abstract class kolab_api_service
         $search = Array();
         // Search parameters
         if (!empty($post['search']) && is_array($post['search'])) {
-            $search = $post['search'];
+            if (array_key_exists('params', $post['search'])) {
+                $search = $post['search'];
+            } else {
+                $search['params'] = $post['search'];
+            }
             if (!empty($post['search_operator'])) {
                 $search['operator'] = $post['search_operator'];
             }


commit 2ce6b80e94dd9fefb4ea71b91d43565d5ebf7b8f
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Aug 30 17:15:33 2012 +0200

    Sort and slice the results for pagination purposes

diff --git a/lib/Auth/LDAP.php b/lib/Auth/LDAP.php
index 8d5e384..df4f960 100644
--- a/lib/Auth/LDAP.php
+++ b/lib/Auth/LDAP.php
@@ -373,8 +373,10 @@ class LDAP extends Net_LDAP3 {
 
         $result = $this->search_entries($base_dn, $filter, 'sub', NULL, $search);
 
+        $entries = $this->sort_and_slice($result, $params);
+
         return Array(
-                'list' => $result->entries(TRUE),
+                'list' => $entries,
                 'count' => $result->count()
             );
     }
@@ -419,8 +421,10 @@ class LDAP extends Net_LDAP3 {
 
         $result = $this->search_entries($base_dn, $filter, 'sub', NULL, $search);
 
+        $entries = $this->sort_and_slice($result, $params);
+
         return Array(
-                'list' => $result->entries(TRUE),
+                'list' => $entries,
                 'count' => $result->count()
             );
     }
@@ -482,18 +486,10 @@ class LDAP extends Net_LDAP3 {
 
         $result = $this->search_entries($base_dn, $filter, 'sub', NULL, $search);
 
-        if (!empty($params) && is_array($params) && array_key_exists('sort_by', $params)) {
-            if (is_array($params['sort_by'])) {
-                $sort = array_shift($params['sort_by']);
-            } else {
-                $sort = $params['sort_by'];
-            }
-
-            $result->sort($sort);
-        }
+        $entries = $this->sort_and_slice($result, $params);
 
         return Array(
-                'list' => $result->entries(TRUE),
+                'list' => $entries,
                 'count' => $result->count()
             );
     }
@@ -525,8 +521,10 @@ class LDAP extends Net_LDAP3 {
 
         $result = $this->_search($base_dn, $filter, $attributes);
 
+        $entries = $this->sort_and_slice($result, $params);
+
         return Array(
-                'list' => $result->entries(TRUE),
+                'list' => $entries,
                 'count' => $result->count()
             );
     }
@@ -579,18 +577,10 @@ class LDAP extends Net_LDAP3 {
 
         $result = $this->search_entries($base_dn, $filter, 'sub', NULL, $search);
 
-        if (!empty($params) && is_array($params) && array_key_exists('sort_by', $params)) {
-            if (is_array($params['sort_by'])) {
-                $sort = array_shift($params['sort_by']);
-            } else {
-                $sort = $params['sort_by'];
-            }
-
-            $result->sort($sort);
-        }
+        $entries = $this->sort_and_slice($result, $params);
 
         return Array(
-                'list' => $result->entries(TRUE),
+                'list' => $entries,
                 'count' => $result->count()
             );
     }
@@ -984,6 +974,39 @@ class LDAP extends Net_LDAP3 {
         return $rights;
     }
 
+    private function sort_and_slice(&$result, &$params) {
+        if (!empty($params) && is_array($params)) {
+            if (array_key_exists('sort_by', $params)) {
+                if (is_array($params['sort_by'])) {
+                    $sort = array_shift($params['sort_by']);
+                } else {
+                    $sort = $params['sort_by'];
+                }
+
+                $result->sort($sort);
+
+            }
+
+            if (array_key_exists('page_size', $params) && array_key_exists('page', $params)) {
+                $entries = $result->entries(TRUE);
+                if ($result->count() > $params['page_size']) {
+                    $entries = array_slice($entries, (($params['page'] - 1) * $params['page_size']), $params['page_size'], TRUE);
+                }
+
+            } else {
+                $entries = $result->entries(TRUE);
+            }
+
+            if (array_key_exists('sort_order', $params) && !empty($params['sort_order'])) {
+                if ($params['sort_order'] == "DESC") {
+                    $entries = array_reverse($entries, TRUE);
+                }
+            }
+        }
+
+        return $entries;
+    }
+
     private function unique_attribute() {
         $unique_attr = $this->conf->get("unique_attribute");
         return empty($unique_attr) ? 'nsuniqueid' : $unique_attr;





More information about the commits mailing list