cvs diff: Diffing release
Index: release/project_release.module
===================================================================
RCS file: /Users/wright/drupal/local_repo/contributions/modules/project/release/project_release.module,v
retrieving revision 1.155
diff -u -p -r1.155 project_release.module
--- release/project_release.module	22 Aug 2010 00:14:51 -0000	1.155
+++ release/project_release.module	16 Sep 2010 23:11:54 -0000
@@ -2177,3 +2177,14 @@ function project_release_views_default_v
   _project_release_views_default_views_alter($views);
 }
 
+/**
+ * Implementation of hook_ctools_plugin_directory().
+ */
+function project_release_ctools_plugin_directory($module, $plugin) {
+  if ($module == 'sampler') {
+    switch ($plugin) {
+      case 'metric':
+        return 'metrics';
+    }
+  }
+}
cvs diff: Diffing release/includes
cvs diff: Diffing release/metrics
Index: release/metrics/ProjectReleaseMetricReleaseCount.class.php
===================================================================
RCS file: release/metrics/ProjectReleaseMetricReleaseCount.class.php
diff -N release/metrics/ProjectReleaseMetricReleaseCount.class.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ release/metrics/ProjectReleaseMetricReleaseCount.class.php	16 Sep 2010 23:12:42 -0000
@@ -0,0 +1,66 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Class for release_count metric.
+ */
+
+class ProjectReleaseMetricReleaseCount extends SamplerMetric {
+
+  /**
+   * Method for computing results for a given sample.
+   *
+   * @return
+   *   An associative array key is nid, value is an array containing the total
+   *   number of releases on the given project.
+   */
+  public function computeSample() {
+    // Load options.
+    $options = $this->currentSample->options;
+
+    $where_pieces = array();
+    $args = array();
+
+    // Figure out the date range we're using for this sample.
+    if ($previous = $this->getPreviousSample()) {
+      $start = $previous->timestamp;
+      $end = $this->currentSample->timestamp;
+    }
+    else {
+      return FALSE;
+    }
+
+    // Add filters on node created time if they were set.
+    if (!empty($start)) {
+      $where_pieces[] = "n.created > %d";
+      $args = array_merge($args, array($start));
+    }
+    if (!empty($end)) {
+      $where_pieces[] = "n.created < %d";
+      $args = array_merge($args, array($end));
+    }
+
+    // Restrict to only the passed nids.
+    if (!empty($options['object_ids'])) {
+      $where_pieces[] = "prn.pid IN (". db_placeholders($options['object_ids']) .")";
+      $args = array_merge($args, $options['object_ids']);
+    }
+
+    if (empty($where_pieces)) {
+      $where = '';
+    }
+    else {
+      $where = ' WHERE ' . implode(' AND ', $where_pieces);
+    }
+
+    // Pull the total entries in the comment table, grouped by nid.
+    $nodes = db_query("SELECT prn.pid, COUNT(n.nid) AS count FROM {project_release_nodes} prn INNER JOIN {node} n ON prn.nid = n.nid$where GROUP BY prn.pid", $args);
+    $values = array();
+    while ($node = db_fetch_object($nodes)) {
+      $values[$node->pid] = array($node->count);
+    }
+    $this->currentSample->values = $values;
+  }
+
+}
Index: release/metrics/release_count.inc
===================================================================
RCS file: release/metrics/release_count.inc
diff -N release/metrics/release_count.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ release/metrics/release_count.inc	16 Sep 2010 22:16:49 -0000
@@ -0,0 +1,27 @@
+<?php
+
+// $Id$
+
+/**
+ * @file
+ * Metric plugin for counting the number of releases per project.
+ *
+ * This metric accepts the following options:
+ * - startstamp:
+ *     The Unix timestamp to filter node created dates on, only pulling nodes
+ *     created after this stamp.
+ * - endstamp:
+ *     The Unix timestamp to filter node created dates on, only pulling nodes
+ *     created before this stamp.
+ * - object_ids:
+ *     An array of nids. If passed it will restrict the results to nodes in
+ *     this list.
+ */
+
+$plugin = array(
+  'title' => t('Releases per project'),
+  'description' => t("Counts how many releases were created for each node."),
+  'handler' => array(
+    'class' => 'ProjectReleaseMetricReleaseCount',
+  ),
+);
cvs diff: Diffing release/translations
cvs diff: Diffing release/views
cvs diff: Diffing release/views/default_views
cvs diff: Diffing release/views/handlers
cvs diff: Diffing release/views/plugins
