Skip to content

Commit d5e14f3

Browse files
committed
rewrite of import function
1 parent d5f407c commit d5e14f3

File tree

1 file changed

+56
-44
lines changed

1 file changed

+56
-44
lines changed

plugins/mm/os2web_edoc_esdh_mm.inc

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -118,18 +118,18 @@ function os2web_edoc_esdh_mm_import_meeting($meeting) {
118118
);
119119
$meeting_agendas = $manifest->xpath("/Meeting/MeetingAgendaTypes/MeetingAgendaType/MeetingAgendaItems");
120120
$meeting_state = $manifest->xpath('/Meeting/MeetingState');
121-
$meeting['state'] = (string) $meeting_state[0];
122121
$meeting_type = $manifest->xpath('/Meeting/MeetingAgendaTypes/MeetingAgendaType/AgendaType');
123-
$meeting['type'] = (string) $meeting_type[0];
124122
$meeting_pdf = $manifest->xpath('/Meeting/MeetingAgendaTypes/MeetingAgendaType/PDFDocument');
123+
$meeting['state'] = (string) $meeting_state[0];
124+
$meeting['type'] = (string) $meeting_type[0];
125125
$meeting['pdf'] = (string) $meeting_pdf[0];
126126
if (empty($meeting_agendas)) {
127127
watchdog('eDoc MM', 'Empty list of import items in %file.', array('%file' => $file), WATCHDOG_WARNING);
128128
}
129129

130130
foreach ($meeting_agendas as $meeting_agenda) {
131+
#error_log(print_r($meeting_agenda, 1));
131132
$imported = _os2web_edoc_esdh_mm_import_meeting_agenda($meeting, $meeting_agenda);
132-
error_log("du er her");
133133
if (is_array($imported)) {
134134
$imported['publish'] = TRUE;
135135
$meetings[] = $imported;
@@ -157,17 +157,22 @@ error_log("du er her");
157157
*/
158158
function _os2web_edoc_esdh_mm_import_meeting_agenda(&$meeting, $agenda_xml) {
159159
$meeting['items'] = array();
160-
160+
$agenda = $meeting;
161161
// Only add the agenda if its PDF exists.
162162
if (file_exists(drupal_realpath($meeting['uri'] . $meeting['pdf']))) {
163163
$agenda['full_doc'] = array(
164164
'uri' => $meeting['uri'] . $meeting['pdf'],
165165
'title' => $meeting['committee'],
166166
);
167167
// Import all agenda items.
168-
foreach ($agenda_xml->xpath("/MeetingAgendaItems/MeetingAgendaItem") as $agenda_item) {
168+
#error_log(print_r($agenda_xml, 1));
169+
$agenda_bullet = $agenda_xml;
170+
#error_log(print_r($agenda_xml, 1));
171+
foreach ($agenda_bullet->MeetingAgendaItem as $agenda_item) {
172+
#error_log(print_r($agenda_item, 1));
169173
if (($item = _os2web_edoc_esdh_mm_import_meeting_agenda_item($meeting, $agenda_item)) !== FALSE) {
170174
$agenda['items'][] = $item;
175+
## error_log(print_r($agenda_item, 1));
171176
}
172177
}
173178
// Apply defaults, just in case we missed something.
@@ -191,27 +196,29 @@ function _os2web_edoc_esdh_mm_import_meeting_agenda(&$meeting, $agenda_xml) {
191196
* The imported item.
192197
*/
193198
function _os2web_edoc_esdh_mm_import_meeting_agenda_item($meeting, $xml) {
194-
$xml_item_number = (int) array_shift($xml->xpath("/AgendaItemNumber"));
195-
$xml_item_pdf = (string) array_shift($agenda_xml->xpath('/PDFDocument'));
196-
$xml_item_name = (string) array_shift($agenda_xml->xpath('/Document/NeutralTitle'));
197-
$document_type = (string) array_shift($agenda_xml->xpath('/Document/PublishingType'));
199+
$xml_item['number'] = (int) $xml->AgendaItemNumber;
200+
$xml_item['pdf'] = (string) $xml->PDFDocument;
201+
$xml_item_document = $xml->Document;
202+
$xml_item['name'] = (string) $xml_item_document->NeutralTitle;
203+
$xml_item['document_type'] = (string) $xml_item_document->PublishingType;
198204

205+
#error_log(print_r($meeting, 1));
199206
$item = array(
200-
'id' => $xml_item_number,
201-
'title' => 'Punkt ' . $xml_item_number . ' ' . $xml_item_name,
202-
'access' => $document_type,
207+
'id' => $xml_item['number'],
208+
'title' => 'Punkt ' . $xml_item['number'] . ' ' . $xml_item['name'],
209+
'access' => $xml_item['document_type'],
203210
'bullets' => array(),
204211
'enclosures' => array(),
205212
'doc' => array(
206213
'uri' => implode('/', array(
207-
variable_get('os2web_edoc_esdh_mm_path', MM_IMPORT_DIR),
208-
$meeting['sys_id'],
209-
$xml_item_pdf)),
210-
'title' => $xml_item_name,
214+
trim($meeting['uri'], "/"),
215+
$xml_item['pdf'])),
216+
'title' => $xml_item['name'],
211217
),
212218
);
219+
213220
// Deny closed content.
214-
if ($document_type === 'SKAL PUBLICERES') {
221+
if ($item['access'] === 'SKAL PUBLICERES') {
215222
// Process attachments.
216223
// foreach ($xml->xpath("table[@name='bullet']") as $bullet_xml) {
217224
// if (($bullet = _os2web_edoc_esdh_import_bullet($info, $bullet_xml)) !== FALSE) {
@@ -224,21 +231,26 @@ function _os2web_edoc_esdh_mm_import_meeting_agenda_item($meeting, $xml) {
224231
// }
225232
// }
226233
// Process attachments.
227-
foreach ($xml->xpath("/Document/Attachments']") as $enclosure) {
228-
$filename_in = (string) array_shift($enclosure->xpath("/PDFDocument"));
229-
$access = (string) array_shift($enclosure->xpath("/PublishingType"));
230-
if (strlen($filename_in) > 0 && $access === 'SKAL PUBLICERES') {
231-
$item['enclosures'][] = array(
232-
'uri' => implode('/', array(
233-
variable_get('os2web_edoc_esdh_mm_path', MM_IMPORT_DIR),
234-
$info['filesfolder'],
235-
$filename_in)),
236-
'title' => trim((string) array_shift($enclosure->xpath("/NeutralTitle"))),
237-
'access' => TRUE,
238-
);
234+
#error_log(print_r($xml_item_document->Attachments, 1 ));
235+
foreach ($xml_item_document->Attachments as $enclosures) {
236+
#error_log(print_r($enclosure, 1 ));
237+
foreach ($enclosures->Attachment as $enclosure) {
238+
#error_log(print_r($enclosure, 1 ));
239+
$enclosure_item['filename_in'] = (string) $enclosure->PDFDocument;
240+
$enclosure_item['access'] = (string) $enclosure->PublishingType;
241+
if (strlen($enclosure_item['filename_in']) > 0 && $enclosure_item['access'] === 'SKAL PUBLICERES') {
242+
$item['enclosures'][] = array(
243+
'uri' => implode('/', array(
244+
trim($meeting['uri'], "/"),
245+
$enclosure_item['filename_in'])),
246+
'title' => trim((string) $enclosure->NeutralTitle),
247+
'access' => TRUE,
248+
);
249+
}
239250
}
240251
}
241252
}
253+
#error_log(print_r($item, 1));
242254
$item += os2web_esdh_provider_default_item();
243255
return $item;
244256
}
@@ -283,19 +295,19 @@ function _os2web_edoc_esdh_mm_order_addenums($drush = FALSE) {
283295
// Find all meetings and gather meeting and agenda_ids.
284296
$query = new EntityFieldQuery();
285297
$query->entityCondition('entity_type', 'node', '=')
286-
->propertyCondition('type', 'meeting', '=');
298+
->propertyCondition('type', 'os2web_meetings_meeting', '=');
287299
$nodes_result = $query->execute();
288300

289301
if (!isset($nodes_result['node'])) {
290302
return;
291303
}
292304
$nodes = $nodes_result['node'];
293-
305+
error_log(print_r($nodes, 1));
294306
// Load necessary fields into the node object.
295307
$fields = field_info_instances('node', 'meeting');
296-
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_addenum_to']['field_id']));
297-
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_meeting_id']['field_id']));
298-
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_meeting_sub_id']['field_id']));
308+
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_os2web_meetings_addendum']['field_id']));
309+
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_os2web_meetings_id']['field_id']));
310+
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $fields['field_os2web_meetings_sub_id']['field_id']));
299311

300312
// Meetings as: $meetings[<meeting_id>][<system_id>][<node_id>] .
301313
$meetings = array();
@@ -305,12 +317,12 @@ function _os2web_edoc_esdh_mm_order_addenums($drush = FALSE) {
305317
$debug && error_log('MM Import - Retrieve nodes with addendums from ' . count($nodes) . ' nodes - ' . timer_read('_os2web_edoc_esdh_mm_order_addenums') . 'ms - ' . memory_get_usage());
306318
// Loop through all meeting nodes, and generate an array with meeting grouped.
307319
foreach ($nodes as $node) {
308-
$addenum_to = field_get_items('node', $node, 'field_addenum_to');
320+
$addenum_to = field_get_items('node', $node, 'field_os2web_meetings_addendum');
309321
if (isset($addenum_to[0]['nid']) && is_numeric($addenum_to[0]['nid'])) {
310322
$nids_with_addendums[$node->nid] = $node->nid;
311323
}
312-
$meeting_id = field_get_items('node', $node, 'field_meeting_id');
313-
$meeting_sub_id = field_get_items('node', $node, 'field_meeting_sub_id');
324+
$meeting_id = field_get_items('node', $node, 'field_os2web_meetings_id');
325+
$meeting_sub_id = field_get_items('node', $node, 'field_os2web_meetings_sub_id');
314326
if (!isset($meeting_id[0]['value']) || !isset($meeting_sub_id[0]['value'])) {
315327
$debug && error_log('MM Import - Missing meeting_id or meeting_sub_id for nid=' . $node->nid);
316328
continue;
@@ -335,22 +347,22 @@ function _os2web_edoc_esdh_mm_order_addenums($drush = FALSE) {
335347
}
336348
// Lowest system id is primary.
337349
$primary = $nodes[array_shift($meeting)];
338-
$addenum_to = field_get_items('node', $primary, 'field_addenum_to');
350+
$addenum_to = field_get_items('node', $primary, 'field_os2web_meetings_addendum');
339351
if (!empty($addenum_to[0]['nid'])) {
340-
$primary->field_addenum_to[LANGUAGE_NONE] = array();
352+
$primary->field_os2web_meetings_addendum[LANGUAGE_NONE] = array();
341353
node_save($primary);
342354
}
343355
while ($next = array_shift($meeting)) {
344356
// Set up references for addenum agendas.
345357
$node = $nodes[$next];
346358
if ($primary) {
347-
$addenum_to = field_get_items('node', $node, 'field_addenum_to');
359+
$addenum_to = field_get_items('node', $node, 'field_os2web_meetings_addendum');
348360
$addenum_to = is_array($addenum_to) ? array_shift(array_shift($addenum_to)) : FALSE;
349361
// Save time by only updating what is needed.
350362
if ($addenum_to != $primary->nid) {
351-
// error_log(basename(__FILE__) . ':' . __LINE__ . ' Var: $primary = ' . print_r($primary->nid, 1));
352-
// error_log(basename(__FILE__) . ':' . __LINE__ . ' Var: $addenum_to = ' . print_r($addenum_to, 1));
353-
$node->field_addenum_to[LANGUAGE_NONE][0]['nid'] = $primary->nid;
363+
error_log(basename(__FILE__) . ':' . __LINE__ . ' Var: $primary = ' . print_r($primary->nid, 1));
364+
error_log(basename(__FILE__) . ':' . __LINE__ . ' Var: $addenum_to = ' . print_r($addenum_to, 1));
365+
$node->field_os2web_meetings_addendum[LANGUAGE_NONE][0]['nid'] = $primary->nid;
354366
node_save($node);
355367
}
356368
}
@@ -377,7 +389,7 @@ function _os2web_edoc_esdh_mm_order_addenums($drush = FALSE) {
377389
foreach ($nids_with_addendums as $nid) {
378390
// Load the node from the local variable.
379391
$node = $nodes[$nid];
380-
$node->field_addenum_to = array();
392+
$node->field_os2web_meetings_addendum = array();
381393
node_save($node);
382394
if ($drush === TRUE) {
383395
drush_log("Resetting $nid..", 'ok');

0 commit comments

Comments
 (0)