From a0a6ed1d1bcececefbff00158f9fa6ad0790ed16 Mon Sep 17 00:00:00 2001 From: marcus Date: Tue, 31 Mar 2009 12:18:16 +0000 Subject: Closes #896: Error thrown if user not validate. Metadata physically removed rather than simply blanked when validation is requested. Note: update_metadata no longer seems to support anonymous metadata which is likely to have knock on issues elsewhere... git-svn-id: https://code.elgg.org/elgg/trunk@3184 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/users.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'engine/lib/users.php') diff --git a/engine/lib/users.php b/engine/lib/users.php index fd8c00073..e45223e54 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1003,11 +1003,30 @@ function set_user_validation_status($user_guid, $status, $method = '') { if (!$status) $method = ''; - - create_metadata($user_guid, 'validated', $status,'', 0, ACCESS_PUBLIC); - create_metadata($user_guid, 'validated_method', $method,'', 0, ACCESS_PUBLIC); + + if ($status) + { + if ( + (create_metadata($user_guid, 'validated', $status,'', 0, ACCESS_PUBLIC)) && + (create_metadata($user_guid, 'validated_method', $method,'', 0, ACCESS_PUBLIC)) + ) + return true; + } + else + { + $validated = get_metadata_byname($user_guid, 'validated'); + $validated_method = get_metadata_byname($user_guid, 'validated_method'); + + if ( + ($validated) && + ($validated_method) && + (delete_metadata($validated->id)) && + (delete_metadata($validated_method->id)) + ) + return true; + } - return true; + return false; } /** -- cgit v1.2.3