Bug in hook_user? | Hook-Funktion bei Registrierung und Profil-Bearbeitung
Eingetragen von DrupalFan (1646)
am 27.09.2007 - 10:22 Uhr in
am 27.09.2007 - 10:22 Uhr in
Hallo,
ich bräuchte so eine "Hook-Funktion", die bei jeder User-Registrierung aufgerufen wird und auch beim Bearbeiten des User-Profils aufgerufen wird (oder eben 2 Funktionen).
Wie macht man so eine?
Und in der Funktion soll dann
- ein URL-Alias erstellt werden (bei User-Registierung)
- ein URL-Alias geändert werden (bei Profil-Bearbeitung)
- und einige Dinge gecheckt werden, z. Bsp. ob ein Wert in einem Profilfeld erlaubt ist (darf nicht schon vorhanden sein bei anderen Usern).
Vielen Dank, falls jemand ein paar Tipps hat, wie man das angeht.
- Anmelden oder Registrieren um Kommentare zu schreiben
Mein Ansatz
am 27.09.2007 - 22:52 Uhr
/**
* Implementation of hook_user().
*/
function minimodule_user($op, &$edit, &$user, $category = NULL) {
switch ($op) {
case 'load':
break;
case 'insert':
echo "Hier URL-Alias setzen!";
break;
case 'update':
if ($user->name) {
echo "Hier URL-Alias ändern!";
}
break;
case 'delete':
break;
}
}
Frage:
Wie setzt man einen url-alias am besten?
Wie ändert man ein url-alias, wenn der User den betreffenden Wert im Profil ändern unter bearbeiten?
PROBLEM:
Oben habe ich die Ausgabe
echo "Hier URL-Alias ändern!";
eingebaut. Nun leider kommt diese echo-Ausgabe nicht nur, wenn ich die Profildaten ändere sondern auch immer, wenn man die Profilseite besucht, also einfach die url "user/admin" aufruft.
Wirklich, immer beim Besuch der Userseite kommt wird als "op" der Wert "update" geliefert.
Ist das ein BUG?
Oder ist mein Ansatz irgendwie falsch?
Warum kommt immer "update", wenn man nichts updated, sondern nur sie seite anschaut, logische wäre "load".
Bitte um Hilfe. Wenn das ein Bug ist, dann wäre das doch ein Core-Bug. Aber ich glaub, da muss was andere sein, aber WAS?
VIELEN DANK.
Hilfe!
am 27.09.2007 - 23:38 Uhr
Hilfe!
Ist das wirklich ein Bug? Wenn ja, hat der doch große Auswirkungen.
Ich habe jetzt in "pathauto.module" nur testweise ein echo() eingebaut:
function pathauto_user($op, &$edit, &$user, $category = FALSE) {
_pathauto_include();
switch ($op) {
case 'insert':
case 'update':
echo "op = update!!!!!!!!!!!!!!";
...
break;
...
}
}
Also nichts verändert, nur ein echo() eingebaut unter "op = update".
Wenn ich nun als eingeloggter User auf meine Profilseite klicke, dann wird immer das echo() ausgegeben, also allein das Aufrufen der eigenen Profilseite bewirkt das
case 'update':
..
ausgeführt wird.
Das sieht nach einem Bug in hook_user() aus.
Wer kann helfen?????
Bitte, danke.
Überprüfen
am 28.09.2007 - 23:07 Uhr
Könnte das jemand mal überprüfen, ob das bei ihm auch auftritt oder nicht?
Vielen Dank.
Bin zwar nicht der php
am 29.09.2007 - 08:16 Uhr
Bin zwar nicht der php programmierer, aber du vielleicht, deshalb schau doch mal wie das beim Anmeldung gemacht wird! Da wird ja auch geprüft ob der Benutzername/Email schon vorhanden! Ist denke die beiden Felder sind Indexe, also müsstete deine Felder auch zu Indexe machen, oder wie das mysql nochmal hiess, so das der wert nur einmal vorhanden sein darf!
http://kochazubi.net
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Ja, danke. In erster Linie
am 01.10.2007 - 12:00 Uhr
Ja, danke.
In erster Linie geht's jetzt mal um den oben angesprochenen Fehler! Denn solange der Fehler so auftritt, kann man ja nicht wirklich programmieren.
Kann denn niemand den Fehler nachvollziehen?
Es reicht doch eine einzige Zeile "echo .." einzubauen, um zu sehen, ob das Problem auftritt.
Vielen Dank.