| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- <?php
 
- /**
 
-  * Helper functions
 
-  *
 
-  * @package Elgg.Core.Plugin
 
-  * @subpackage UserValidationByEmail
 
-  */
 
- /**
 
-  * Generate an email activation code.
 
-  *
 
-  * @param int    $user_guid     The guid of the user
 
-  * @param string $email_address Email address
 
-  * @return string
 
-  */
 
- function uservalidationbyemail_generate_code($user_guid, $email_address) {
 
- 	// Note: binding to site URL for multisite.
 
- 	$site_url = elgg_get_site_url();
 
- 	return elgg_build_hmac([(int)$user_guid, $email_address, $site_url])->getToken();
 
- }
 
- /**
 
-  * Request user validation email.
 
-  * Send email out to the address and request a confirmation.
 
-  *
 
-  * @param int  $user_guid       The user's GUID
 
-  * @param bool $admin_requested Was it requested by admin
 
-  * @return mixed
 
-  */
 
- function uservalidationbyemail_request_validation($user_guid, $admin_requested = 'deprecated') {
 
- 	if ($admin_requested != 'deprecated') {
 
- 		elgg_deprecated_notice('Second param $admin_requested no more used in uservalidationbyemail_request_validation function', 1.9);
 
- 	}
 
- 	$site = elgg_get_site_entity();
 
- 	$user_guid = (int)$user_guid;
 
- 	$user = get_entity($user_guid);
 
- 	if (($user) && ($user instanceof ElggUser)) {
 
- 		// Work out validate link
 
- 		$code = uservalidationbyemail_generate_code($user_guid, $user->email);
 
- 		$link = "{$site->url}uservalidationbyemail/confirm?u=$user_guid&c=$code";
 
- 		// Get email to show in the next page
 
- 		elgg_get_session()->set('emailsent', $user->email);
 
- 		$subject = elgg_echo('email:validate:subject', array(
 
- 				$user->name,
 
- 				$site->name
 
- 			), $user->language
 
- 		);
 
- 		$body = elgg_echo('email:validate:body', array(
 
- 				$user->name,
 
- 				$site->name,
 
- 				$link,
 
- 				$site->name,
 
- 				$site->url
 
- 			), $user->language
 
- 		);
 
- 		// Send validation email
 
- 		$result = notify_user($user->guid, $site->guid, $subject, $body, array(), 'email');
 
- 		return $result;
 
- 	}
 
- 	return FALSE;
 
- }
 
- /**
 
-  * Validate a user
 
-  *
 
-  * @param int    $user_guid
 
-  * @param string $code
 
-  * @return bool
 
-  */
 
- function uservalidationbyemail_validate_email($user_guid, $code) {
 
- 	$user = get_entity($user_guid);
 
- 	$site_url = elgg_get_site_url();
 
- 	$matches = elgg_build_hmac([(int)$user_guid, $user->email, $site_url])->matchesToken($code);
 
- 	if (!$matches) {
 
- 		return false;
 
- 	}
 
- 	return elgg_set_user_validation_status($user_guid, true, 'email');
 
- }
 
- /**
 
-  * Return a where clause to get entities
 
-  *
 
-  * "Unvalidated" means metadata of validated is not set or not truthy.
 
-  * We can't use elgg_get_entities_from_metadata() because you can't say
 
-  * "where the entity has metadata set OR it's not equal to 1".
 
-  *
 
-  * @return array
 
-  */
 
- function uservalidationbyemail_get_unvalidated_users_sql_where() {
 
- 	$db_prefix = elgg_get_config('dbprefix');
 
- 	$validated_id = elgg_get_metastring_id('validated');
 
- 	$one_id = elgg_get_metastring_id('1');
 
- 	// thanks to daveb@freenode for the SQL tips!
 
- 	$wheres = array();
 
- 	$wheres[] = "e.enabled='no'";
 
- 	$wheres[] = "NOT EXISTS (
 
- 			SELECT 1 FROM {$db_prefix}metadata md
 
- 			WHERE md.entity_guid = e.guid
 
- 				AND md.name_id = $validated_id
 
- 				AND md.value_id = $one_id)";
 
- 	return $wheres;
 
- }
 
 
  |