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