"buddylist", "join" => array( "left" => array( "table" => "users", "field" => "uid", ), "right" => array( "field" => "buddy", ), ), ); $tables['buddylist_users'] = array( 'name' => 'users', 'join' => array( 'left' => array( 'table' => 'buddylist', 'field' => 'uid' ), 'right' => array( 'field' => 'uid' ), ), 'fields' => array( 'name' => array( 'name' => t('Buddylist: User Name'), 'handler' => 'views_handler_field_username', 'sortable' => true, 'uid' => 'uid', 'addlfields' => array('uid'), 'help' => t('This will display the username of the owner of the buddylist.'), ), 'uid' => array( 'name' => t('Buddylist: User Picture'), 'handler' => 'views_handler_field_userpic', 'sortable' => false, 'help' => t('This will display the user picture of the owner of the buddylist.'), ), ), 'sorts' => array( 'name' => array( 'name' => t('Buddylist: Buddy Name'), 'help' => t('This allows you to sort alphabetically by buddy name.'), ) ), 'filters' => array( 'uid' => array( 'name' => t('Buddylist: Author Is A Buddy Of Username'), 'operator' => 'views_handler_operator_or', 'list' => 'views_handler_filter_username', 'value-type' => 'array', 'help' => t('This allows you to filter by buddies of a particular user.'), ), 'currentuid' => array( 'field' => 'uid', 'name' => t('Buddylist: Author Is A Buddy Of Current User'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'help' => t('This allows you to filter by buddies of the current user.'), 'cacheable' => 'no', ), ), ); if (module_exists('usernode')) { $tables['usernode_buddylist'] = array( "name" => "buddylist", "join" => array( "left" => array( "table" => "usernode", "field" => "uid", ), "right" => array( "field" => "buddy", ), ), 'filters' => array( 'uid' => array( 'name' => t('Buddylist: Usernode Is A Buddy Of Username'), 'operator' => 'views_handler_operator_or', 'list' => 'views_handler_filter_username', 'value-type' => 'array', 'help' => t('This allows you to filter by buddies of a particular user.'), ), 'currentuid' => array( 'field' => 'uid', 'name' => t('Buddylist: Usernode Is A Buddy Of Current User'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'help' => t('This allows you to filter by buddies of the current user.'), ), ), ); $tables['usernode_buddylist_buddyof'] = array( "name" => "buddylist", "join" => array( "left" => array( "table" => "usernode", "field" => "uid", ), "right" => array( "field" => "uid", ), ), 'filters' => array( 'uid' => array( 'name' => t('Buddylist: Username Is A Buddy Of Usernode'), 'operator' => 'views_handler_operator_or', 'list' => 'views_handler_filter_username', 'value-type' => 'array', 'help' => t('This allows you to filter by buddies of a particular user.'), ), 'currentuid' => array( 'field' => 'uid', 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'help' => t('This allows you to filter by buddies of the current user.'), ), ), ); $tables['usernode_buddylist_buddyof'] = array( "name" => "buddylist", "join" => array( "left" => array( "table" => "usernode", "field" => "uid", ), "right" => array( "field" => "uid", ), ), 'filters' => array( 'buddy' => array( 'name' => t('Buddylist: Username Is A Buddy Of Usernode'), 'operator' => 'views_handler_operator_or', 'list' => 'views_handler_filter_username', 'value-type' => 'array', 'help' => t('This allows you to filter by buddies of a particular user.'), ), 'currentuid' => array( 'field' => 'buddy', 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'), 'operator' => 'views_handler_operator_eqneq', 'list' => 'views_handler_filter_usercurrent', 'help' => t('This allows you to filter by buddies of the current user.'), ), ), ); } return($tables); } function buddylist_views_default_views() { $view = new stdClass(); $view->name = 'buddylist_posts'; $view->description = 'A list of nodes created by buddies of current user'; $view->access = array (); $view->view_args_php = ''; $view->page = TRUE; $view->page_title = 'Buddylist Content'; $view->page_header = 'Nodes authored by buddies of current user
'; $view->page_footer = ''; $view->page_empty = ''; $view->page_type = 'table'; $view->url = 'buddies/posts'; $view->use_pager = TRUE; $view->nodes_per_page = '10'; $view->sort = array ( array ( 'tablename' => 'node', 'field' => 'created', 'sortorder' => 'DESC', 'options' => '', ), ); $view->argument = array ( ); $view->field = array ( array ( 'tablename' => 'users', 'field' => 'name', 'label' => 'Buddy', ), array ( 'tablename' => 'node', 'field' => 'title', 'label' => 'Node Title', 'handler' => 'views_handler_field_nodelink', ), array ( 'tablename' => 'node', 'field' => 'type', 'label' => 'Node Type', ), ); $view->filter = array ( array ( 'tablename' => 'node', 'field' => 'status', 'operator' => '=', 'options' => '', 'value' => '1', ), array ( 'tablename' => 'buddylist_users', 'field' => 'currentuid', 'operator' => '=', 'options' => '', 'value' => '***CURRENT_USER***', ), ); $view->exposed_filter = array ( ); $view->requires = array(node, users, buddylist_users); $views[$view->name] = $view; if (module_exists('usernode')) { $view = new stdClass(); $view->name = 'buddylist'; $view->description = 'Buddies of the current user'; $view->access = array(); $view->view_args_php = ''; $view->page = TRUE; $view->page_title = 'Buddylist'; $view->page_header = 'Buddies of the current user
'; $view->page_type = 'table'; $view->url = 'buddies'; $view->use_pager = TRUE; $view->nodes_per_page = '10'; $view->sort = array ( array ( 'tablename' => 'node', 'field' => 'created', 'sortorder' => 'DESC', 'options' => 'normal', ), ); $view->field = array ( array ( 'tablename' => 'node', 'field' => 'title', 'label' => 'Name', 'handler' => 'views_handler_field_nodelink', 'options' => 'link', ), ); $view->filter = array ( array ( 'tablename' => 'node', 'field' => 'status', 'operator' => '=', 'options' => '', 'value' => '1', ), array ( 'tablename' => 'usernode_buddylist', 'field' => 'currentuid', 'operator' => '=', 'options' => '', 'value' => '***CURRENT_USER***', ), array ( 'tablename' => 'node', 'field' => 'type', 'operator' => 'OR', 'options' => '', 'value' => array (0 => 'usernode'), ), ); $view->exposed_filter = array ( ); $view->requires = array(node, usernode_buddylist); $views[$view->name] = $view; } return($views); } /** * Implementation of hook_views_arguments */ function buddylist_views_arguments() { if (module_exists('usernode')) { $arguments = array( 'buddylist_buddies' => array( 'name' => t('Buddylist: Usernode is buddy of UID'), 'handler' => 'buddylist_views_handler_arg_buddies', 'help' => t('This will filter usernodes from users, which are buddies of the user with the ID passed to the view as argument.'), ), 'buddylist_buddies_buddyof' => array( 'name' => t('Buddylist: UID is buddy of Usernode'), 'handler' => 'buddylist_views_handler_arg_buddies_buddyof', 'help' => t('This will filter usernodes from users, of which the user with the ID passed to the view as argument is a buddy of.'), ), ); return $arguments; } } /** * Callback for buddylist_views_arguments */ function buddylist_views_handler_arg_buddies($op, &$query, $argtype, $arg = '') { switch($op) { case 'summary': $table_data = _views_get_tables(); $joininfo = $table_data['usernode_buddylist_buddyof']['join']; $joininfo['type'] = 'inner'; $query->add_table("usernode_buddylist_buddyof", true, 1, $joininfo); $query->add_table('users', true); $query->add_field('name', 'users'); $query->add_field('uid', 'users'); $fieldinfo['field'] = "users.name"; return $fieldinfo; break; case 'sort': $query->add_orderby('users', 'name', $argtype); break; case 'filter': $uid = intval($arg); $table_data = _views_get_tables(); $joininfo = $table_data['usernode_buddylist']['join']; $joininfo['type'] = 'inner'; $joininfo['extra'] = array('uid' => $uid); $query->add_table("usernode_buddylist", true, 1, $joininfo); break; case 'link': $name = ($query->name ? $query->name : variable_get('anonymous', 'Anonymous')); return l($name, "$arg/" . intval($query->uid)); case 'title': if (!$query) { return variable_get('anonymous', 'Anonymous'); } $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query)); return check_plain($user->name); } } /** * Callback for buddylist_views_arguments */ function buddylist_views_handler_arg_buddies_buddyof($op, &$query, $argtype, $arg = '') { switch($op) { case 'summary': $table_data = _views_get_tables(); $joininfo = $table_data['usernode_buddylist']['join']; $joininfo['type'] = 'inner'; $query->add_table("usernode_buddylist", true, 1, $joininfo); $query->add_table('users', true); $query->add_field('name', 'users'); $query->add_field('uid', 'users'); $fieldinfo['field'] = "users.name"; return $fieldinfo; break; case 'sort': $query->add_orderby('users', 'name', $argtype); break; case 'filter': $uid = intval($arg); $table_data = _views_get_tables(); $joininfo = $table_data['usernode_buddylist_buddyof']['join']; $joininfo['type'] = 'inner'; $joininfo['extra'] = array('buddy' => $uid); $query->add_table("usernode_buddylist_buddyof", true, 1, $joininfo); break; case 'link': $name = ($query->name ? $query->name : variable_get('anonymous', 'Anonymous')); return l($name, "$arg/" . intval($query->uid)); case 'title': if (!$query) { return variable_get('anonymous', 'Anonymous'); } $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query)); return check_plain($user->name); } }