Im privatemsg nach Datenbankfeld suchen
am 23.05.2008 - 14:48 Uhr in
Ich nutze das Modul privatemsg und kann mittels der Funktion privatemsg_autocomplete in der privatemsg_module mir eine Liste der möglichen Nachrichtenempfänger ausgeben lassen. Kurz gesagt: Neue Nachricht verfassen => Namen eingeben => Autocomplete macht den Rest.
So, ist ja ganz nett, aaaaaber ich möchte weder den Wert des Feldes name aus der Tabelle users noch irgendein Profilefeld im autocomplete ausgeben.
Ich habe aus bestimmten, unvermeidbaren Gründen eine eigene Tabelle mit diversen Userdaten anlegen müssen. Dort verbirgt sich auch der reelle Name des Users. Dieser soll natürlich bei privatemsg genutzt werden. Diese Tabelle beinhaltet natürlich auch ein Feld uid. Damit wäre die logische Verknüpfung zur externen Tabelle erstellt!
Die Funktion lautet wie folgt:
<?php
function privatemsg_autocomplete($string) {
$matches = array();
$result = db_query_range("SELECT name FROM {users} u WHERE status <> 0 AND LOWER(name) LIKE LOWER('%s%%') AND data NOT LIKE '%\"privatemsg_allow\";s:0%'", $string, 0, 10);
while ($user = db_fetch_object($result)) {
$matches[$user->name] = check_plain($user->name);
}
print drupal_to_js($matches);
exit();
}
?>
Gedacht habe ich mir Folgendes:
<?php
function privatemsg_autocomplete($string) {
$matches = array();
$result = db_query_range("SELECT y.name FROM {users} u, ypsilon y WHERE u.uid = y.uid AND u.status <> 0 AND LOWER(y.name) LIKE LOWER('%s%%') AND u.data NOT LIKE '%\"privatemsg_allow\";s:0%'", $string, 0, 10);
while ($user = db_fetch_object($result)) {
$matches[$user->name] = check_plain($user->name);
}
print drupal_to_js($matches);
exit();
}
?>
Denke ich da falsch?
Vielen Dank schon einmal!
Gruß, hoshi
- Anmelden oder Registrieren um Kommentare zu schreiben
Na und was ist nun?
am 23.05.2008 - 17:45 Uhr
Na und was ist nun? Funktioniert Dein Code?
Was Du nicht hinkriegen wirst:
Die Autovervollstaendigung wird nach dem Real-Namen des Users suchen. In dem Moment wenn ein gefundener Real-Name gewaehlt wird um ihn einzufuegen wird ABER der Username verwendet bzw. ist dann im Autokomplettfeld sichtbar.
Ich habe es noch nicht hinbekommen nach dem Einfuegen den Real-Namen beizubehalten. Wenn man das will ist noch weitere Scriptlogik erforderlich.
Denn der Letztendlich nach der Wahl des Real-Namens in das Autokomplettfeld eingefuegte Uesername wird zum Versenden der PM verwendet. Wuerde im Moment des Senden der PM im Autokomplettfeld der Real-Name stehen wuerde das System diesen Namen nicht finden. Es sei den man mappt wieder zurueck auf den Usernamen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
ach so, habe ich natürlich
am 26.05.2008 - 08:57 Uhr
ach so, habe ich natürlich vergessen zu sagen: tut leider nicht. also eine einfache lösung gibt es nicht? evtl eine alternative?