5 * This include file implements views functionality on behalf of the
9 function buddylist_views_tables() {
10 $tables['buddylist'] = array(
11 "name" => "buddylist",
23 $tables['buddylist_users'] = array(
27 'table' => 'buddylist',
36 'name' => t('Buddylist: User Name'),
37 'handler' => 'views_handler_field_username',
40 'addlfields' => array('uid'),
41 'help' => t('This will display the username of the owner of the buddylist.'),
44 'name' => t('Buddylist: User Picture'),
45 'handler' => 'views_handler_field_userpic',
47 'help' => t('This will display the user picture of the owner of the buddylist.'),
52 'name' => t('Buddylist: Buddy Name'),
53 'help' => t('This allows you to sort alphabetically by buddy name.'),
58 'name' => t('Buddylist: Author Is A Buddy Of Username'),
59 'operator' => 'views_handler_operator_or',
60 'list' => 'views_handler_filter_username',
61 'value-type' => 'array',
62 'help' => t('This allows you to filter by buddies of a particular user.'),
64 'currentuid' => array(
66 'name' => t('Buddylist: Author Is A Buddy Of Current User'),
67 'operator' => 'views_handler_operator_eqneq',
68 'list' => 'views_handler_filter_usercurrent',
69 'help' => t('This allows you to filter by buddies of the current user.'),
74 if (module_exists('usernode')) {
75 $tables['usernode_buddylist'] = array(
76 "name" => "buddylist",
79 "table" => "usernode",
88 'name' => t('Buddylist: Usernode Is A Buddy Of Username'),
89 'operator' => 'views_handler_operator_or',
90 'list' => 'views_handler_filter_username',
91 'value-type' => 'array',
92 'help' => t('This allows you to filter by buddies of a particular user.'),
94 'currentuid' => array(
96 'name' => t('Buddylist: Usernode Is A Buddy Of Current User'),
97 'operator' => 'views_handler_operator_eqneq',
98 'list' => 'views_handler_filter_usercurrent',
99 'help' => t('This allows you to filter by buddies of the current user.'),
103 $tables['usernode_buddylist_buddyof'] = array(
104 "name" => "buddylist",
107 "table" => "usernode",
116 'name' => t('Buddylist: Username Is A Buddy Of Usernode'),
117 'operator' => 'views_handler_operator_or',
118 'list' => 'views_handler_filter_username',
119 'value-type' => 'array',
120 'help' => t('This allows you to filter by buddies of a particular user.'),
122 'currentuid' => array(
124 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'),
125 'operator' => 'views_handler_operator_eqneq',
126 'list' => 'views_handler_filter_usercurrent',
127 'help' => t('This allows you to filter by buddies of the current user.'),
131 $tables['usernode_buddylist_buddyof'] = array(
132 "name" => "buddylist",
135 "table" => "usernode",
144 'name' => t('Buddylist: Username Is A Buddy Of Usernode'),
145 'operator' => 'views_handler_operator_or',
146 'list' => 'views_handler_filter_username',
147 'value-type' => 'array',
148 'help' => t('This allows you to filter by buddies of a particular user.'),
150 'currentuid' => array(
152 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'),
153 'operator' => 'views_handler_operator_eqneq',
154 'list' => 'views_handler_filter_usercurrent',
155 'help' => t('This allows you to filter by buddies of the current user.'),
163 function buddylist_views_default_views() {
164 $view = new
stdClass();
165 $view->name
= 'buddylist_posts';
166 $view->description
= 'A list of nodes created by buddies of current user';
167 $view->access
= array ();
168 $view->view_args_php
= '';
170 $view->page_title
= 'Buddylist Content';
171 $view->page_header
= 'Nodes authored by buddies of current user<br />';
172 $view->page_footer
= '';
173 $view->page_empty
= '';
174 $view->page_type
= 'table';
175 $view->url
= 'buddies/posts';
176 $view->use_pager
= TRUE
;
177 $view->nodes_per_page
= '10';
178 $view->sort = array (
180 'tablename' => 'node',
181 'field' => 'created',
182 'sortorder' => 'DESC',
186 $view->argument
= array (
188 $view->field
= array (
190 'tablename' => 'users',
195 'tablename' => 'node',
197 'label' => 'Node Title',
198 'handler' => 'views_handler_field_nodelink',
201 'tablename' => 'node',
203 'label' => 'Node Type',
206 $view->filter
= array (
208 'tablename' => 'node',
215 'tablename' => 'buddylist_users',
216 'field' => 'currentuid',
219 'value' => '***CURRENT_USER***',
222 $view->exposed_filter
= array (
224 $view->requires
= array(node
, users
, buddylist_users
);
225 $views[$view->name
] = $view;
228 if (module_exists('usernode')) {
229 $view = new
stdClass();
230 $view->name
= 'buddylist';
231 $view->description
= 'Buddies of the current user';
232 $view->access
= array();
233 $view->view_args_php
= '';
235 $view->page_title
= 'Buddylist';
236 $view->page_header
= 'Buddies of the current user<br />';
237 $view->page_type
= 'table';
238 $view->url
= 'buddies';
239 $view->use_pager
= TRUE
;
240 $view->nodes_per_page
= '10';
241 $view->sort = array (
243 'tablename' => 'node',
244 'field' => 'created',
245 'sortorder' => 'DESC',
246 'options' => 'normal',
249 $view->field
= array (
251 'tablename' => 'node',
254 'handler' => 'views_handler_field_nodelink',
258 $view->filter
= array (
260 'tablename' => 'node',
267 'tablename' => 'usernode_buddylist',
268 'field' => 'currentuid',
271 'value' => '***CURRENT_USER***',
274 'tablename' => 'node',
278 'value' => array (0 => 'usernode'),
281 $view->exposed_filter
= array (
283 $view->requires
= array(node
, usernode_buddylist
);
284 $views[$view->name
] = $view;
292 * Implementation of hook_views_arguments
294 function buddylist_views_arguments() {
295 if (module_exists('usernode')) {
297 'buddylist_buddies' => array(
298 'name' => t('Buddylist: Usernode is buddy of UID'),
299 'handler' => 'buddylist_views_handler_arg_buddies',
300 'help' => t('This will filter usernodes from users, which are buddies of the user with the ID passed to the view as argument.'),
302 'buddylist_buddies_buddyof' => array(
303 'name' => t('Buddylist: UID is buddy of Usernode'),
304 'handler' => 'buddylist_views_handler_arg_buddies_buddyof',
305 '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.'),
313 * Callback for buddylist_views_arguments
315 function buddylist_views_handler_arg_buddies($op, &$query, $argtype, $arg = '') {
318 $table_data = _views_get_tables();
319 $joininfo = $table_data['usernode_buddylist_buddyof']['join'];
320 $joininfo['type'] = 'inner';
321 $query->add_table("usernode_buddylist_buddyof", true
, 1, $joininfo);
323 $query->add_table('users', true
);
324 $query->add_field('name', 'users');
325 $query->add_field('uid', 'users');
326 $fieldinfo['field'] = "users.name";
330 $query->add_orderby('users', 'name', $argtype);
334 $table_data = _views_get_tables();
335 $joininfo = $table_data['usernode_buddylist']['join'];
336 $joininfo['type'] = 'inner';
337 $joininfo['extra'] = array('uid' => $uid);
338 $query->add_table("usernode_buddylist", true
, 1, $joininfo);
341 $name = ($query->name ?
$query->name
: variable_get('anonymous', 'Anonymous'));
342 return l($name, "$arg/" .
intval($query->uid
));
345 return variable_get('anonymous', 'Anonymous');
347 $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query));
348 return check_plain($user->name
);
354 * Callback for buddylist_views_arguments
356 function buddylist_views_handler_arg_buddies_buddyof($op, &$query, $argtype, $arg = '') {
359 $table_data = _views_get_tables();
360 $joininfo = $table_data['usernode_buddylist']['join'];
361 $joininfo['type'] = 'inner';
362 $query->add_table("usernode_buddylist", true
, 1, $joininfo);
364 $query->add_table('users', true
);
365 $query->add_field('name', 'users');
366 $query->add_field('uid', 'users');
367 $fieldinfo['field'] = "users.name";
371 $query->add_orderby('users', 'name', $argtype);
375 $table_data = _views_get_tables();
376 $joininfo = $table_data['usernode_buddylist_buddyof']['join'];
377 $joininfo['type'] = 'inner';
378 $joininfo['extra'] = array('buddy' => $uid);
379 $query->add_table("usernode_buddylist_buddyof", true
, 1, $joininfo);
382 $name = ($query->name ?
$query->name
: variable_get('anonymous', 'Anonymous'));
383 return l($name, "$arg/" .
intval($query->uid
));
386 return variable_get('anonymous', 'Anonymous');
388 $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query));
389 return check_plain($user->name
);