Kaynağa Gözat

Use logActions() to log deleted members in one go

! $post_errors is always empty in deleteAccount2(), so don't check for
it; also, don't pass it and $profile_vars, nothing is done to them
!  Log the member's display name, cannot be inconsistent here
Moved integrate_delete_members to function end so it'll be called only
once; more logical this way
Add integrate_profile_save

Signed-off-by: John Rayes <[email protected]>
John Rayes 12 yıl önce
ebeveyn
işleme
77ac6d0c35
3 değiştirilmiş dosya ile 37 ekleme ve 16 silme
  1. 3 5
      Sources/Profile-Actions.php
  2. 15 2
      Sources/Profile.php
  3. 19 9
      Sources/Subs-Members.php

+ 3 - 5
Sources/Profile-Actions.php

@@ -538,11 +538,9 @@ function deleteAccount($memID)
 /**
  * Actually delete an account.
  *
- * @param $profile_vars
- * @param $post_errors
  * @param int $memID, the member ID
  */
-function deleteAccount2($profile_vars, $post_errors, $memID)
+function deleteAccount2($memID)
 {
 	global $user_info, $sourcedir, $context, $cur_profile, $modSettings, $smcFunc;
 
@@ -648,7 +646,7 @@ function deleteAccount2($profile_vars, $post_errors, $memID)
 			deleteMembers($memID);
 	}
 	// Do they need approval to delete?
-	elseif (empty($post_errors) && !empty($modSettings['approveAccountDeletion']) && !allowedTo('moderate_forum'))
+	elseif (!empty($modSettings['approveAccountDeletion']) && !allowedTo('moderate_forum'))
 	{
 		// Setup their account for deletion ;)
 		updateMemberData($memID, array('is_activated' => 4));
@@ -656,7 +654,7 @@ function deleteAccount2($profile_vars, $post_errors, $memID)
 		updateSettings(array('unapprovedMembers' => true), true);
 	}
 	// Also check if you typed your password correctly.
-	elseif (empty($post_errors))
+	else
 	{
 		deleteMembers($memID);
 

+ 15 - 2
Sources/Profile.php

@@ -561,7 +561,7 @@ function ModifyProfile($post_errors = array())
 		{
 			if (empty($post_errors))
 			{
-				deleteAccount2($profile_vars, $post_errors, $memID);
+				deleteAccount2($memID);
 				redirectexit();
 			}
 		}
@@ -587,6 +587,8 @@ function ModifyProfile($post_errors = array())
 			saveProfileChanges($profile_vars, $post_errors, $memID);
 		}
 
+		call_integration_hook('integrate_profile_save', array($profile_vars, $post_errors, $memID));
+
 		// There was a problem, let them try to re-enter.
 		if (!empty($post_errors))
 		{
@@ -620,7 +622,16 @@ function ModifyProfile($post_errors = array())
 				$log_changes = array();
 				require_once($sourcedir . '/Logging.php');
 				foreach ($context['log_changes'] as $k => $v)
-					logAction($k, array_merge($v, array('applicator' => $user_info['id'], 'member_affected' => $memID)), 'user');
+					$log_changes[] = array(
+						'action' => $k,
+						'log_type' => 'user',
+						'extra' => array_merge($v, array(
+							'applicator' => $user_info['id'],
+							'member_affected' => $memID,
+						)),
+					);
+
+				logActions($log_changes);
 			}
 
 			// Have we got any post save functions to execute?
@@ -782,6 +793,8 @@ function loadCustomFields($memID, $area = 'summary')
 		);
 	}
 	$smcFunc['db_free_result']($request);
+
+	call_integration_hook('integrate_load_custom_profile_fields', array($memID, $area));
 }
 
 ?>

+ 19 - 9
Sources/Subs-Members.php

@@ -39,7 +39,7 @@ function deleteMembers($users, $check_not_admin = false)
 
 	// Try give us a while to sort this out...
 	@set_time_limit(600);
-	
+
 	// Try to get some more memory.
 	setMemoryLimit('128M');
 
@@ -75,7 +75,7 @@ function deleteMembers($users, $check_not_admin = false)
 
 	// Get their names for logging purposes.
 	$request = $smcFunc['db_query']('', '
-		SELECT id_member, member_name, CASE WHEN id_group = {int:admin_group} OR FIND_IN_SET({int:admin_group}, additional_groups) != 0 THEN 1 ELSE 0 END AS is_admin
+		SELECT id_member, real_name, CASE WHEN id_group = {int:admin_group} OR FIND_IN_SET({int:admin_group}, additional_groups) != 0 THEN 1 ELSE 0 END AS is_admin
 		FROM {db_prefix}members
 		WHERE id_member IN ({array_int:user_list})
 		LIMIT ' . count($users),
@@ -90,7 +90,7 @@ function deleteMembers($users, $check_not_admin = false)
 	{
 		if ($row['is_admin'])
 			$admins[] = $row['id_member'];
-		$user_log_details[$row['id_member']] = array($row['id_member'], $row['member_name']);
+		$user_log_details[$row['id_member']] = array($row['id_member'], $row['real_name']);
 	}
 	$smcFunc['db_free_result']($request);
 
@@ -109,15 +109,19 @@ function deleteMembers($users, $check_not_admin = false)
 	if (empty($users))
 		return;
 
-	require_once($sourcedir . '/Logging.php');
 	// Log the action - regardless of who is deleting it.
-	$log_inserts = array();
+	$log_changes = array();
 	foreach ($user_log_details as $user)
 	{
-		// Integration rocks!
-		call_integration_hook('integrate_delete_member', array($user[0]));
-
-		logAction('delete_member', array('member' => $user[0], 'name' => $user[1], 'member_acted' => $user_info['name']), 'admin');
+		$log_changes[] = array(
+			'action' => 'delete_member',
+			'log_type' => 'admin',
+			'extra' => array(
+				'member' => $user[0],
+				'name' => $user[1],
+				'member_acted' => $user_info['name'],
+			),
+		);
 
 		// Remove any cached data if enabled.
 		if (!empty($modSettings['cache_enable']) && $modSettings['cache_enable'] >= 2)
@@ -392,7 +396,13 @@ function deleteMembers($users, $check_not_admin = false)
 		'calendar_updated' => time(),
 	));
 
+	// Integration rocks!
+	call_integration_hook('integrate_delete_members', array($users));
+
 	updateStats('member');
+
+	require_once($sourcedir . '/Logging.php');
+	logActions($log_changes);
 }
 
 /**