Index: activity.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/Attic/activity.admin.inc,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 activity.admin.inc
--- activity.admin.inc	6 May 2009 01:23:45 -0000	1.1.2.5
+++ activity.admin.inc	7 May 2009 18:20:04 -0000
@@ -218,10 +218,10 @@ function _activity_settings_form_trigger
     '#title' => t('Available Activity Types'),
     '#description' => t('Please choose which type of activity you would like to record.'),
   );
-  $modules = module_invoke_all('activity_info');
-  foreach ($modules as $module) {
-    foreach ($module->hooks as $hook => $ops) {
-      $options[$hook] = ucfirst(str_replace('_', ' ', $module->name));
+
+  foreach (activity_get_module_info() as $module => $info) {
+    foreach ($info[$module]->hooks as $hook => $ops) {
+      $options[$hook] = ucfirst(str_replace('_', ' ', $info[$module]->name));
     }
   }
   $default_value = $form_state['storage']['values']['triggers']['module'];
Index: activity.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/activity.module,v
retrieving revision 1.1.2.2.2.30.2.31.2.26
diff -u -p -r1.1.2.2.2.30.2.31.2.26 activity.module
--- activity.module	6 May 2009 17:57:04 -0000	1.1.2.2.2.30.2.31.2.26
+++ activity.module	7 May 2009 18:20:04 -0000
@@ -1,5 +1,48 @@
 <?php
 // $Id: activity.module,v 1.1.2.2.2.30.2.31.2.26 2009/05/06 17:57:04 sirkitree Exp $
+/**
+ * @file
+ * Primarily Drupal hooks and global API functions to manipulate activity.
+ *
+ * This is the main module file for Activity.
+ */
+
+/**
+ * Get a list of modules that support the current activity API.
+ */
+function activity_get_module_info() {
+  static $cache = NULL;
+  if (!isset($cache)) {
+    $cache = array();
+    foreach (module_implements('activity_info') as $module) {
+      $function = $module . '_activity_info';
+      $info = $function();
+      if (isset($info[$module]->api) && $info[$module]->api == 2.000) {
+        if (!isset($info[$module]->path)) {
+          $info['path'] = drupal_get_path('module', $module);
+          if (file_exists('./'. $info[$module]->path .'/'. $module .'.activity.inc')) {
+            require_once './'. $info[$module]->path .'/'. $module .'.activity.inc';
+          }
+        }
+        $cache[$module] = $info;
+      }
+    }
+  }
+  return $cache;
+}
+
+/**
+ * Implementation of hook_init().
+ */
+function activity_init() {
+  $supported_core_modules = array('node', 'comment', 'user');
+  // load up our core include files which serve as templates as to how other
+  // modules should implement our hooks.
+  $activity_path = drupal_get_path('module', 'activity') .'/modules';
+  foreach ($supported_core_modules as $module) {
+    require_once($activity_path .'/'. $module .'.activity.inc');
+  }
+}
 
 /**
  * Implementation of hook_help().
@@ -119,9 +162,8 @@ function activity_nodeapi(&$node, $op, $
  * @see activity_record()
  */
 function activity_action_info() {
-  $module_info = module_invoke_all('activity_info');
   $hooks = array();
-  foreach ($module_info as $module => $info) {
+  foreach (activity_get_module_info() as $module => $info) {
     $hooks = array_merge($hooks, $info->hooks);
   }
   return array(
@@ -219,8 +261,7 @@ function activity_token_get_list($types 
 function activity_token_list($type = 'all') {
   if ($type == 'activity' || $type == 'all' || function_exists($type .'_activity_token_list')) {
     $token_list = array();
-    $module_info = module_invoke_all('activity_info');
-    foreach ($module_info as $module => $info) {
+    foreach (activity_get_module_info() as $module => $info) {
       if (function_exists($module .'_activity_token_list')) {
         $token_list = array_merge($token_list, call_user_func($module .'_activity_token_list', $module));
       }
@@ -231,8 +272,7 @@ function activity_token_list($type = 'al
 
 function activity_token_values($type, $object = NULL, $options = array()) {
   $token_values = array();
-  $module_info = module_invoke_all('activity_info');
-  foreach ($module_info as $module => $info) {
+  foreach (activity_get_module_info() as $module => $info) {
     if (function_exists($module .'_activity_token_values')) {
       if ($type == $module) {
         $token_values = array_merge($token_values, call_user_func($module .'_activity_token_values', $module, $object));
@@ -280,9 +320,8 @@ function activity_record($object, $conte
   }
   
   // find what the type is so we can do the tokenizing
-  $module_info = module_invoke_all('activity_info');
   $activity_object = FALSE;
-  foreach ($module_info as $module => $info) {
+  foreach (activity_get_module_info() as $module => $info) {
     if (in_array($context['hook'], array_keys($info->hooks))) {
       // we found the activity we wanted
       $activity_object = $info;
@@ -473,19 +512,6 @@ function activity_delete($aid) {
 }
 
 /**
- * Implementation of hook_init().
- */
-function activity_init() {
-  $supported_core_modules = array('node', 'comment', 'user');
-  // load up our core include files which serve as templates as to how other
-  // modules should implement our hooks.
-  $activity_path = drupal_get_path('module', 'activity') .'/modules';
-  foreach ($supported_core_modules as $module) {
-    require_once($activity_path .'/'. $module .'.activity.inc');
-  }
-}
-
-/**
  * Implementation of hook_db_rewrite_sql().
  */
 function activity_db_rewrite_sql($query, $primary_table, $primary_field, $args) {
@@ -582,7 +608,7 @@ function theme_activity_token_help($type
     //$rows[] = array(array('data' => drupal_ucfirst($key) . ' ' . t('tokens'), 'class' => 'region', 'colspan' => 2));
     $form[$key] = array(
       '#type' => 'fieldset',
-      '#title' => drupal_ucfirst($key) .' '. t('tokens'),
+      '#title' => drupal_ucfirst($key),
       '#collapsible' => TRUE,
       '#collapsed' => TRUE,
     );
Index: modules/comment.activity.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/modules/Attic/comment.activity.inc,v
retrieving revision 1.1.2.6
diff -u -p -r1.1.2.6 comment.activity.inc
--- modules/comment.activity.inc	6 May 2009 01:23:45 -0000	1.1.2.6
+++ modules/comment.activity.inc	7 May 2009 18:20:04 -0000
@@ -11,6 +11,7 @@
  */
 function comment_activity_info() {
   $info = new stdClass();
+  $info->api = 2;
   $info->name = 'comment';
   $info->object_type = 'comment';
   $info->objects = array('author' => 'comment'); // array key is the label
Index: modules/node.activity.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/modules/Attic/node.activity.inc,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 node.activity.inc
--- modules/node.activity.inc	6 May 2009 01:23:45 -0000	1.1.2.5
+++ modules/node.activity.inc	7 May 2009 18:20:04 -0000
@@ -11,6 +11,7 @@
  */
 function node_activity_info() {
   $info = new stdClass();
+  $info->api = 2;
   $info->name = 'node';
   $info->object_type = 'node';
   $info->objects = array('author' => 'node'); // the array key is the label
Index: modules/user.activity.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/modules/Attic/user.activity.inc,v
retrieving revision 1.1.2.6
diff -u -p -r1.1.2.6 user.activity.inc
--- modules/user.activity.inc	6 May 2009 01:23:45 -0000	1.1.2.6
+++ modules/user.activity.inc	7 May 2009 18:20:04 -0000
@@ -11,6 +11,7 @@
  */
 function user_activity_info() {
   $info = new stdClass();
+  $info->api = 2;
   $info->name = 'user';
   $info->object_type = 'user';
   $info->objects = array('account' => 'account'); // array key is the label
