Czy po potwierdzeniu przez użytkownika jest haczyk?

8

Chcę dodać typ zawartości po zarejestrowaniu się użytkownika na stronie.

Próbowałem, hook_user_save()ale zapisuje typ zawartości, zanim użytkownik potwierdzi swój e-mail.

Czy po potwierdzeniu e-maila jest haczyk?

Ahmed
źródło

Odpowiedzi:

11

Mimo że w tym podejściu wykorzystuje się moduły, dodaję węzły po potwierdzeniu przez użytkowników wiadomości e-mail za pomocą Logintoboggan i reguł . Integracja reguł Logintoboggan dodaje nowe wydarzenie, When the user account is validatedktóre pozwoli Ci wykonywać działania po potwierdzeniu e-mailem.

Patrick Kenny
źródło
Zainstaluj moduł LoginToboggan Rules Integration z projektu LoginToboggan .
Batandwa,
8

To dla mnie zadanie:

/**
 * Implements @see hook_user_presave
 */
function hook_user_presave(&$edit, $account, $category) {
  if ($account->uid // user is not new
      && $account->status === "0" && $edit['status']==1) { // user is being activated
  }
}
Łukasz Frankowski
źródło
Musiałem użyćif($account->uid && $account->original->status == 0 && $account->status == 1)
user2534880
2

Jeśli używasz modułu LoginToboggan do sprawdzania poprawności wiadomości e-mail i nie chcesz korzystać z modułu reguł, możesz po prostu naśladować odpowiedź modułu sprawdzania poprawności (wykorzystując tymczasową logintoboggan_email_validated = TRUEwłaściwość konta, która została przekazana do uaktualnienia_użytkownika) w kodzie:

 /**
 * Implement hook_user_update()
 *
 */
function yourcustommodule_user_update(&$edit, $account) {
  if (!empty($account->logintoboggan_email_validated) && !isset($account->your_custom_action)) {
        $account->your_custom_action = TRUE;

        // Do what you want here

  }
}

Ponieważ rdzeń i inne moduły będą również wywoływać hook_user_update, chciałbyś zaimplementować coś, aby uniknąć powtarzających się działań. W tym przykładzie ustawiam inną właściwość na koncie $ po zainicjowaniu akcji, ale w razie potrzeby możesz narzucić lepszą kontrolę.

Zauważ, że jeśli używasz LoginToboggan do automatycznego sprawdzania poprawności e-mail, metoda IOco nie zadziała (z wielu powodów - podczas hook_user_presave $ konto-> status == 1 (to tylko rola w twoim wybranym „preautoryzowanym”) stan).

Vishnar Tadeleratha
źródło