From 9cdb242250336005002e7cc7ffa4d8c3316db30b Mon Sep 17 00:00:00 2001 From: marcus Date: Wed, 25 Jun 2008 18:04:12 +0000 Subject: Refs #79 git-svn-id: https://code.elgg.org/elgg/trunk@1133 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/users.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) (limited to 'engine') diff --git a/engine/lib/users.php b/engine/lib/users.php index 3bd87dbff..5dc382670 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -749,6 +749,67 @@ return get_data($query, "entity_row_to_elggstar"); } + + /** + * Generate a validation code for a given user's email address. + * + * @param int $user_guid The user id + * @param string $email_address The email address + */ + function generate_email_validation_code($user_guid, $email_address) + { + global $CONFIG; + + return md5($user_guid . $email_address . $CONFIG->site->url); // Note I bind to site URL, this is important on multisite! + } + + /** + * Send out a validation request for a given user. + * This function assumes that a user has already been created and that the email address has been + * saved in the email field in the database. + * + * @param int $user_guid The user. + * @return bool + */ + function request_email_validation($user_guid) + { + global $CONFIG; + + $user_guid = (int)$user_guid; + + $user = get_entity($user_guid); + if (($user) && ($user instanceof ElggUser)) + { + // Clear existing status + $user->validated_email = false; + + // Work out validate link + $link = $CONFIG->site->url . "action/email/confirm/?u=$user_guid&c=" . generate_email_validation_code($user_guid, $user->email); + + // Send validation email + return notify_user($user->guid, $CONFIG->site_guid, elgg_echo('email:validate:subject'), sprintf(elgg_echo('email:validate:body'), $user->username, $link), NULL, 'email'); + + } + + return false; + } + + /** + * Validate a user email address against the code provided, and if valid set the appropriate flag + * + * @param int $user_guid User GUID + * @param string $code The code provided on validation. + */ + function validate_email($user_guid, $code) + { + $user = get_entity($user_guid); + + $valid = ($code == generate_email_validation_code($user_guid, $user->email)); + if ($valid) + $user->validated_email = true; + + return $valid; + } /** * Registers a user, returning false if the username already exists @@ -794,10 +855,11 @@ $user->admin = true; datalist_set('admin_registered',1); } + + // Send email validation request + request_email_validation($user->getGUID()); return $user->getGUID(); - - } /** -- cgit v1.2.3