<?php /** * Elgg registration action * * @package Elgg.Core * @subpackage User.Account */ elgg_make_sticky_form('register'); // Get variables $username = get_input('username'); $password = get_input('password'); $password2 = get_input('password2'); $email = get_input('email'); $name = get_input('name'); $friend_guid = (int) get_input('friend_guid', 0); $invitecode = get_input('invitecode'); if (elgg_get_config('allow_registration')) { try { if (trim($password) == "" || trim($password2) == "") { throw new RegistrationException(elgg_echo('RegistrationException:EmptyPassword')); } if (strcmp($password, $password2) != 0) { throw new RegistrationException(elgg_echo('RegistrationException:PasswordMismatch')); } $guid = register_user($username, $password, $name, $email, false, $friend_guid, $invitecode); if ($guid) { elgg_clear_sticky_form('register'); $new_user = get_entity($guid); // allow plugins to respond to self registration // note: To catch all new users, even those created by an admin, // register for the create, user event instead. // only passing vars that aren't in ElggUser. $params = array( 'user' => $new_user, 'password' => $password, 'friend_guid' => $friend_guid, 'invitecode' => $invitecode ); // @todo should registration be allowed no matter what the plugins return? if (!elgg_trigger_plugin_hook('register', 'user', $params, TRUE)) { $new_user->delete(); // @todo this is a generic messages. We could have plugins // throw a RegistrationException, but that is very odd // for the plugin hooks system. throw new RegistrationException(elgg_echo('registerbad')); } system_message(elgg_echo("registerok", array(elgg_get_site_entity()->name))); // if exception thrown, this probably means there is a validation // plugin that has disabled the user try { login($new_user); } catch (LoginException $e) { // do nothing } // Forward on success, assume everything else is an error... forward(); } else { register_error(elgg_echo("registerbad")); } } catch (RegistrationException $r) { register_error($r->getMessage()); } } else { register_error(elgg_echo('registerdisabled')); } forward(REFERER);