--- user_activity.module	Fri Jan 09 16:19:08 2009
+++ user_activity.module	Fri Jan 09 16:19:30 2009
@@ -11,6 +11,9 @@
  * Stefan Auditor <stefan.auditor@erdfisch.de>
  */
 
+define('USER_ACTIVITY_MOST_BLOCK', 0);
+define('USER_ACTIVITY_USER_BLOCK', 1);
+
 /**
  * Implementation of hook_menu().
  */
@@ -67,12 +70,14 @@
       user_activity_login_count($account);
       break;
     case 'view':
-      $items['user_activity'] = array(
-        'title' => t('Latest activity'),
-        'value' => theme('user_activity_o_meter', $account->user_activity_index),
-        'class' => 'user-activity',
-      );
-      return array(t('Activity') => $items);
+      if (!variable_get('user_activity_profile_disable', 0)) {
+        $items['user_activity'] = array(
+          'title' => t('Latest activity'),
+          'value' => theme('user_activity_o_meter', $account->user_activity_index),
+          'class' => 'user-activity',
+        );
+        return array(t('Activity') => $items);
+      }
       break;
     case 'load':
       $account->user_activity_index = user_activity_index_get($account);
@@ -90,44 +95,79 @@
 function user_activity_block($op = 'list', $delta = 0, $edit = array()) {
   global $user;
 
-  if ($op == 'list') {
-    $blocks[0]['info'] = t('Most active users');
-    return $blocks;
-  }
-  else if ($op == 'configure' && $delta == 0) {
-    $form['user_activity_activity_count'] = array(
-      '#type' => 'select',
-      '#title' => t('Number of users to display'),
-      '#default_value' => variable_get('user_activity_activity_count', 5),
-      '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)),
-    );
-    return $form;
-  }
-  else if ($op == 'save' && $delta == 0) {
-    variable_set('user_activity_activity_count', $edit['user_activity_activity_count']);
-  }
-  else if ($op == 'view') {
-    $block = array();
+  switch ($op) {
+    case 'list':
+      $blocks[USER_ACTIVITY_MOST_BLOCK]['info'] = t('Most active users');
+      $blocks[USER_ACTIVITY_USER_BLOCK]['info'] = t('User Activity');
+      return $blocks;
+
+    case 'configure':
+      switch ($delta) {
+        case USER_ACTIVITY_MOST_BLOCK:
+          $form['user_activity_activity_count'] = array(
+            '#type' => 'select',
+            '#title' => t('Number of users to display'),
+            '#default_value' => variable_get('user_activity_activity_count', 5),
+            '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)),
+          );
+          return $form;
+
+        case USER_ACTIVITY_USER_BLOCK:
+          $form['user_activity_profile_disable'] = array(
+            '#type' => 'radios',
+            '#title' => t('Disable Activity on Profile'),
+            '#default_value' => variable_get('user_activity_profile_disable', 0),
+            '#options' => array('No', 'Yes'),
+            '#description' => t('If enabling User Activity block, you might want to disable showing activity on profile.'),
+          );
+          return $form;
+      }
+      break;
 
-    switch ($delta) {
-      case 0:
-        if (user_access('access content')) {
-          $result = db_query_range('SELECT ua.uid, ua.idx, u.name FROM {user_activity} ua
-                                      INNER JOIN {users} u
-                                      WHERE u.uid=ua.uid AND u.status != 0 AND u.access != 0
-                                      ORDER BY ua.idx DESC', 0, variable_get('user_activity_activity_count', 5));
-          while ($account = db_fetch_object($result)) {
-            $account->user_activity_index = user_activity_index_get($account);
-            $items[] = $account;
+    case 'save':
+      switch ($delta) {
+        case USER_ACTIVITY_MOST_BLOCK:
+          variable_set('user_activity_activity_count', $edit['user_activity_activity_count']);
+          break;
+
+        case USER_ACTIVITY_USER_BLOCK:
+          variable_set('user_activity_profile_disable', $edit['user_activity_profile_disable']);
+          break;
+      }
+      break;
+
+    case 'view':
+      $block = array();
+
+      switch ($delta) {
+        case USER_ACTIVITY_MOST_BLOCK:
+          if (user_access('access content')) {
+            $result = db_query_range('SELECT ua.uid, ua.idx, u.name FROM {user_activity} ua
+                                        INNER JOIN {users} u
+                                        WHERE u.uid=ua.uid AND u.status != 0 AND u.access != 0
+                                        ORDER BY ua.idx DESC', 0, variable_get('user_activity_activity_count', 5));
+            while ($account = db_fetch_object($result)) {
+              $account->user_activity_index = user_activity_index_get($account);
+              $items[] = $account;
+            }
+            $output = theme('user_activity_list', $items);
+            $output .= '<div>'. l('more', 'user_activity') .'</div>';
+
+            $block['subject'] = t('Most active users');
+            $block['content'] = $output;
           }
-          $output = theme('user_activity_list', $items);
-          $output .= '<div>'. l('more', 'user_activity') .'</div>';
+          return $block;
 
-          $block['subject'] = t('Most active users');
-          $block['content'] = $output;
-        }
-        return $block;
-    }
+        case USER_ACTIVITY_USER_BLOCK:
+          if (arg(0) == 'user' && (int)arg(1) && !arg(2)) {
+            $account = user_load(array('uid' => arg(1)));
+            $block['subject'] = t('User Activity');
+            $block['content'] = theme('user_activity_o_meter', $account->user_activity_index);
+          }
+          return $block;
+
+      }
+      break;
   }
 }
 
