Projet

Général

Profil

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

root / drupal7 / sites / all / modules / feeds / views / feeds.views.inc @ ebcc4118

1
<?php
2

    
3
/**
4
 * @file
5
 * Views integration for Feeds tables.
6
 *
7
 * @see http://drupal.org/project/views
8
 */
9

    
10
/**
11
 * Implements hook_views_data().
12
 */
13
function feeds_views_data() {
14
  $data = array();
15

    
16
  /**
17
   * Expose feeds_source table to views.
18
   */
19
  $data['feeds_source']['table'] = array(
20
    'group' => 'Feeds source',
21
    'base' => array(
22
      'field' => array('feed_nid', 'id'),
23
      'title' => 'Feeds source',
24
      'help' => 'The source information for a feed, for example its URL',
25
    ),
26
  );
27
  $data['feeds_source']['feed_nid'] = array(
28
    'title' => 'Feed node id',
29
    'help' => 'Contains the node id of a feed node if the feed\'s configuration is attached to a content type, otherwise contains 0.',
30
    'field' => array(
31
      'handler' => 'views_handler_field_numeric',
32
      'click sortable' => TRUE,
33
    ),
34
    'filter' => array(
35
      'handler' => 'views_handler_filter_numeric',
36
      'allow empty' => TRUE,
37
      'help' => 'Filter on a Feeds Source\'s feed_nid field.',
38
    ),
39
    'argument' => array(
40
      'handler' => 'views_handler_argument_numeric',
41
      'numeric' => TRUE,
42
      'validate type' => 'nid',
43
      'help' => 'Argument on a Feeds Source\'s feed_nid field.',
44
    ),
45
    'sort' => array(
46
      'handler' => 'views_handler_sort',
47
      'help' => 'Sort Feeds Source\'s feed_nid field.',
48
    ),
49
  );
50
  $data['feeds_source']['config'] = array(
51
    'title' => 'Source',
52
    'help' => 'The resource identifier for this feed. For instance a URL.',
53
    'field' => array(
54
      'handler' => 'feeds_views_handler_field_source',
55
      'click sortable' => FALSE,
56
    ),
57
  );
58
  $data['feeds_source']['table']['join'] = array(
59
    'node' => array(
60
      'left_field' => 'nid',
61
      'field' => 'feed_nid',
62
      'type' => 'LEFT',
63
    ),
64
  );
65

    
66
  /**
67
   * Expose feeds_node_item table to views.
68
   */
69
  $data['feeds_item']['table'] = array(
70
    'group' => 'Feeds item',
71
  );
72
  $data['feeds_item']['feed_nid'] = array(
73
    'title' => t('Owner feed nid'),
74
    'help' => t('The node id of the owner feed node if available.'),
75
    'field' => array(
76
      'handler' => 'views_handler_field_numeric',
77
      'click sortable' => TRUE,
78
    ),
79
    'filter' => array(
80
      'handler' => 'views_handler_filter_numeric',
81
      'allow empty' => TRUE,
82
      'help' => t('Filter on Feed Items by the Feed they were generated from using the Node Id of the Feed Node.'),
83
    ),
84
    'argument' => array(
85
      'handler' => 'views_handler_argument_numeric',
86
      'numeric' => TRUE,
87
      'validate type' => 'nid',
88
      'help' => t('Argument on Feed Items by the Feed they were generated from using the Node Id of the Feed Node.'),
89
    ),
90
    'sort' => array(
91
      'help' => t('Sort Feed Items by the Feed they were generated from using the Node Id of the Feed Node.'),
92
    ),
93
    'relationship' => array(
94
      'title' => t('Owner feed'),
95
      'help' => t('Relate a feed item to its owner feed node if available.'),
96
      'label' => t('Owner feed'),
97
      'base' => 'node',
98
      'base field' => 'nid',
99
    ),
100
  );
101
  $data['feeds_item']['url'] = array(
102
    'title' => t('Item URL'),
103
    'help' => t('Contains the URL of the feed item.'),
104
    'field' => array(
105
      'handler' => 'views_handler_field_url',
106
      'click sortable' => TRUE,
107
    ),
108
    'filter' => array(
109
      'handler' => 'views_handler_filter_string',
110
      'allow empty' => TRUE,
111
      'help' => t('Filter on a Feeds Item\'s URL field.'),
112
    ),
113
    'argument' => array(
114
      'handler' => 'views_handler_argument_string',
115
      'numeric' => TRUE,
116
      'validate type' => 'nid',
117
      'help' => t('Argument on a Feeds Item\'s URL field.'),
118
    ),
119
    'sort' => array(
120
      'help' => t('Sort on a Feeds Item\'s URL field.'),
121
    ),
122
  );
123
  $data['feeds_item']['guid'] = array(
124
    'title' => t('Item GUID'),
125
    'help' => t('Contains the GUID of the feed item.'),
126
    'field' => array(
127
      'click sortable' => TRUE,
128
    ),
129
    'filter' => array(
130
      'handler' => 'views_handler_filter_string',
131
      'allow empty' => TRUE,
132
      'help' => t('Filter on a Feeds Item\'s GUID field.'),
133
    ),
134
    'argument' => array(
135
      'handler' => 'views_handler_argument_string',
136
      'numeric' => TRUE,
137
      'validate type' => 'nid',
138
      'help' => t('Argument on a Feeds Item\'s GUID field.'),
139
    ),
140
    'sort' => array(
141
      'help' => t('Sort on a Feeds Item\'s GUID field.'),
142
    ),
143
  );
144
  $data['feeds_item']['imported'] = array(
145
    'title' => t('Import date'),
146
    'help' => t('Contains the import date of the feed item.'),
147
    'field' => array(
148
      'handler' => 'views_handler_field_date',
149
      'click sortable' => TRUE,
150
    ),
151
    'sort' => array(
152
      'handler' => 'views_handler_sort_date',
153
      'help' => t('Sort on a Feeds Item\'s import date field.'),
154
    ),
155
    'filter' => array(
156
      'handler' => 'views_handler_filter_date',
157
      'help' => t('Filter on a Feeds Item\'s import date field.'),
158
    ),
159
    'argument' => array(
160
      'handler' => 'views_handler_argument_date',
161
      'numeric' => TRUE,
162
      'validate type' => 'nid',
163
      'help' => t('Argument on a Feeds Item\'s import date field.'),
164
    ),
165
  );
166

    
167
  // Add a relationship for each entity type relating the entity's base table
168
  // to the feeds_item table whre feeds_item.entity_type = 'entity_type'.
169
  foreach (entity_get_info() as $entity_type => $info) {
170
    if (!empty($info['base table'])) {
171
      $data['feeds_item']['table']['join'][$info['base table']] = array(
172
        'left_field' => $info['entity keys']['id'],
173
        'field' => 'entity_id',
174
        'type' => 'LEFT',
175
        'extra' => array(
176
          array(
177
            'field' => 'entity_type',
178
            'value' => $entity_type,
179
          ),
180
        ),
181
      );
182
    }
183
  }
184

    
185
  /**
186
   * Expose feeds_log table to views.
187
   */
188
  $data['feeds_log']['table'] = array(
189
    'group' => 'Feeds log',
190
    'base' => array(
191
      'field' => array('flid'),
192
      'title' => 'Feeds log',
193
      'help' => 'Logs events during importing, clearing, expiry.',
194
    ),
195
  );
196
  $data['feeds_log']['id'] = array(
197
    'title' => 'Importer id',
198
    'help' => 'The id of an importer.',
199
    'field' => array(
200
      'handler' => 'views_handler_field',
201
      'click sortable' => TRUE,
202
    ),
203
    'filter' => array(
204
      'handler' => 'views_handler_filter_string',
205
      'allow empty' => TRUE,
206
      'help' => 'Filter on an importer id.',
207
    ),
208
    'argument' => array(
209
      'handler' => 'feeds_views_handler_argument_importer_id',
210
      'help' => 'Filter on an importer id.',
211
    ),
212
    'sort' => array(
213
      'handler' => 'views_handler_sort',
214
      'help' => 'Sort by importer id.',
215
    ),
216
    'relationship' => array(
217
      'title' => t('Importer'),
218
      'help' => t('Relate a log entry to its importer if available.'),
219
      'label' => t('Importer'),
220
      'base' => 'feeds_importer',
221
      'base field' => 'id',
222
    ),
223
  );
224
  $data['feeds_log']['importer_name'] = array(
225
    'real field' => 'id',
226
    'title' => 'Importer name',
227
    'help' => 'The human readable name of an importer.',
228
    'field' => array(
229
      'handler' => 'feeds_views_handler_field_importer_name',
230
    ),
231
  );
232
  $data['feeds_log']['feed_nid'] = array(
233
    'title' => 'Feed node id',
234
    'help' => 'Contains the node id of a feed node if the feed\'s configuration is attached to a content type, otherwise contains 0.',
235
    'field' => array(
236
      'handler' => 'views_handler_field_numeric',
237
      'click sortable' => TRUE,
238
    ),
239
    'filter' => array(
240
      'handler' => 'views_handler_filter_numeric',
241
      'allow empty' => TRUE,
242
      'help' => 'Filter on a Feeds Source\'s feed_nid field.',
243
    ),
244
    'argument' => array(
245
      'handler' => 'views_handler_argument_numeric',
246
      'numeric' => TRUE,
247
      'validate type' => 'nid',
248
      'help' => 'Argument on a Feeds Source\'s feed_nid field.',
249
    ),
250
    'sort' => array(
251
      'handler' => 'views_handler_sort',
252
      'help' => 'Sort Feeds Source\'s feed_nid field.',
253
    ),
254
    'relationship' => array(
255
      'title' => t('Feed node'),
256
      'help' => t('Relate a log entry to its feed node if available.'),
257
      'label' => t('Feed node'),
258
      'base' => 'node',
259
      'base field' => 'nid',
260
    ),
261
  );
262
  $data['feeds_log']['log_time'] = array(
263
    'title' => t('Log time'),
264
    'help' => t('The time of the event.'),
265
    'field' => array(
266
      'handler' => 'views_handler_field_date',
267
      'click sortable' => TRUE,
268
    ),
269
    'sort' => array(
270
      'handler' => 'views_handler_sort_date',
271
    ),
272
    'filter' => array(
273
      'handler' => 'views_handler_filter_date',
274
    ),
275
  );
276
  $data['feeds_log']['request_time'] = array(
277
    'title' => t('Request time'),
278
    'help' => t('The time of the page request of an event.'),
279
    'field' => array(
280
      'handler' => 'views_handler_field_date',
281
      'click sortable' => TRUE,
282
    ),
283
    'sort' => array(
284
      'handler' => 'views_handler_sort_date',
285
    ),
286
    'filter' => array(
287
      'handler' => 'views_handler_filter_date',
288
    ),
289
  );
290
  $data['feeds_log']['message'] = array(
291
    'title' => 'Log message',
292
    'help' => 'The message logged by the event.',
293
    'field' => array(
294
      'handler' => 'feeds_views_handler_field_log_message',
295
      'click sortable' => FALSE,
296
      'additional fields' => array(
297
        'variables',
298
      ),
299
    ),
300
  );
301
  $data['feeds_log']['severity'] = array(
302
    'title' => 'Severity',
303
    'help' => 'The severity of the event logged.',
304
    'field' => array(
305
      'handler' => 'feeds_views_handler_field_severity',
306
      'click sortable' => FALSE,
307
    ),
308
    'filter' => array(
309
      'handler' => 'feeds_views_handler_filter_severity',
310
      'allow empty' => TRUE,
311
      'help' => 'Filter on the severity of a log message.',
312
    ),
313
  );
314
  $data['feeds_log']['table']['join'] = array(
315
    'node' => array(
316
      'left_field' => 'nid',
317
      'field' => 'feed_nid',
318
      'type' => 'LEFT',
319
    ),
320
  );
321

    
322
  return $data;
323
}
324

    
325
/**
326
 * Implements hook_views_plugins().
327
 */
328
function feeds_views_plugins() {
329
  return array(
330
    'argument validator' => array(
331
      'feed_nid' => array(
332
        'title' => t('Feed node id'),
333
        'handler' => 'feeds_views_plugin_argument_validate_feed_nid',
334
      ),
335
    ),
336
  );
337
}