diff --git a/activity_log.entity_groups.inc b/activity_log.entity_groups.inc
index 9004df5..f7a3cfb 100644
--- a/activity_log.entity_groups.inc
+++ b/activity_log.entity_groups.inc
@@ -315,8 +315,12 @@ function activity_log_eg_target_entity($event, $settings, $stream_owner) {
  * Returns the ID of the active group.
  */
 function activity_log_eg_active_group($event, $settings) {
-  if (module_exists('og') && $node = $event->og) {
-    return array('node' => array($node->nid));
+  if (module_exists('og')) {
+    $new_node = node_load($event->target_id);
+    if (empty($new_node)) {
+      return array();
+    }
+    return array('node' => $new_node->og_groups);
   }
 }
 
@@ -723,18 +727,24 @@ function activity_log_eg_not_stream_owner($event, $settings) {
  *   If TRUE, returns group administrators. Otherwise, returns all members.
  */
 function _activity_log_get_active_group_members($event, $admin = FALSE) {
-  $node = $event->og;
+  $node = node_load($event->target_id);
   if (empty($node)) {
     return array();
   }
-  $query = "SELECT uid FROM {og_uid} WHERE is_active = 1 AND nid = %d";
-  if ($admin) {
-    $query .= " AND is_admin = 1";
-  }
-  $result = db_query($query, $node->nid);
   $uids = array();
-  while ($account = db_fetch_object($result)) {
-    $uids[] = $account->uid;
+  foreach ($node->og_groups as $group_nid) {
+    if (!is_null($uids_to_merge)) {
+      $uids = array_merge($uids, $uids_to_merge);
+    }
+    $uids_to_merge = array();
+    $query = "SELECT uid FROM {og_uid} WHERE nid = %d AND is_active = 1 AND uid != %d";
+    if ($admin) {
+      $query .= " AND is_admin = 1";
+    }
+    $result = db_query($query, $group_nid, $event->acting_uid);
+    while ($account = db_fetch_object($result)) {
+      $uids_to_merge[$account->uid] = $account->uid;
+    }
   }
   return $uids;
 }
diff --git a/activity_log.module b/activity_log.module
index c8927b3..da6fcfd 100644
--- a/activity_log.module
+++ b/activity_log.module
@@ -468,6 +468,7 @@ function activity_log_token_list($type = 'all') {
   }
   if ($type == 'node' && module_exists('og')) {
     $tokens['node']['og-url'] = t("The absolute URL of the node's primary group, if applicable.");
+    $tokens['node']['ogs-grouped'] = t("A themed group of links to the groups belonging to the node, if applicable.");
   }
   if ($type == 'user') {
     $tokens['user']['picture'] = t("The user's picture");
@@ -492,6 +493,30 @@ function activity_log_token_values($type, $object = NULL, $options = array()) {
   if ($type == 'node' && module_exists('og') && !empty($object->og_groups) && is_array($object->og_groups)) {
     $gids = array_keys(array_filter($object->og_groups));
     $values['og-url'] = url('node/'. $gids[0], array('absolute' => TRUE));
+
+    global $user;
+    $gids_inaccessible = array_diff_key($object->og_groups_both, $user->og_groups);
+    $gids_both = array_diff_key($object->og_groups_both, $gids_inaccessible);
+    $group_links = array();
+    foreach ($gids_both as $gid => $name) {
+      $group_links[] = l($name, url('node/'. $gid, array('absolute' => TRUE)));
+    }
+    $n_groups = count($group_links);
+    $n_extra_groups = $n_groups > 4 ? $n_groups - 4 : NULL;
+    $iterate = $n_groups - $n_extra_groups;
+    for ($i = 0; $i < $iterate; $i++) {
+      $groups_themed .= $group_links[$i];
+      if ($n_groups > 2 && $i < ($iterate - 1)) {
+        $groups_themed .= ', ';
+      }
+      else if (($n_groups == 2 && $i == 0) || ($n_groups == 4 && $i == 2)) {
+        $groups_themed .= " and ";
+      }
+      else if (!is_null($n_extra_groups) && $i == 3) {
+        $groups_themed .= $n_extra_groups == 1 ? " and 1 other" : " and $n_extra_groups others";
+      }
+    }    
+    $values['ogs-grouped'] = $groups_themed;
   }
   if ($type == 'user') {
     $account = empty($object) ? activity_log_user_load($GLOBALS['user']->uid) : $object;
diff --git a/activity_log.rules_defaults.inc b/activity_log.rules_defaults.inc
index a2e54c7..1d08e50 100644
--- a/activity_log.rules_defaults.inc
+++ b/activity_log.rules_defaults.inc
@@ -694,12 +694,12 @@ function activity_log_rules_defaults_node_insert_og() {
             array (
               'en' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
               'und' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
             ),
@@ -995,12 +995,12 @@ function activity_log_rules_defaults_node_insert_og() {
             array (
               'en' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
               'und' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
             ),
@@ -1168,12 +1168,12 @@ function activity_log_rules_defaults_node_insert_og() {
             array (
               'en' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
               'und' => 
               array (
-                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in <a href="[node:og-url]">[node:ogname]</a></div>
+                'template' => '<div class="activity-log-picture">[author:picture]</div><div class="activity-log-indent"><div class="activity-log-content"><a href="[author:account-url]">[author:user]</a> added the [node:type-name] <a href="[node:node-url]">[node:title]</a> in [node:ogs-grouped]</div>
 <div class="activity-log-time"><a href="[node:node-url]">[node:small]</a></div></div>',
               ),
             ),
