Index: og_views.inc =================================================================== --- og_views.inc (revision 300) +++ og_views.inc (revision 303) @@ -179,18 +179,18 @@ 'filters' => array( 'currentuidsimple' => array( 'field' => 'uid', - 'name' => t('OG: Group in User Subbed Groups'), + 'name' => t('OG: Current user is subscribed to group'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'list-type' => 'select', - 'help' => t('Groups are filtered to where current user is a member .'), + 'help' => t("Groups are filtered by current user's membership."), ), ), 'sorts' => array( 'count' => array( 'name' => t('OG: Group: Subscriber Count'), 'handler' => 'og_handler_sort_field_count', - 'help' => t('Sort by the number of Og subscribers'), + 'help' => t('Sort by the number of OG subscribers'), ), ), ), @@ -211,11 +211,11 @@ 'filters' => array( 'currentuid' => array( 'field' => 'uid', - 'name' => t('OG: Post in User Subbed Groups'), + 'name' => t('OG: Node in group that user is subscribed to'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'list-type' => 'select', - 'help' => t('Posts are filtered to groups that current user is a member of.'), + 'help' => t("Nodes are filtered by current user's membership."), ), ), ), @@ -257,32 +257,36 @@ } function og_views_arguments() { - $args = array( + return array( 'gid' => array( - 'name' => t("OG: Group nid(s)"), - 'handler' => 'og_handler_argument_gid', + 'name' => t('OG: Group nid(s)'), + 'handler' => 'og_views_handler_argument_gid', 'help' => t('Filter for the one or more organic groups. Groups should be specified as a comma or plus delimited list of node ids, like taxonomy URLs. '), ), 'name' => array( - 'name' => t("OG: Group name"), - 'handler' => 'og_handler_argument_group_name_like', + 'name' => t('OG: Group name'), + 'handler' => 'og_views_handler_argument_group_name_like', 'option' => array( '#type' => 'select', '#options' => 'views_handler_operator_like', ), 'help' => t('Filter for the one or more organic groups. Groups should be specified by name, or part of a name. Use the Option field to specify how to match the supplied name.'), - ) - ); - return $args; + ), + 'uid' => array( + 'name' => t('OG: User is subscribed to group'), + 'handler' => 'og_views_handler_argument_uid', + 'help' => t('Filter for groups that user is subscribed to. User is specified by user ID (integer)'), + ), + ); } /* * Custom argument for filtering by one or more group nids. */ -function og_handler_argument_gid($op, &$query, $argtype, $arg = '') { +function og_views_handler_argument_gid($op, &$query, $argtype, $arg = '') { switch ($op) { case 'summary': - og_handler_summary($fieldinfo, $query); + og_views_handler_summary($fieldinfo, $query); return $fieldinfo; case 'link': if ($name = $query->title) { @@ -296,17 +300,17 @@ og_views_break_phrase($arg, $query); break; case 'title': - return db_result(db_query_range('SELECT title FROM {node} WHERE nid = %d', $query, 0, 1));; + return db_result(db_query_range('SELECT title FROM {node} WHERE nid = %d', $query, 0, 1)); } } /* * Custom argument for filtering by group name. Delegates much work to views_handler_filter_like() */ -function og_handler_argument_group_name_like($op, &$query, $argtype, $arg = '') { +function og_views_handler_argument_group_name_like($op, &$query, $argtype, $arg = '') { switch ($op) { case 'summary': - og_handler_summary($fieldinfo, $query); + og_views_handler_summary($fieldinfo, $query); return $fieldinfo; case 'link': if ($name = $query->title) { @@ -325,10 +329,25 @@ views_handler_filter_like('handler', $filter, $filterinfo, &$query); break; case 'title': - return db_result(db_query_range('SELECT title FROM {node} WHERE nid = %d', $query, 0, 1));; + return db_result(db_query_range('SELECT title FROM {node} WHERE nid = %d', $query, 0, 1)); } } +/** + * Custom argument for filtering by groups that a user is subscribed to + */ +function og_views_handler_argument_uid($op, &$query, $a1, $a2 = null) { + switch ($op) { + case 'filter': + $query->ensure_table('og_uid'); + $query->add_where("og_uid.uid = %d", $a2); + break; + case 'title': + // This returns the title for this node in the title, breadcrumb, etc. + return db_result(db_query_range('SELECT name FROM {users} WHERE uid = %d', $query, 0, 1)); + } +} + // not currently in use. should work though. // helper function. restrict to unaffiliated posts. // function og_handler_unaffiliated(&$query) { @@ -340,7 +359,7 @@ // } // helper function. -function og_handler_summary(&$fieldinfo, &$query) { +function og_views_handler_summary(&$fieldinfo, &$query) { $query->ensure_table('og_ancestry'); $query->ensure_table('og_node_data'); $query->add_field('title', 'og_node_data');