Projet

Général

Profil

Paste
Télécharger (16,2 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / views / modules / user.views.inc @ 7547bb19

1
<?php
2

    
3
/**
4
 * @file
5
 * Provide views data and handlers for user.module.
6
 *
7
 * @ingroup views_module_handlers
8
 */
9

    
10
/**
11
 * Implements hook_views_data().
12
 */
13
function user_views_data() {
14
  // ----------------------------------------------------------------
15
  // users table
16

    
17
  // Define the base group of this table. Fields that don't
18
  // have a group defined will go into this field by default.
19
  $data['users']['table']['group']  = t('User');
20

    
21
  $data['users']['table']['base'] = array(
22
    'field' => 'uid',
23
    'title' => t('User'),
24
    'help' => t('Users who have created accounts on your site.'),
25
    'access query tag' => 'user_access',
26
  );
27
  $data['users']['table']['entity type'] = 'user';
28

    
29

    
30
  $data['users']['table']['default_relationship'] = array(
31
    'node' => array(
32
      'table' => 'node',
33
      'field' => 'uid',
34
    ),
35
    'node_revision' => array(
36
      'table' => 'node_revision',
37
      'field' => 'uid',
38
    ),
39
    'file' => array(
40
      'table' => 'file',
41
      'field' => 'uid',
42
    ),
43
  );
44

    
45
  // uid
46
  $data['users']['uid'] = array(
47
    'title' => t('Uid'),
48
    'help' => t('The user ID'), // The help that appears on the UI,
49
    'field' => array(
50
      'handler' => 'views_handler_field_user',
51
      'click sortable' => TRUE,
52
    ),
53
    'argument' => array(
54
      'handler' => 'views_handler_argument_user_uid',
55
      'name field' => 'name', // display this field in the summary
56
    ),
57
    'filter' => array(
58
      'title' => t('Name'),
59
      'handler' => 'views_handler_filter_user_name',
60
    ),
61
    'sort' => array(
62
      'handler' => 'views_handler_sort',
63
    ),
64
    'relationship' => array(
65
      'title' => t('Content authored'),
66
      'help' => t('Relate content to the user who created it. This relationship will create one record for each content item created by the user.'),
67
      'handler' => 'views_handler_relationship',
68
      'base' => 'node',
69
      'base field' => 'uid',
70
      'field' => 'uid',
71
      'label' => t('nodes'),
72
    ),
73
  );
74

    
75
  // uid_raw
76
  $data['users']['uid_raw'] = array(
77
    'help' => t('The raw numeric user ID.'),
78
    'real field' => 'uid',
79
    'filter' => array(
80
      'title' => t('The user ID'),
81
      'handler' => 'views_handler_filter_numeric',
82
    ),
83
  );
84

    
85
  // uid
86
  $data['users']['uid_representative'] = array(
87
    'relationship' => array(
88
      'title' => t('Representative node'),
89
      'label'  => t('Representative node'),
90
      'help' => t('Obtains a single representative node for each user, according to a chosen sort criterion.'),
91
      'handler' => 'views_handler_relationship_groupwise_max',
92
      'relationship field' => 'uid',
93
      'outer field' => 'users.uid',
94
      'argument table' => 'users',
95
      'argument field' =>  'uid',
96
      'base'   => 'node',
97
      'field'  => 'nid',
98
    ),
99
  );
100

    
101
  // uid
102
  $data['users']['uid_current'] = array(
103
    'real field' => 'uid',
104
    'title' => t('Current'),
105
    'help' => t('Filter the view to the currently logged in user.'),
106
    'filter' => array(
107
      'handler' => 'views_handler_filter_user_current',
108
      'type' => 'yes-no',
109
    ),
110
  );
111

    
112
  // name
113
  $data['users']['name'] = array(
114
    'title' => t('Name'), // The item it appears as on the UI,
115
    'help' => t('The user or author name.'), // The help that appears on the UI,
116
    'field' => array(
117
      'handler' => 'views_handler_field_user_name',
118
      'click sortable' => TRUE,
119
    ),
120
    'sort' => array(
121
      'handler' => 'views_handler_sort',
122
    ),
123
    'argument' => array(
124
      'handler' => 'views_handler_argument_string',
125
    ),
126
    'filter' => array(
127
      'handler' => 'views_handler_filter_string',
128
      'title' => t('Name (raw)'),
129
      'help' => t('The user or author name. This filter does not check if the user exists and allows partial matching. Does not utilize autocomplete.')
130
    ),
131
  );
132

    
133
  // mail
134
  // Note that this field implements field level access control.
135
  $data['users']['mail'] = array(
136
    'title' => t('E-mail'), // The item it appears as on the UI,
137
    'help' => t('Email address for a given user. This field is normally not shown to users, so be cautious when using it.'), // The help that appears on the UI,
138
    'field' => array(
139
      'handler' => 'views_handler_field_user_mail',
140
      'click sortable' => TRUE,
141
    ),
142
    'sort' => array(
143
      'handler' => 'views_handler_sort',
144
    ),
145
    'filter' => array(
146
      'handler' => 'views_handler_filter_string',
147
    ),
148
    'argument' => array(
149
      'handler' => 'views_handler_argument_string',
150
    ),
151
  );
152

    
153
  // language
154
  $data['users']['language'] = array(
155
    'title' => t('Language'), // The item it appears as on the UI,
156
    'help' => t('Language of the user'),
157
    'field' => array(
158
      'handler' => 'views_handler_field_user_language',
159
      'click sortable' => TRUE,
160
    ),
161
    'sort' => array(
162
      'handler' => 'views_handler_sort',
163
    ),
164
    'filter' => array(
165
      'handler' => 'views_handler_filter_node_language',
166
    ),
167
    'argument' => array(
168
      'handler' => 'views_handler_argument_node_language',
169
    ),
170
  );
171

    
172
  // picture
173
  $data['users']['picture_fid']['moved to'] = array('users', 'picture');
174
  $data['users']['picture'] = array(
175
    'title' => t('Picture'),
176
    'help' => t("The user's picture, if allowed."), // The help that appears on the UI,
177
    // Information for displaying the uid
178
    'field' => array(
179
      'handler' => 'views_handler_field_user_picture',
180
      'click sortable' => TRUE,
181
    ),
182
    'sort' => array(
183
      'handler' => 'views_handler_sort',
184
    ),
185
    'filter' => array(
186
      'handler' => 'views_handler_filter_boolean_operator',
187
      'label' => t('Has Avatar'),
188
      'type' => 'yes-no',
189
    ),
190
  );
191

    
192
  // link
193
  $data['users']['view_user'] = array(
194
    'field' => array(
195
      'title' => t('Link'),
196
      'help' => t('Provide a simple link to the user.'),
197
      'handler' => 'views_handler_field_user_link',
198
    ),
199
  );
200

    
201
  // created field
202
  $data['users']['created'] = array(
203
    'title' => t('Created date'), // The item it appears as on the UI,
204
    'help' => t('The date the user was created.'), // The help that appears on the UI,
205
    'field' => array(
206
      'handler' => 'views_handler_field_date',
207
      'click sortable' => TRUE,
208
    ),
209
    'sort' => array(
210
      'handler' => 'views_handler_sort_date',
211
    ),
212
    'filter' => array(
213
      'handler' => 'views_handler_filter_date',
214
    ),
215
  );
216

    
217
  $data['users']['created_fulldate'] = array(
218
    'title' => t('Created date'),
219
    'help' => t('Date in the form of CCYYMMDD.'),
220
    'argument' => array(
221
      'field' => 'created',
222
      'handler' => 'views_handler_argument_node_created_fulldate',
223
    ),
224
  );
225

    
226
  $data['users']['created_year_month'] = array(
227
    'title' => t('Created year + month'),
228
    'help' => t('Date in the form of YYYYMM.'),
229
    'argument' => array(
230
      'field' => 'created',
231
      'handler' => 'views_handler_argument_node_created_year_month',
232
    ),
233
  );
234

    
235
  $data['users']['timestamp_year']['moved to'] = array('users', 'created_year');
236
  $data['users']['created_year'] = array(
237
    'title' => t('Created year'),
238
    'help' => t('Date in the form of YYYY.'),
239
    'argument' => array(
240
      'field' => 'created',
241
      'handler' => 'views_handler_argument_node_created_year',
242
    ),
243
  );
244

    
245
  $data['users']['created_month'] = array(
246
    'title' => t('Created month'),
247
    'help' => t('Date in the form of MM (01 - 12).'),
248
    'argument' => array(
249
      'field' => 'created',
250
      'handler' => 'views_handler_argument_node_created_month',
251
    ),
252
  );
253

    
254
  $data['users']['created_day'] = array(
255
    'title' => t('Created day'),
256
    'help' => t('Date in the form of DD (01 - 31).'),
257
    'argument' => array(
258
      'field' => 'created',
259
      'handler' => 'views_handler_argument_node_created_day',
260
    ),
261
  );
262

    
263
  $data['users']['created_week'] = array(
264
    'title' => t('Created week'),
265
    'help' => t('Date in the form of WW (01 - 53).'),
266
    'argument' => array(
267
      'field' => 'created',
268
      'handler' => 'views_handler_argument_node_created_week',
269
    ),
270
  );
271

    
272
  // access field
273
  $data['users']['access'] = array(
274
    'title' => t('Last access'), // The item it appears as on the UI,
275
    'help' => t("The user's last access date."), // The help that appears on the UI,
276
    'field' => array(
277
      'handler' => 'views_handler_field_date',
278
      'click sortable' => TRUE,
279
    ),
280
    'sort' => array(
281
      'handler' => 'views_handler_sort_date',
282
    ),
283
    'filter' => array(
284
      'handler' => 'views_handler_filter_date',
285
    ),
286
  );
287

    
288
  // login field
289
  $data['users']['login'] = array(
290
    'title' => t('Last login'), // The item it appears as on the UI,
291
    'help' => t("The user's last login date."), // The help that appears on the UI,
292
    'field' => array(
293
      'handler' => 'views_handler_field_date',
294
      'click sortable' => TRUE,
295
    ),
296
    'sort' => array(
297
      'handler' => 'views_handler_sort_date',
298
    ),
299
    'filter' => array(
300
      'handler' => 'views_handler_filter_date',
301
    ),
302
  );
303

    
304
  // active status
305
  $data['users']['status'] = array(
306
    'title' => t('Active'), // The item it appears as on the UI,
307
    'help' => t('Whether a user is active or blocked.'), // The help that appears on the UI,
308
     // Information for displaying a title as a field
309
    'field' => array(
310
      'handler' => 'views_handler_field_boolean',
311
      'click sortable' => TRUE,
312
      'output formats' => array(
313
        'active-blocked' => array(t('Active'), t('Blocked')),
314
      ),
315
    ),
316
    'filter' => array(
317
      'handler' => 'views_handler_filter_boolean_operator',
318
      'label' => t('Active'),
319
      'type' => 'yes-no',
320
    ),
321
    'sort' => array(
322
      'handler' => 'views_handler_sort',
323
    ),
324
  );
325

    
326
  // log field
327
  $data['users']['signature'] = array(
328
    'title' => t('Signature'), // The item it appears as on the UI,
329
    'help' => t("The user's signature."), // The help that appears on the UI,
330
     // Information for displaying a title as a field
331
    'field' => array(
332
      'handler' => 'views_handler_field_markup',
333
      'format' => filter_fallback_format(),
334
    ),
335
    'filter' => array(
336
      'handler' => 'views_handler_filter_string',
337
    ),
338
  );
339

    
340
  $data['users']['edit_node'] = array(
341
    'field' => array(
342
      'title' => t('Edit link'),
343
      'help' => t('Provide a simple link to edit the user.'),
344
      'handler' => 'views_handler_field_user_link_edit',
345
    ),
346
  );
347

    
348
  $data['users']['cancel_node'] = array(
349
    'field' => array(
350
      'title' => t('Cancel link'),
351
      'help' => t('Provide a simple link to cancel the user.'),
352
      'handler' => 'views_handler_field_user_link_cancel',
353
    ),
354
  );
355

    
356
  $data['users']['data'] = array(
357
    'title' => t('Data'),
358
    'help' => t('Provide serialized data of the user'),
359
    'field' => array(
360
      'handler' => 'views_handler_field_serialized',
361
    ),
362
  );
363

    
364
  // ----------------------------------------------------------------------
365
  // users_roles table
366

    
367
  $data['users_roles']['table']['group']  = t('User');
368

    
369
  // Explain how this table joins to others.
370
  $data['users_roles']['table']['join'] = array(
371
     // Directly links to users table.
372
    'users' => array(
373
      'left_field' => 'uid',
374
      'field' => 'uid',
375
    ),
376
  );
377

    
378
  $data['users_roles']['table']['default_relationship'] = array(
379
    'node' => array(
380
      'table' => 'node',
381
      'field' => 'uid',
382
    ),
383
    'node_revision' => array(
384
      'table' => 'node_revision',
385
      'field' => 'uid',
386
    ),
387
  );
388

    
389
  $data['users_roles']['rid'] = array(
390
    'title' => t('Roles'),
391
    'help' => t('Roles that a user belongs to.'),
392
    'field' => array(
393
      'handler' => 'views_handler_field_user_roles',
394
      'no group by' => TRUE,
395
    ),
396
    'filter' => array(
397
      'handler' => 'views_handler_filter_user_roles',
398
      'numeric' => TRUE,
399
      'allow empty' => TRUE,
400
    ),
401
    'argument' => array(
402
      'handler' => 'views_handler_argument_users_roles_rid',
403
      'name table' => 'role',
404
      'name field' => 'name',
405
      'empty field name' => t('No role'),
406
      'zero is null' => TRUE,
407
      'numeric' => TRUE,
408
    ),
409
  );
410

    
411
  // ----------------------------------------------------------------------
412
  // role table
413

    
414
  $data['role']['table']['join'] = array(
415
     // Directly links to users table.
416
    'users' => array(
417
      'left_table' => 'users_roles',
418
      'left_field' => 'rid',
419
      'field' => 'rid',
420
    ),
421
    // needed for many to one helper sometimes
422
    'users_roles' => array(
423
      'left_field' => 'rid',
424
      'field' => 'rid',
425
    ),
426
  );
427

    
428
  $data['role']['table']['default_relationship'] = array(
429
    'node' => array(
430
      'table' => 'node',
431
      'field' => 'uid',
432
    ),
433
    'node_revision' => array(
434
      'table' => 'node_revision',
435
      'field' => 'uid',
436
    ),
437
  );
438

    
439
  // permission table
440
  $data['role_permission']['table']['group']  = t('User');
441
  $data['role_permission']['table']['join'] = array(
442
     // Directly links to users table.
443
    'users' => array(
444
      'left_table' => 'users_roles',
445
      'left_field' => 'rid',
446
      'field' => 'rid',
447
    ),
448
  );
449

    
450
  $data['role_permission']['permission'] = array(
451
    'title' => t('Permission'),
452
    'help' => t('The user permissions.'),
453
    'field' => array(
454
      'handler' => 'views_handler_field_user_permissions',
455
      'no group by' => TRUE,
456
    ),
457
    'filter' => array(
458
      'handler' => 'views_handler_filter_user_permissions',
459
    ),
460
  );
461

    
462
  // ----------------------------------------------------------------------
463
  // authmap table
464

    
465
  $data['authmap']['table']['group']  = t('User');
466
  $data['authmap']['table']['join'] = array(
467
     // Directly links to users table.
468
    'users' => array(
469
      'left_field' => 'uid',
470
      'field' => 'uid',
471
    ),
472
  );
473

    
474
  $data['authmap']['table']['default_relationship'] = array(
475
    'node' => array(
476
      'table' => 'node',
477
      'field' => 'uid',
478
    ),
479
    'node_revision' => array(
480
      'table' => 'node_revision',
481
      'field' => 'uid',
482
    ),
483
  );
484

    
485
  $data['authmap']['aid'] = array(
486
    'title' => t('Authmap ID'),
487
    'help' => t('The Authmap ID.'),
488
    'field' => array(
489
      'handler' => 'views_handler_field_numeric',
490
    ),
491
    'filter' => array(
492
      'handler' => 'views_handler_filter_numeric',
493
      'numeric' => TRUE,
494
    ),
495
    'argument' => array(
496
      'handler' => 'views_handler_argument_numeric',
497
      'numeric' => TRUE,
498
    ),
499
  );
500
  $data['authmap']['authname'] = array(
501
    'title' => t('Authentication name'),
502
    'help' => t('The unique authentication name.'),
503
    'field' => array(
504
      'handler' => 'views_handler_field',
505
    ),
506
    'filter' => array(
507
      'handler' => 'views_handler_filter_string',
508
    ),
509
    'argument' => array(
510
      'handler' => 'views_handler_argument_string',
511
    ),
512
  );
513
  $data['authmap']['module'] = array(
514
    'title' => t('Authentication module'),
515
    'help' => t('The name of the module managing the authentication entry.'),
516
    'field' => array(
517
      'handler' => 'views_handler_field',
518
    ),
519
    'filter' => array(
520
      'handler' => 'views_handler_filter_string',
521
    ),
522
    'argument' => array(
523
      'handler' => 'views_handler_argument_string',
524
    ),
525
  );
526

    
527
  return $data;
528
}
529

    
530
/**
531
 * Implements hook_views_plugins().
532
 */
533
function user_views_plugins() {
534
  return array(
535
    'module' => 'views', // This just tells our themes are elsewhere.
536
    'row' => array(
537
      'user' => array(
538
        'title' => t('User'),
539
        'help' => t('Display the user with standard user view.'),
540
        'handler' => 'views_plugin_row_user_view',
541
        'base' => array('users'), // only works with 'users' as base.
542
        'uses options' => TRUE,
543
        'type' => 'normal',
544
        'help topic' => 'style-users',
545
      ),
546
    ),
547
    'argument default' => array(
548
      'user' => array(
549
        'title' => t('User ID from URL'),
550
        'handler' => 'views_plugin_argument_default_user',
551
        'path' => drupal_get_path('module', 'views') . '/modules/user', // not necessary for most modules
552
      ),
553
      'current_user' => array(
554
        'title' => t('User ID from logged in user'),
555
        'handler' => 'views_plugin_argument_default_current_user',
556
        'path' => drupal_get_path('module', 'views') . '/modules/user', // not necessary for most modules
557
      ),
558
    ),
559
    'argument validator' => array(
560
      'user' => array(
561
        'title' => t('User'),
562
        'handler' => 'views_plugin_argument_validate_user',
563
        'path' => drupal_get_path('module', 'views') . '/modules/user', // not necessary for most modules
564
      ),
565
    ),
566
  );
567
}
568

    
569
/**
570
 * Allow replacement of current userid so we can cache these queries
571
 */
572
function user_views_query_substitutions($view) {
573
  global $user;
574
  return array('***CURRENT_USER***' => intval($user->uid));
575
}