/[drupal]/contributions/modules/value_provider/value_provider.providers.inc
ViewVC logotype

Contents of /contributions/modules/value_provider/value_provider.providers.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download) (as text)
Fri Jan 16 18:50:11 2009 UTC (10 months, 1 week ago) by jpetso
Branch: MAIN
CVS Tags: DRUPAL-6--1-0-RC1, HEAD
Changes since 1.1: +34 -32 lines
File MIME type: text/x-php
Make Value Providers really independent of CCK, like the .info file suggests.
The current set of providers doesn't provide any other values than CCK ones
so running it without CCK *and* further extensions is kinda pointless,
but external providers can still add providers and don't need CCK for that.
So, away with the hidden dependency.
1 <?php
2 // $Id: value_provider.providers.inc,v 1.1 2008/07/17 17:46:44 jpetso Exp $
3 /**
4 * @file
5 * Value Providers - Semantic result values for programmatic Views usage.
6 *
7 * Copyright 2008 by Jakob Petsovits ("jpetso", http://drupal.org/user/56020)
8 */
9
10 /**
11 * Implementation of hook_value_provider_info():
12 * Return a list of default value providers.
13 */
14 function value_provider_value_provider_info() {
15 $providers = array();
16 $supported_field_types = array(
17 'number_float', 'number_integer', 'number_decimal',
18 'nodereference', 'userreference',
19 );
20
21 if (module_exists('content')) {
22 foreach (content_fields() as $field) {
23 if (!in_array($field['type'], $supported_field_types)) {
24 continue;
25 }
26 $provider = value_provider_content_provider_base($field);
27
28 switch ($field['type']) {
29 case 'nodereference':
30 $provider['parse callback'] = 'value_provider_nodereference_parse_nid';
31 $providers['nid'][$field['field_name']] = $provider;
32 break;
33
34 case 'userreference':
35 $provider['parse callback'] = 'value_provider_userreference_parse_uid';
36 $provider['filters']['uid'] = array(
37 'field' => $field['field_name'] . '_uid',
38 'callback' => 'value_provider_userreference_filter_uid',
39 );
40 $provider['filters']['has_uid'] = array(
41 'field' => $field['field_name'] . '_uid',
42 'callback' => 'value_provider_userreference_filter_has_uid',
43 );
44 $providers['uid'][$field['field_name']] = $provider;
45 break;
46
47 case 'number_float':
48 case 'number_integer':
49 case 'number_decimal':
50 $provider['parse callback'] = 'value_provider_number_parse_value';
51 $providers['number'][$field['field_name']] = $provider;
52 break;
53 }
54 }
55 }
56 return $providers;
57 }
58
59 function value_provider_number_parse_value($item) {
60 return empty($item['value']) ? 0 : $item['value'];
61 }
62
63 function value_provider_nodereference_parse_nid($item) {
64 return empty($item['nid']) ? 0 : $item['nid'];
65 }
66
67 function value_provider_userreference_parse_uid($item) {
68 return empty($item['uid']) ? 0 : $item['uid'];
69 }
70
71 function value_provider_userreference_filter_uid(&$filter, $filter_handler, $filter_options) {
72 $filter['operator'] = 'or';
73 $filter['value'] = array($filter_options); // where $filter_options == $uid
74 }
75
76 function value_provider_userreference_filter_has_uid(&$filter, $filter_handler, $filter_options) {
77 $filter['operator'] = 'or';
78
79 if ($filter_options == TRUE) { // has uid
80 $filter_handler->get_value_options();
81 $filter['value'] = array_keys($filter_handler->value_options);
82 }
83 else { // has no uid
84 $filter['value'] = array();
85 }
86 }

  ViewVC Help
Powered by ViewVC 1.1.2