cvs diff: Diffing .
cvs diff: Diffing includes
cvs diff: Diffing legacy_paths
cvs diff: Diffing legacy_paths/translations
cvs diff: Diffing package
cvs diff: Diffing package/views
cvs diff: Diffing package/views/default_views
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/ProjectReleaseMetricNewReleases.class.php
===================================================================
RCS file: release/metrics/ProjectReleaseMetricNewReleases.class.php
diff -N release/metrics/ProjectReleaseMetricNewReleases.class.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ release/metrics/ProjectReleaseMetricNewReleases.class.php	17 Sep 2010 17:38:40 -0000
@@ -0,0 +1,53 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Class for new_releases metric.
+ */
+
+class ProjectReleaseMetricNewReleases extends SamplerMetric {
+
+  /**
+   * Counts new releases made for each project during any given sample period.
+   *
+   * @return
+   *   An associative array keyed by project nid, where the value is an array
+   *   containing the number of new releases created for that project in the
+   *   current sample period.
+   */
+  public function computeSample() {
+    // Load options.
+    $options = $this->currentSample->options;
+
+    // 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;
+    }
+
+    $args = array($start, $end);
+
+    // Restrict to only the passed project nids.
+    if (!empty($options['object_ids'])) {
+      $where = " WHERE prn.pid IN (". db_placeholders($options['object_ids']) .")";
+      $args = array_merge($args, $options['object_ids']);
+    }
+    else {
+      $where = '';
+    }
+
+    // We pull all project nodes from {node}, LEFT JOIN with release nodes
+    // from {project_release_nodes} to get releases per project, LEFT JOIN
+    // with {node} each release node to filter by release node creation date,
+    // and then GROUP by the project nid so we can get release counts.
+    $nodes = db_query("SELECT np.nid, COUNT(nr.nid) AS count FROM {node} np LEFT JOIN {project_release_nodes} prn ON np.nid = prn.pid LEFT JOIN {node} nr ON prn.nid = nr.nid AND nr.created > %d AND nr.created < %d$where GROUP BY np.nid ORDER BY NULL", $args);
+    while ($node = db_fetch_object($nodes)) {
+      $this->currentSample->values[$node->nid] = array($node->count);
+    }
+  }
+
+}
Index: release/metrics/new_releases.inc
===================================================================
RCS file: release/metrics/new_releases.inc
diff -N release/metrics/new_releases.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ release/metrics/new_releases.inc	17 Sep 2010 17:23:42 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Metric plugin for counting the number of new releases per project.
+ */
+$plugin = array(
+  'title' => t('New releases per project'),
+  'description' => t("Counts how many new releases were created for each project during each sample period."),
+  'handler' => array(
+    'class' => 'ProjectReleaseMetricNewReleases',
+  ),
+);
cvs diff: Diffing release/translations
cvs diff: Diffing release/views
cvs diff: Diffing release/views/default_views
Index: release/views/default_views/project_release_new_releases.view.php
===================================================================
RCS file: release/views/default_views/project_release_new_releases.view.php
diff -N release/views/default_views/project_release_new_releases.view.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ release/views/default_views/project_release_new_releases.view.php	17 Sep 2010 17:28:53 -0000
@@ -0,0 +1,151 @@
+<?php
+// $Id$
+
+if (module_exists('sampler')) {
+$view = new view;
+$view->name = 'project_release_new_releases';
+$view->description = 'Sparkline showing count of new releases over time for a given project';
+$view->tag = 'Metrics';
+$view->view_php = '';
+$view->base_table = 'sampler_project_release_new_releases';
+$view->is_cacheable = FALSE;
+$view->api_version = 2;
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+$handler = $view->new_display('default', 'Defaults', 'default');
+$handler->override_option('fields', array(
+  'timestamp' => array(
+    'label' => 'Timestamp',
+    'alter' => array(
+      'alter_text' => 0,
+      'text' => '',
+      'make_link' => 0,
+      'path' => '',
+      'link_class' => '',
+      'alt' => '',
+      'prefix' => '',
+      'suffix' => '',
+      'target' => '',
+      'help' => '',
+      'trim' => 0,
+      'max_length' => '',
+      'word_boundary' => 1,
+      'ellipsis' => 1,
+      'html' => 0,
+      'strip_tags' => 0,
+    ),
+    'empty' => '',
+    'hide_empty' => 0,
+    'empty_zero' => 0,
+    'date_format' => 'small',
+    'custom_date_format' => '',
+    'exclude' => 0,
+    'id' => 'timestamp',
+    'table' => 'sampler_project_release_new_releases',
+    'field' => 'timestamp',
+    'relationship' => 'none',
+  ),
+  'value_0' => array(
+    'label' => 'New release count',
+    'alter' => array(
+      'alter_text' => 0,
+      'text' => '',
+      'make_link' => 0,
+      'path' => '',
+      'link_class' => '',
+      'alt' => '',
+      'prefix' => '',
+      'suffix' => '',
+      'target' => '',
+      'help' => '',
+      'trim' => 0,
+      'max_length' => '',
+      'word_boundary' => 1,
+      'ellipsis' => 1,
+      'html' => 0,
+      'strip_tags' => 0,
+    ),
+    'empty' => '',
+    'hide_empty' => 0,
+    'empty_zero' => 0,
+    'set_precision' => FALSE,
+    'precision' => 0,
+    'decimal' => '.',
+    'separator' => ',',
+    'prefix' => '',
+    'suffix' => '',
+    'exclude' => 0,
+    'id' => 'value_0',
+    'table' => 'sampler_project_release_new_releases',
+    'field' => 'value_0',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('sorts', array(
+  'timestamp' => array(
+    'order' => 'ASC',
+    'granularity' => 'second',
+    'id' => 'timestamp',
+    'table' => 'sampler_project_release_new_releases',
+    'field' => 'timestamp',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('arguments', array(
+  'object_id' => array(
+    'default_action' => 'not found',
+    'style_plugin' => 'default_summary',
+    'style_options' => array(),
+    'wildcard' => 'all',
+    'wildcard_substitution' => 'All',
+    'title' => 'New releases for %1',
+    'breadcrumb' => '',
+    'default_argument_type' => 'node',
+    'default_argument' => '',
+    'validate_type' => 'project_nid',
+    'validate_fail' => 'not found',
+    'break_phrase' => 0,
+    'not' => 0,
+    'id' => 'object_id',
+    'table' => 'sampler_project_release_new_releases',
+    'field' => 'object_id',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('filters', array(
+  'timestamp' => array(
+    'operator' => 'between',
+    'value' => array(
+      'type' => 'offset',
+      'value' => '',
+      'min' => '-1 year',
+      'max' => 'today',
+    ),
+    'group' => '0',
+    'exposed' => FALSE,
+    'expose' => array(
+      'operator' => FALSE,
+      'label' => '',
+    ),
+    'id' => 'timestamp',
+    'table' => 'sampler_project_release_new_releases',
+    'field' => 'timestamp',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('access', array(
+  'type' => 'none',
+));
+$handler->override_option('cache', array(
+  'type' => 'none',
+));
+$handler->override_option('items_per_page', 0);
+$handler->override_option('style_plugin', 'views_sparkline');
+$handler->override_option('style_options', array(
+  'grouping' => '',
+  'x_field' => 'timestamp',
+  'y_field' => 'value_0',
+  'width' => '300px',
+  'height' => '30px',
+  'color' => '#336699',
+));
+} // module_exists('sampler')
cvs diff: Diffing release/views/handlers
cvs diff: Diffing release/views/plugins
cvs diff: Diffing solr
cvs diff: Diffing solr/translations
cvs diff: Diffing translations
cvs diff: Diffing usage
cvs diff: Diffing usage/includes
cvs diff: Diffing usage/tests
cvs diff: Diffing usage/translations
cvs diff: Diffing views
cvs diff: Diffing views/default_views
cvs diff: Diffing views/handlers
cvs diff: Diffing views/plugins
cvs diff: Diffing views/theme
