danielebarchiesi@6
|
1 <?php
|
danielebarchiesi@6
|
2 function _biblio_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
|
danielebarchiesi@6
|
3 if ($entity_type == 'node' && $bundle_name == 'biblio') {
|
danielebarchiesi@6
|
4 $schema = drupal_get_schema('biblio');
|
danielebarchiesi@6
|
5 foreach ($schema['fields'] as $field => $spec) {
|
danielebarchiesi@6
|
6 if (strstr($field, 'biblio_')) {
|
danielebarchiesi@6
|
7 $type = $spec['type'];
|
danielebarchiesi@6
|
8 $length = isset($spec['length']) ? ' ['. $spec['length'] . ']': '';
|
danielebarchiesi@6
|
9 $targets[$field] = array(
|
danielebarchiesi@6
|
10 'name' => $field . ' (' . $type . $length . ')',
|
danielebarchiesi@6
|
11 'description' =>'',
|
danielebarchiesi@6
|
12 'callback' => '_biblio_feeds_set__simple_target',
|
danielebarchiesi@6
|
13 );
|
danielebarchiesi@6
|
14 }
|
danielebarchiesi@6
|
15 }
|
danielebarchiesi@6
|
16 $targets['biblio_type']['callback'] = '_biblio_feeds_set__type_target';
|
danielebarchiesi@6
|
17 $targets['biblio_contributor'] = array(
|
danielebarchiesi@6
|
18 'name' => t('biblio_contributor'),
|
danielebarchiesi@6
|
19 'description' => t('This is a contributor (author) contained in a biblio entry.'),
|
danielebarchiesi@6
|
20 'callback' => '_biblio_feeds_set__contrib_target',
|
danielebarchiesi@6
|
21 // 'real_target' => 'my_node_field_two', // Specify real target field on node.
|
danielebarchiesi@6
|
22 );
|
danielebarchiesi@6
|
23 $targets['biblio_keyword'] = array(
|
danielebarchiesi@6
|
24 'name' => t('biblio_keyword'),
|
danielebarchiesi@6
|
25 'description' => t('This is a keyword contained in a biblio entry.'),
|
danielebarchiesi@6
|
26 'callback' => '_biblio_feeds_set__keyword_target',
|
danielebarchiesi@6
|
27 // 'real_target' => 'my_node_field_two', // Specify real target field on node.
|
danielebarchiesi@6
|
28 );
|
danielebarchiesi@6
|
29 }
|
danielebarchiesi@6
|
30 }
|
danielebarchiesi@6
|
31
|
danielebarchiesi@6
|
32 function _biblio_feeds_set__type_target($source, $entity, $target, $value) {
|
danielebarchiesi@6
|
33 static $types = array();
|
danielebarchiesi@6
|
34
|
danielebarchiesi@6
|
35 if (empty($value)) {
|
danielebarchiesi@6
|
36 return;
|
danielebarchiesi@6
|
37 }
|
danielebarchiesi@6
|
38
|
danielebarchiesi@6
|
39 // Handle non-multiple value fields.
|
danielebarchiesi@6
|
40 if (!is_array($value)) {
|
danielebarchiesi@6
|
41 $value = array($value);
|
danielebarchiesi@6
|
42 }
|
danielebarchiesi@6
|
43
|
danielebarchiesi@6
|
44 if (isset($value[0]) && !empty($value[0])) {
|
danielebarchiesi@6
|
45 if (intval($value[0]) > 0) {
|
danielebarchiesi@6
|
46 // value[0] is the bibio type ID
|
danielebarchiesi@6
|
47 if (empty($types)) {
|
danielebarchiesi@6
|
48 $result = db_query('SELECT t.* FROM {biblio_types} as t WHERE t.tid > 0');
|
danielebarchiesi@6
|
49 foreach ($result as $row) {
|
danielebarchiesi@6
|
50 $types[$row->tid] = $row->tid;
|
danielebarchiesi@6
|
51 }
|
danielebarchiesi@6
|
52 }
|
danielebarchiesi@6
|
53
|
danielebarchiesi@6
|
54 $type_id = $value[0];
|
danielebarchiesi@6
|
55 $entity->biblio_type = (isset($types[$type_id])) ? $type_id : 129;
|
danielebarchiesi@6
|
56 }
|
danielebarchiesi@6
|
57 elseif (is_string($value[0])) {
|
danielebarchiesi@6
|
58 // value[0] is the bibio type name
|
danielebarchiesi@6
|
59 if (empty($types)) {
|
danielebarchiesi@6
|
60 $result = db_query('SELECT t.* FROM {biblio_types} as t WHERE t.tid > 0');
|
danielebarchiesi@6
|
61 foreach ($result as $row) {
|
danielebarchiesi@6
|
62 $types[$row->tid] = str_replace(" ","_", strtolower($row->name));
|
danielebarchiesi@6
|
63 }
|
danielebarchiesi@6
|
64 }
|
danielebarchiesi@6
|
65
|
danielebarchiesi@6
|
66 $type = array_search($value[0], $types);
|
danielebarchiesi@6
|
67 $entity->biblio_type = (!empty($type)) ? $type : 129;
|
danielebarchiesi@6
|
68 }
|
danielebarchiesi@6
|
69 }
|
danielebarchiesi@6
|
70 }
|
danielebarchiesi@6
|
71
|
danielebarchiesi@6
|
72 function _biblio_feeds_set__simple_target($source, $entity, $target, $value) {
|
danielebarchiesi@6
|
73 if (empty($value)) {
|
danielebarchiesi@6
|
74 return;
|
danielebarchiesi@6
|
75 }
|
danielebarchiesi@6
|
76
|
danielebarchiesi@6
|
77 // Handle non-multiple value fields.
|
danielebarchiesi@6
|
78 if (!is_array($value)) {
|
danielebarchiesi@6
|
79 $value = array($value);
|
danielebarchiesi@6
|
80 }
|
danielebarchiesi@6
|
81
|
danielebarchiesi@6
|
82 if (isset($value[0]) && !empty($value[0])) {
|
danielebarchiesi@6
|
83 $entity->$target = $value[0];
|
danielebarchiesi@6
|
84 if ($target == 'biblio_abst_e') {
|
danielebarchiesi@6
|
85 $entity->biblio_formats[$target] = 'full_html';
|
danielebarchiesi@6
|
86 }
|
danielebarchiesi@6
|
87 }
|
danielebarchiesi@6
|
88 }
|
danielebarchiesi@6
|
89
|
danielebarchiesi@6
|
90 function _biblio_feeds_set__contrib_target($source, $entity, $target, $value) {
|
danielebarchiesi@6
|
91 if (is_string($value)) {
|
danielebarchiesi@6
|
92 $value = explode('||', $value);
|
danielebarchiesi@6
|
93 }
|
danielebarchiesi@6
|
94 foreach ($value as $author) {
|
danielebarchiesi@6
|
95 $entity->biblio_contributors[] = array(
|
danielebarchiesi@6
|
96 'name' => $author,
|
danielebarchiesi@6
|
97 'auth_category' => 1,
|
danielebarchiesi@6
|
98 );
|
danielebarchiesi@6
|
99 }
|
danielebarchiesi@6
|
100 }
|
danielebarchiesi@6
|
101
|
danielebarchiesi@6
|
102 function _biblio_feeds_set__keyword_target($source, $entity, $target, $value) {
|
danielebarchiesi@6
|
103 if (!empty($value)) {
|
danielebarchiesi@6
|
104 $entity->biblio_keywords = $value;
|
danielebarchiesi@6
|
105 }
|
danielebarchiesi@6
|
106 }
|
danielebarchiesi@6
|
107
|
danielebarchiesi@6
|
108 function _biblio_feeds_oai_importer_default() {
|
danielebarchiesi@6
|
109
|
danielebarchiesi@6
|
110 $feeds_importer = new stdClass;
|
danielebarchiesi@6
|
111 $feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
|
danielebarchiesi@6
|
112 $feeds_importer->api_version = 1;
|
danielebarchiesi@6
|
113 $feeds_importer->id = 'biblio_oai_pmh';
|
danielebarchiesi@6
|
114 $feeds_importer->config = array(
|
danielebarchiesi@6
|
115 'name' => 'Biblio OAI-PMH',
|
danielebarchiesi@6
|
116 'description' => 'Import an OAI-PMH feed into the Biblio node type.',
|
danielebarchiesi@6
|
117 'fetcher' => array(
|
danielebarchiesi@6
|
118 'plugin_key' => 'FeedsOAIHTTPFetcher',
|
danielebarchiesi@6
|
119 'config' => array(
|
danielebarchiesi@6
|
120 'auto_detect_feeds' => FALSE,
|
danielebarchiesi@6
|
121 'use_pubsubhubbub' => FALSE,
|
danielebarchiesi@6
|
122 'last_fetched_timestamp' => '',
|
danielebarchiesi@6
|
123 'earliest_timestamp' => '',
|
danielebarchiesi@6
|
124 'use_dates' => FALSE,
|
danielebarchiesi@6
|
125 'to' => array(),
|
danielebarchiesi@6
|
126 'from' => array(),
|
danielebarchiesi@6
|
127 ),
|
danielebarchiesi@6
|
128 ),
|
danielebarchiesi@6
|
129 'parser' => array(
|
danielebarchiesi@6
|
130 'plugin_key' => 'FeedsOAIParser',
|
danielebarchiesi@6
|
131 'config' => array(),
|
danielebarchiesi@6
|
132 ),
|
danielebarchiesi@6
|
133 'processor' => array(
|
danielebarchiesi@6
|
134 'plugin_key' => 'FeedsNodeProcessor',
|
danielebarchiesi@6
|
135 'config' => array(
|
danielebarchiesi@6
|
136 'content_type' => 'biblio',
|
danielebarchiesi@6
|
137 'expire' => '-1',
|
danielebarchiesi@6
|
138 'author' => 0,
|
danielebarchiesi@6
|
139 'mappings' => array(
|
danielebarchiesi@6
|
140 0 => array(
|
danielebarchiesi@6
|
141 'source' => 'title',
|
danielebarchiesi@6
|
142 'target' => 'title',
|
danielebarchiesi@6
|
143 'unique' => 0,
|
danielebarchiesi@6
|
144 ),
|
danielebarchiesi@6
|
145 1 => array(
|
danielebarchiesi@6
|
146 'source' => 'publisher',
|
danielebarchiesi@6
|
147 'target' => 'biblio_publisher',
|
danielebarchiesi@6
|
148 'unique' => FALSE,
|
danielebarchiesi@6
|
149 ),
|
danielebarchiesi@6
|
150 2 => array(
|
danielebarchiesi@6
|
151 'source' => 'subject',
|
danielebarchiesi@6
|
152 'target' => 'biblio_keyword',
|
danielebarchiesi@6
|
153 'unique' => FALSE,
|
danielebarchiesi@6
|
154 ),
|
danielebarchiesi@6
|
155 3 => array(
|
danielebarchiesi@6
|
156 'source' => 'source',
|
danielebarchiesi@6
|
157 'target' => 'biblio_secondary_title',
|
danielebarchiesi@6
|
158 'unique' => FALSE,
|
danielebarchiesi@6
|
159 ),
|
danielebarchiesi@6
|
160 4 => array(
|
danielebarchiesi@6
|
161 'source' => 'guid',
|
danielebarchiesi@6
|
162 'target' => 'guid',
|
danielebarchiesi@6
|
163 'unique' => 1,
|
danielebarchiesi@6
|
164 ),
|
danielebarchiesi@6
|
165 5 => array(
|
danielebarchiesi@6
|
166 'source' => 'creator',
|
danielebarchiesi@6
|
167 'target' => 'biblio_contributor',
|
danielebarchiesi@6
|
168 'unique' => FALSE,
|
danielebarchiesi@6
|
169 ),
|
danielebarchiesi@6
|
170 6 => array(
|
danielebarchiesi@6
|
171 'source' => 'description',
|
danielebarchiesi@6
|
172 'target' => 'biblio_abst_e',
|
danielebarchiesi@6
|
173 'unique' => FALSE,
|
danielebarchiesi@6
|
174 ),
|
danielebarchiesi@6
|
175 7 => array(
|
danielebarchiesi@6
|
176 'source' => 'contributor',
|
danielebarchiesi@6
|
177 'target' => 'biblio_contributor',
|
danielebarchiesi@6
|
178 'unique' => FALSE,
|
danielebarchiesi@6
|
179 ),
|
danielebarchiesi@6
|
180 8 => array(
|
danielebarchiesi@6
|
181 'source' => 'identifier',
|
danielebarchiesi@6
|
182 'target' => 'biblio_url',
|
danielebarchiesi@6
|
183 'unique' => FALSE,
|
danielebarchiesi@6
|
184 ),
|
danielebarchiesi@6
|
185 9 => array(
|
danielebarchiesi@6
|
186 'source' => 'date',
|
danielebarchiesi@6
|
187 'target' => 'biblio_year',
|
danielebarchiesi@6
|
188 'unique' => FALSE,
|
danielebarchiesi@6
|
189 ),
|
danielebarchiesi@6
|
190 10 => array(
|
danielebarchiesi@6
|
191 'source' => 'setspec_raw',
|
danielebarchiesi@6
|
192 'target' => 'biblio_type',
|
danielebarchiesi@6
|
193 'unique' => FALSE,
|
danielebarchiesi@6
|
194 ),
|
danielebarchiesi@6
|
195 ),
|
danielebarchiesi@6
|
196 'update_existing' => '0',
|
danielebarchiesi@6
|
197 'input_format' => 'plain_text',
|
danielebarchiesi@6
|
198 ),
|
danielebarchiesi@6
|
199 ),
|
danielebarchiesi@6
|
200 'content_type' => '',
|
danielebarchiesi@6
|
201 'update' => 0,
|
danielebarchiesi@6
|
202 'import_period' => '1800',
|
danielebarchiesi@6
|
203 'expire_period' => 3600,
|
danielebarchiesi@6
|
204 'import_on_create' => 1,
|
danielebarchiesi@6
|
205 'process_in_background' => 0,
|
danielebarchiesi@6
|
206 );
|
danielebarchiesi@6
|
207
|
danielebarchiesi@6
|
208 return array(
|
danielebarchiesi@6
|
209 'biblio_oai' => $feeds_importer
|
danielebarchiesi@6
|
210 );
|
danielebarchiesi@6
|
211 } |