Browse code

Erzeuge sortierte Ausgabe der Resultate für schnellre navigation in den Ergebnissen

Bernd Wurst authored on 21/01/2013 15:59:01
Showing 1 changed files
... ...
@@ -27,20 +27,55 @@ require_role(ROLE_SYSADMIN);
27 27
 # Save the timestamp of this request to the session, so we accept only actions performed some seconds after this
28 28
 $_SESSION['su_ajax_timestamp'] = time();
29 29
 
30
-header("Content-Type: text/javascript");
31
-echo "[\n";
30
+$term = $_GET['term'];
31
+$ret = array();
32
+
33
+function add($val, $id, $value) {
34
+  global $ret;
35
+  if (isset($ret[$val]) && is_array($ret[$val])) {
36
+    array_push($ret[$val], array("id" => $id, "value" => $value));
37
+  } else {
38
+    $ret[$val] = array( array("id" => $id, "value" => $value) );
39
+  }
40
+}
41
+
32 42
 
33
-$result = array_unique(find_customers($_GET['term']));
43
+$result = array_unique(find_customers($term));
34 44
 sort($result);
35 45
 foreach ($result as $val) {
36 46
   $c = new Customer((int) $val);
37
-  echo " {\"id\": \"c{$c->id}\", \"value\": \"Kunde {$c->id}: {$c->fullname}\"},\n";
47
+  if ($c->id == $term) {
48
+    add(10, "c{$c->id}", "Kunde {$c->id}: {$c->fullname}");
49
+  } else {
50
+    add(90, "c{$c->id}", "Kunde {$c->id}: {$c->fullname}");
51
+  }
38 52
   $users = find_users_for_customer($c->id);
39 53
   foreach ($users as $uid => $username) {
40
-    echo " {\"id\": \"u{$uid}\", \"label\": \"User {$uid}: {$username}\"},\n";
54
+    if ($uid == $term || $username == $term) {
55
+      add(15, "u{$uid}", "User {$uid}: {$username}");
56
+    } elseif (strstr($username, $term)) {
57
+      add(20, "u{$uid}", "User {$uid}: {$username}");
58
+    } else {
59
+      add(85, "u{$uid}", "User {$uid}: {$username}");
60
+    }
61
+  }
62
+}
63
+
64
+ksort($ret);
65
+
66
+$lines = array();
67
+foreach ($ret as $group) {
68
+  foreach ($group as $entry) {
69
+    $lines[] = "  { \"id\": \"{$entry['id']}\", \"value\": \"{$entry['value']}\" }";
41 70
   }
42 71
 }
43
-echo ' {}
72
+
73
+
74
+
75
+header("Content-Type: text/javascript");
76
+echo "[\n";
77
+echo implode(",\n", $lines);
78
+echo '
44 79
 ]';
45 80
 die();
46 81