View source
<?php
function og_subgroups_views_arguments() {
$args = array(
'subgroups_gid' => array(
'name' => t("OG Subgroups: Group nid"),
'handler' => 'og_subgroups_handler_argument_gid',
'help' => t('Get the children subgroups of a parent group. Provide the parent group node id (nid). '),
),
);
return $args;
}
function og_subgroups_handler_argument_gid($op, &$query, $argtype, $arg = '') {
switch ($op) {
case 'summary':
$query
->ensure_table('og_subgroups', true);
$query
->add_field('gid', 'og_subgroups');
$query
->add_where('og_subgroups.gid IS NOT NULL');
$fieldinfo['field'] = "og_subgroups.gid";
return $fieldinfo;
break;
case 'sort':
$query
->add_orderby('og_subgroups', 'gid', $argtype);
break;
case 'filter':
$joininfo = array(
'type' => 'LEFT',
'left' => array(
'table' => 'node',
'field' => 'nid',
),
'right' => array(
'field' => 'gid',
),
);
$num = $query
->add_table('og_subgroups', FALSE, 1, $joininfo);
$tablename = $query
->get_table_name('og_subgroups', $num);
$query
->add_field('gid', $tablename);
$query
->add_where('parent = %d', $arg);
break;
case 'link':
return l($query->title, "{$arg}/" . intval($query->gid));
case 'title':
return db_result(db_query_range('SELECT title FROM {node} WHERE nid = %d', $query, 0, 1));
}
}