Index: og_user_roles.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og_user_roles/og_user_roles.module,v
retrieving revision 1.45
diff -u -p -r1.45 og_user_roles.module
--- og_user_roles.module	22 Dec 2009 14:56:21 -0000	1.45
+++ og_user_roles.module	4 Aug 2010 15:31:41 -0000
@@ -609,3 +609,12 @@ function og_user_roles_get_group_default
   }
   return $default_role;
 }
+
+/**
+ * Implements hook_views_api().
+ */
+function og_user_roles_views_api() {
+  return array(
+    'api' => 2.0,
+  );
+}
Index: og_user_roles.views.inc
===================================================================
RCS file: og_user_roles.views.inc
diff -N og_user_roles.views.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ og_user_roles.views.inc	4 Aug 2010 15:44:42 -0000
@@ -0,0 +1,29 @@
+<?php
+// $Id: og_user_roles.pages.inc,v 1.5 2009/12/06 19:26:37 sun Exp $
+
+/**
+ * @file
+ * Views plugins for OG user roles module.
+ */
+
+/**
+ * Implements hook_views_plugins().
+ */
+function og_user_roles_views_plugins() {
+  $path = drupal_get_path('module', 'og_user_roles') . '/includes';
+  $plugins['access'] = array(
+    'og_user_roles_role' => array(
+      'title' => t('OG Role'),
+      'help' => t('Access will be granted to users with any of the specified roles. Taking additional roles for a possible group context into account.'),
+      'handler' => 'og_user_roles_plugin_access_role',
+      // @todo Parent class autoloading fails for access plugins.
+      'parent' => 'views_plugin_access_role',
+      'path' => $path,
+      // @todo Are these derived from parent plugin?
+      'uses options' => TRUE,
+      'help topic' => 'access-role',
+    ),
+  );
+  return $plugins;
+}
+
Index: includes/og_user_roles_plugin_access_role.inc
===================================================================
RCS file: includes/og_user_roles_plugin_access_role.inc
diff -N includes/og_user_roles_plugin_access_role.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ includes/og_user_roles_plugin_access_role.inc	4 Aug 2010 15:45:30 -0000
@@ -0,0 +1,54 @@
+<?php
+// $Id: og_user_roles.pages.inc,v 1.5 2009/12/06 19:26:37 sun Exp $
+
+/**
+ * @file
+ * Views access plugin of OG user roles module.
+ */
+
+// @todo Parent class autoloading fails for access plugins.
+views_get_plugin('access', 'role');
+
+/**
+ * Access plugin providing role-based access control respecting group context.
+ */
+class og_user_roles_plugin_access_role extends views_plugin_access_role {
+
+  /**
+   * Extends views_plugin_access_role::access().
+   */
+  function access($account) {
+    global $user;
+
+    if ($account->uid == $user->uid && ($node = node_load($this->options['arg_group']))) {
+      og_user_roles_grant_roles($account, $node);
+    }
+    return parent::access($account);
+  }
+
+  function summary_title() {
+    $summary = array();
+    $summary[] = parent::summary_title();
+    $summary[] = t('Argument %number', array('%number' => $this->options['arg_group']));
+    return implode(', ', $summary);
+  }
+
+  function option_defaults(&$options) {
+    $options['arg_group'] = 1;
+    parent::option_defaults($options);
+  }
+
+  function options_form(&$form, &$form_state) {
+    $form['arg_group'] = array(
+      '#type' => 'select',
+      // @todo Use a proper Views context.
+      '#title' => t('Path argument containing group node id'),
+      '#default_value' => $this->options['arg_group'],
+      // 0 is not a valid argument, as dynamic % arguments can't appear in arg(0).
+      '#options' => drupal_map_assoc(range(1, MENU_MAX_PARTS)),
+    );
+    parent::options_form($form, $form_state);
+  }
+
+}
+
