From ea138d051442d5841a16f69808f722ee4604fc5a Mon Sep 17 00:00:00 2001
From: John Storey <john.storey@ebricks-inc.com>
Date: Tue, 7 Feb 2012 14:36:34 -0800
Subject: [PATCH] made chat work with OG

---
 .../modules/drupalchat/drupalchat.admin.inc        |    3 +++
 .../dcode.com/modules/drupalchat/drupalchat.module |   20 ++++++++++++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/drupal/sites/dcode.com/modules/drupalchat/drupalchat.admin.inc b/drupal/sites/dcode.com/modules/drupalchat/drupalchat.admin.inc
index 120ad63..838598b 100644
--- a/drupal/sites/dcode.com/modules/drupalchat/drupalchat.admin.inc
+++ b/drupal/sites/dcode.com/modules/drupalchat/drupalchat.admin.inc
@@ -94,6 +94,9 @@ function drupalchat_settings_form($form, &$form_state) {
   if (module_exists('user_relationships')) {
     $form['drupalchat_rel']['#options'][DRUPALCHAT_REL_UR] = t('User Relationship module');
   }
+  if (module_exists('og')) {
+    $form['drupalchat_rel']['#options'][DRUPALCHAT_REL_OG] = t('Organic Groups module');
+  }
   if (module_exists('flag_friend')) {
     $form['drupalchat_rel']['#options'][DRUPALCHAT_REL_FF] = t('Flag Friend module');
   }
diff --git a/drupal/sites/dcode.com/modules/drupalchat/drupalchat.module b/drupal/sites/dcode.com/modules/drupalchat/drupalchat.module
index 91e05b2..32d862a 100644
--- a/drupal/sites/dcode.com/modules/drupalchat/drupalchat.module
+++ b/drupal/sites/dcode.com/modules/drupalchat/drupalchat.module
@@ -1,3 +1,4 @@
+
 <?php
 
 
@@ -18,6 +19,7 @@ define('DRUPALCHAT_USER_IDLE',      2);
 define('DRUPALCHAT_REL_AUTH',      0);
 define('DRUPALCHAT_REL_UR',      1);
 define('DRUPALCHAT_REL_FF',      2);
+define('DRUPALCHAT_REL_OG',      3);
 
 /**
  * Implements hook_help().
@@ -511,6 +513,21 @@ function _drupalchat_buddylist($uid) {
       $uid == $relationship->requester_id ? $users[] = $relationship->requestee_id : $users[] = $relationship->requester_id;
     }
   }
+  elseif ($drupalchat_rel == DRUPALCHAT_REL_OG) {
+    $user = user_load(array("uid"=>$uid));
+    $og_array = array(0);
+    foreach ($user->group_audience['und'] as $member_group) {
+      array_push($og_array, $member_group['gid']);
+    }
+
+    $results = db_query
+      ("SELECT DISTINCT m.etid FROM {og_membership} m WHERE m.gid IN ( :og ) AND m.etid <> :uid", 
+       array(':og' => $og_array, ':uid' => $uid));
+
+    foreach ($results as $result) {
+      $users[] = $result->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));
     
@@ -525,7 +542,7 @@ function _drupalchat_buddylist_online($buddylist) {
   global $user;
 
   $users = array();
-  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;
@@ -593,4 +610,3 @@ function drupalchat_yui_path($reset = FALSE) {
 
   return $path;
 }
-
-- 
1.7.0.4

