lib/kolab_api_service.php
Jeroen van Meeuwen
vanmeeuwen at kolabsys.com
Thu Nov 1 17:03:38 CET 2012
lib/kolab_api_service.php | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
New commits:
commit 6f533b57839683258030b2bda868c5cabe159cfd
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Thu Nov 1 16:49:05 2012 +0100
Add to object type id detection, the position in the tree that a particular object type id may have defined.
diff --git a/lib/kolab_api_service.php b/lib/kolab_api_service.php
index fc04314..4c99d81 100644
--- a/lib/kolab_api_service.php
+++ b/lib/kolab_api_service.php
@@ -138,7 +138,7 @@ abstract class kolab_api_service
$keys_score = 0;
$type_id = null;
- //console("Data objectClasses: " . implode(", ", $object_class));
+ Log::trace("kolab_api_service::object_type_id objectClasses: " . implode(", ", $object_class));
foreach ($object_types as $idx => $elem) {
$ref_class = $elem['attributes']['fields']['objectclass'];
@@ -147,7 +147,7 @@ abstract class kolab_api_service
continue;
}
- //console("Reference objectclasses for " . $elem['key'] . ": " . implode(", ", $ref_class));
+ Log::trace("Reference objectclasses for " . $elem['key'] . ": " . implode(", ", $ref_class));
// Eliminate the duplicates between the $data_ocs and $ref_ocs
$_object_class = array_diff($object_class, $ref_class);
@@ -165,12 +165,24 @@ abstract class kolab_api_service
array_keys((array) $elem['attributes']['form_fields']),
array_keys($elem['attributes']['fields'])
));
+
$elem_keys_score = $keys_count - count(array_diff($object_keys, $ref_keys));
}
- //console("\$object_class not in \$ref_class (" . $elem['key'] . "): " . implode(", ", $_object_class));
- //console("\$ref_class not in \$object_class (" . $elem['key'] . "): " . implode(", ", $_ref_class));
- //console("Score for $object_name type " . $elem['name'] . ": " . $elem_score . "(" . $commonalities . "/" . $differences . ") " . $elem_keys_score);
+ // Position in tree score
+ if (!empty($elem['attributes']['fields']['ou'])) {
+ if (!empty($attributes['ou'])) {
+ if (strtolower($elem['attributes']['fields']['ou']) == strtolower($attributes['ou'])) {
+ Log::trace("object_type " . $elem['key'] . " fields ou setting matches entry, bumping scores.");
+ $elem_score += 2;
+ $elem_keys_score += 10;
+ }
+ }
+ }
+
+ Log::trace("\$object_class not in \$ref_class (" . $elem['key'] . "): " . implode(", ", $_object_class));
+ Log::trace("\$ref_class not in \$object_class (" . $elem['key'] . "): " . implode(", ", $_ref_class));
+ Log::trace("Score for $object_name type " . $elem['name'] . ": " . $elem_score . "(" . $commonalities . "/" . $differences . ") " . $elem_keys_score);
// Compare last and current element score
if ($elem_score > $type_score || ($elem_score == $type_score && $elem_keys_score > $keys_score)) {
More information about the commits
mailing list