Index: invite.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/invite/Attic/invite.module,v
retrieving revision 1.10.2.35
diff -u -r1.10.2.35 invite.module
--- invite.module	16 Mar 2007 00:09:13 -0000	1.10.2.35
+++ invite.module	17 Mar 2007 22:45:13 -0000
@@ -187,6 +187,7 @@
  * Implementation of hook_menu().
  */
 function invite_menu($may_cache) {
+  global $user;
   $items = array();
 
   if ($may_cache) {
@@ -212,9 +213,9 @@
       'access' => user_access('send invitations'),
       'type' => MENU_CALLBACK);
   }
-  else {
-    // check for joined users
-    _invite_check_messages();
+  else if (user_access('send invitations')) {
+    // check for newly registered users
+    _invite_check_messages($user->uid);
   }
 
   return $items;
@@ -359,6 +360,7 @@
   );
 
   $inc = 0;
+  $access_profiles = user_access('access user profiles');
   $result = db_query("SELECT i.*, (u.uid IS NOT NULL) AS account_exists FROM {invite} i LEFT JOIN {users} u ON u.uid = i.mid WHERE i.uid = %d ORDER BY i.expiry DESC", $user->uid);
   while ($invite = db_fetch_object($result)){
     $delete_link = l(t('Delete invitation'), 'invite/delete/'. urlencode($invite->email));
@@ -368,7 +370,7 @@
       $action_cell = $delete_link;
     }
     else {
-      $email_cell = $invite->account_exists ? l($invite->email, 'user/'. $invite->mid) : '<em>'. check_plain($invite->email) .'</em>';
+      $email_cell = $invite->account_exists && $access_profiles ? l($invite->email, 'user/'. $invite->mid, array('title' => t('View user profile.'))) : check_plain($invite->email);
       $status_cell = $invite->account_exists ? t('Joined') : t('Deleted');
       $action_cell = variable_get('invite_allow_join_delete', 0) ? $delete_link : '&nbsp;';
     }
@@ -498,8 +500,8 @@
     return $rtn;
   }
 
-  if ((int)db_result(db_query("SELECT COUNT(*) FROM {users} WHERE mail = '%s'", $email)) > 0) {
-    $rtn['message'] = t('The user you are trying to invite has already registered.');
+  if ($member = user_load(array('mail' => $email))) {
+    $rtn['message'] = t('!user (@email) is already a member of this site.', array('!user' => theme('username', $member), '@email' => $member->mail));
     $rtn['is_invited'] = TRUE;
     return $rtn;
   }
@@ -562,14 +564,12 @@
   db_query("UPDATE {invite} SET timestamp = %d, mid = %d, email = '%s' WHERE reg_code = '%s'", time(), $uid, $email, $regcode);
 }
 
-function _invite_check_messages(){
-  global $user;
-  $result = db_query('SELECT i.email, i.mid, u.name FROM {invite} i INNER JOIN {users} u ON u.uid = i.mid WHERE i.uid = %d AND i.timestamp != 0 AND i.received = 0', $user->uid);
-  if (db_num_rows($result)) {
-    while ($new_user = db_fetch_object($result)) {
-      drupal_set_message(t('!user-link (@user-email) has joined @site-name!', array('!user-link' => l($new_user->name, 'user/'. $new_user->mid), '@user-email' => $new_user->email, '@site-name' => variable_get('site_name', t('Drupal')))));
-    }
-    db_query('UPDATE {invite} SET received = 1 WHERE uid = %d AND timestamp != 0 AND received = 0', $user->uid);
+function _invite_check_messages($uid) {
+  $result = db_query('SELECT i.mid, i.email FROM {invite} i INNER JOIN {users} u ON u.uid = i.mid AND u.status = 1 WHERE i.uid = %d AND i.timestamp != 0 AND i.received = 0', $uid);
+  while ($invite = db_fetch_object($result)) {
+    $account = user_load(array('uid' => $invite->mid));
+    drupal_set_message(t('!user (@email) has joined @site-name!', array('!user' => theme('username', $account), '@email' => $account->mail, '@site-name' => variable_get('site_name', t('Drupal')))));
+    db_query("UPDATE {invite} SET received = 1 WHERE email = '%s'", $invite->email);
   }
 }
 
