4 * This include file implements views functionality on behalf of the
8 function buddylist_views_tables() {
9 $tables['buddylist'] = array(
10 "name" => "buddylist",
22 $tables['buddylist_users'] = array(
26 'table' => 'buddylist',
35 'name' => t('Buddylist: User Name'),
36 'handler' => 'views_handler_field_username',
39 'addlfields' => array('uid'),
40 'help' => t('This will display the username of the owner of the buddylist.'),
43 'name' => t('Buddylist: User Picture'),
44 'handler' => 'views_handler_field_userpic',
46 'help' => t('This will display the user picture of the owner of the buddylist.'),
51 'name' => t('Buddylist: Buddy Name'),
52 'help' => t('This allows you to sort alphabetically by buddy name.'),
57 'name' => t('Buddylist: Author Is A Buddy Of Username'),
58 'operator' => 'views_handler_operator_or',
59 'list' => 'views_handler_filter_username',
60 'value-type' => 'array',
61 'help' => t('This allows you to filter by buddies of a particular user.'),
63 'currentuid' => array(
65 'name' => t('Buddylist: Author Is A Buddy Of Current User'),
66 'operator' => 'views_handler_operator_eqneq',
67 'list' => 'views_handler_filter_usercurrent',
68 'help' => t('This allows you to filter by buddies of the current user.'),
73 if (module_exists('usernode')) {
74 $tables['usernode_buddylist'] = array(
75 "name" => "buddylist",
78 "table" => "usernode",
87 'name' => t('Buddylist: Usernode Is A Buddy Of Username'),
88 'operator' => 'views_handler_operator_or',
89 'list' => 'views_handler_filter_username',
90 'value-type' => 'array',
91 'help' => t('This allows you to filter by buddies of a particular user.'),
93 'currentuid' => array(
95 'name' => t('Buddylist: Usernode Is A Buddy Of Current User'),
96 'operator' => 'views_handler_operator_eqneq',
97 'list' => 'views_handler_filter_usercurrent',
98 'help' => t('This allows you to filter by buddies of the current user.'),
102 $tables['usernode_buddylist_buddyof'] = array(
103 "name" => "buddylist",
106 "table" => "usernode",
115 'name' => t('Buddylist: Username Is A Buddy Of Usernode'),
116 'operator' => 'views_handler_operator_or',
117 'list' => 'views_handler_filter_username',
118 'value-type' => 'array',
119 'help' => t('This allows you to filter by buddies of a particular user.'),
121 'currentuid' => array(
123 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'),
124 'operator' => 'views_handler_operator_eqneq',
125 'list' => 'views_handler_filter_usercurrent',
126 'help' => t('This allows you to filter by buddies of the current user.'),
130 $tables['usernode_buddylist_buddyof'] = array(
131 "name" => "buddylist",
134 "table" => "usernode",
143 'name' => t('Buddylist: Username Is A Buddy Of Usernode'),
144 'operator' => 'views_handler_operator_or',
145 'list' => 'views_handler_filter_username',
146 'value-type' => 'array',
147 'help' => t('This allows you to filter by buddies of a particular user.'),
149 'currentuid' => array(
151 'name' => t('Buddylist: Current User Is A Buddy Of Usernode'),
152 'operator' => 'views_handler_operator_eqneq',
153 'list' => 'views_handler_filter_usercurrent',
154 'help' => t('This allows you to filter by buddies of the current user.'),
162 function buddylist_views_default_views() {
163 $view = new
stdClass();
164 $view->name
= 'buddylist_posts';
165 $view->description
= 'A list of nodes created by buddies of current user';
166 $view->access
= array ();
167 $view->view_args_php
= '';
169 $view->page_title
= 'Buddylist Content';
170 $view->page_header
= 'Nodes authored by buddies of current user<br />';
171 $view->page_footer
= '';
172 $view->page_empty
= '';
173 $view->page_type
= 'table';
174 $view->url
= 'buddies/posts';
175 $view->use_pager
= TRUE
;
176 $view->nodes_per_page
= '10';
177 $view->sort = array (
179 'tablename' => 'node',
180 'field' => 'created',
181 'sortorder' => 'DESC',
185 $view->argument
= array (
187 $view->field
= array (
189 'tablename' => 'users',
194 'tablename' => 'node',
196 'label' => 'Node Title',
197 'handler' => 'views_handler_field_nodelink',
200 'tablename' => 'node',
202 'label' => 'Node Type',
205 $view->filter
= array (
207 'tablename' => 'node',
214 'tablename' => 'buddylist_users',
215 'field' => 'currentuid',
218 'value' => '***CURRENT_USER***',
221 $view->exposed_filter
= array (
223 $view->requires
= array(node
, users
, buddylist_users
);
224 $views[$view->name
] = $view;
227 if (module_exists('usernode')) {
228 $view = new
stdClass();
229 $view->name
= 'buddylist';
230 $view->description
= 'Buddies of the current user';
231 $view->access
= array();
232 $view->view_args_php
= '';
234 $view->page_title
= 'Buddylist';
235 $view->page_header
= 'Buddies of the current user<br />';
236 $view->page_type
= 'table';
237 $view->url
= 'buddies';
238 $view->use_pager
= TRUE
;
239 $view->nodes_per_page
= '10';
240 $view->sort = array (
242 'tablename' => 'node',
243 'field' => 'created',
244 'sortorder' => 'DESC',
245 'options' => 'normal',
248 $view->field
= array (
250 'tablename' => 'node',
253 'handler' => 'views_handler_field_nodelink',
257 $view->filter
= array (
259 'tablename' => 'node',
266 'tablename' => 'usernode_buddylist',
267 'field' => 'currentuid',
270 'value' => '***CURRENT_USER***',
273 'tablename' => 'node',
277 'value' => array (0 => 'usernode'),
280 $view->exposed_filter
= array (
282 $view->requires
= array(node
, usernode_buddylist
);
283 $views[$view->name
] = $view;
291 * Implementation of hook_views_arguments
293 function buddylist_views_arguments() {
294 if (module_exists('usernode')) {
296 'buddylist_buddies' => array(
297 'name' => t('Buddylist: Usernode is buddy of UID'),
298 'handler' => 'buddylist_views_handler_arg_buddies',
299 'help' => t('This will filter usernodes from users, which are buddies of the user with the ID passed to the view as argument.'),
301 'buddylist_buddies_buddyof' => array(
302 'name' => t('Buddylist: UID is buddy of Usernode'),
303 'handler' => 'buddylist_views_handler_arg_buddies_buddyof',
304 '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.'),
312 * Callback for buddylist_views_arguments
314 function buddylist_views_handler_arg_buddies($op, &$query, $argtype, $arg = '') {
317 $table_data = _views_get_tables();
318 $joininfo = $table_data['usernode_buddylist_buddyof']['join'];
319 $joininfo['type'] = 'inner';
320 $query->add_table("usernode_buddylist_buddyof", true
, 1, $joininfo);
322 $query->add_table('users', true
);
323 $query->add_field('name', 'users');
324 $query->add_field('uid', 'users');
325 $fieldinfo['field'] = "users.name";
329 $query->add_orderby('users', 'name', $argtype);
333 $table_data = _views_get_tables();
334 $joininfo = $table_data['usernode_buddylist']['join'];
335 $joininfo['type'] = 'inner';
336 $joininfo['extra'] = array('uid' => $uid);
337 $query->add_table("usernode_buddylist", true
, 1, $joininfo);
340 $name = ($query->name ?
$query->name
: variable_get('anonymous', 'Anonymous'));
341 return l($name, "$arg/" .
intval($query->uid
));
344 return variable_get('anonymous', 'Anonymous');
346 $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query));
347 return check_plain($user->name
);
353 * Callback for buddylist_views_arguments
355 function buddylist_views_handler_arg_buddies_buddyof($op, &$query, $argtype, $arg = '') {
358 $table_data = _views_get_tables();
359 $joininfo = $table_data['usernode_buddylist']['join'];
360 $joininfo['type'] = 'inner';
361 $query->add_table("usernode_buddylist", true
, 1, $joininfo);
363 $query->add_table('users', true
);
364 $query->add_field('name', 'users');
365 $query->add_field('uid', 'users');
366 $fieldinfo['field'] = "users.name";
370 $query->add_orderby('users', 'name', $argtype);
374 $table_data = _views_get_tables();
375 $joininfo = $table_data['usernode_buddylist_buddyof']['join'];
376 $joininfo['type'] = 'inner';
377 $joininfo['extra'] = array('buddy' => $uid);
378 $query->add_table("usernode_buddylist_buddyof", true
, 1, $joininfo);
381 $name = ($query->name ?
$query->name
: variable_get('anonymous', 'Anonymous'));
382 return l($name, "$arg/" .
intval($query->uid
));
385 return variable_get('anonymous', 'Anonymous');
387 $user = db_fetch_object(db_query("SELECT name FROM {users} WHERE uid = '%d'", $query));
388 return check_plain($user->name
);