Drupal ::Bestellen Sie den kompletten Hook und aktualisieren Sie die Benutzerberechtigungen/-rollen
-
17-09-2020 - |
Frage
Ich möchte die Benutzerberechtigung aktualisieren können, nachdem der Bestellstatus als abgeschlossen angezeigt wird.
Ich habe herausgefunden, dass ich den Hook „hook_order“ verwenden sollte, um das zu erreichen.Aber wie erfahre ich, welcher Benutzer diese Bestellung erstellt hat und wie aktualisiere ich die Berechtigungen und stelle die Ablaufzeit für diese Rolle automatisch ein?
Ich möchte, dass dieser Haken aufgerufen wird, sobald die Zahlung erfolgt und die Bestellung abgeschlossen ist.
Alle Hinweise werden wertvoll sein.
Lösung
Im hook_order
, 3 Parameter werden übergeben.Der dritte Parameter hängt vom ersten ab.Wenn der erste Parameter „Aktualisieren“ lautet, ist der dritte Parameter der Status, in den die Bestellung geht.
hook_order($op, &$order, $arg2){
switch($op){
case 'update':
if($arg2 === 'completed'){
// This order got marked completed
}
}
}
$order->uid
wird Ihnen der Benutzer angezeigt, der die Bestellung erstellt hat.Sie können etwa Folgendes tun
$user = user_load(array('uid' => $order->uid));
// update the roles assigned to user
user_save($user);
Für den Ablauf der Rolle müssen Sie ein Modul schreiben, das die Dauer verfolgt und nach Ablauf der Zeit etwas wie oben ausführt.Oder Sie können verwenden role_expire Modul und sehen Sie, ob das hilft.