Projet

Général

Profil

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

root / drupal7 / sites / all / modules / user_stats / views / user_stats.views.inc @ 76df55b7

1
<?php
2

    
3
/**
4
 * @file
5
 * Hooks for integrating Views and User Stats.
6
 */
7

    
8
/**
9
 * Implements hook_views_data().
10
 */
11
function user_stats_views_data() {
12
  // User Statistics table.
13
  $data['user_stats_values']['table']['group'] = t('User Stats');
14

    
15
  $data['user_stats_values']['table']['join'] = array(
16
    'users' => array(
17
      'left_field' => 'uid',
18
      'field' => 'uid',
19
    ),
20
  );
21

    
22
  // Name field.
23
  $data['user_stats_values']['name'] = array(
24
    'title' => t('Statistic name'),
25
    'help' => t('The unique statistic name'),
26
    'field' => array(
27
      'handler' => 'views_handler_field',
28
    ),
29
    'filter' => array(
30
      'handler' => 'views_handler_filter_string',
31
    ),
32
    'argument' => array(
33
      'views_handler_argument_string',
34
    ),
35
  );
36

    
37
  // Value field.
38
  $data['user_stats_values']['value'] = array(
39
    'title' => t('Value'),
40
    'help' => t('Statistic value'),
41
    'field' => array(
42
      'handler' => 'views_handler_field_numeric',
43
      'click sortable' => TRUE,
44
    ),
45
    'sort' => array(
46
      'handler' => 'views_handler_sort',
47
    ),
48
    'filter' => array(
49
      'handler' => 'views_handler_filter_numeric',
50
    ),
51
  );
52

    
53
  // IP address table definition.
54
  $data['user_stats_ips']['table']['group'] = t('IP address');
55
  $data['user_stats_ips']['table']['join'] = array(
56
    'users' => array(
57
      'left_field' => 'uid',
58
      'field' => 'uid',
59
    ),
60
  );
61
  $data['user_stats_ips']['table']['base'] = array(
62
    'field' => 'iid',
63
    'title' => t('IP addresses'),
64
    'help' => t('Users and their IP addresses'),
65
  );
66

    
67
  // IID field.
68
  $data['user_stats_ips']['iid'] = array(
69
    'title' => t('IID'),
70
    'help' => t('The unique ID of the IP address record'),
71
    'field' => array(
72
      'handler' => 'views_handler_numeric',
73
      'click sortable' => TRUE,
74
    ),
75
    'sort' => array(
76
      'handler' => 'views_handler_sort',
77
    ),
78
    'filter' => array(
79
      'handler' => 'views_handler_filter_numeric',
80
    ),
81
    'argument' => array(
82
      'handler' => 'views_handler_argument_numeric',
83
    ),
84
  );
85

    
86
  // IP address field.
87
  $data['user_stats_ips']['ip_address'] = array(
88
    'title' => t('IP'),
89
    'help' => t('IP address'),
90
    'field' => array(
91
      'handler' => 'views_handler_field',
92
    ),
93
    'filter' => array(
94
      'handler' => 'views_handler_filter_string',
95
    ),
96
    'argument' => array(
97
      'handler' => 'views_handler_argument_string',
98
    ),
99
  );
100

    
101
  // First seen timestamp field.
102
  $data['user_stats_ips']['first_seen_timestamp'] = array(
103
    'title' => t('First seen'),
104
    'help' => t('First seen timestamp'),
105
    'field' => array(
106
      'handler' => 'views_handler_field_date',
107
      'click sortable' => TRUE,
108
    ),
109
    'sort' => array(
110
      'handler' => 'views_handler_sort_date',
111
    ),
112
    'filter' => array(
113
      'handler' => 'views_handler_filter_date',
114
    ),
115
    'argument' => array(
116
      'handler' => 'views_handler_argument_date',
117
    ),
118
  );
119

    
120
  // Number of users associated with a given IP address (virtual field).
121
  $data['user_stats_ips']['ip_user_count'] = array(
122
    'title' => t('IP users count'),
123
    'help' => t('Number of users used by an IP address'),
124
    'field' => array(
125
      'handler' => 'views_handler_field_ip_user_count',
126
      'click sortable' => TRUE,
127
    ),
128
    'sort' => array(
129
      'handler' => 'views_handler_sort_ip_user_count',
130
    ),
131
  );
132

    
133
  // Number of ip addresses associated with a given user (virtual field).
134
  $data['user_stats_ips']['user_ip_count'] = array(
135
    'title' => t('User IP count'),
136
    'help' => t('Number of IPs used by a user'),
137
    'field' => array(
138
      'handler' => 'views_handler_field_user_ip_count',
139
      'click sortable' => TRUE,
140
    ),
141
    'sort' => array(
142
      'handler' => 'views_handler_sort_user_ip_count',
143
    ),
144
  );
145

    
146
  // Is user online boolean (virtual field).
147
  $data['users']['is_online'] = array(
148
    'title' => t('Is online'),
149
    'help' => t('Shows whether the user is online'),
150
    'field' => array(
151
      'handler' => 'views_handler_field_is_online',
152
      'click sortable' => TRUE,
153
    ),
154
    'sort' => array(
155
      'handler' => 'views_handler_sort_is_online',
156
    ),
157
    'filter' => array(
158
      'handler' => 'views_handler_filter_is_online',
159
      'label' => t('Online'),
160
    ),
161
  );
162

    
163
  // Un-themed version of the user's picture.
164
  $data['users']['picture_bare'] = array(
165
    'title' => t('Bare user picture'),
166
    'help' => t('Normally user pictures are show with theming around them, which is crufty and may have CSS attached not appropriate for a view. This skips the theming cruft and just prints the bare img tag'),
167
    'real field' => 'picture',
168
    'field' => array(
169
      'handler' => 'views_handler_field_user_picture_bare',
170
      'click sortable' => TRUE,
171
    ),
172
    'filter' => array(
173
      'handler' => 'views_handler_filter_boolean_operator_string',
174
      'label' => t('Has Avatar'),
175
      'type' => 'yes-no',
176
    ),
177
  );
178

    
179
  return $data;
180
}
181

    
182
/**
183
 * Implements hook_views_handlers().
184
 */
185
function user_stats_views_handlers() {
186
  return array(
187
    'info' => array(
188
      'path' => drupal_get_path('module', 'user_stats') . '/views',
189
    ),
190
    'handlers' => array(
191
      'views_handler_field_ip_user_count' => array(
192
        'parent' => 'views_handler_field_numeric',
193
      ),
194
      'views_handler_sort_ip_user_count' => array(
195
        'parent' => 'views_handler_sort',
196
      ),
197
      'views_handler_field_user_ip_count' => array(
198
        'parent' => 'views_handler_field_numeric',
199
      ),
200
      'views_handler_sort_user_ip_count' => array(
201
        'parent' => 'views_handler_sort',
202
      ),
203
      'views_handler_field_is_online' => array(
204
        'parent' => 'views_handler_field_boolean',
205
      ),
206
      'views_handler_sort_is_online' => array(
207
        'parent' => 'views_handler_sort',
208
      ),
209
      'views_handler_filter_is_online' => array(
210
        'parent' => 'views_handler_filter_boolean_operator',
211
      ),
212
      'views_handler_field_user_picture_bare' => array(
213
        'parent' => 'views_handler_field_user_picture',
214
      ),
215
    ),
216
  );
217
}