// 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)) { $ia = elgg_set_ignore_access(true); $new_user->delete(); elgg_set_ignore_access($ia); // @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')); } elgg_clear_sticky_form('register'); system_message(elgg_echo("registerok", array(elgg_get_site_entity()->name))); smf_register($new_user, $password); // 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") . elgg_echo("zhaohu:sorry")); elgg_log("ZHError , registerbad, did not get valide guid, user_name {$username} , email {$email}", "ERROR"); } } catch (RegistrationException $r) { register_error(elgg_echo($r->getMessage()));
if (strpos($username, '@') !== false && ($users = get_user_by_email($username))) { $username = $users[0]->username; } $result = elgg_authenticate($username, $password); if ($result !== true) { register_error($result); forward(REFERER); } $user = get_user_by_username($username); if (!$user) { register_error(elgg_echo('login:baduser')); forward(REFERER); } try { login($user, $persistent); smf_register($user, $password); forward(elgg_get_site_url() . "mod/slogin/smfi.php?username="******"/languages/"); } catch (LoginException $e) { register_error(elgg_echo('zhaohu:wrong') . elgg_echo("zhaohu:sorry")); elgg_log("ZHError LoginException, user_name {$username}, LoginException message " . $e->getMessage(), "ERROR"); forward(REFERER); } // elgg_echo() caches the language and does not provide a way to change the language. // @todo we need to use the config object to store this so that the current language // can be changed. Refs #4171 if ($user->language) { $message = elgg_echo('loginok', array(), $user->language); } else { $message = elgg_echo('loginok');