Projet

Général

Profil

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

root / drupal7 / sites / all / modules / views / modules / user.views.inc @ 5d12d676

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

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

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

    
43
  // User ID / 'uid'.
44
  $data['users']['uid'] = array(
45
    // The item it appears as on the UI,
46
    'title' => t('Uid'),
47
    // The help that appears on the UI,
48
    'help' => t('The user ID'),
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
      // Display this field in the summary.
56
      'name field' => 'name',
57
    ),
58
    'filter' => array(
59
      'title' => t('Name'),
60
      'handler' => 'views_handler_filter_user_name',
61
    ),
62
    'sort' => array(
63
      'handler' => 'views_handler_sort',
64
    ),
65
    'relationship' => array(
66
      'title' => t('Content authored'),
67
      'help' => t('Relate content to the user who created it. This relationship will create one record for each content item created by the user.'),
68
      'handler' => 'views_handler_relationship',
69
      'base' => 'node',
70
      'base field' => 'uid',
71
      'field' => 'uid',
72
      'label' => t('nodes'),
73
    ),
74
  );
75

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

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

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

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

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

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

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

    
200
  // Link.
201
  $data['users']['view_user'] = array(
202
    'field' => array(
203
      'title' => t('Link'),
204
      'help' => t('Provide a simple link to the user.'),
205
      'handler' => 'views_handler_field_user_link',
206
    ),
207
  );
208

    
209
  // Created field.
210
  $data['users']['created'] = array(
211
    // The item it appears as on the UI,
212
    'title' => t('Created date'),
213
    // The help that appears on the UI,
214
    'help' => t('The date the user was created.'),
215
    'field' => array(
216
      'handler' => 'views_handler_field_date',
217
      'click sortable' => TRUE,
218
    ),
219
    'sort' => array(
220
      'handler' => 'views_handler_sort_date',
221
    ),
222
    'filter' => array(
223
      'handler' => 'views_handler_filter_date',
224
    ),
225
  );
226

    
227
  $data['users']['created_fulldate'] = array(
228
    'title' => t('Created date'),
229
    'help' => t('Date in the form of CCYYMMDD.'),
230
    'argument' => array(
231
      'field' => 'created',
232
      'handler' => 'views_handler_argument_node_created_fulldate',
233
    ),
234
  );
235

    
236
  $data['users']['created_year_month'] = array(
237
    'title' => t('Created year + month'),
238
    'help' => t('Date in the form of YYYYMM.'),
239
    'argument' => array(
240
      'field' => 'created',
241
      'handler' => 'views_handler_argument_node_created_year_month',
242
    ),
243
  );
244

    
245
  $data['users']['timestamp_year']['moved to'] = array('users', 'created_year');
246
  $data['users']['created_year'] = array(
247
    'title' => t('Created year'),
248
    'help' => t('Date in the form of YYYY.'),
249
    'argument' => array(
250
      'field' => 'created',
251
      'handler' => 'views_handler_argument_node_created_year',
252
    ),
253
  );
254

    
255
  $data['users']['created_month'] = array(
256
    'title' => t('Created month'),
257
    'help' => t('Date in the form of MM (01 - 12).'),
258
    'argument' => array(
259
      'field' => 'created',
260
      'handler' => 'views_handler_argument_node_created_month',
261
    ),
262
  );
263

    
264
  $data['users']['created_day'] = array(
265
    'title' => t('Created day'),
266
    'help' => t('Date in the form of DD (01 - 31).'),
267
    'argument' => array(
268
      'field' => 'created',
269
      'handler' => 'views_handler_argument_node_created_day',
270
    ),
271
  );
272

    
273
  $data['users']['created_week'] = array(
274
    'title' => t('Created week'),
275
    'help' => t('Date in the form of WW (01 - 53).'),
276
    'argument' => array(
277
      'field' => 'created',
278
      'handler' => 'views_handler_argument_node_created_week',
279
    ),
280
  );
281

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

    
300
  // Login field.
301
  $data['users']['login'] = array(
302
    // The item it appears as on the UI,
303
    'title' => t('Last login'),
304
    // The help that appears on the UI,
305
    'help' => t("The user's last login date."),
306
    'field' => array(
307
      'handler' => 'views_handler_field_date',
308
      'click sortable' => TRUE,
309
    ),
310
    'sort' => array(
311
      'handler' => 'views_handler_sort_date',
312
    ),
313
    'filter' => array(
314
      'handler' => 'views_handler_filter_date',
315
    ),
316
  );
317

    
318
  // Active status.
319
  $data['users']['status'] = array(
320
    // The item it appears as on the UI,
321
    'title' => t('Active'),
322
    // The help that appears on the UI,
323
    'help' => t('Whether a user is active or blocked.'),
324
    // Information for displaying a title as a field.
325
    'field' => array(
326
      'handler' => 'views_handler_field_boolean',
327
      'click sortable' => TRUE,
328
      'output formats' => array(
329
        'active-blocked' => array(t('Active'), t('Blocked')),
330
      ),
331
    ),
332
    'filter' => array(
333
      'handler' => 'views_handler_filter_boolean_operator',
334
      'label' => t('Active'),
335
      'type' => 'yes-no',
336
    ),
337
    'sort' => array(
338
      'handler' => 'views_handler_sort',
339
    ),
340
  );
341

    
342
  // Log field.
343
  $data['users']['signature'] = array(
344
    // The item it appears as on the UI,
345
    'title' => t('Signature'),
346
    // The help that appears on the UI,
347
    'help' => t("The user's signature."),
348
    // Information for displaying a title as a field.
349
    'field' => array(
350
      'handler' => 'views_handler_field_markup',
351
      'format' => filter_fallback_format(),
352
    ),
353
    'filter' => array(
354
      'handler' => 'views_handler_filter_string',
355
    ),
356
  );
357

    
358
  $data['users']['edit_node'] = array(
359
    'field' => array(
360
      'title' => t('Edit link'),
361
      'help' => t('Provide a simple link to edit the user.'),
362
      'handler' => 'views_handler_field_user_link_edit',
363
    ),
364
  );
365

    
366
  $data['users']['cancel_node'] = array(
367
    'field' => array(
368
      'title' => t('Cancel link'),
369
      'help' => t('Provide a simple link to cancel the user.'),
370
      'handler' => 'views_handler_field_user_link_cancel',
371
    ),
372
  );
373

    
374
  $data['users']['data'] = array(
375
    'title' => t('Data'),
376
    'help' => t('Provide serialized data of the user'),
377
    'field' => array(
378
      'handler' => 'views_handler_field_serialized',
379
    ),
380
  );
381

    
382
  // ----------------------------------------------------------------------
383
  // 'users_roles' table.
384
  $data['users_roles']['table']['group']  = t('User');
385

    
386
  // Explain how this table joins to others.
387
  $data['users_roles']['table']['join'] = array(
388
     // Directly links to users table.
389
    'users' => array(
390
      'left_field' => 'uid',
391
      'field' => 'uid',
392
    ),
393
  );
394

    
395
  $data['users_roles']['table']['default_relationship'] = array(
396
    'node' => array(
397
      'table' => 'node',
398
      'field' => 'uid',
399
    ),
400
    'node_revision' => array(
401
      'table' => 'node_revision',
402
      'field' => 'uid',
403
    ),
404
  );
405

    
406
  $data['users_roles']['rid'] = array(
407
    'title' => t('Roles'),
408
    'help' => t('Roles that a user belongs to.'),
409
    'field' => array(
410
      'handler' => 'views_handler_field_user_roles',
411
      'no group by' => TRUE,
412
    ),
413
    'filter' => array(
414
      'handler' => 'views_handler_filter_user_roles',
415
      'numeric' => TRUE,
416
      'allow empty' => TRUE,
417
    ),
418
    'argument' => array(
419
      'handler' => 'views_handler_argument_users_roles_rid',
420
      'name table' => 'role',
421
      'name field' => 'name',
422
      'empty field name' => t('No role'),
423
      'zero is null' => TRUE,
424
      'numeric' => TRUE,
425
    ),
426
  );
427

    
428
  // ----------------------------------------------------------------------
429
  // 'role' table.
430
  $data['role']['table']['join'] = array(
431
     // Directly links to users table.
432
    'users' => array(
433
      'left_table' => 'users_roles',
434
      'left_field' => 'rid',
435
      'field' => 'rid',
436
    ),
437
    // Needed for many to one helper sometimes.
438
    'users_roles' => array(
439
      'left_field' => 'rid',
440
      'field' => 'rid',
441
    ),
442
  );
443

    
444
  $data['role']['table']['default_relationship'] = array(
445
    'node' => array(
446
      'table' => 'node',
447
      'field' => 'uid',
448
    ),
449
    'node_revision' => array(
450
      'table' => 'node_revision',
451
      'field' => 'uid',
452
    ),
453
  );
454

    
455
  // 'permission' table.
456
  $data['role_permission']['table']['group']  = t('User');
457
  $data['role_permission']['table']['join'] = array(
458
     // Directly links to users table.
459
    'users' => array(
460
      'left_table' => 'users_roles',
461
      'left_field' => 'rid',
462
      'field' => 'rid',
463
    ),
464
  );
465

    
466
  $data['role_permission']['permission'] = array(
467
    'title' => t('Permission'),
468
    'help' => t('The user permissions.'),
469
    'field' => array(
470
      'handler' => 'views_handler_field_user_permissions',
471
      'no group by' => TRUE,
472
    ),
473
    'filter' => array(
474
      'handler' => 'views_handler_filter_user_permissions',
475
    ),
476
  );
477

    
478
  // ----------------------------------------------------------------------
479
  // 'authmap' table.
480
  $data['authmap']['table']['group']  = t('User');
481
  $data['authmap']['table']['join'] = array(
482
     // Directly links to users table.
483
    'users' => array(
484
      'left_field' => 'uid',
485
      'field' => 'uid',
486
    ),
487
  );
488

    
489
  $data['authmap']['table']['default_relationship'] = array(
490
    'node' => array(
491
      'table' => 'node',
492
      'field' => 'uid',
493
    ),
494
    'node_revision' => array(
495
      'table' => 'node_revision',
496
      'field' => 'uid',
497
    ),
498
  );
499

    
500
  $data['authmap']['aid'] = array(
501
    'title' => t('Authmap ID'),
502
    'help' => t('The Authmap ID.'),
503
    'field' => array(
504
      'handler' => 'views_handler_field_numeric',
505
    ),
506
    'filter' => array(
507
      'handler' => 'views_handler_filter_numeric',
508
      'numeric' => TRUE,
509
    ),
510
    'argument' => array(
511
      'handler' => 'views_handler_argument_numeric',
512
      'numeric' => TRUE,
513
    ),
514
  );
515
  $data['authmap']['authname'] = array(
516
    'title' => t('Authentication name'),
517
    'help' => t('The unique authentication name.'),
518
    'field' => array(
519
      'handler' => 'views_handler_field',
520
    ),
521
    'filter' => array(
522
      'handler' => 'views_handler_filter_string',
523
    ),
524
    'argument' => array(
525
      'handler' => 'views_handler_argument_string',
526
    ),
527
  );
528
  $data['authmap']['module'] = array(
529
    'title' => t('Authentication module'),
530
    'help' => t('The name of the module managing the authentication entry.'),
531
    'field' => array(
532
      'handler' => 'views_handler_field',
533
    ),
534
    'filter' => array(
535
      'handler' => 'views_handler_filter_string',
536
    ),
537
    'argument' => array(
538
      'handler' => 'views_handler_argument_string',
539
    ),
540
  );
541

    
542
  return $data;
543
}
544

    
545
/**
546
 * Implements hook_views_plugins().
547
 */
548
function user_views_plugins() {
549
  return array(
550
    // This just tells our themes are elsewhere.
551
    'module' => 'views',
552
    'row' => array(
553
      'user' => array(
554
        'title' => t('User'),
555
        'help' => t('Display the user with standard user view.'),
556
        'handler' => 'views_plugin_row_user_view',
557
        // Only works with 'users' as base.
558
        'base' => array('users'),
559
        'uses options' => TRUE,
560
        'type' => 'normal',
561
        'help topic' => 'style-users',
562
      ),
563
    ),
564
    'argument default' => array(
565
      'user' => array(
566
        'title' => t('User ID from URL'),
567
        'handler' => 'views_plugin_argument_default_user',
568
        // Not necessary for most modules.
569
        'path' => drupal_get_path('module', 'views') . '/modules/user',
570
      ),
571
      'current_user' => array(
572
        'title' => t('User ID from logged in user'),
573
        'handler' => 'views_plugin_argument_default_current_user',
574
        // Not necessary for most modules.
575
        'path' => drupal_get_path('module', 'views') . '/modules/user',
576
      ),
577
    ),
578
    'argument validator' => array(
579
      'user' => array(
580
        'title' => t('User'),
581
        'handler' => 'views_plugin_argument_validate_user',
582
        // Not necessary for most modules.
583
        'path' => drupal_get_path('module', 'views') . '/modules/user',
584
      ),
585
    ),
586
  );
587
}
588

    
589
/**
590
 * Allow replacement of current userid so we can cache these queries.
591
 */
592
function user_views_query_substitutions($view) {
593
  global $user;
594
  return array('***CURRENT_USER***' => intval($user->uid));
595
}