diff -urN drupalchat-7.x-1.0-beta10/drupalchat.admin.inc drupalchat/drupalchat.admin.inc --- drupalchat-7.x-1.0-beta10/drupalchat.admin.inc 2012-09-25 12:23:39.000000000 -0400 +++ drupalchat/drupalchat.admin.inc 2012-11-13 22:17:15.000000000 -0500 @@ -290,6 +290,9 @@ if (module_exists('user_relationships')) { $form['drupalchat_chatlist_cont']['drupalchat_rel']['#options'][DRUPALCHAT_REL_UR] = t('User Relationship module'); } + if (module_exists('og')) { + $form['drupalchat_chatlist_cont']['drupalchat_rel']['#options'][DRUPALCHAT_REL_OG] = t('Organic Groups module'); + } if (module_exists('flag_friend')) { $form['drupalchat_chatlist_cont']['drupalchat_rel']['#options'][DRUPALCHAT_REL_FF] = t('Flag Friend module'); } diff -urN drupalchat-7.x-1.0-beta10/drupalchat.module drupalchat/drupalchat.module --- drupalchat-7.x-1.0-beta10/drupalchat.module 2012-09-25 12:23:39.000000000 -0400 +++ drupalchat/drupalchat.module 2012-11-13 22:38:06.000000000 -0500 @@ -18,6 +18,7 @@ define('DRUPALCHAT_REL_AUTH', 0); define('DRUPALCHAT_REL_UR', 1); define('DRUPALCHAT_REL_FF', 2); +define('DRUPALCHAT_REL_OG', 3); define('DRUPALCHAT_EXTERNAL_HOST', 'http://api.iflychat.com'); define('DRUPALCHAT_EXTERNAL_PORT', '80'); @@ -790,6 +791,31 @@ $uid == $relationship->requester_id ? $users[] = $relationship->requestee_id : $users[] = $relationship->requester_id; } } + elseif ($drupalchat_rel == DRUPALCHAT_REL_OG) { + $user = user_load($uid); + + // Create an array of all groups this user belongs to + $groups = field_get_items('user', $user, 'group_audience'); + $og_array = array(); + foreach ($groups as $group) { + $og_array[] = $group['gid']; + } + + // Query the database for all users belonging to those groups + $query = db_select('og_membership', 'ogm'); + $query + ->fields('ogm', array('etid')) + ->condition('ogm.entity_type', 'user') + ->condition('ogm.gid', $og_array, 'IN') + ->condition('ogm.etid', $uid, '<>') + ->distinct(); + $results = $query->execute(); + + // Create a flat array of user IDs + foreach ($results as $member) { + $users[] = $member->etid; + } + } elseif ($drupalchat_rel == DRUPALCHAT_REL_FF) { $result = db_query("SELECT * FROM {flag_friend} WHERE uid = :uid OR friend_uid = :uid", array(':uid' => $uid, ':friend_uid' => $uid)); @@ -807,7 +833,7 @@ if(variable_get('drupalchat_enable_chatroom', 1) == 1) { $users['c-0'] = array('name' => t('Public Chatroom'), 'status' => '1'); } - if (variable_get('drupalchat_rel', DRUPALCHAT_REL_AUTH) > DRUPALCHAT_REL_AUTH) { + if (variable_get('drupalchat_rel', DRUPALCHAT_REL_AUTH) != DRUPALCHAT_REL_AUTH) { // Return empty on an empty buddylist if (empty($buddylist)) { $users['total'] = 0; @@ -1128,4 +1154,4 @@ } } return $source[0]; -} \ No newline at end of file +}