? _project.inc_
? _project.module_
? release/history
Index: usage/project_usage.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/usage/project_usage.module,v
retrieving revision 1.1
diff -u -r1.1 project_usage.module
--- usage/project_usage.module	7 Aug 2007 20:21:33 -0000	1.1
+++ usage/project_usage.module	7 Aug 2007 22:57:33 -0000
@@ -44,10 +44,81 @@
       'weight' => 1,
     );
   }
+  else {
+    // Project and release usage tabs.
+    if (arg(0) == 'node' && is_numeric(arg(1))) {
+      $node = node_load(arg(1));
+      if ($node->nid && ($node->type == 'project_project' || $node->type == 'project_release')) {
+        $items[] = array(
+          'path' => 'node/'. arg(1) .'/usage',
+          'title' => t('Usage'),
+          'access' => user_access('view project usage'),
+          'callback' => $node->type == 'project_project' ? 'project_usage_project_page' : 'project_usage_release_page',
+          'callback arguments' => array($node),
+          'type' => MENU_LOCAL_TASK,
+          'weight' => 2,
+        );
+      }
+    }
+  }
   return $items;
 }
 
 /**
+ * Implementation of hook_perm().
+ */
+function project_usage_perm() {
+  $perms = array(
+    'view project usage',
+  );
+  return $perms;
+}
+
+
+/**
+ * Display the usage history of a project node.
+ */
+function project_usage_project_page($node) {
+  drupal_set_title(check_plain($node->title));
+
+  // Build a list of the API versions.
+  $terms = array();
+  foreach (project_release_get_api_taxonomy() as $term) {
+    $terms[$term->tid] = $term->name;
+  }
+
+  // Make two passes through the usage data to group API versions into columns
+  // and dates into rows.
+  $header = array(t('Week starting'));
+  $weeks = array();
+  $query = db_query("SELECT timestamp, tid, count FROM {project_usage_week_project} WHERE nid = %d ORDER BY timestamp DESC", $node->nid);
+  while ($row = db_fetch_object($query)) {
+    $header[$row->tid] = $terms[$row->tid];
+    $weeks[$row->timestamp][$row->tid] = $row->count;
+  }
+  $rows = array();
+  foreach ($weeks as $timestamp => $week) {
+    $rows[] = array(format_date($timestamp)) + $week;
+  }
+  return theme('table', $header, $rows);
+}
+
+/**
+ * Display the usage history of a release node.
+ */
+function project_usage_release_page($node) {
+  drupal_set_title(check_plain($node->title));
+
+  $header = array(t('Week starting'), t('Count'));
+  $rows = array();
+  $query = db_query("SELECT timestamp, count FROM {project_usage_week_release} WHERE nid = %d ORDER BY timestamp DESC", $node->nid);
+  while ($row = db_fetch_object($query)) {
+    $rows[] = array(format_date($row->timestamp), $row->count);
+  }
+  return theme('table', $header, $rows);
+}
+
+/**
  * Module settings form.
  */
 function project_usage_settings_form() {
