lib/api lib/kolab_api_service.php
Aleksander Machniak
machniak at kolabsys.com
Mon Apr 2 15:49:25 CEST 2012
lib/api/kolab_api_service_group.php | 81 +------------------------------
lib/api/kolab_api_service_user.php | 92 ++----------------------------------
lib/kolab_api_service.php | 56 +++++++++++++++++++++
3 files changed, 65 insertions(+), 164 deletions(-)
New commits:
commit 589b9d61dbbb02a7f60ad934f3320d437a210b57
Author: Aleksander Machniak <machniak at kolabsys.com>
Date: Mon Apr 2 15:49:00 2012 +0200
Move some shared code to service (parent) class
diff --git a/lib/api/kolab_api_service_group.php b/lib/api/kolab_api_service_group.php
index bbbabe0..3e4825e 100644
--- a/lib/api/kolab_api_service_group.php
+++ b/lib/api/kolab_api_service_group.php
@@ -56,44 +56,7 @@ class kolab_api_service_group extends kolab_api_service
*/
public function group_add($getdata, $postdata)
{
- $gta = $this->object_type_attributes('group', $postdata['type_id']);
- $group_attributes = array();
-
- if (isset($gta['form_fields'])) {
- foreach ($gta['form_fields'] as $key => $value) {
- if (empty($postdata[$key]) && empty($value['optional'])) {
- throw new Exception("Missing input value for $key", 345);
- }
- else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($gta['auto_form_fields'])) {
- foreach ($gta['auto_form_fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- if (empty($value['optional'])) {
- $postdata['attributes'] = array($key);
- $res = $form_service->generate($getdata, $postdata);
- $postdata[$key] = $res[$key];
- $group_attributes[$key] = $postdata[$key];
- }
- } else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($gta['fields'])) {
- foreach ($gta['fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- $group_attributes[$key] = $gta['fields'][$key];
- } else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
+ $group_attributes = $this->parse_input_attributes('group', $postdata);
$auth = Auth::get_instance();
$result = $auth->group_add($group_attributes, $postdata['type_id']);
@@ -132,9 +95,7 @@ class kolab_api_service_group extends kolab_api_service
public function group_edit($getdata, $postdata)
{
- $gta = $this->object_type_attributes('group', $postdata['type_id']);
- $form_service = $this->controller->get_service('form_value');
- $group_attributes = array();
+ $group_attributes = $this->parse_input_attributes('group', $postdata);
// Get the type "key" string for the next few settings.
if ($postdata['type_id'] == null) {
@@ -166,48 +127,12 @@ class kolab_api_service_group extends kolab_api_service
$rdn_attr = 'cn';
}
- if (isset($gta['form_fields'])) {
- foreach ($gta['form_fields'] as $key => $value) {
- if (empty($postdata[$key]) && empty($value['optional'])) {
- throw new Exception("Missing input value for $key", 345);
- }
- else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($gta['auto_form_fields'])) {
- foreach ($gta['auto_form_fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- if (empty($value['optional'])) {
- $postdata['attributes'] = array($key);
- $res = $form_service->generate($getdata, $postdata);
- $postdata[$key] = $res[$key];
- $group_attributes[$key] = $postdata[$key];
- }
- } else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($gta['fields'])) {
- foreach ($gta['fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- $group_attributes[$key] = $gta['fields'][$key];
- } else {
- $group_attributes[$key] = $postdata[$key];
- }
- }
- }
-
$auth = Auth::get_instance();
$auth->connect();
// Now that values have been re-generated where necessary, compare
// the new group attributes to the original group attributes.
- $_group = $auth->group_find_by_attribute(array($unique_attr => $postdata['id']));
+ $_group = $auth->group_find_by_attribute(array($unique_attr => $group_attributes[$unique_attr]));
if (!$_group) {
console("Could not find group");
diff --git a/lib/api/kolab_api_service_user.php b/lib/api/kolab_api_service_user.php
index 106fe33..cafa6bf 100644
--- a/lib/api/kolab_api_service_user.php
+++ b/lib/api/kolab_api_service_user.php
@@ -60,48 +60,7 @@ class kolab_api_service_user extends kolab_api_service
public function user_add($getdata, $postdata)
{
console("user_add()", $postdata);
-
- $uta = $this->object_type_attributes('user', $postdata['type_id']);
- $form_service = $this->controller->get_service('form_value');
- $user_attributes = array();
-
- if (isset($uta['form_fields'])) {
- foreach ($uta['form_fields'] as $key => $value) {
- if (empty($postdata[$key]) && empty($value['optional'])) {
- throw new Exception("Missing input value for $key", 345);
- }
- else {
- $user_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($uta['auto_form_fields'])) {
- foreach ($uta['auto_form_fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- // If the attribute is marked as optional, however...
- if (empty($value['optional'])) {
- $postdata['attributes'] = array($key);
- $res = $form_service->generate($getdata, $postdata);
- $postdata[$key] = $res[$key];
- $user_attributes[$key] = $postdata[$key];
- }
- } else {
- $user_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($uta['fields'])) {
- foreach ($uta['fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- $user_attributes[$key] = $uta['fields'][$key];
- } else {
- $user_attributes[$key] = $uta['fields'][$key];
- }
- }
- }
-
+ $user_attributes = $this->parse_input_attributes('user', $postdata);
console("user_add()", $user_attributes);
$auth = Auth::get_instance();
@@ -143,9 +102,7 @@ class kolab_api_service_user extends kolab_api_service
{
console("\$postdata to user_edit()", $postdata);
- $uta = $this->object_type_attributes('user', $postdata['type_id']);
- $form_service = $this->controller->get_service('form_value');
- $user_attributes = array();
+ $user_attributes = $this->parse_input_attributes('user', $postdata);
// Get the type "key" string for the next few settings.
if ($postdata['type_id'] == null) {
@@ -163,6 +120,9 @@ class kolab_api_service_user extends kolab_api_service
if (!$unique_attr) {
$unique_attr = 'nsuniqueid';
}
+ $user_attributes[$unique_attr] = $postdata['id'];
+ unset($postdata['id']);
+
// TODO: "rdn" is somewhat LDAP specific, but not used as something
// LDAP specific...?
$rdn_attr = $conf->get($type_str . '_user_name_attribute');
@@ -179,7 +139,7 @@ class kolab_api_service_user extends kolab_api_service
// Now that values have been re-generated where necessary, compare
// the new group attributes to the original group attributes.
- $_user = $auth->user_find_by_attribute(Array($unique_attr => $postdata[$unique_attr]));
+ $_user = $auth->user_find_by_attribute(array($unique_attr => $user_attributes[$unique_attr]));
if (!$_user) {
console("Could not find user");
@@ -187,45 +147,7 @@ class kolab_api_service_user extends kolab_api_service
}
$_user_dn = key($_user);
- $_user = $this->user_info(Array('user' => $_user_dn), Array());
-
- if (isset($uta['form_fields'])) {
- foreach ($uta['form_fields'] as $key => $value) {
- if (empty($postdata[$key]) && empty($value['optional'])) {
- throw new Exception("Missing input value for $key", 345);
- }
- else {
- $user_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- if (isset($uta['auto_form_fields'])) {
- foreach ($uta['auto_form_fields'] as $key => $value) {
- if (empty($postdata[$key])) {
- if (empty($value['optional'])) {
- $postdata['attributes'] = array($key);
- $res = $form_service->generate($getdata, $postdata);
- $postdata[$key] = $res[$key];
- $user_attributes[$key] = $postdata[$key];
- }
- } else {
- $user_attributes[$key] = $postdata[$key];
- }
- }
- }
-
- // The user did not edit these.
- // They're not in $postdata.
- // Only the original user object has the right ones
- if (isset($uta['fields'])) {
- foreach ($uta['fields'] as $key => $value) {
- console("Setting $key from original user's value", $_user[$key]);
- $user_attributes[$key] = $_user[$key];
- }
-
- $user_attributes[$unique_attr] = $postdata[$unique_attr];
- }
+ $_user = $this->user_info(array('user' => $_user_dn), array());
// We should start throwing stuff over the fence here.
$result = $auth->modify_entry($_user_dn, $_user, $user_attributes);
diff --git a/lib/kolab_api_service.php b/lib/kolab_api_service.php
index cf95c38..8f6227d 100644
--- a/lib/kolab_api_service.php
+++ b/lib/kolab_api_service.php
@@ -186,7 +186,7 @@ abstract class kolab_api_service
}
/**
- * Detects object type ID for specified objectClass attribute value
+ * Parses result attributes
*
* @param string $object_name Name of the object (user, group, etc.)
* @param array $attrs Entry attributes
@@ -236,4 +236,58 @@ abstract class kolab_api_service
return $attrs;
}
+
+ /**
+ * Parses input (for add/edit) attributes
+ *
+ * @param string $object_name Name of the object (user, group, etc.)
+ * @param array $attrs Entry attributes
+ *
+ * @return array Entry attributes
+ */
+ protected function parse_input_attributes($object_name, $attribs)
+ {
+ $type_attrs = $this->object_type_attributes($object_name, $attribs['type_id']);
+ $form_service = $this->controller->get_service('form_value');
+ $result = array();
+
+ if (isset($type_attrs['form_fields'])) {
+ foreach ($type_attrs['form_fields'] as $key => $value) {
+ if (empty($attribs[$key]) && empty($value['optional'])) {
+ throw new Exception("Missing input value for $key", 345);
+ }
+ else {
+ $result[$key] = $attribs[$key];
+ }
+ }
+ }
+
+ if (isset($type_attrs['auto_form_fields'])) {
+ foreach ($type_attrs['auto_form_fields'] as $key => $value) {
+ if (empty($attribs[$key])) {
+ if (empty($value['optional'])) {
+ $attribs['attributes'] = array($key);
+ $res = $form_service->generate(null, $attribs);
+ $attribs[$key] = $res[$key];
+ $result[$key] = $attribs[$key];
+ }
+ } else {
+ $result[$key] = $attribs[$key];
+ }
+ }
+ }
+
+ if (isset($type_attrs['fields'])) {
+ foreach ($type_attrs['fields'] as $key => $value) {
+ if (empty($attribs[$key])) {
+ $result[$key] = $gta['fields'][$key];
+ } else {
+ $result[$key] = $attribs[$key];
+ }
+ }
+ }
+
+ return $result;
+ }
+
}
More information about the commits
mailing list