Index: /Users/jbitner/Sites/activity/sites/all/modules/contrib/activity/contrib/buddylistactivity/buddylistactivity.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/activity/contrib/buddylistactivity/Attic/buddylistactivity.module,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 buddylistactivity.module
--- buddylistactivity.module	31 Dec 2007 12:44:03 -0000	1.1.2.4
+++ buddylistactivity.module	19 Feb 2008 03:08:50 -0000
@@ -8,8 +8,21 @@
  */
 function buddylistactivity_activity_info() {
   return array(
-    'ops' => array('add', 'remove'),
-    'types' => array('buddylist'),
+    'ops' => array('add' => t('Add'), 'remove' => t('Remove')),
+    'types' => array('buddylist' => t('Buddylist')),
+    'roles' => array(
+      'author' => array(
+        '#name' => t('Author'),
+        '#description' => t('The person who performed the action.'),
+        '#default' => '',
+      ),
+      // This is what corresponds to ACTIVITY_ALL
+      'all' => array(
+        '#name' => t('All'),
+        '#description' => t('The general public.'),
+        '#default' => '',
+      ),
+    ),
   );
 }
 
@@ -43,6 +56,9 @@
 
 /**
  * Implementation of hook_buddylist_api()
+ * $arg[0] = operation
+ * $arg[1] = user being added/removed
+ * $arg[2] = user doing the add/remove
  */
 function buddylistactivity_buddylist() {
   global $user;
@@ -53,8 +69,11 @@
     'user-id' => $user->uid,
     'buddy-id' => $args[1]->uid,
   );
-  activity_insert('buddylistactivity', $type, $action, $data, $user->uid);
-  activity_insert('buddylistactivity', $type, $action, $data, $args[1]->uid, ACTIVITY_SCOPE_SELF);
+  $target_users_roles = array(
+    ACTIVITY_ALL => 'all',
+    $args[2]->uid => 'author',
+  );
+  activity_insert('buddylistactivity', $type, $action, $data, $target_users_roles);
 }
 
 function buddylistactivity_block($op = 'list', $delta = 0) {
@@ -63,15 +82,65 @@
     $block['buddies']['info'] = t("Activity - My buddies: show activities of current user's buddies.");
     return $block;
   }
+  elseif ($op == 'configure') {
+    $form['items'] = array(
+      '#type' => 'select',
+      '#title' => t('Number of items'),
+      '#default_value' => variable_get('activity_block_'. $delta, 5),
+      '#options' =>drupal_map_assoc(range(1, 50)),
+    );
+    return $form;
+  }
   elseif ($op == 'view') {
     switch ($delta) {
       case 'buddies':
-        $uids = array_keys(buddylist_get_buddies($user->uid, 'uid'));
-        $activities = activity_get_activity($uids, NULL, 5);
-        if (count($activities)) {
-        return array('title' => t('My @buddies\' activity', buddylist_translation()),
-          'content' => theme('activity_block', $activities));
+        if (user_access('view own activity')) {
+          $uids = array_keys(buddylist_get_buddies($user->uid, 'uid'));          
+          $activity = activity_get_activity((empty($uids) ? $user->uid : $uids), NULL, 5);
+          if ($count = count($activity)) {          
+            if ($count > variable_get('activity_block_'. $delta, 5)) {
+              $more_link = theme('activity_more_link', 'activity');
+              array_pop($activity);
+            }        
+            $activites = array();
+            foreach ($activity as $item) {
+              $activities[] = theme('activity', activity_token_replace($item), $item);
+            }        
+            return array('title' => t('My @buddies\' activity', buddylist_translation()),
+              'content' => theme('activity_block', $activities, $more_link));
+          }
         }
+        break;
     }
   }
 }
+
+function buddylistactivity_menu($may_cache) {
+  $items = array();
+  global $user;
+  
+  if ($may_cache) {
+    $items[] = array(
+      'path' => 'activity/buddies',
+      'title' => t('My buddies\' activity'),
+      'callback' => 'buddylistactivity_page',
+      'access' => $user->uid,
+      'type' => MENU_LOCAL_TASK,
+      'access' => user_access('view own activity'),
+    );
+  }
+  
+  return $items;
+}
+
+function buddylistactivity_page($page = 'buddies') {
+  global $user;
+  if ($page == 'buddies') {
+    if (user_access('view own activity')) {      
+      $uids = array_keys(buddylist_get_buddies($user->uid, 'uid'));
+      $activities = activity_get_activity((empty($uids) ? $user->uid : $uids), NULL, 20);
+      $table = activity_table($activities);
+      return theme('activity_page', $activities, $table);
+    }
+  }
+}
\ No newline at end of file
