diff --git a/modules/invite_by_email/invite_by_email.module b/modules/invite_by_email/invite_by_email.module index 8c67d6b..61d9804 100644 --- a/modules/invite_by_email/invite_by_email.module +++ b/modules/invite_by_email/invite_by_email.module @@ -108,3 +108,35 @@ function invite_by_email_theme($existing, $type, $theme, $path) { ), ); } + +/** + * Loads Invite using information stored in session. + * + * @return bool|Invite + */ +function invite_by_email_load_from_session() { + if (isset($_SESSION[INVITE_SESSION_CODE])) { + /** @var \Drupal\invite\InviteInterface $invite */ + $invite = \Drupal::entityManager()->getStorage('invite')->loadByProperties(array('reg_code' => $_SESSION[INVITE_SESSION_CODE])); + } + if (!empty($invite)) { + return $invite; + } + else { + return FALSE; + } +} + +/** + * Implements hook_form_FORMID_alter(). + */ +function invite_by_email_form_user_register_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { + $account = \Drupal::currentUser(); + /** @var \Drupal\invite\InviteInterface $invite_object */ + $invite = invite_by_email_load_from_session(); + $invite_object = current($invite); + if ($invite_object) { + $form['account']['mail']['#default_value'] = $invite_object->field_invite_email_address->value; + $form['account']['mail']['#disabled'] = TRUE; + } +}