? invite-user-register-access-374869-1.patch Index: invite.module =================================================================== RCS file: /cvs/drupal/contributions/modules/invite/invite.module,v retrieving revision 1.25.2.3 diff -u -p -r1.25.2.3 invite.module --- invite.module 6 Oct 2008 13:03:08 -0000 1.25.2.3 +++ invite.module 15 Feb 2009 21:43:15 -0000 @@ -23,6 +23,37 @@ define('INVITE_UNLIMITED', -1); require_once drupal_get_path('module', 'invite') .'/invite_token.inc'; /** + * Implementation of hook_menu_alter(). + */ +function invite_menu_alter(&$items) { + $items['user/register']['access callback'] = 'invite_registration_access'; +} + +/** + * Menu callback; determine access to user registration form. + */ +function invite_registration_access() { + $invite = invite_load_from_session(); + + // Legacy url support (user/register/regcode). + if (!$invite && $code = arg(2)) { + if ($invite = invite_load($code)) { + if (invite_validate($invite)) { + $_SESSION[INVITE_SESSION] = $invite->reg_code; + } + } + } + + if ($invite) { + return TRUE; + } + elseif (variable_get('user_register', 1) === '1-inviteonly' && !user_access('administer users')) { + drupal_set_message(t('Sorry, new user registration by invitation only.')); + return FALSE; + } +} + +/** * Implementation of hook_help(). */ function invite_help($path, $arg) { @@ -318,22 +349,15 @@ function invite_form_alter(&$form, $form } } } - - if ($invite) { - // Preset the e-mail field. - if (isset($form['account'])) { - $field = &$form['account']; - } - else { - $field = &$form; - } - if (isset($field['mail'])) { - $field['mail']['#default_value'] = $invite->email; - } + // Preset the e-mail field. + if (isset($form['account'])) { + $field = &$form['account']; + } + else { + $field = &$form; } - else if (variable_get('user_register', 1) === '1-inviteonly' && !user_access('administer users')) { - drupal_set_message(t('Sorry, new user registration by invitation only.')); - drupal_goto(); + if (isset($field['mail'])) { + $field['mail']['#default_value'] = $invite->email; } break;