diff --git drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.module drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.module
index cf3781d..435b62e 100644
--- drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.module
+++ drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.module
@@ -1,3 +1,12 @@
 <?php
 
 include_once('commons_core.features.inc');
+
+/**
+ * Implementation of hook_views_api().
+ */
+function commons_core_views_api() {
+  return array(
+    'api' => 2,
+  );
+}
diff --git drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.views.inc drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.views.inc
new file mode 100644
index 0000000..79e85d0
--- /dev/null
+++ drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core.views.inc
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Implementation of hook_views_plugins().
+ */
+function commons_core_views_plugins() {
+  return array(
+    'argument validator' => array(
+      'commons_core_disabled_group' => array(
+        'title' => t('Disabled groups'),
+        'handler' => 'commons_core_plugin_argument_validate_disabled_group',
+        'path' => drupal_get_path('module', 'commons_core'),
+      ),
+    ),
+  );
+}
diff --git drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core_plugin_argument_validate_disabled_group.inc drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core_plugin_argument_validate_disabled_group.inc
new file mode 100644
index 0000000..7103068
--- /dev/null
+++ drupal_commons-6.x-1.1/profiles/drupal_commons/modules/features/commons_core/commons_core_plugin_argument_validate_disabled_group.inc
@@ -0,0 +1,215 @@
+<?php
+define('DC_VIEWS_DO_NOT_VALIDATE_MEMBERSHIP', 0);
+define('DC_VIEWS_VALIDATE_GROUP_MEMBER', 1);
+define('DC_VIEWS_VALIDATE_GROUP_ADMIN', 2);
+
+/**
+ * Validate whether an argument is a group node. Borrows heavily form the Node argument validator.
+ */
+class commons_core_plugin_argument_validate_disabled_group extends views_plugin_argument_validate {
+ 
+  var $option_name = 'validate_argument_commons_core_disabled_group';
+
+  function validate_form(&$form, &$form_state) {
+
+    $options = array(
+      DC_VIEWS_DO_NOT_VALIDATE_MEMBERSHIP => t('Do not validate user\'s group membership'),
+      DC_VIEWS_VALIDATE_GROUP_MEMBER => t('Validate current user is a member of a specified group'),
+      DC_VIEWS_VALIDATE_GROUP_ADMIN => t('Validate current user is an admin of a specified group'),
+    );
+
+    $form['validate_argument_is_member'] = array(
+      '#type' => 'select',
+      '#title' => t('Group membership validation'),
+      '#options' => $options,
+      '#default_value' => isset($this->argument->options['validate_argument_is_member']) ? $this->argument->options['validate_argument_is_member'] : 0,
+      '#process' => array('views_process_dependency'),
+      '#dependency' => array('edit-options-validate-type' => array($this->id)),
+    );
+
+    // get active group nodes
+    $options = array();
+    $options = $this->get_groups();
+    $default_groups = $this->argument->options['validate_argument_disabled_groups'];
+    if (empty($default_groups)) {
+      $default_groups = array();
+    }
+/*
+    $form['validate_argument_disabled_groups'] = array(
+      '#type' => 'checkboxes',
+      '#prefix' => '<div id="edit-options-validate-argument-disabled-groups-wrapper">',
+      '#suffix' => '</div>',
+      '#title' => t('Group list'),
+      '#options' => $options,
+      '#default_value' => $default_groups,
+      '#description' => t('If you wish to disable for specific groups, check them.'), // . print_r($options, TRUE),
+      '#process' => array('expand_checkboxes', 'views_process_dependency'),
+      '#dependency' => array('edit-options-validate-type' => array($this->id)),
+    );
+*/
+    $form['validate_argument_disabled_groups'] = array(
+      '#type' => 'select',
+      '#title' => t('Disabled groups'),
+      '#options' => $options,
+      '#default_value' => $default_groups,
+      '#multiple' => TRUE,
+      '#description' => t('If you wish to disable for specific groups, check them.'), // . print_r($options, TRUE),
+      '#process' => array('views_process_dependency'),
+      '#dependency' => array('edit-options-validate-type' => array($this->id)),
+    );
+
+    $form['validate_argument_disabled_info'] = array(
+      '#type' => 'markup',
+      '#value' => t('It uses default "Group nodes" validation with "Node ID" and node types "Group".'), // . print_r($this->argument->options, TRUE),
+      '#prefix' => '<div id="edit-options-validate-argument-disabled-info-wrapper" class="form-item dependent-options"><div id="edit-options-validate-argument-disabled-info"><strong>',
+      '#suffix' => '</strong></div></div>',
+      '#process' => array('views_process_dependency'),
+      '#dependency' => array('edit-options-validate-type' => array($this->id)),
+    );
+
+  }
+
+  function validate_argument($argument) {
+/*
+    dpm($this->argument->options);
+    dsm('is_numeric($argument): ' . is_numeric($argument));
+    dsm('isset: ' . isset($this->argument->options['validate_argument_disabled_groups'][$argument]) );
+    dsm('disab: ' . $this->argument->options['validate_argument_disabled_groups'][$argument]>0 );
+*/
+    // validate for enabled group (i.e. if group is set then is disabled)
+    if(is_numeric($argument) && 
+       isset($this->argument->options['validate_argument_disabled_groups'][$argument]) &&
+       $this->argument->options['validate_argument_disabled_groups'][$argument]>0 ) {
+      return FALSE;
+    }
+
+    // validate for Node ID (not multiple) and node type 'group'
+    if(!is_numeric($argument)) {
+      return FALSE;
+    }
+    $node = node_load($argument);
+    if (!$node) {
+      return FALSE;
+    }
+    if (!$this->validate_group_node_type($node->type)) {
+      return FALSE;
+    }
+
+    // validate membership
+    if (!$this->validate_membership($node)) {
+      return FALSE;
+    }
+
+    // Save the title() handlers some work.
+    $this->argument->validated_title = check_plain($node->title);
+
+    return TRUE;
+
+/*
+    $types = og_get_types('group');
+
+    $type = isset($this->argument->options['validate_argument_nid_type']) ? $this->argument->options['validate_argument_nid_type'] : 'nid';
+    switch ($type) {
+      case 'nid':
+        if (!is_numeric($argument)) {
+          return FALSE;
+        }
+        $node = node_load($argument);
+        if (!$node) {
+          return FALSE;
+        }
+
+        if (!$this->validate_group_node_type($node->type)) {
+          return FALSE;
+        }
+
+        if (!$this->validate_membership($node)) {
+          return FALSE;
+        }
+
+        // Save the title() handlers some work.
+        $this->argument->validated_title = check_plain($node->title);
+
+        // Admin has not setup any content types to behave as a group. Thats unsupported.
+        if (empty($types)) {
+          return TRUE;
+        }
+
+        return TRUE;
+      case 'nids':
+        $nids = new stdClass();
+        $nids->value = array($argument);
+        $nids = views_break_phrase($argument, $nids);
+        if ($nids->value == -1) {
+          return FALSE;
+        }
+
+        $placeholders = implode(', ', array_fill(0, sizeof($nids->value), '%d'));
+
+        $has_membership = FALSE;
+        $titles = array();
+        $test_nids = drupal_map_assoc($nids->value);
+
+        $result = db_query("SELECT nid, type, title FROM {node} WHERE nid IN ($placeholders)", $nids->value);
+        while ($node = db_fetch_object($result)) {
+          if (!$this->validate_group_node_type($node->type)) {
+            return FALSE;
+          }
+
+          if (!$has_membership) {
+            $has_membership = $this->validate_membership($node);
+          }
+
+          $titles[] = check_plain($node->title);
+          unset($test_nids[$node->nid]);
+        }
+
+        $this->argument->validated_title = implode($nids->operator == 'or' ? ' + ' : ', ', $titles);
+        // If $test is not empty, we did not find a nid.
+        return empty($test_nids) && $has_membership;
+    }
+*/
+  }
+
+  function validate_membership($node) {
+    if (!empty($this->argument->options['validate_argument_is_member'])) {
+      switch ($this->argument->options['validate_argument_is_member']) {
+        case DC_VIEWS_VALIDATE_GROUP_MEMBER :
+          if (!og_is_group_member($node->nid)) {
+            return FALSE;
+          }
+          break;
+        case DC_VIEWS_VALIDATE_GROUP_ADMIN :
+          if (!og_is_group_admin($node)) {
+            return FALSE;
+          }
+          break;
+      }
+    }
+
+    return TRUE;
+  }
+
+  function validate_group_node_type($type) {
+    $types = array();
+    if (!empty($this->argument->options['validate_argument_group_node_type'])) {
+      $types = array_filter($this->argument->options['validate_argument_group_node_type']);
+    }
+    if (empty($types)) {
+      return og_is_group_type($type);
+    }
+    else {
+      return isset($types[$type]);
+    }
+  }
+
+  function get_groups() {
+    $options = array();
+    $result = db_query("SELECT n.nid, n.title FROM {node} n WHERE n.type = 'group' and n.status = 1");
+    while($node = db_fetch_object($result)) {
+      $options[$node->nid] = $node->title;
+    }
+    return $options;
+  }
+
+}
