diff --git a/README.md b/README.md index fb9cf11..47e7ef8 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,6 @@ Import and handle Borger.dk articles. Including integration with the Borger.dk-w Read guide under /doc: "Borger.dk menu import.pdf" -"Guide til OS2web borger.dk - artikler.pdf" +"Guide til OS2 borger.dk - artikler.pdf" Borger.dk /Version 3 diff --git a/css/os2web_borger_dk.css b/css/os2_borger_dk.css similarity index 77% rename from css/os2web_borger_dk.css rename to css/os2_borger_dk.css index 1b7d09e..18b4d9d 100644 --- a/css/os2web_borger_dk.css +++ b/css/os2_borger_dk.css @@ -28,14 +28,14 @@ div.microArticle a { padding: 0px 5px 10px 10px; } -.os2web_borger_dk_selfservi { +.os2_borger_dk_selfservi { clear: both; padding: 10px 15px; background-color: #d9e5c3; border-radius: 7px 7px 7px 7px; } -.os2web_borger_dk_selfservi h3 { +.os2_borger_dk_selfservi h3 { border-bottom: 1px solid #BBC5A8; color: #526A27; /*font-family: "myriad-pro",Arial,Helvetica,sans-serif;*/ @@ -44,7 +44,7 @@ div.microArticle a { padding-bottom: 5px; } -.os2web_borger_dk_selfservi ul li a, .os2web_borger_dk_selfservi a:link{ +.os2_borger_dk_selfservi ul li a, .os2_borger_dk_selfservi a:link{ color: #526A27; font-size: 13px; /*list-style-type: disc; @@ -59,11 +59,11 @@ div.microArticle a { padding: 10px 5px 10px 10px; } -.borger_dk-field_os2web-borger-dk-pre_text { +.borger_dk-field_os2-borger-dk-pre_text { margin: 30px auto; } -.borger_dk-field_os2web-borger-dk-post_text { +.borger_dk-field_os2-borger-dk-post_text { margin: 30px auto; } @@ -75,31 +75,31 @@ div.microArticle a { .borger_dk-region-stack3 .inside .borger_dk-body.node-body div a:link a:visited, .borger_dk-region-stack3 .inside .borger_dk-body.node-body div div ul li p a, -.borger_dk-region-stack3 .inside .borger_dk-field_os2web-borger-dk-legislati div a { +.borger_dk-region-stack3 .inside .borger_dk-field_os2-borger-dk-legislati div a { color: #2d2d2d; font-size: 13px; /* list-style-type: disc; text-decoration: underline;*/ } -.borger_dk-region-stack4 .inside .borger_dk-field_os2web-borger-dk-recommend ul li a, -.borger_dk-region-stack4 .inside .borger_dk-field_os2web-borger-dk-shortlist ul li a { +.borger_dk-region-stack4 .inside .borger_dk-field_os2-borger-dk-recommend ul li a, +.borger_dk-region-stack4 .inside .borger_dk-field_os2-borger-dk-shortlist ul li a { color: #2d2d2d; font-size: 13px; line-height: 20px; /* list-style-type: disc; text-decoration: underline;*/ } -.borger_dk-field_os2web-borger-dk-legislati { +.borger_dk-field_os2-borger-dk-legislati { margin-top: 30px; } -.borger_dk-field_os2web-borger-dk-shortlist { +.borger_dk-field_os2-borger-dk-shortlist { margin-top: 20px; } -.borger_dk-field_os2web-borger-dk-legislati h3, -.borger_dk-field_os2web-borger-dk-recommend h3, -.borger_dk-field_os2web-borger-dk-shortlist h3 { +.borger_dk-field_os2-borger-dk-legislati h3, +.borger_dk-field_os2-borger-dk-recommend h3, +.borger_dk-field_os2-borger-dk-shortlist h3 { border-bottom: 1px solid #C3C3C3; font-family: "myriad-pro",Arial,Helvetica,sans-serif; font-size: 20px; @@ -107,18 +107,18 @@ div.microArticle a { padding-bottom: 10px; } -.borger_dk-field_os2web-borger-dk-recommend h4 { +.borger_dk-field_os2-borger-dk-recommend h4 { font-family: "myriad-pro",Arial,Helvetica,sans-serif; font-size: 18px; font-weight: 300; } -.borger_dk-field_os2web-borger-dk-legislati p { +.borger_dk-field_os2-borger-dk-legislati p { padding-top: 10px; } -.borger_dk-field_os2web-borger-dk-legislati, -.borger_dk-field_os2web-borger-dk-recommend, -.borger_dk-field_os2web-borger-dk-shortlist { +.borger_dk-field_os2-borger-dk-legislati, +.borger_dk-field_os2-borger-dk-recommend, +.borger_dk-field_os2-borger-dk-shortlist { background-color: #F0F0F0; border-radius: 7px 7px 7px 7px; padding: 10px 15px; @@ -127,10 +127,10 @@ div.microArticle a { .borger_dk-region-stack2 .inside ul, .borger_dk-region-stack3 .inside .borger_dk-body.node-body div div ul, .borger_dk-region-stack4 .inside ul, -.borger_dk-field_os2web-borger-dk-legislati ul{ +.borger_dk-field_os2-borger-dk-legislati ul{ margin: 10px 0 0 20px; } -.borger_dk-field_os2web-borger-dk-byline { +.borger_dk-field_os2-borger-dk-byline { font-family: "myriad-pro",Arial,Helvetica,sans-serif; float: right; padding-right: 10px; diff --git a/doc/Guide til OS2web borger.dk - artikler.pdf b/doc/Guide til OS2 borger.dk - artikler.pdf similarity index 100% rename from doc/Guide til OS2web borger.dk - artikler.pdf rename to doc/Guide til OS2 borger.dk - artikler.pdf diff --git a/js/os2web_borger_dk.js b/js/os2_borger_dk.js similarity index 96% rename from js/os2web_borger_dk.js rename to js/os2_borger_dk.js index b24dd6d..c633487 100644 --- a/js/os2web_borger_dk.js +++ b/js/os2_borger_dk.js @@ -1,9 +1,9 @@ /** - * @file os2web_borger_dk.js + * @file os2_borger_dk.js */ (function($) { - Drupal.behaviors.os2web_borger_dk = { + Drupal.behaviors.os2_borger_dk = { attach: function(context) { $("div.mArticle").hide(); // borger.dk articles diff --git a/os2web_borger_dk.admin.inc b/os2_borger_dk.admin.inc similarity index 57% rename from os2web_borger_dk.admin.inc rename to os2_borger_dk.admin.inc index 112a84a..8ef3548 100644 --- a/os2web_borger_dk.admin.inc +++ b/os2_borger_dk.admin.inc @@ -1,32 +1,32 @@ 'vertical_tabs', '#weight' => 0, ); // Form element. It's a fieldset , "Toggle display" - $form['os2web_borger_dk_settings'] = array( + $form['os2_borger_dk_settings'] = array( '#type' => 'fieldset', '#title' => t('Toggle display'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); // Some of the fields are locked from from being changed. - $locked_os2web_types = array( - 'field_os2web_borger_dk_borgerurl' => 1, - 'field_os2web_borger_dk_kle' => 2, - 'field_os2web_borger_dk_formterm' => 2, + $locked_os2_types = array( + 'field_os2_borger_dk_borgerurl' => 1, + 'field_os2_borger_dk_kle' => 2, + 'field_os2_borger_dk_formterm' => 2, ); - $data = field_info_instances('node', 'os2web_borger_dk_article'); + $data = field_info_instances('node', 'os2_borger_dk_article'); $newdata = array(); $field_name = array(); $init = array(); @@ -34,16 +34,16 @@ function os2web_borger_dk_settings_form($form, $form_state) { $newdata['title'] = t('Title'); $init['title'] = 'title'; foreach ($data as $type => $item) { - if (empty($locked_os2web_types[$type])) { + if (empty($locked_os2_types[$type])) { $field_name[$type] = $type; } - if (empty($locked_os2web_types[$type]) || (!empty($locked_os2web_types[$type]) && $locked_os2web_types[$type] == 1)) { + if (empty($locked_os2_types[$type]) || (!empty($locked_os2_types[$type]) && $locked_os2_types[$type] == 1)) { // Only some of the locked types can be displayed. $newdata[$type] = $item['label']; $init[$type] = $type; } } - $form_display = variable_get('os2web_borger_dk_display'); + $form_display = variable_get('os2_borger_dk_display'); $selected = array(); if (isset($form_display) && !empty($form_display)) { @@ -51,9 +51,9 @@ function os2web_borger_dk_settings_form($form, $form_state) { } elseif (!isset($form_display)) { $selected = $field_name; - variable_set('os2web_borger_dk_display', $field_name); + variable_set('os2_borger_dk_display', $field_name); } - $form['os2web_borger_dk_settings']['os2web_borger_dk_display'] = array( + $form['os2_borger_dk_settings']['os2_borger_dk_display'] = array( '#type' => 'checkboxes', '#title' => t('Visible article fields'), '#options' => $newdata, @@ -61,27 +61,27 @@ function os2web_borger_dk_settings_form($form, $form_state) { '#default_value' => !empty($form_display) ? $selected : $init, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_2'] = array( + $form['os2_borger_dk_settings_2'] = array( '#type' => 'fieldset', '#title' => t('Editable article fields'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form_editable = variable_get('os2web_borger_dk_editable'); + $form_editable = variable_get('os2_borger_dk_editable'); $selected2 = array(); if (isset($form_editable) && !empty($form_editable)) { $selected2 = $form_editable; } elseif (!isset($form_editable)) { $selected2 = $field_name; - variable_set('os2web_borger_dk_editable', $selected2); + variable_set('os2_borger_dk_editable', $selected2); } - foreach ($locked_os2web_types as $type => $locked) { + foreach ($locked_os2_types as $type => $locked) { unset($newdata[$type]); unset($selected2[$type]); unset($init[$type]); } - $form['os2web_borger_dk_settings_2']['os2web_borger_dk_editable'] = array( + $form['os2_borger_dk_settings_2']['os2_borger_dk_editable'] = array( '#type' => 'checkboxes', '#title' => t('Editable article fields'), '#options' => $newdata, @@ -90,7 +90,7 @@ function os2web_borger_dk_settings_form($form, $form_state) { '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_3'] = array( + $form['os2_borger_dk_settings_3'] = array( '#type' => 'fieldset', '#title' => t('Daily article syncronization'), '#collapsible' => TRUE, @@ -99,112 +99,148 @@ function os2web_borger_dk_settings_form($form, $form_state) { $sync_options = drupal_map_assoc(range(1, 24)); $sync_options[0] = t('Disabled (Syncronize manually)'); - $form['os2web_borger_dk_settings_3']['os2web_borger_dk_nightly_article_sync'] = array( + $form['os2_borger_dk_settings_3']['os2_borger_dk_nightly_article_sync'] = array( '#type' => 'select', '#title' => t('Select when imported articles should be updated'), '#options' => $sync_options, '#description' => t('At what time of day should articles be syncronized with the Borger.dk-Webservice.'), - '#default_value' => variable_get('os2web_borger_dk_nightly_article_sync'), + '#default_value' => variable_get('os2_borger_dk_nightly_article_sync'), ); - $form['os2web_borger_dk_import_settings_4'] = array( + $form['os2_borger_dk_import_settings_4'] = array( '#type' => 'fieldset', '#title' => t('Borger.dk Webservice settings'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_import_settings_4']['os2web_borger_dk_webservice'] = array( + $form['os2_borger_dk_import_settings_4']['os2_borger_dk_webservice'] = array( '#type' => 'textfield', '#title' => t('Borger.dk Webservice URL'), - '#default_value' => variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'), + '#default_value' => variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'), '#group' => 'vertical_settings_tab', '#size' => 60, '#maxlength' => 130, ); - $form['os2web_borger_dk_import_settings_4']['os2web_borger_dk_webservice_request_limit'] = array( + $form['os2_borger_dk_import_settings_4']['os2_borger_dk_webservice_request_limit'] = array( '#type' => 'textfield', '#title' => t('Webservice request limitation'), '#description' => t("e.g this number of items (default is 100) can be fetched within the time-period limit"), - '#default_value' => variable_get('os2web_borger_dk_webservice_request_limit', 100), + '#default_value' => variable_get('os2_borger_dk_webservice_request_limit', 100), '#group' => 'vertical_settings_tab', '#size' => 5, '#maxlength' => 10, ); - $form['os2web_borger_dk_import_settings_4']['os2web_borger_dk_webservice_time_limit'] = array( + $form['os2_borger_dk_import_settings_4']['os2_borger_dk_webservice_time_limit'] = array( '#type' => 'textfield', '#title' => t('Webservice request time-period limitation'), '#description' => t("e.g within this number of seconds (default is 60) the webservice is limited to serve a given number of requests"), - '#default_value' => variable_get('os2web_borger_dk_webservice_time_limit', 60), + '#default_value' => variable_get('os2_borger_dk_webservice_time_limit', 60), '#group' => 'vertical_settings_tab', '#size' => 5, '#maxlength' => 10, ); - $form['os2web_borger_dk_settings_5'] = array( + $form['os2_borger_dk_settings_5'] = array( '#type' => 'fieldset', '#title' => t('Borger.dk Title search'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_5']['os2web_borger_dk_titles_sync'] = array( + $form['os2_borger_dk_settings_5']['os2_borger_dk_titles_sync'] = array( '#type' => 'checkbox', '#title' => t('Import Borger.dk-articles by title instead of by URL'), '#description' => t('Check to enable the title-search when importing articles from Borger.dk'), - '#default_value' => variable_get('os2web_borger_dk_titles_sync', 1), + '#default_value' => variable_get('os2_borger_dk_titles_sync', 1), ); - $form['os2web_borger_dk_settings_5']['os2web_borger_dk_titles_search_auto_submit'] = array( + $form['os2_borger_dk_settings_5']['os2_borger_dk_titles_search_auto_submit'] = array( '#type' => 'checkbox', '#title' => t('Activate auto-submit when selecting an article to import by its title.'), '#description' => t('Check to enable the title-search auto-submit when importing articles from Borger.dk'), - '#default_value' => variable_get('os2web_borger_dk_titles_search_auto_submit', 1), + '#default_value' => variable_get('os2_borger_dk_titles_search_auto_submit', 1), ); - $form['os2web_borger_dk_settings_6'] = array( + $form['os2_borger_dk_settings_6'] = array( '#type' => 'fieldset', '#title' => t('Borger.dk Menu import'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_6']['os2web_borger_dk_menus_import'] = array( + $form['os2_borger_dk_settings_6']['os2_borger_dk_menus_import'] = array( '#type' => 'checkbox', '#title' => t('Import and utilize Borger.dk-menus'), '#description' => t('Check to enable the menu-import from Borger.dk.'), - '#default_value' => variable_get('os2web_borger_dk_menus_import', 0), + '#default_value' => variable_get('os2_borger_dk_menus_import', 0), ); - $form['os2web_borger_dk_settings_6']['os2web_borger_dk_borger_dk_menu_name'] = array( + $menu_page = node_type_get_types(); + foreach ($menu_page as $key => $object) { + $menu_page[$key] = $object->name; + } + + $form['os2_borger_dk_settings_6']['os2_borger_dk_menus_menu_page'] = array( + '#type' => 'select', + '#options' => $menu_page, + '#title' => t('Import Menu page to content type'), + '#description' => t('Select menu page content type'), + '#default_value' => variable_get('os2_borger_dk_menus_menu_page', 'os2_base_contentpage'), + ); + + $term_vocabularies = taxonomy_get_vocabularies(); + $term_options = array(); + if ($term_vocabularies) { + foreach ($term_vocabularies as $term_parent) { + $term_name = $term_parent->name; + $term = $term_parent->machine_name; + $term_options[$term] = $term_name; + } + } + $form['os2_borger_dk_settings_6']['os2_borger_dk_choose_term'] = array( + '#type' => 'checkbox', + '#title' => t('Import menu link to term'), + '#description' => t('Import menu link to term, not content type.'), + '#default_value' => variable_get('os2_borger_dk_choose_term', 0), + ); + $form['os2_borger_dk_settings_6']['build_borger_menu_under_vocabulary'] = array( + '#type' => 'select', + '#title' => t('Select Borger.dk menu Parent Taxonomy Item'), + '#options' => $term_options, + '#description' => t('Select Borger.dk menu Parent Item from the list. REMEMBER to save before you start Menu import.'), + '#default_value' => variable_get('build_borger_menu_under_vocabulary', 'os2_base_tax_site_structure'), + '#type' => 'select', + ); + $form['os2_borger_dk_settings_6']['os2_borger_dk_borger_dk_menu_name'] = array( '#type' => 'textfield', '#title' => t('Menu name for imported Borger.dk-menu'), '#description' => t("The imported menu will be put into a local menu by the name given here."), - '#default_value' => variable_get('os2web_borger_dk_borger_dk_menu_name', 'Borger.dk menu'), + '#default_value' => variable_get('os2_borger_dk_borger_dk_menu_name', 'Borger.dk menu'), ); //$sync_options = drupal_map_assoc(range(1, 24)); //$sync_options[0] = t('Disabled (No menu syncronization)'); - /*$form['os2web_borger_dk_settings_6']['os2web_borger_dk_nightly_menu_sync'] = array( + /*$form['os2_borger_dk_settings_6']['os2_borger_dk_nightly_menu_sync'] = array( '#type' => 'select', '#title' => t('Select when the menu-structure should be imported'), '#options' => $sync_options, '#description' => t('At what time of day should menus be syncronized with the Borger.dk-Webservice.'), - '#default_value' => variable_get('os2web_borger_dk_nightly_menu_sync'), + '#default_value' => variable_get('os2_borger_dk_nightly_menu_sync'), ); - $form['os2web_borger_dk_settings_6']['os2web_borger_dk_weekly_borger_dk_menus_import'] = array( + $form['os2_borger_dk_settings_6']['os2_borger_dk_weekly_borger_dk_menus_import'] = array( '#type' => 'checkbox', '#title' => t('Should Borger.dk-menus be updated weekly'), '#description' => t('Check to enable weekly menu-import from Borger.dk (otherwise menus are imported daily)'), - '#default_value' => variable_get('os2web_borger_dk_weekly_borger_dk_menus_import', 0), + '#default_value' => variable_get('os2_borger_dk_weekly_borger_dk_menus_import', 0), );*/ - $form['os2web_borger_dk_settings_6']['os2web_borger_dk_menu_import_description'] = array( + $form['os2_borger_dk_settings_6']['os2_borger_dk_menu_import_description'] = array( '#type' => 'fieldset', '#title' => t('Description for importing Borger.dk menu structure'), - '#description' => t("Before you import Borger.dk menu structure, please create a content type - which is called 'menu_page'(machine name) with title and body fields. + '#description' => t("Before you import Borger.dk menu structure, please choose a content type + which default is OS2web base contentpage (Indholdsside). Step1 : Please import Borger.dk-menu items now. Step2 : When Borger.dk menu items are imported, please import all Borger.dk articles. Step 3 : Create Borger.dk menu structure now."), ); $menu_option = array(); $existing_menu = db_query('SELECT * FROM {menu_custom}'); - $menu_option['borgerdkmenu2'] = variable_get('os2web_borger_dk_borger_dk_menu_name', 'Borger.dk menu'); + $menu_option['borgerdkmenu2'] = variable_get('os2_borger_dk_borger_dk_menu_name', 'Borger.dk menu'); if ($existing_menu) { foreach ($existing_menu as $menu_item) { $menu_name = $menu_item->menu_name; @@ -212,7 +248,7 @@ function os2web_borger_dk_settings_form($form, $form_state) { $menu_option[$menu_name] = $menu_title; } } - $form['os2web_borger_dk_settings_6']['build_borger_menu_under_menu'] = array( + $form['os2_borger_dk_settings_6']['build_borger_menu_under_menu'] = array( '#type' => 'select', '#title' => t('Select Borger.dk menu Parent Item'), '#options' => $menu_option, @@ -224,70 +260,70 @@ function os2web_borger_dk_settings_form($form, $form_state) { $disabled = FALSE; $description = ''; - $menus_import = variable_get('os2web_borger_dk_menus_import', 0); + $menus_import = variable_get('os2_borger_dk_menus_import', 0); if ($menus_import == 0) { $disabled = TRUE; $description = t('If you want to import the Borger.dk menu you must first activate "Import and utilize Borger.dk-menus" and save the settings'); drupal_set_message($description); } - $form['os2web_borger_dk_settings_6']['submit'] = array( + $form['os2_borger_dk_settings_6']['submit'] = array( '#type' => 'submit', '#value' => 'Import Borger.dk-menu now', - '#submit' => array('os2web_borger_dk_import_menu_now_form_submit'), + '#submit' => array('os2_borger_dk_import_menu_now_form_submit'), '#disabled' => $disabled, // '#description' => t(' Step1 : Please import Borger.dk menu items.'), ); - $form['os2web_borger_dk_settings_6']['import_all_articles_now'] = array( + $form['os2_borger_dk_settings_6']['import_all_articles_now'] = array( '#type' => 'submit', '#value' => 'Import Borger.dk articles', - '#submit' => array('os2web_borger_dk_import_articles_now_form_submit'), + '#submit' => array('os2_borger_dk_import_articles_now_form_submit'), '#disabled' => $disabled, '#description' => t('Step2 : When Borger.dk menu items are imported, please import all Borger.dk articles.'), ); - $form['os2web_borger_dk_settings_6']['create_borger_dk_menu_links'] = array( + $form['os2_borger_dk_settings_6']['create_borger_dk_menu_links'] = array( '#type' => 'submit', '#value' => t('Create Borger.dk menu structure now'), - '#submit' => array('os2web_borger_dk_create_borger_dk_menu_now_form_submit'), + '#submit' => array('os2_borger_dk_create_borger_dk_menu_now_form_submit'), '#disabled' => $disabled, '#description' => t('Step 3 : Create Borger.dk menu structure now.'), ); - $form['os2web_borger_dk_settings_7'] = array( + $form['os2_borger_dk_settings_7'] = array( '#type' => 'fieldset', '#title' => t('Microarticles visibility and editability'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_7']['os2web_borger_dk_microarticle_active'] = array( + $form['os2_borger_dk_settings_7']['os2_borger_dk_microarticle_active'] = array( '#type' => 'checkbox', '#title' => t('Show and edit microarticles individually'), '#description' => t('Check to enable visibility and editablity of microarticles from Borger.dk'), - '#default_value' => variable_get('os2web_borger_dk_microarticle_active', 0), + '#default_value' => variable_get('os2_borger_dk_microarticle_active', 0), ); - $options = variable_get('os2web_borger_dk_municipality_list'); + $options = variable_get('os2_borger_dk_municipality_list'); if (isset($options)) { $muni_items = $options; } else { $muni_items = array(); - $municipalities = _os2web_borger_dk_GetMunicipalityList(); + $municipalities = _os2_borger_dk_GetMunicipalityList(); $muni_items[0] = t('--Not selected--'); foreach ($municipalities as $code => $item) { $muni_items[$item['MunicipalityCode']] = $item['MunicipalityName']; } - variable_set('os2web_borger_dk_municipality_list', $muni_items); + variable_set('os2_borger_dk_municipality_list', $muni_items); } - $admin_municipality = variable_get('os2web_borger_dk_municipality_active'); - $form['os2web_borger_dk_settings_8'] = array( + $admin_municipality = variable_get('os2_borger_dk_municipality_active'); + $form['os2_borger_dk_settings_8'] = array( '#type' => 'fieldset', '#title' => t('Municipality import option'), '#collapsible' => TRUE, '#group' => 'vertical_settings_tab', ); - $form['os2web_borger_dk_settings_8']['os2web_borger_dk_municipality_active'] = array( + $form['os2_borger_dk_settings_8']['os2_borger_dk_municipality_active'] = array( '#type' => 'select', '#title' => t('Select municipality'), @@ -295,16 +331,28 @@ function os2web_borger_dk_settings_form($form, $form_state) { '#description' => t('Check to import articles from Borger.dk according to municipality.'), '#default_value' => $admin_municipality, ); + $form['os2_borger_dk_settings_9'] = array( + '#type' => 'fieldset', + '#title' => t('Import duplicate'), + '#collapsible' => TRUE, + '#group' => 'vertical_settings_tab', + ); + $form['os2_borger_dk_settings_9']['os2_borger_dk_import_duplicate'] = array( + '#type' => 'checkbox', + '#title' => t('Allow article import duplicated.'), + '#description' => t('Allow to import aricle many times.'), + '#default_value' => variable_get('os2_borger_dk_import_duplicate', 0), + ); return system_settings_form($form); } /** - * Function _os2web_borger_dk_GetMunicipalityList(). + * Function _os2_borger_dk_GetMunicipalityList(). * * This function uses the Borger.dk Webservice GetMunicipalityList * in order to fetch a list of Municipality-codes from Borger.dk */ -function _os2web_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { +function _os2_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { $errors = array(); $municipality_item = array(); @@ -312,11 +360,11 @@ function _os2web_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_v // find the article-ID from the Borger.dk-URL. $client = new SoapClient($wsdl, array('exceptions' => 0)); // First we make sure to keep requests/minute within given limits. - // _os2web_borger_dk_articles_check_webservice_constraints(); + // _os2_borger_dk_articles_check_webservice_constraints(); // Then we execute our webservice-request. $result_list = $client->GetMunicipalityList(); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_articles_translate_soap_fault('GetMunicipalityList', $result_list->faultcode, $result_list->faultstring); + $errors = _os2_borger_dk_articles_translate_soap_fault('GetMunicipalityList', $result_list->faultcode, $result_list->faultstring); return $errors; } @@ -324,7 +372,7 @@ function _os2web_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_v // Then we get the result-list from the specified webservice. $municipality_list = $result_list->GetMunicipalityListResult; if (is_soap_fault($municipality_list)) { - $errors = _os2web_borger_dk_articles_translate_soap_fault('GetMunicipalityListResult', $municipality_list->faultcode, $municipality_list->faultstring); + $errors = _os2_borger_dk_articles_translate_soap_fault('GetMunicipalityListResult', $municipality_list->faultcode, $municipality_list->faultstring); return $errors; } @@ -333,12 +381,12 @@ function _os2web_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_v // arrays of wanted field-sets. if (is_array($municipality_list->Municipality)) { foreach ($municipality_list->Municipality as $id => $menu_item) { - $new_item = _os2web_borger_dk_articles_parse_borgerdk_municipality_item($menu_item); + $new_item = _os2_borger_dk_articles_parse_borgerdk_municipality_item($menu_item); $municipality_item[] = $new_item; } } else { - $new_item = _os2web_borger_dk_articles_parse_borgerdk_municipality_item($municipality_list->Municipality); + $new_item = _os2_borger_dk_articles_parse_borgerdk_municipality_item($municipality_list->Municipality); $municipality_item[] = $new_item; } } @@ -347,12 +395,12 @@ function _os2web_borger_dk_GetMunicipalityList($wsdl = 'https://www.borger.dk/_v } /** - * Function _os2web_borger_dk_articles_parse_borgerdk_municipality_item(). + * Function _os2_borger_dk_articles_parse_borgerdk_municipality_item(). * * This function parses a Borger.dk-ArticleDescription and extracts all * the field values we want for our list of titles (for autocompletion etc) */ -function _os2web_borger_dk_articles_parse_borgerdk_municipality_item($menu_item) { +function _os2_borger_dk_articles_parse_borgerdk_municipality_item($menu_item) { $borgerdk_menu = array( 'MunicipalityCode' => $menu_item->MunicipalityCode, 'MunicipalityName' => $menu_item->MunicipalityName, diff --git a/os2web_borger_dk.features.field.inc b/os2_borger_dk.features.field.inc similarity index 89% rename from os2web_borger_dk.features.field.inc rename to os2_borger_dk.features.field.inc index 5dc83e8..6b8b1b5 100644 --- a/os2web_borger_dk.features.field.inc +++ b/os2_borger_dk.features.field.inc @@ -1,17 +1,17 @@ array( 'active' => '1', 'cardinality' => '1', @@ -40,7 +40,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_with_summary', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'summary' => '', @@ -130,14 +130,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_image'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_image'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_image'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_image'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '-1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_image', + 'field_name' => 'field_os2_borger_dk_image', 'foreign keys' => array( 'fid' => array( 'columns' => array( @@ -161,7 +161,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'image', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'deleted' => '0', 'description' => '', 'display' => array( @@ -189,7 +189,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_image', + 'field_name' => 'field_os2_borger_dk_image', 'label' => 'Billede', 'required' => 0, 'settings' => array( @@ -231,14 +231,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_borgerurl'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_borgerurl'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_borgerurl'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_borgerurl'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_borgerurl', + 'field_name' => 'field_os2_borger_dk_borgerurl', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -261,7 +261,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => '0', 'description' => '', @@ -286,7 +286,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_borgerurl', + 'field_name' => 'field_os2_borger_dk_borgerurl', 'label' => 'Borger.dk-URL', 'required' => 0, 'settings' => array( @@ -343,14 +343,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_byline'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_byline'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_byline'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_byline'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_byline', + 'field_name' => 'field_os2_borger_dk_byline', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -373,7 +373,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => '0', 'description' => '', @@ -399,7 +399,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_byline', + 'field_name' => 'field_os2_borger_dk_byline', 'label' => 'Byline', 'required' => 0, 'settings' => array( @@ -456,14 +456,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_formterm'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_formterm'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_formterm'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_formterm'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '-1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_formterm', + 'field_name' => 'field_os2_borger_dk_formterm', 'foreign keys' => array( 'tid' => array( 'columns' => array( @@ -482,7 +482,7 @@ function os2web_borger_dk_field_default_fields() { 'settings' => array( 'allowed_values' => array( 0 => array( - 'vocabulary' => 'os2web_borger_dk_form_menu', + 'vocabulary' => 'os2_borger_dk_form_menu', 'parent' => '0', ), ), @@ -492,7 +492,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'taxonomy_term_reference', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => '0', 'description' => '', @@ -517,7 +517,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_formterm', + 'field_name' => 'field_os2_borger_dk_formterm', 'label' => 'FORM Emneord', 'required' => 0, 'settings' => array( @@ -537,14 +537,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_header'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_header'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_header'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_header'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_header', + 'field_name' => 'field_os2_borger_dk_header', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -565,7 +565,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -596,7 +596,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_header', + 'field_name' => 'field_os2_borger_dk_header', 'label' => 'Header', 'required' => 0, 'settings' => array( @@ -653,14 +653,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_legislati'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_legislati'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_legislati'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_legislati'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_legislati', + 'field_name' => 'field_os2_borger_dk_legislati', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -681,7 +681,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -712,7 +712,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_legislati', + 'field_name' => 'field_os2_borger_dk_legislati', 'label' => 'Legislation', 'required' => 0, 'settings' => array( @@ -769,14 +769,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_pagetitle'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_pagetitle'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_pagetitle'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_pagetitle'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_pagetitle', + 'field_name' => 'field_os2_borger_dk_pagetitle', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -799,7 +799,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => '0', 'description' => '', @@ -825,7 +825,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_pagetitle', + 'field_name' => 'field_os2_borger_dk_pagetitle', 'label' => 'Page title', 'required' => 0, 'settings' => array( @@ -882,14 +882,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_post_text'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_post_text'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_post_text'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_post_text'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_post_text', + 'field_name' => 'field_os2_borger_dk_post_text', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -910,7 +910,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -940,7 +940,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_post_text', + 'field_name' => 'field_os2_borger_dk_post_text', 'label' => 'Post-text', 'required' => 0, 'settings' => array( @@ -997,14 +997,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_pre_text'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_pre_text'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_pre_text'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_pre_text'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_pre_text', + 'field_name' => 'field_os2_borger_dk_pre_text', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -1025,7 +1025,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -1056,7 +1056,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_pre_text', + 'field_name' => 'field_os2_borger_dk_pre_text', 'label' => 'Pre-text', 'required' => 0, 'settings' => array( @@ -1113,14 +1113,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_recommend'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_recommend'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_recommend'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_recommend'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_recommend', + 'field_name' => 'field_os2_borger_dk_recommend', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -1141,7 +1141,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -1172,7 +1172,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_recommend', + 'field_name' => 'field_os2_borger_dk_recommend', 'label' => 'Recommended', 'required' => 0, 'settings' => array( @@ -1229,14 +1229,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_selfservi'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_selfservi'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_selfservi'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_selfservi'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_selfservi', + 'field_name' => 'field_os2_borger_dk_selfservi', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -1257,7 +1257,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -1288,7 +1288,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_selfservi', + 'field_name' => 'field_os2_borger_dk_selfservi', 'label' => 'Portalservice/self-service', 'required' => 0, 'settings' => array( @@ -1345,14 +1345,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_shortlist'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_shortlist'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_shortlist'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_shortlist'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_shortlist', + 'field_name' => 'field_os2_borger_dk_shortlist', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -1373,7 +1373,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'text_long', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -1404,7 +1404,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_shortlist', + 'field_name' => 'field_os2_borger_dk_shortlist', 'label' => 'Shortlist', 'required' => 0, 'settings' => array( @@ -1461,14 +1461,14 @@ function os2web_borger_dk_field_default_fields() { ), ); - // Exported field: 'node-os2web_borger_dk_article-field_os2web_borger_dk_kle'. - $fields['node-os2web_borger_dk_article-field_os2web_borger_dk_kle'] = array( + // Exported field: 'node-os2_borger_dk_article-field_os2_borger_dk_kle'. + $fields['node-os2_borger_dk_article-field_os2_borger_dk_kle'] = array( 'field_config' => array( 'active' => '1', 'cardinality' => '-1', 'deleted' => '0', 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_kle', + 'field_name' => 'field_os2_borger_dk_kle', 'foreign keys' => array( 'tid' => array( 'columns' => array( @@ -1497,7 +1497,7 @@ function os2web_borger_dk_field_default_fields() { 'type' => 'taxonomy_term_reference', ), 'field_instance' => array( - 'bundle' => 'os2web_borger_dk_article', + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => '0', 'description' => '', @@ -1522,7 +1522,7 @@ function os2web_borger_dk_field_default_fields() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_kle', + 'field_name' => 'field_os2_borger_dk_kle', 'label' => 'KL Emneord', 'required' => 0, 'settings' => array( diff --git a/os2web_borger_dk.features.field_base.inc b/os2_borger_dk.features.field_base.inc similarity index 74% rename from os2web_borger_dk.features.field_base.inc rename to os2_borger_dk.features.field_base.inc index de1617d..ebdfffe 100644 --- a/os2web_borger_dk.features.field_base.inc +++ b/os2_borger_dk.features.field_base.inc @@ -1,22 +1,22 @@ 1, 'cardinality' => -1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_image', + 'field_name' => 'field_os2_borger_dk_image', 'foreign keys' => array( 'fid' => array( 'columns' => array( @@ -40,13 +40,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'image', ); - // Exported field_base: 'field_os2web_borger_dk_borgerurl' - $field_bases['field_os2web_borger_dk_borgerurl'] = array( + // Exported field_base: 'field_os2_borger_dk_borgerurl' + $field_bases['field_os2_borger_dk_borgerurl'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_borgerurl', + 'field_name' => 'field_os2_borger_dk_borgerurl', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -69,13 +69,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text', ); - // Exported field_base: 'field_os2web_borger_dk_byline' - $field_bases['field_os2web_borger_dk_byline'] = array( + // Exported field_base: 'field_os2_borger_dk_byline' + $field_bases['field_os2_borger_dk_byline'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_byline', + 'field_name' => 'field_os2_borger_dk_byline', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -98,13 +98,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text', ); - // Exported field_base: 'field_os2web_borger_dk_formterm' - $field_bases['field_os2web_borger_dk_formterm'] = array( + // Exported field_base: 'field_os2_borger_dk_formterm' + $field_bases['field_os2_borger_dk_formterm'] = array( 'active' => 1, 'cardinality' => -1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_formterm', + 'field_name' => 'field_os2_borger_dk_formterm', 'foreign keys' => array( 'tid' => array( 'columns' => array( @@ -123,7 +123,7 @@ function os2web_borger_dk_field_default_field_bases() { 'settings' => array( 'allowed_values' => array( 0 => array( - 'vocabulary' => 'os2web_borger_dk_form_menu', + 'vocabulary' => 'os2_borger_dk_form_menu', 'parent' => 0, ), ), @@ -133,13 +133,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'taxonomy_term_reference', ); - // Exported field_base: 'field_os2web_borger_dk_header' - $field_bases['field_os2web_borger_dk_header'] = array( + // Exported field_base: 'field_os2_borger_dk_header' + $field_bases['field_os2_borger_dk_header'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_header', + 'field_name' => 'field_os2_borger_dk_header', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -160,13 +160,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_legislati' - $field_bases['field_os2web_borger_dk_legislati'] = array( + // Exported field_base: 'field_os2_borger_dk_legislati' + $field_bases['field_os2_borger_dk_legislati'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_legislati', + 'field_name' => 'field_os2_borger_dk_legislati', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -187,13 +187,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_pagetitle' - $field_bases['field_os2web_borger_dk_pagetitle'] = array( + // Exported field_base: 'field_os2_borger_dk_pagetitle' + $field_bases['field_os2_borger_dk_pagetitle'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_pagetitle', + 'field_name' => 'field_os2_borger_dk_pagetitle', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -216,13 +216,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text', ); - // Exported field_base: 'field_os2web_borger_dk_post_text' - $field_bases['field_os2web_borger_dk_post_text'] = array( + // Exported field_base: 'field_os2_borger_dk_post_text' + $field_bases['field_os2_borger_dk_post_text'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_post_text', + 'field_name' => 'field_os2_borger_dk_post_text', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -243,13 +243,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_pre_text' - $field_bases['field_os2web_borger_dk_pre_text'] = array( + // Exported field_base: 'field_os2_borger_dk_pre_text' + $field_bases['field_os2_borger_dk_pre_text'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_pre_text', + 'field_name' => 'field_os2_borger_dk_pre_text', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -270,13 +270,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_recommend' - $field_bases['field_os2web_borger_dk_recommend'] = array( + // Exported field_base: 'field_os2_borger_dk_recommend' + $field_bases['field_os2_borger_dk_recommend'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_recommend', + 'field_name' => 'field_os2_borger_dk_recommend', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -297,13 +297,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_selfservi' - $field_bases['field_os2web_borger_dk_selfservi'] = array( + // Exported field_base: 'field_os2_borger_dk_selfservi' + $field_bases['field_os2_borger_dk_selfservi'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_selfservi', + 'field_name' => 'field_os2_borger_dk_selfservi', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -324,13 +324,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_shortlist' - $field_bases['field_os2web_borger_dk_shortlist'] = array( + // Exported field_base: 'field_os2_borger_dk_shortlist' + $field_bases['field_os2_borger_dk_shortlist'] = array( 'active' => 1, 'cardinality' => 1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_shortlist', + 'field_name' => 'field_os2_borger_dk_shortlist', 'foreign keys' => array( 'format' => array( 'columns' => array( @@ -351,13 +351,13 @@ function os2web_borger_dk_field_default_field_bases() { 'type' => 'text_long', ); - // Exported field_base: 'field_os2web_borger_dk_kle' - $field_bases['field_os2web_borger_dk_kle'] = array( + // Exported field_base: 'field_os2_borger_dk_kle' + $field_bases['field_os2_borger_dk_kle'] = array( 'active' => 1, 'cardinality' => -1, 'deleted' => 0, 'entity_types' => array(), - 'field_name' => 'field_os2web_borger_dk_kle', + 'field_name' => 'field_os2_borger_dk_kle', 'foreign keys' => array( 'tid' => array( 'columns' => array( diff --git a/os2web_borger_dk.features.field_instance.inc b/os2_borger_dk.features.field_instance.inc similarity index 87% rename from os2web_borger_dk.features.field_instance.inc rename to os2_borger_dk.features.field_instance.inc index 5099ed2..83a2f3a 100644 --- a/os2web_borger_dk.features.field_instance.inc +++ b/os2_borger_dk.features.field_instance.inc @@ -1,18 +1,18 @@ 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-body' + $field_instances['node-os2_borger_dk_article-body'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'summary' => '', @@ -101,9 +101,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_image' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_image'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_image' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_image'] = array( + 'bundle' => 'os2_borger_dk_article', 'deleted' => 0, 'description' => '', 'display' => array( @@ -131,7 +131,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_image', + 'field_name' => 'field_os2_borger_dk_image', 'label' => 'Billede', 'required' => 0, 'settings' => array( @@ -172,9 +172,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_borgerurl' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_borgerurl'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_borgerurl' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_borgerurl'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => 0, 'description' => '', @@ -199,7 +199,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_borgerurl', + 'field_name' => 'field_os2_borger_dk_borgerurl', 'label' => 'Borger.dk-URL', 'required' => 0, 'settings' => array( @@ -255,9 +255,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_byline' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_byline'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_byline' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_byline'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => 0, 'description' => '', @@ -283,7 +283,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_byline', + 'field_name' => 'field_os2_borger_dk_byline', 'label' => 'Byline', 'required' => 0, 'settings' => array( @@ -339,9 +339,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_formterm' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_formterm'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_formterm' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_formterm'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => 0, 'description' => '', @@ -366,7 +366,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_formterm', + 'field_name' => 'field_os2_borger_dk_formterm', 'label' => 'FORM Emneord', 'required' => 0, 'settings' => array( @@ -385,9 +385,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_header' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_header'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_header' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_header'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -418,7 +418,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_header', + 'field_name' => 'field_os2_borger_dk_header', 'label' => 'Header', 'required' => 0, 'settings' => array( @@ -474,9 +474,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_legislati' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_legislati'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_legislati' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_legislati'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -507,7 +507,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_legislati', + 'field_name' => 'field_os2_borger_dk_legislati', 'label' => 'Legislation', 'required' => 0, 'settings' => array( @@ -563,9 +563,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_pagetitle' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_pagetitle'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_pagetitle' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_pagetitle'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => 0, 'description' => '', @@ -591,7 +591,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_pagetitle', + 'field_name' => 'field_os2_borger_dk_pagetitle', 'label' => 'Page title', 'required' => 0, 'settings' => array( @@ -647,9 +647,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_post_text' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_post_text'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_post_text' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_post_text'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -679,7 +679,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_post_text', + 'field_name' => 'field_os2_borger_dk_post_text', 'label' => 'Post-text', 'required' => 0, 'settings' => array( @@ -735,9 +735,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_pre_text' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_pre_text'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_pre_text' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_pre_text'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -768,7 +768,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_pre_text', + 'field_name' => 'field_os2_borger_dk_pre_text', 'label' => 'Pre-text', 'required' => 0, 'settings' => array( @@ -824,9 +824,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_recommend' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_recommend'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_recommend' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_recommend'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -857,7 +857,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_recommend', + 'field_name' => 'field_os2_borger_dk_recommend', 'label' => 'Recommended', 'required' => 0, 'settings' => array( @@ -913,9 +913,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_selfservi' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_selfservi'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_selfservi' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_selfservi'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -946,7 +946,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_selfservi', + 'field_name' => 'field_os2_borger_dk_selfservi', 'label' => 'Portalservice/self-service', 'required' => 0, 'settings' => array( @@ -1002,9 +1002,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_shortlist' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_shortlist'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_shortlist' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_shortlist'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => array( 0 => array( 'value' => '', @@ -1035,7 +1035,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_shortlist', + 'field_name' => 'field_os2_borger_dk_shortlist', 'label' => 'Shortlist', 'required' => 0, 'settings' => array( @@ -1091,9 +1091,9 @@ function os2web_borger_dk_field_default_field_instances() { ), ); - // Exported field_instance: 'node-os2web_borger_dk_article-field_os2web_borger_dk_kle' - $field_instances['node-os2web_borger_dk_article-field_os2web_borger_dk_kle'] = array( - 'bundle' => 'os2web_borger_dk_article', + // Exported field_instance: 'node-os2_borger_dk_article-field_os2_borger_dk_kle' + $field_instances['node-os2_borger_dk_article-field_os2_borger_dk_kle'] = array( + 'bundle' => 'os2_borger_dk_article', 'default_value' => NULL, 'deleted' => 0, 'description' => '', @@ -1118,7 +1118,7 @@ function os2web_borger_dk_field_default_field_instances() { ), ), 'entity_type' => 'node', - 'field_name' => 'field_os2web_borger_dk_kle', + 'field_name' => 'field_os2_borger_dk_kle', 'label' => 'KL Emneord', 'required' => 0, 'settings' => array( diff --git a/os2web_borger_dk.features.inc b/os2_borger_dk.features.inc similarity index 77% rename from os2web_borger_dk.features.inc rename to os2_borger_dk.features.inc index 458f4b7..472298e 100644 --- a/os2web_borger_dk.features.inc +++ b/os2_borger_dk.features.inc @@ -1,13 +1,13 @@ "1"); @@ -17,9 +17,9 @@ function os2web_borger_dk_ctools_plugin_api() { /** * Implements hook_node_info(). */ -function os2web_borger_dk_node_info() { +function os2_borger_dk_node_info() { $items = array( - 'os2web_borger_dk_article' => array( + 'os2_borger_dk_article' => array( 'name' => t('Borger.dk article'), 'base' => 'node_content', 'description' => t('Handles articles from Borger.dk. Including integration with the Borger.dk-webservice'), diff --git a/os2web_borger_dk.features.taxonomy.inc b/os2_borger_dk.features.taxonomy.inc similarity index 50% rename from os2web_borger_dk.features.taxonomy.inc rename to os2_borger_dk.features.taxonomy.inc index 4519f40..68b1b74 100644 --- a/os2web_borger_dk.features.taxonomy.inc +++ b/os2_borger_dk.features.taxonomy.inc @@ -1,12 +1,12 @@ 1, 'field_os2web_borger_dk_kle' => 2); + $locked_os2_types = array('field_os2_borger_dk_borgerurl' => 1, 'field_os2_borger_dk_kle' => 2); if (!empty($data)) { $edit_field_names = array('title' => 'title'); $display_field_names = array('title' => 'title'); foreach ($data as $type => $item) { - if (empty($locked_os2web_types[$type])) { + if (empty($locked_os2_types[$type])) { $edit_field_names[$type] = $type; } - if (empty($locked_os2web_types[$type]) || $locked_os2web_types[$type] == 1) { + if (empty($locked_os2_types[$type]) || $locked_os2_types[$type] == 1) { // Only some locked types are visible. Others are taxonomies etc. $display_field_names[$type] = $type; } } - variable_set('os2web_borger_dk_display', $display_field_names); - variable_set('os2web_borger_dk_editable', $edit_field_names); - variable_set('os2web_borger_dk_admin_last_settings', $display_field_names); + variable_set('os2_borger_dk_display', $display_field_names); + variable_set('os2_borger_dk_editable', $edit_field_names); + variable_set('os2_borger_dk_admin_last_settings', $display_field_names); } else { - variable_set('os2web_borger_dk_display', array()); - variable_set('os2web_borger_dk_editable', array()); + variable_set('os2_borger_dk_display', array()); + variable_set('os2_borger_dk_editable', array()); } - variable_set('os2web_borger_dk_municipality_active', '0'); - variable_set('os2web_borger_dk_nightly_article_sync', '0'); - variable_set('os2web_borger_dk_last_update', 1970); - variable_set('os2web_borger_dk_menus_last_update', 1970); - variable_set('os2web_borger_dk_form_last_update', 1970); - variable_set('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - variable_set('os2web_borger_dk_webservice_request_limit', 100); - variable_set('os2web_borger_dk_webservice_time_limit', 60); - variable_set('os2web_borger_dk_webservice_request_counter', 0); - variable_set('os2web_borger_dk_webservice_time_counter', time()); - variable_set('os2web_borger_dk_titles_sync', 1); - variable_set('os2web_borger_dk_titles_search_auto_submit', 1); - variable_set('os2web_borger_dk_menus_import', 0); - variable_set('os2web_borger_dk_nightly_menu_sync', '0'); - variable_set('os2web_borger_dk_microarticle_active', '0'); - variable_set('os2web_borger_dk_weekly_borger_dk_menus_import', 0); - variable_set('os2web_borger_dk_old_menu_structure', ''); - variable_set('os2web_borger_dk_borger_dk_menu_name', 'Borger.dk menu'); - variable_set('os2web_borger_dk_not_found_menu_mlid', 0); - variable_set('os2web_borger_dk_form_menu_vid', FALSE); - variable_set('os2web_borger_dk_form_menu_tid_other', FALSE); - variable_set('os2web_borger_dk_old_form_structure', FALSE); + variable_set('os2_borger_dk_municipality_active', '0'); + variable_set('os2_borger_dk_nightly_article_sync', '0'); + variable_set('os2_borger_dk_last_update', 1970); + variable_set('os2_borger_dk_menus_last_update', 1970); + variable_set('os2_borger_dk_form_last_update', 1970); + variable_set('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + variable_set('os2_borger_dk_webservice_request_limit', 100); + variable_set('os2_borger_dk_webservice_time_limit', 60); + variable_set('os2_borger_dk_webservice_request_counter', 0); + variable_set('os2_borger_dk_webservice_time_counter', time()); + variable_set('os2_borger_dk_titles_sync', 1); + variable_set('os2_borger_dk_titles_search_auto_submit', 1); + variable_set('os2_borger_dk_menus_import', 0); + variable_set('os2_borger_dk_nightly_menu_sync', '0'); + variable_set('os2_borger_dk_microarticle_active', '0'); + variable_set('os2_borger_dk_weekly_borger_dk_menus_import', 0); + variable_set('os2_borger_dk_old_menu_structure', ''); + variable_set('os2_borger_dk_borger_dk_menu_name', 'Borger.dk menu'); + variable_set('os2_borger_dk_not_found_menu_mlid', 0); + variable_set('os2_borger_dk_form_menu_vid', FALSE); + variable_set('os2_borger_dk_form_menu_tid_other', FALSE); + variable_set('os2_borger_dk_old_form_structure', FALSE); // Next we populate the titles-table for title-autocomplete - _os2web_borger_dk_titles_cronbatch(TRUE); + _os2_borger_dk_titles_cronbatch(TRUE); } /** * Implements hook_enable(). */ -function os2web_borger_dk_enable() { +function os2_borger_dk_enable() { drupal_set_message(t('The OS2web - Borger.dk Articles module was successfully enabled.'), 'status'); - drupal_set_message(t('You should configure the module here "!url" before using it.', array('!url' => l(t('Borger.dk Settings'), 'admin/config/os2web_borger_dk/settings'))), 'warning'); + drupal_set_message(t('You should configure the module here "!url" before using it.', array('!url' => l(t('Borger.dk Settings'), 'admin/config/os2_borger_dk/settings'))), 'warning'); } /** * Implements hook_schema(). */ -function os2web_borger_dk_schema() { - $schema['os2web_borger_dk_article'] = array( +function os2_borger_dk_schema() { + $schema['os2_borger_dk_article'] = array( 'description' => 'Table for storing the individual article items imported from Borger.dk.', 'fields' => array( 'nid' => array( @@ -171,7 +171,7 @@ function os2web_borger_dk_schema() { ), ); - $schema['os2web_borger_dk_article_titles'] = array( + $schema['os2_borger_dk_article_titles'] = array( 'description' => 'Table for storing a list of availlable article items, and articles imported from Borger.dk.', 'fields' => array( 'ArticleID' => array( diff --git a/os2web_borger_dk.make b/os2_borger_dk.make similarity index 100% rename from os2web_borger_dk.make rename to os2_borger_dk.make diff --git a/os2web_borger_dk.module b/os2_borger_dk.module similarity index 50% rename from os2web_borger_dk.module rename to os2_borger_dk.module index 43433af..9ac2c8a 100644 --- a/os2web_borger_dk.module +++ b/os2_borger_dk.module @@ -2,22 +2,22 @@ /** * @file - * Code for the OS2web - Borger.dk feature. + * Code for the OS2 - Borger.dk feature. */ -include_once 'os2web_borger_dk.features.inc'; +include_once 'os2_borger_dk.features.inc'; /** * Text formats */ -define('BORGERDK_TEXT_FORMAT_PLAIN', variable_get('os2web_borger_dk_articles_text_format_plain', 'plain_text')); -define('BORGERDK_TEXT_FORMAT_HTML', variable_get('os2web_borger_dk_articles_text_format_html', 'full_html')); +define('BORGERDK_TEXT_FORMAT_PLAIN', variable_get('os2_borger_dk_articles_text_format_plain', 'plain_text')); +define('BORGERDK_TEXT_FORMAT_HTML', variable_get('os2_borger_dk_articles_text_format_html', 'full_html')); /** * Implements hook_menu(). */ -function os2web_borger_dk_menu() { +function os2_borger_dk_menu() { $items = array(); - $items['admin/config/os2web_borger_dk'] = array( + $items['admin/config/os2_borger_dk'] = array( 'title' => 'OS2web borger.dk settings', 'description' => 'General settings for Borger.dk articles, fx, modify fields display, editable and syncronization time', 'position' => 'right', @@ -25,20 +25,20 @@ function os2web_borger_dk_menu() { 'page callback' => 'system_admin_menu_block_page', 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), - 'access arguments' => array('administer os2web borgerdk article settings'), + 'access arguments' => array('administer os2 borgerdk article settings'), ); - $items['admin/config/os2web_borger_dk/settings'] = array( + $items['admin/config/os2_borger_dk/settings'] = array( 'title' => 'OS2web Borger.dk Settings', 'description' => 'General settings for the OS2Web borger.dk', 'page callback' => 'drupal_get_form', - 'page arguments' => array('os2web_borger_dk_settings_form'), - 'access arguments' => array('administer os2web borgerdk article settings'), - 'file' => 'os2web_borger_dk.admin.inc', + 'page arguments' => array('os2_borger_dk_settings_form'), + 'access arguments' => array('administer os2 borgerdk article settings'), + 'file' => 'os2_borger_dk.admin.inc', ); - $items['import/os2web_borger_dk/autocomplete'] = array( - 'page callback' => '_os2web_borger_dk_autocomplete_callback', + $items['import/os2_borger_dk/autocomplete'] = array( + 'page callback' => '_os2_borger_dk_autocomplete_callback', 'page arguments' => array(3), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, @@ -49,9 +49,9 @@ function os2web_borger_dk_menu() { /** * Implements hook_permission(). */ -function os2web_borger_dk_permission() { +function os2_borger_dk_permission() { return array( - 'administer os2web borgerdk article settings' => array( + 'administer os2 borgerdk article settings' => array( 'title' => t('Administer OS2Web Borger.dk article settings'), 'description' => t('Administer settings for the OS2Web Borger.dk article import module.'), ), @@ -61,9 +61,9 @@ function os2web_borger_dk_permission() { /** * Implements hook_action_info(). */ -function os2web_borger_dk_action_info() { +function os2_borger_dk_action_info() { return array( - 'os2web_borger_dk_articles_update_action' => array( + 'os2_borger_dk_articles_update_action' => array( 'type' => 'node', 'label' => t('Update article from borger.dk'), 'configurable' => FALSE, @@ -72,14 +72,14 @@ function os2web_borger_dk_action_info() { } /** - * Function _os2web_borger_dk_autocomplete_callback(). + * Function _os2_borger_dk_autocomplete_callback(). */ -function _os2web_borger_dk_autocomplete_callback($string = '') { +function _os2_borger_dk_autocomplete_callback($string = '') { $matches = array(); if ($string) { - $query = db_select('os2web_borger_dk_article_titles', 'o') + $query = db_select('os2_borger_dk_article_titles', 'o') ->fields('o', array('ArticleID', 'ArticleStatus', 'ArticleTitle')) ->condition('o.ArticleStatus', 0, '>=') ->condition('o.ArticleTitle', db_like($string) . '%', 'LIKE') @@ -103,42 +103,42 @@ function _os2web_borger_dk_autocomplete_callback($string = '') { /** * Implements hook_form_alter(). */ -function os2web_borger_dk_form_alter(&$form, &$form_state, $form_id) { - static $os2web_borger_dk_falter_form; +function os2_borger_dk_form_alter(&$form, &$form_state, $form_id) { + static $os2_borger_dk_falter_form; if (isset($form['type']) && isset($form['#node'])) { - if ($form_id == 'os2web_borger_dk_article_node_form') { - if (isset($os2web_borger_dk_falter_form) && !empty($os2web_borger_dk_falter_form)) { + if ($form_id == 'os2_borger_dk_article_node_form') { + if (isset($os2_borger_dk_falter_form) && !empty($os2_borger_dk_falter_form)) { // If the static form-cache has already been build then // we simply return the form-cache value instead of // building the whole form twice per request. - $form = $os2web_borger_dk_falter_form; + $form = $os2_borger_dk_falter_form; } else { $node = $form_state['node']; - $titles_autocomplete = variable_get('os2web_borger_dk_titles_sync', FALSE); + $titles_autocomplete = variable_get('os2_borger_dk_titles_sync', FALSE); if (!isset($node->nid) || isset($node->is_new)) { - os2web_borger_dk_autocomplete_form($form, $form_state); + os2_borger_dk_autocomplete_form($form, $form_state); } - $locked_os2web_types = array( - 'field_os2web_borger_dk_borgerurl' => 1, - 'field_os2web_borger_dk_kle' => 2, - 'field_os2web_borger_dk_formterm' => 2, + $locked_os2_types = array( + 'field_os2_borger_dk_borgerurl' => 1, + 'field_os2_borger_dk_kle' => 2, + 'field_os2_borger_dk_formterm' => 2, ); - $admin_display_fields = variable_get('os2web_borger_dk_display'); + $admin_display_fields = variable_get('os2_borger_dk_display'); - $data = field_info_instances('node', 'os2web_borger_dk_article'); + $data = field_info_instances('node', 'os2_borger_dk_article'); // First we create a list of all field-names and labels. $checkbox_opts = array(); $initial_values = array(); $data['title'] = array('label' => 'Title'); - $visible_items = (isset($form['#node']->os2web_borger_dk_article['field_settings'])) ? $form['#node']->os2web_borger_dk_article['field_settings'] : NULL; - $admin_last_settings = variable_get('os2web_borger_dk_admin_last_settings'); + $visible_items = (isset($form['#node']->os2_borger_dk_article['field_settings'])) ? $form['#node']->os2_borger_dk_article['field_settings'] : NULL; + $admin_last_settings = variable_get('os2_borger_dk_admin_last_settings'); foreach ($data as $type => $item) { - if ((isset($locked_os2web_types[$type]) && $locked_os2web_types[$type] != 2) - ||!isset($locked_os2web_types[$type])) { + if ((isset($locked_os2_types[$type]) && $locked_os2_types[$type] != 2) + ||!isset($locked_os2_types[$type])) { // Then we insert field label to our checkboxes options. $checkbox_opts[$type] = $item['label']; // admin-config says we should show this item as an option. @@ -165,7 +165,7 @@ function os2web_borger_dk_form_alter(&$form, &$form_state, $form_id) { } } } - variable_set('os2web_borger_dk_admin_last_settings', $admin_display_fields); + variable_set('os2_borger_dk_admin_last_settings', $admin_display_fields); // This is the field fieldset. $form['fields_visible_formset'] = array( @@ -175,128 +175,121 @@ function os2web_borger_dk_form_alter(&$form, &$form_state, $form_id) { '#description' => t('Set the visibility of article fields.'), '#group' => 'additional_settings', ); - $form['fields_visible_formset']['os2web_borger_dk_field_settings'] = array( + $form['fields_visible_formset']['os2_borger_dk_field_settings'] = array( '#type' => 'checkboxes', '#options' => $checkbox_opts, '#description' => t("Check or uncheck the respective fields"), '#default_value' => $initial_values, - '#after_build' => array('os2web_borger_dk_process_checkboxes_os2web_borger_dk_article'), + '#after_build' => array('os2_borger_dk_process_checkboxes_os2_borger_dk_article'), '#group' => 'additional_settings', ); if (isset($form['#node']->nid)) { - $form['actions']['os2web_borger_dk_synchronize'] = array( + $form['actions']['os2_borger_dk_synchronize'] = array( '#type' => 'submit', '#value' => t("Update article now"), '#weight' => 100, '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['node_preview'])), - '#submit' => array('os2web_borger_dk_sync_submit'), + '#submit' => array('os2_borger_dk_sync_submit'), ); } - $form['#after_build'][] = 'os2web_borger_dk_after_build'; + $form['#after_build'][] = 'os2_borger_dk_after_build'; // Micro articles. if (isset($form['#node']->nid)) { - $microarticle = variable_get('os2web_borger_dk_microarticle_active'); - $value_editable = variable_get('os2web_borger_dk_editable', array(NULL)); + $microarticle = variable_get('os2_borger_dk_microarticle_active'); + $value_editable = variable_get('os2_borger_dk_editable', array(NULL)); // If microarticle is set up to show. if ($microarticle) { - $field_microarticle_settings = (isset($form['#node']->os2web_borger_dk_microarticle['field_microarticle_settings'])) ? $form['#node']->os2web_borger_dk_microarticle['field_microarticle_settings'] : NULL; - $body_text = (isset($form['body']['und']['0']['#entity']->body['und']['0']['value'])) ? $form['body']['und']['0']['#entity']->body['und']['0']['value'] : ''; + $field_microarticle_settings = (isset($form['#node']->os2_borger_dk_microarticle['field_microarticle_settings'])) ? $form['#node']->os2_borger_dk_microarticle['field_microarticle_settings'] : NULL; + $body_text = (isset($form['body'][LANGUAGE_NONE]['0']['#entity']->body[LANGUAGE_NONE]['0']['value'])) ? $form['body'][LANGUAGE_NONE]['0']['#entity']->body[LANGUAGE_NONE]['0']['value'] : ''; - hide($form['body']); + $form['body']['#access'] = FALSE; - // Link break: in windows \r\n, linux \n. - preg_match("/<\/div>\n/", $body_text, $link_break); - if (isset($link_break[0])) { - $div = preg_split("/\n<\/div>\n/", $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - else { - $div = preg_split('/\r\n<[\/]div>\r\n/', $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } + $doc = new DOMDocument(); + $doc->loadHTML('' . $body_text); + $xpath = new DOMXPath($doc); - foreach ($div as $key => $text) { - $microno = $key + 1; - $checkboxno = 'os2web_borger_dk_micro_' . $microno; - $h2_text_field = 'os2web_borger_dk_micro_h2_' . $microno; - $text_area = 'os2web_borger_dk_micro_textarea_' . $microno; - - // The last div is a link break. - if ($key != count($div) - 1) { - // Frist we get the microarticle title. - preg_match("/

(.*?)<\/h2>/", $div[$key], $match); - $h2 = isset($match[1]) ? $match[1] : ''; - - // Then we get the div content. - preg_match("/
(.*?)\r\n <\/div>/s", $div[$key], $match2); - if (empty($match2[1])) { - preg_match("/
(.*?)<\/div> /s", $div[$key], $match2); - } - $micro_text = isset($match2[1]) ? $match2[1] : ''; + $results = $xpath->query("//*[@class='microArticle']"); - if ($microno >= 10) { - $weight = '6.' . ($microno - 10); - } - else { - $weight = '5.' . $microno; - } - // For each microarticle we build a fieldset, a textfield for - // title, a textarea for div content and a checkbox for - // visibility option. - $form['os2web_borger_dk_micro_settings_' . $microno] = array( - '#type' => 'fieldset', - '#weight' => $weight, - ); + $microno = 0; + foreach ($results as $item) { + foreach ($item->getElementsByTagName('h2') as $articletitle) { + $title = trim($articletitle->nodeValue); + } + + $text = ''; + foreach ($item->getElementsByTagName('div')->item(0)->childNodes as $articletext) { + $text .= str_replace(' ', '', $doc->saveXML($articletext, LIBXML_NOEMPTYTAG)); + } + + $microno++; + $checkboxno = 'os2_borger_dk_micro_' . $microno; + $h2_text_field = 'os2_borger_dk_micro_h2_' . $microno; + $text_area = 'os2_borger_dk_micro_textarea_' . $microno; - $form['os2web_borger_dk_micro_settings_' . $microno][$h2_text_field] = array( - '#type' => 'textfield', - '#title' => t('Title of Microarticle') . ' ' . $microno, - '#default_value' => variable_get($h2_text_field, $h2), + if ($microno >= 10) { + $weight = '6.' . ($microno - 10); + } + else { + $weight = '5.' . $microno; + } + // For each microarticle we build a fieldset, a textfield for + // title, a textarea for div content and a checkbox for + // visibility option. + $form['os2_borger_dk_micro_settings_' . $microno] = array( + '#type' => 'fieldset', + '#weight' => $weight, + ); + + $form['os2_borger_dk_micro_settings_' . $microno][$h2_text_field] = array( + '#type' => 'textfield', + '#title' => t('Title of Microarticle') . ' ' . $microno, + '#default_value' => variable_get($h2_text_field, $title), + ); + // If body (article text) visible/editable option is checked + // by ADMIN and EDITOR, then forms disabled is false. + if ($visible_items['body'] === "body" && $admin_display_fields['body'] === "body" && $value_editable['body'] === "body") { + $form['os2_borger_dk_micro_settings_' . $microno][$text_area] = array( + // '#title' => t('Microarticle ' . $microno), + '#type' => 'textarea', + '#default_value' => trim($text), ); - // If body (article text) visible/editable option is checked - // by ADMIN and EDITOR, then forms disabled is false. - if ($visible_items['body'] === "body" && $admin_display_fields['body'] === "body" && $value_editable['body'] === "body") { - $form['os2web_borger_dk_micro_settings_' . $microno][$text_area] = array( - // '#title' => t('Microarticle ' . $microno), - '#type' => 'textarea', - '#default_value' => $micro_text, - ); - $form['os2web_borger_dk_micro_settings_' . $microno][$checkboxno] = array( + $form['os2_borger_dk_micro_settings_' . $microno][$checkboxno] = array( + '#type' => 'checkbox', + '#title' => t('Visible'), + '#description' => t("Check to display this microarticle"), + '#default_value' => isset($field_microarticle_settings[$microno]) ? $field_microarticle_settings[$microno] : 1, + ); + } + // If body (article text) display option is UNCHECKED + // by ADMIN or EDITOR, then forms disabled is TRUE. + else { + $form['os2_borger_dk_micro_settings_' . $microno][$text_area] = array( + '#title' => t('Microarticle') . ' ' . $microno, + '#type' => 'textarea', + '#disabled' => TRUE, + '#default_value' => trim($text), + '#description' => t("Please check 'Article text' visible option below in 'Toggle display', or in OS2web borger.dk Settings (Toggle display/Editable article fields) to show/edit this microarticle."), + ); + // If this microarticle is NOT editable. + if ($value_editable['body'] !== "body") { + $form['os2_borger_dk_micro_settings_' . $microno][$checkboxno] = array( '#type' => 'checkbox', - '#title' => t('Visible'), + '#title' => t('Microarticle Visibility'), '#description' => t("Check to display this microarticle"), '#default_value' => isset($field_microarticle_settings[$microno]) ? $field_microarticle_settings[$microno] : 1, ); } - // If body (article text) display option is UNCHECKED - // by ADMIN or EDITOR, then forms disabled is TRUE. else { - $form['os2web_borger_dk_micro_settings_' . $microno][$text_area] = array( - '#title' => t('Microarticle') . ' ' . $microno, - '#type' => 'textarea', + $form['os2_borger_dk_micro_settings_' . $microno][$checkboxno] = array( + '#type' => 'checkbox', + '#title' => t('Microarticle Visibility'), '#disabled' => TRUE, - '#default_value' => $micro_text, - '#description' => t("Please check 'Article text' visible option below in 'Toggle display', or in OS2web borger.dk Settings (Toggle display/Editable article fields) to show/edit this microarticle."), + '#description' => t("Check to display this microarticle"), + '#default_value' => isset($field_microarticle_settings[$microno]) ? $field_microarticle_settings[$microno] : 1, ); - // If this microarticle is NOT editable. - if ($value_editable['body'] !== "body") { - $form['os2web_borger_dk_micro_settings_' . $microno][$checkboxno] = array( - '#type' => 'checkbox', - '#title' => t('Microarticle Visibility'), - '#description' => t("Check to display this microarticle"), - '#default_value' => isset($field_microarticle_settings[$microno]) ? $field_microarticle_settings[$microno] : 1, - ); - } - else { - $form['os2web_borger_dk_micro_settings_' . $microno][$checkboxno] = array( - '#type' => 'checkbox', - '#title' => t('Microarticle Visibility'), - '#disabled' => TRUE, - '#description' => t("Check to display this microarticle"), - '#default_value' => isset($field_microarticle_settings[$microno]) ? $field_microarticle_settings[$microno] : 1, - ); - } } } } @@ -304,19 +297,19 @@ function os2web_borger_dk_form_alter(&$form, &$form_state, $form_id) { } if (isset($form['#node']->nid) && ($microarticle)) { - $form['actions']['os2web_borger_dk_microarticles_update'] = array( + $form['actions']['os2_borger_dk_microarticles_update'] = array( '#type' => 'submit', '#value' => t("Update microarticle content"), '#weight' => 101, '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['node_preview'])), - '#submit' => array('os2web_borger_dk_microarticles_update_submit'), + '#submit' => array('os2_borger_dk_microarticles_update_submit'), ); } // End of microarticles. // Before we exit this function we set the static form-cache value // so that later calls to this function handling the same request // can return much faster (instead of building the same form twice). - $os2web_borger_dk_falter_form = $form; + $os2_borger_dk_falter_form = $form; } } @@ -324,52 +317,52 @@ function os2web_borger_dk_form_alter(&$form, &$form_state, $form_id) { } /** - * Function os2web_borger_dk_autocomplete_form(). + * Function os2_borger_dk_autocomplete_form(). */ -function os2web_borger_dk_autocomplete_form(&$form, $form_state) { - $titles_autocomplete = variable_get('os2web_borger_dk_titles_sync', FALSE); - $title_search_state = (isset($form_state['values']['os2web_borger_dk_article_search_method'])) ? TRUE : FALSE; +function os2_borger_dk_autocomplete_form(&$form, $form_state) { + $titles_autocomplete = variable_get('os2_borger_dk_titles_sync', FALSE); + $title_search_state = (isset($form_state['values']['os2_borger_dk_article_search_method'])) ? TRUE : FALSE; $url_search = !$title_search_state; - $form['os2web_borger_dk_article_import'] = array( + $form['os2_borger_dk_article_import'] = array( '#type' => 'fieldset', '#title' => t('Import Borger.dk Article'), '#collapsible' => FALSE, ); - $form['os2web_borger_dk_article_import']['os2web_borger_dk_article_url_text'] = array( + $form['os2_borger_dk_article_import']['os2_borger_dk_article_url_text'] = array( '#type' => 'textfield', '#title' => t('Borger.dk Article URL'), - '#default_value' => (isset($form_state['values']['os2web_borger_dk_article_url_text'])) ? $form_state['values']['os2web_borger_dk_article_url_text'] : '', + '#default_value' => (isset($form_state['values']['os2_borger_dk_article_url_text'])) ? $form_state['values']['os2_borger_dk_article_url_text'] : '', '#size' => 60, '#maxlength' => 255, ); if ($titles_autocomplete) { - $form['os2web_borger_dk_article_import']['os2web_borger_dk_article_title_text'] = array( + $form['os2_borger_dk_article_import']['os2_borger_dk_article_title_text'] = array( '#type' => 'textfield', '#title' => t('Borger.dk Article title'), - '#default_value' => (isset($form_state['values']['os2web_borger_dk_article_title_text'])) ? $form_state['values']['os2web_borger_dk_article_title_text'] : '', - '#autocomplete_path' => 'import/os2web_borger_dk/autocomplete', + '#default_value' => (isset($form_state['values']['os2_borger_dk_article_title_text'])) ? $form_state['values']['os2_borger_dk_article_title_text'] : '', + '#autocomplete_path' => 'import/os2_borger_dk/autocomplete', '#size' => 60, '#maxlength' => 255, '#attributes' => array('class' => array('auto_submit')), ); - $form['os2web_borger_dk_article_import']['os2web_borger_dk_article_title_search'] = array( + $form['os2_borger_dk_article_import']['os2_borger_dk_article_title_search'] = array( '#type' => 'checkbox', '#title' => t('Search for Borger.dk Article by Title-search'), '#description' => t('If checked Borger.dk articles are found by title (by URL if un-checked).'), '#default_value' => ($url_search) ? 1 : 0, - '#after_build' => array('_os2web_borger_dk_autocomplete_form_load_js'), + '#after_build' => array('_os2_borger_dk_autocomplete_form_load_js'), ); } } /** - * Function _os2web_borger_dk_autocomplete_form_load_js(). + * Function _os2_borger_dk_autocomplete_form_load_js(). */ -function _os2web_borger_dk_autocomplete_form_load_js($element) { +function _os2_borger_dk_autocomplete_form_load_js($element) { $autosubmit_js = ' $(document).ready(function(){ Drupal.jsAC.prototype.select = function (node) { @@ -379,32 +372,32 @@ function _os2web_borger_dk_autocomplete_form_load_js($element) { } }; });'; - $must_auto_submit = variable_get('os2web_borger_dk_titles_search_auto_submit', FALSE); + $must_auto_submit = variable_get('os2_borger_dk_titles_search_auto_submit', FALSE); if (!$must_auto_submit) { $autosubmit_js = ''; } $js = '(function ($) { Drupal.behaviors.switchfield = { attach: function(context, settings) { - var checked1 = $("#edit-os2web-borger-dk-article-title-search").attr("checked"); + var checked1 = $("#edit-os2-borger-dk-article-title-search").attr("checked"); if (checked1) { - $(".form-item-os2web-borger-dk-article-url-text").hide(); - $(".form-item-os2web-borger-dk-article-title-text").show(); + $(".form-item-os2-borger-dk-article-url-text").hide(); + $(".form-item-os2-borger-dk-article-title-text").show(); } else { - $(".form-item-os2web-borger-dk-article-url-text").show(); - $(".form-item-os2web-borger-dk-article-title-text").hide(); + $(".form-item-os2-borger-dk-article-url-text").show(); + $(".form-item-os2-borger-dk-article-title-text").hide(); } - $("#edit-os2web-borger-dk-article-title-search").click(function() { + $("#edit-os2-borger-dk-article-title-search").click(function() { var checked = $(this).attr("checked"); if (checked) { - $(".form-item-os2web-borger-dk-article-url-text").hide(500); - $(".form-item-os2web-borger-dk-article-title-text").show(500); + $(".form-item-os2-borger-dk-article-url-text").hide(500); + $(".form-item-os2-borger-dk-article-title-text").show(500); } else { - $(".form-item-os2web-borger-dk-article-url-text").show(500); - $(".form-item-os2web-borger-dk-article-title-text").hide(500); + $(".form-item-os2-borger-dk-article-url-text").show(500); + $(".form-item-os2-borger-dk-article-title-text").hide(500); } });' . $autosubmit_js . ' } @@ -416,20 +409,20 @@ function _os2web_borger_dk_autocomplete_form_load_js($element) { } /** - * Function os2web_borger_dk_after_build(). + * Function os2_borger_dk_after_build(). */ -function os2web_borger_dk_after_build($form, &$form_state) { +function os2_borger_dk_after_build($form, &$form_state) { // Some of the fields are handled exclusively by OS2web. // These fields are required on node-add, and can NOT be // changed later on (ie. locked). - $locked_os2web_types = array( - 'field_os2web_borger_dk_borgerurl' => 1, - 'field_os2web_borger_dk_kle' => 2, - 'field_os2web_borger_dk_formterm' => 2, + $locked_os2_types = array( + 'field_os2_borger_dk_borgerurl' => 1, + 'field_os2_borger_dk_kle' => 2, + 'field_os2_borger_dk_formterm' => 2, ); $nid = $form_state['values']['nid']; - $admin_display_fields = variable_get('os2web_borger_dk_display', array(NULL)); - $microarticle = variable_get('os2web_borger_dk_microarticle_active'); + $admin_display_fields = variable_get('os2_borger_dk_display', array(NULL)); + $microarticle = variable_get('os2_borger_dk_microarticle_active'); // First we check if this is a node/add-type by checking the node->nid. if (!empty($nid)) { @@ -437,58 +430,58 @@ function os2web_borger_dk_after_build($form, &$form_state) { // We must unset all form-elements that has been // marked as hidden in the admin-display-settings. foreach ($admin_display_fields as $type => $item) { - if (empty($item) && empty($locked_os2web_types[$type])) { + if (empty($item) && empty($locked_os2_types[$type])) { if (!$microarticle) { - os2web_borger_dk_fix_disabled($form[$type]); + os2_borger_dk_fix_disabled($form[$type]); } } } // Then we must disable all fields that has been marked as // non-editable in the admin-editable-settings. - $value_editable = variable_get('os2web_borger_dk_editable', array(NULL)); + $value_editable = variable_get('os2_borger_dk_editable', array(NULL)); foreach ($value_editable as $type => $editable) { - if ((empty($editable) || !empty($locked_os2web_types[$type])) && !empty($form[$type])) { + if ((empty($editable) || !empty($locked_os2_types[$type])) && !empty($form[$type])) { if (!$microarticle) { - os2web_borger_dk_fix_disabled($form[$type]); + os2_borger_dk_fix_disabled($form[$type]); } } - if ($type == 'field_os2web_byline' && !empty($form[$type])) { + if ($type == 'field_os2_byline' && !empty($form[$type])) { $form[$type]['#format'] = BORGERDK_TEXT_FORMAT_PLAIN; } } // Finally we lock the special types. - foreach ($locked_os2web_types as $type => $locked) { + foreach ($locked_os2_types as $type => $locked) { // If locked = 1 then disable the field. if (isset($form[$type]) && $locked == 1) { $form[$type]['#required'] = FALSE; - $form[$type]['und']['#required'] = FALSE; - $form[$type]['und'][0]['#required'] = FALSE; - $form[$type]['und'][0]['value']['#required'] = FALSE; - os2web_borger_dk_fix_disabled($form[$type]); + $form[$type][LANGUAGE_NONE]['#required'] = FALSE; + $form[$type][LANGUAGE_NONE][0]['#required'] = FALSE; + $form[$type][LANGUAGE_NONE][0]['value']['#required'] = FALSE; + os2_borger_dk_fix_disabled($form[$type]); } } } else { // This is a brand new node-add form, and we must hide every // form-field. - $data = field_info_instances('node', 'os2web_borger_dk_article'); + $data = field_info_instances('node', 'os2_borger_dk_article'); foreach ($data as $type => $item) { // Some fields must be checked before unsetting or php will // die because a string for instance can not be unset. - if (!isset($locked_os2web_types[$type]) || $locked_os2web_types[$type] == 1) { + if (!isset($locked_os2_types[$type]) || $locked_os2_types[$type] == 1) { // These fields can safely be unset (so they are hidden). hide($form[$type]); } - if (isset($locked_os2web_types[$type]) && $locked_os2web_types[$type] == 2) { + if (isset($locked_os2_types[$type]) && $locked_os2_types[$type] == 2) { - hide($form[$type]['und']); + hide($form[$type][LANGUAGE_NONE]); } } - $form['field_os2web_borger_dk_borgerurl']['#required'] = FALSE; - $form['field_os2web_borger_dk_borgerurl']['und']['#required'] = FALSE; - $form['field_os2web_borger_dk_borgerurl']['und'][0]['#required'] = FALSE; - $form['field_os2web_borger_dk_borgerurl']['und'][0]['value']['#required'] = FALSE; + $form['field_os2_borger_dk_borgerurl']['#required'] = FALSE; + $form['field_os2_borger_dk_borgerurl'][LANGUAGE_NONE]['#required'] = FALSE; + $form['field_os2_borger_dk_borgerurl'][LANGUAGE_NONE][0]['#required'] = FALSE; + $form['field_os2_borger_dk_borgerurl'][LANGUAGE_NONE][0]['value']['#required'] = FALSE; $form['title']['#required'] = FALSE; $form['title']['#access'] = FALSE; @@ -503,11 +496,11 @@ function os2web_borger_dk_after_build($form, &$form_state) { } /** - * Function os2web_borger_dk_process_checkboxes_os2web_borger_dk_article(). + * Function os2_borger_dk_process_checkboxes_os2_borger_dk_article(). */ -function os2web_borger_dk_process_checkboxes_os2web_borger_dk_article(&$element) { +function os2_borger_dk_process_checkboxes_os2_borger_dk_article(&$element) { - $admin_display_fields = variable_get('os2web_borger_dk_display', array(NULL)); + $admin_display_fields = variable_get('os2_borger_dk_display', array(NULL)); if (!empty($element)) { foreach (element_children($element) as $key) { if (!isset($admin_display_fields[$key]) || $admin_display_fields[$key] == '0') { @@ -520,13 +513,13 @@ function os2web_borger_dk_process_checkboxes_os2web_borger_dk_article(&$element) } /** - * Function os2web_borger_dk_fix_disabled(). + * Function os2_borger_dk_fix_disabled(). */ -function os2web_borger_dk_fix_disabled(&$elements) { +function os2_borger_dk_fix_disabled(&$elements) { foreach (element_children($elements) as $key) { if (isset($elements[$key]) && $elements[$key]) { // Recurse through all child elements. - os2web_borger_dk_fix_disabled($elements[$key]); + os2_borger_dk_fix_disabled($elements[$key]); } } if (!isset($elements['#attributes'])) { @@ -538,19 +531,19 @@ function os2web_borger_dk_fix_disabled(&$elements) { /** * Implements hook_node_load(). */ -function os2web_borger_dk_node_load($nodes, $types) { +function os2_borger_dk_node_load($nodes, $types) { // Decide whether any of $types are relevant to our purpose. - // We only work on the "os2web_borger_dk_article" node-types. - if (in_array('os2web_borger_dk_article', $types)) { + // We only work on the "os2_borger_dk_article" node-types. + if (in_array('os2_borger_dk_article', $types)) { // Gather our extra data for each of these nodes. - $result = db_query('SELECT nid, external_id, external_status, external_url, field_settings, field_microarticle_settings, published_date, last_updated FROM {os2web_borger_dk_article} WHERE nid IN (:nids)', array( + $result = db_query('SELECT nid, external_id, external_status, external_url, field_settings, field_microarticle_settings, published_date, last_updated FROM {os2_borger_dk_article} WHERE nid IN (:nids)', array( ':nids' => array_keys($nodes))); // Get admin microarticles settings. - $microarticle = variable_get('os2web_borger_dk_microarticle_active', FALSE); + $microarticle = variable_get('os2_borger_dk_microarticle_active', FALSE); // Add our extra data to the node objects. foreach ($result as $record) { $field_settings = unserialize($record->field_settings); - $nodes[$record->nid]->os2web_borger_dk_article = array( + $nodes[$record->nid]->os2_borger_dk_article = array( 'external_id' => $record->external_id, 'external_status' => $record->external_status, 'external_url' => $record->external_url, @@ -561,14 +554,14 @@ function os2web_borger_dk_node_load($nodes, $types) { // If microarticle option is set to display. if ($microarticle) { $field_microaritcle_settings = unserialize($record->field_microarticle_settings); - $nodes[$record->nid]->os2web_borger_dk_microarticle = array( + $nodes[$record->nid]->os2_borger_dk_microarticle = array( 'field_microarticle_settings' => $field_microaritcle_settings, ); } // If microarticle option is NOT set to display,then we set an empty array - // to node->os2web_borger_dk_microarticle[''field_microarticle_settings]. + // to node->os2_borger_dk_microarticle[''field_microarticle_settings]. else { - $nodes[$record->nid]->os2web_borger_dk_microarticle = array( + $nodes[$record->nid]->os2_borger_dk_microarticle = array( 'field_microarticle_settings' => '', ); } @@ -583,7 +576,7 @@ function os2web_borger_dk_node_load($nodes, $types) { * Resource: * http://www.metachunk.com/blog/adding-module-path-drupal-7-theme-registry */ -function os2web_borger_dk_theme_registry_alter(&$theme_registry) { +function os2_borger_dk_theme_registry_alter(&$theme_registry) { $mod_path = drupal_get_path('module', 'mymodule'); // Munge on a copy. $theme_registry_copy = $theme_registry; @@ -591,14 +584,14 @@ function os2web_borger_dk_theme_registry_alter(&$theme_registry) { $theme_registry += array_diff_key($theme_registry_copy, $theme_registry); $hooks = array('node'); foreach ($hooks as $h) { - _os2web_borger_dk_insert_after_first_element($theme_registry[$h]['theme paths'], $mod_path); + _os2_borger_dk_insert_after_first_element($theme_registry[$h]['theme paths'], $mod_path); } } /** * Helper function for re-ordering arrays (needed by theme_registry_alter). */ -function _os2web_borger_dk_insert_after_first_element(&$a, $element) { +function _os2_borger_dk_insert_after_first_element(&$a, $element) { if (is_array($a)) { $first_element = array_shift($a); array_unshift($a, $first_element, $element); @@ -608,16 +601,16 @@ function _os2web_borger_dk_insert_after_first_element(&$a, $element) { /** * Implements hook_node_view(). */ -function os2web_borger_dk_node_view($node, $view_mode, $langcode) { - if ($node->type == 'os2web_borger_dk_article') { - $fields = $node->os2web_borger_dk_article['field_settings']; +function os2_borger_dk_node_view($node, $view_mode, $langcode) { + if ($node->type == 'os2_borger_dk_article') { + $fields = $node->os2_borger_dk_article['field_settings']; // First get admin display settings. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - $locked_os2web_types = array('field_os2web_borger_dk_borgerurl' => 1); + $admin_display_fields = variable_get('os2_borger_dk_display'); + $locked_os2_types = array('field_os2_borger_dk_borgerurl' => 1); // We get admin microarticle display settings. - $microarticle = variable_get('os2web_borger_dk_microarticle_active', FALSE); + $microarticle = variable_get('os2_borger_dk_microarticle_active', FALSE); if ($microarticle) { - $field_microarticle_settings = $node->os2web_borger_dk_microarticle['field_microarticle_settings']; + $field_microarticle_settings = $node->os2_borger_dk_microarticle['field_microarticle_settings']; } foreach ($admin_display_fields as $type => $value) { @@ -632,36 +625,16 @@ function os2web_borger_dk_node_view($node, $view_mode, $langcode) { // article is imported and shown in a form, then node_view // will display full body text. if ($content_field == 'body' && !empty($field_microarticle_settings)) { - $body_text = $node->body['und']['0']['value']; + $body_text = $node->body[LANGUAGE_NONE]['0']['value']; + + $article_text = _os2_borger_dk_microarticle_helper($body_text, $field_microarticle_settings, TRUE); - // Link break in body_text: in windows \r\n, linux \n. - preg_match("/<\/div>\n/", $body_text, $link_break); - if (isset($link_break[0])) { - $div = preg_split("/\n<\/div>\n/", $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - else { - $div = preg_split('/\r\n<[\/]div>\r\n/', $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - $show_div = ''; - foreach ($div as $key => $text) { - $microno = $key + 1; - $checkboxno = 'os2web_borger_dk_micro_' . $microno; - // The last div is a link break \n or \r\n. - if ($div[$key] != $div[(count($div) - 1)]) { - // If editor set this microarticle to be visible,(TRUE) - if ($field_microarticle_settings[$microno] != 0) { - $show_div .= $div[$key]; - $show_div .= "\n
"; - $show_div .= "\n"; - } - } - } // Content body shows only visible microarticles/ part of body_text. - $node->content[$type]['0']['#markup'] = $show_div; + $node->content[$type]['0']['#markup'] = $article_text; } } elseif ($type == 'body') { - $node->content['body']['0']['#markup'] = $node->body['und']['0']['value']; + $node->content['body']['0']['#markup'] = $node->body[LANGUAGE_NONE]['0']['value']; } // End of microarticles. @@ -682,12 +655,12 @@ function os2web_borger_dk_node_view($node, $view_mode, $langcode) { } } } - drupal_add_js(drupal_get_path('module', 'os2web_borger_dk') . '/js/os2web_borger_dk.js', 'file'); - drupal_add_css(drupal_get_path('module', 'os2web_borger_dk') . '/css/os2web_borger_dk.css', 'file'); + drupal_add_js(drupal_get_path('module', 'os2_borger_dk') . '/js/os2_borger_dk.js', 'file'); + drupal_add_css(drupal_get_path('module', 'os2_borger_dk') . '/css/os2_borger_dk.css', 'file'); // Set the page-title if field-value is given. - if (!empty($node->field_os2web_borger_dk_pagetitle['und'][0]['value'])) { - drupal_set_title($node->field_os2web_borger_dk_pagetitle['und'][0]['value']); + if (!empty($node->field_os2_borger_dk_pagetitle[LANGUAGE_NONE][0]['value'])) { + drupal_set_title($node->field_os2_borger_dk_pagetitle[LANGUAGE_NONE][0]['value']); } } } @@ -695,14 +668,14 @@ function os2web_borger_dk_node_view($node, $view_mode, $langcode) { /** * Implements hook_node_insert(). */ -function os2web_borger_dk_node_insert($node) { +function os2_borger_dk_node_insert($node) { - if ($node->type == 'os2web_borger_dk_article') { - if (isset($node->os2web_borger_dk_article)) { - $borgerdk_data = $node->os2web_borger_dk_article; + if ($node->type == 'os2_borger_dk_article') { + if (isset($node->os2_borger_dk_article)) { + $borgerdk_data = $node->os2_borger_dk_article; if (isset($borgerdk_data) && !empty($borgerdk_data)) { $serialized_data = serialize($borgerdk_data['field_settings']); - db_insert('os2web_borger_dk_article') + db_insert('os2_borger_dk_article') ->fields(array( 'nid' => $node->nid, 'external_id' => $borgerdk_data['external_id'], @@ -721,14 +694,14 @@ function os2web_borger_dk_node_insert($node) { /** * Implements hook_node_delete(). */ -function os2web_borger_dk_node_delete($node) { - if ($node->type == 'os2web_borger_dk_article') { +function os2_borger_dk_node_delete($node) { + if ($node->type == 'os2_borger_dk_article') { // First we delete the article-data from the node-additions table. - db_delete('os2web_borger_dk_article') + db_delete('os2_borger_dk_article') ->condition('nid', $node->nid) ->execute(); // Then we set the status to "not imported" in the "Titles list"-table. - db_update('os2web_borger_dk_article_titles') + db_update('os2_borger_dk_article_titles') ->fields(array('ArticleStatus' => 0)) ->condition('ArticleStatus', $node->nid, '=') ->execute(); @@ -739,12 +712,12 @@ function os2web_borger_dk_node_delete($node) { /** * Implements hook_node_validate(). */ -function os2web_borger_dk_node_validate($node, $form, &$form_state) { - if ($node->type == 'os2web_borger_dk_article') { +function os2_borger_dk_node_validate($node, $form, &$form_state) { + if ($node->type == 'os2_borger_dk_article') { // Enforce a minimum word length of 3 on punch lines. - $admin_title_search = variable_get('os2web_borger_dk_titles_sync', FALSE); - $titles_search = isset($form_state['values']['os2web_borger_dk_article_title_search']) ? $form_state['values']['os2web_borger_dk_article_title_search'] : FALSE; - $url_text = isset($form_state['values']['os2web_borger_dk_article_url_text']) ? $form_state['values']['os2web_borger_dk_article_url_text'] : FALSE; + $admin_title_search = variable_get('os2_borger_dk_titles_sync', FALSE); + $titles_search = isset($form_state['values']['os2_borger_dk_article_title_search']) ? $form_state['values']['os2_borger_dk_article_title_search'] : FALSE; + $url_text = isset($form_state['values']['os2_borger_dk_article_url_text']) ? $form_state['values']['os2_borger_dk_article_url_text'] : FALSE; // If admin config set up : import Borger.dk article by URL. // TODO: Check if this if-statement works as expected, and @@ -755,11 +728,11 @@ function os2web_borger_dk_node_validate($node, $form, &$form_state) { $url = $url_text; $pos = strpos($url, 'borger.dk/Sider'); if ($pos === FALSE) { - form_set_error('os2web_borger_dk_article_url_text', t('The Borger.dk-URL is not valid, please write a valid Borger.dk-URL.')); + form_set_error('os2_borger_dk_article_url_text', t('The Borger.dk-URL is not valid, please write a valid Borger.dk-URL.')); } } else { - form_set_error('os2web_borger_dk_article_url_text', t('The Borger.dk-URL is empty, please write a valid Borger.dk-URL.')); + form_set_error('os2_borger_dk_article_url_text', t('The Borger.dk-URL is empty, please write a valid Borger.dk-URL.')); } } } @@ -769,9 +742,9 @@ function os2web_borger_dk_node_validate($node, $form, &$form_state) { // TODO: Check if we can drop this if-statement. The else-statement above. // should be sufficient if the matched if-statement really works. if ($titles_search == '1') { - $borger_dk_title = !empty($form_state['values']['os2web_borger_dk_article_title_text']) ? $form_state['values']['os2web_borger_dk_article_title_text'] : FALSE; + $borger_dk_title = !empty($form_state['values']['os2_borger_dk_article_title_text']) ? $form_state['values']['os2_borger_dk_article_title_text'] : FALSE; if (!$borger_dk_title) { - form_set_error('os2web_borger_dk_article_title_text', t('The Borger.dk Article title is empty, please write a Borger.dk Article title')); + form_set_error('os2_borger_dk_article_title_text', t('The Borger.dk Article title is empty, please write a Borger.dk Article title')); } $matches = array(); $aid = 0; @@ -782,13 +755,13 @@ function os2web_borger_dk_node_validate($node, $form, &$form_state) { // If $result is nonzero, we found a match and can use // it as the index into $matches. $aid = $matches[$result]; - $status = db_query('SELECT ArticleStatus FROM {os2web_borger_dk_article_titles} WHERE ArticleID = :aid', array( + $status = db_query('SELECT ArticleStatus FROM {os2_borger_dk_article_titles} WHERE ArticleID = :aid', array( ':aid' => $aid))->fetchField(); if ($status < 0) { // This article is no longer availlable and we tell the user so. drupal_set_message(t('The Borger.dk article with title "!title" is no longer availlable', array( '!title' => $borger_dk_url)), 'warning'); - form_set_error('os2web_borger_dk_article_title_text', t('The Borger.dk Article-title has been deleted, please write a valid Borger.dk-URL.')); + form_set_error('os2_borger_dk_article_title_text', t('The Borger.dk Article-title has been deleted, please write a valid Borger.dk-URL.')); } } } @@ -797,14 +770,14 @@ function os2web_borger_dk_node_validate($node, $form, &$form_state) { } /** - * Function os2web_borger_dk_sync_submit(). + * Function os2_borger_dk_sync_submit(). */ -function os2web_borger_dk_sync_submit($form, &$form_state) { +function os2_borger_dk_sync_submit($form, &$form_state) { // Get the node->nid from the form['#node']. $nid = $form['#node']->nid; // Update the article - os2web_borger_dk_update_article($nid); + os2_borger_dk_update_article($nid); drupal_set_message(t('The article has been updated with content from Borger.dk'), 'status'); drupal_goto('node/' . $nid . '/edit'); @@ -816,17 +789,22 @@ function os2web_borger_dk_sync_submit($form, &$form_state) { * @param int $nid * The node we are updating. */ -function os2web_borger_dk_update_article($nid) { +function os2_borger_dk_update_article($nid) { // First we find the external_id, and last_update time for this article. - $data = db_query('SELECT external_id, last_updated FROM {os2web_borger_dk_article} WHERE nid = :nid', array( + $data = db_query('SELECT external_id, last_updated FROM {os2_borger_dk_article} WHERE nid = :nid', array( ':nid' => $nid))->fetchObject(); // Then we fetch the article item from the Borger.dk webservice. - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $article = _os2web_borger_dk_GetArticleByID($data->external_id, $wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $article = _os2_borger_dk_GetArticleByID($data->external_id, $wsdl); // Now we update the node content with the fetched article content. - _os2web_borger_dk_update_node_content($nid, $article); + $node = _os2_borger_dk_update_node_content($nid, $article); + if (variable_get('os2_borger_dk_microarticle_active')) { + $body_text = isset($node->body[LANGUAGE_NONE][0]['value']) ? $node->body[LANGUAGE_NONE][0]['value'] : ''; + _os2_borger_dk_microarticle_helper($body_text, $node, FALSE); + } + node_save($node); } /** @@ -840,27 +818,27 @@ function os2web_borger_dk_update_article($nid) { * * @ingroup actions */ -function os2web_borger_dk_articles_update_action($node, $context = array()) { - if ($node->type == 'os2web_borger_dk_article') { - os2web_borger_dk_update_article($node->nid); +function os2_borger_dk_articles_update_action($node, $context = array()) { + if ($node->type == 'os2_borger_dk_article') { + os2_borger_dk_update_article($node->nid); watchdog('action', 'Update %title with content from borger.dk.', array('%title' => $node->title)); } } /** - * Function os2web_borger_dk_microarticles_update_submit(). + * Function os2_borger_dk_microarticles_update_submit(). */ -function os2web_borger_dk_microarticles_update_submit($form, &$form_state) { +function os2_borger_dk_microarticles_update_submit($form, &$form_state) { // Get the node->nid from the form['#node']. $nid = $form['#node']->nid; // First we find the external_id, and last_update time for this article. - $data = db_query('SELECT external_id, last_updated FROM {os2web_borger_dk_article} WHERE nid = :nid', array( + $data = db_query('SELECT external_id, last_updated FROM {os2_borger_dk_article} WHERE nid = :nid', array( ':nid' => $nid))->fetchObject(); // Then we fetch the article item from the Borger.dk webservice. - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $article = _os2web_borger_dk_GetArticleByID($data->external_id, $wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $article = _os2_borger_dk_GetArticleByID($data->external_id, $wsdl); if (empty($article['Exceptions']) && empty($article['error'])) { // First we load the corresponding node. @@ -870,8 +848,12 @@ function os2web_borger_dk_microarticles_update_submit($form, &$form_state) { $body .= $content . "\n"; } // Only update the body text. - $node->body['und'][0]['value'] = $body; + $node->body[LANGUAGE_NONE][0]['value'] = $body; node_save($node); + + // Update microarticle field setting. + _os2_borger_dk_microarticle_helper($body, $node, FALSE); + // And we notify the user that the article has been updated. drupal_set_message(t('The microarticles have been updated'), 'status'); } @@ -885,8 +867,8 @@ function os2web_borger_dk_microarticles_update_submit($form, &$form_state) { /** * Implements hook_node_submit(). */ -function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { - if ($node->type == 'os2web_borger_dk_article') { +function os2_borger_dk_node_submit(&$node, $form, &$form_state) { + if ($node->type == 'os2_borger_dk_article') { // We must check if this is a "brand new" article or if it exists in the // database already (NB: That's how we find out if it is brand new or not) // Get the node->nid from the form['#node']. @@ -896,9 +878,9 @@ function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { // nid, external_id, external_url, field_settings, // published_date, last_update. // EXCEPT: ONLY field_settings CAN BE UPDATED!! - $field_settings = $form_state['values']['os2web_borger_dk_field_settings']; + $field_settings = $form_state['values']['os2_borger_dk_field_settings']; // Check admin field settings : are there fields set as hidden by admin. - $admin_display_fields = variable_get('os2web_borger_dk_display'); + $admin_display_fields = variable_get('os2_borger_dk_display'); foreach ($admin_display_fields as $type => $items) { if (!$admin_display_fields[$type]) { $field_settings[$type] = $type; @@ -906,64 +888,23 @@ function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { } $serialized_data = serialize($field_settings); - db_update('os2web_borger_dk_article') + db_update('os2_borger_dk_article') ->fields(array('field_settings' => $serialized_data)) ->condition('nid', $nid, '=') ->execute(); // Microarticles.--- - $microarticle = variable_get('os2web_borger_dk_microarticle_active'); + $microarticle = variable_get('os2_borger_dk_microarticle_active'); // If microarticle is set up to show. if ($microarticle) { $field_microarticle_settings = array(); - $body_text = isset($node->body['und'][0]['value']) ? $node->body['und'][0]['value'] : ''; + $body_text = isset($node->body[LANGUAGE_NONE][0]['value']) ? $node->body[LANGUAGE_NONE][0]['value'] : ''; - // "Link break": in windows \r\n, linux \n. - preg_match("/<\/div>\n/", $body_text, $link_break); - if (isset($link_break[0])) { - $div = preg_split("/\n<\/div>\n/", $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - else { - $div = preg_split('/\r\n<[\/]div>\r\n/', $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } + $article_text = _os2_borger_dk_microarticle_helper($body_text, $node, FALSE); - $article_text = ''; - foreach ($div as $key => $text) { - preg_match("/
/s", $div[$key], $match_id); - $micro_id = (isset($match_id[1]) ? $match_id[1] : ''); - $microno = $key + 1; - $checkboxno = 'os2web_borger_dk_micro_' . $microno; - $h2_text_field = 'os2web_borger_dk_micro_h2_' . $microno; - $text_area = 'os2web_borger_dk_micro_textarea_' . $microno; - - // The last div contents a link break. - if ($key != (count($div) - 1)) { - $field_microarticle_settings[$microno] = $node->$checkboxno; - // Body text (Article text). - $article_text .= "
" . "\r\n"; - - $micro_h2 = "

"; - $micro_h2 .= $node->$h2_text_field . "

"; - - $micro_content = "
"; - $micro_content .= $node->$text_area . "\r\n
"; - - $article_text .= $micro_h2 . "\r\n"; - $article_text .= $micro_content; - $article_text .= "\r\n
\r\n\r\n"; - // End of body text (Article text). - } - } - $node->body['und'][0]['value'] = $article_text; - $node->body['und'][0]['safe_value'] = $article_text; + $node->body[LANGUAGE_NONE][0]['value'] = $article_text; + $node->body[LANGUAGE_NONE][0]['safe_value'] = $article_text; - $serialized_microarticle = serialize($field_microarticle_settings); - db_update('os2web_borger_dk_article') - ->fields(array( - 'field_microarticle_settings' => $serialized_microarticle, - )) - ->condition('nid', $nid, '=') - ->execute(); } // End of Micro articles. // All other fields are handled by the normal Drupal field-handling. @@ -972,12 +913,12 @@ function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { // We do not(!) have a node->nid and this is a brand new node. // We must get the Borger.dk-URL, fetch the article, and store // the borger.dk-article content (i.e. the new node). - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); $titles_autocomplete = variable_get('borger_dk_article_titles_sync', FALSE); - $borger_dk_url = $form_state['values']['os2web_borger_dk_article_url_text']; - $borger_dk_title = $form_state['values']['os2web_borger_dk_article_title_text']; - $search_method = $form_state['values']['os2web_borger_dk_article_title_search']; + $borger_dk_url = $form_state['values']['os2_borger_dk_article_url_text']; + $borger_dk_title = $form_state['values']['os2_borger_dk_article_title_text']; + $search_method = $form_state['values']['os2_borger_dk_article_title_search']; if ($search_method) { // The title has been autocompleted, and we must find the ArticleID. @@ -990,23 +931,26 @@ function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { // If $result is nonzero, we found a match and can use // it as the index into $matches. $aid = $matches[$result]; - $sql = "SELECT `ArticleID`, `ArticleStatus` FROM {os2web_borger_dk_article_titles} WHERE `ArticleID` = " . $aid . " LIMIT 1"; + $sql = "SELECT `ArticleID`, `ArticleStatus` FROM {os2_borger_dk_article_titles} WHERE `ArticleID` = " . $aid . " LIMIT 1"; $data = db_query($sql)->fetchObject(); if ($data->ArticleStatus < 0) { // This article is no longer availlable and we tell the user so. drupal_set_message(t('The Borger.dk article with title "!title" is no longer availlable', array( '!title' => $borger_dk_title)), 'warning'); - drupal_goto('node/add/os2web-borger-dk-article'); + drupal_goto('node/add/os2-borger-dk-article'); return; } elseif ($data->ArticleStatus > 0) { - // We have already imported this article - // and node->nid = ArticleStatus. - drupal_set_message(t('The Borger.dk article with title "!title" has already been imported.', array( - '!title' => $borger_dk_title)), 'status'); - drupal_set_message(t('You can re-import the article by clicking on the "Update now"-button below.'), 'status'); - drupal_goto('node/' . $data->ArticleStatus . '/edit'); - return; + $allow_duplicate_import = variable_get('os2_borger_dk_import_duplicate', 0); + if (!$allow_duplicate_import) { + // We have already imported this article + // and node->nid = ArticleStatus. + drupal_set_message(t('The Borger.dk article with title "!title" has already been imported.', array( + '!title' => $borger_dk_title)), 'status'); + drupal_set_message(t('You can re-import the article by clicking on the "Update now"-button below.'), 'status'); + drupal_goto('node/' . $data->ArticleStatus . '/edit'); + return; + } } elseif ($data->ArticleStatus == 0) { $aid = $data->ArticleID; @@ -1016,141 +960,194 @@ function os2web_borger_dk_node_submit(&$node, $form, &$form_state) { // Lets look for the text directly in our Title list. drupal_set_message(t('No Borger.dk article with title "!title" exists.', array( '!title' => $borger_dk_title)), 'warning'); - drupal_goto('node/add/os2web-borger-dk-article'); + drupal_goto('node/add/os2-borger-dk-article'); } if (isset($aid) && $aid >= 0) { // We have not imported this article before, and we do so now. - $article = _os2web_borger_dk_GetArticleByID($aid, $wsdl); + $article = _os2_borger_dk_GetArticleByID($aid, $wsdl); } else { $borger_dk_title = preg_replace('/ \(ID:([0-9]+)\)$/', '', $borger_dk_title); drupal_set_message(t('Could not find any Borger.dk article with title "!title"', array( '!title' => $borger_dk_title)), 'warning'); - drupal_goto('node/add/os2web-borger-dk-article'); + drupal_goto('node/add/os2-borger-dk-article'); return; } } else { // Now we fetch the article item from the Borger.dk webservice. - $article = _os2web_borger_dk_GetArticleByUrl($borger_dk_url, $wsdl); + $article = _os2_borger_dk_GetArticleByUrl($borger_dk_url, $wsdl); if (!empty($article['Exceptions']) || !empty($article['error'])) { drupal_set_message(t('An error occured or an exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); - drupal_goto('node/add/os2web-borger-dk-article'); + drupal_goto('node/add/os2-borger-dk-article'); return; } } + $node = _os2_borger_dk_create_article_node($nid, $article, NULL); + } + } +} +/** + * Function _os2_borger_dk_microarticle_helper(). + */ +function _os2_borger_dk_microarticle_helper($body_text, $node, $view = FALSE) { + $article_text = ''; + $doc = new DOMDocument(); + $doc->loadHTML('' . $body_text); + $xpath = new DOMXPath($doc); - $body = ''; - foreach ($article['kernetekst'] as $div => $content) { - $body .= $content . "\n"; - } + $results = $xpath->query("//*[@class='microArticle']"); + $microno = 0; + foreach ($results as $item) { + $microno++; - // And we update all the node-fields with the article-values. - $node = new stdClass(); - $node->language = 'und'; - $node->status = $form_state['values']['status']; - $node->promote = $form_state['values']['promote']; - $node->sticky = $form_state['values']['sticky']; - $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; - $node->validated = TRUE; - // A user might assign the node author by entering a - // user name in the node. - $usr = $form['author']['name']['#value']; - // A user might assign the node author by entering a user name in the node - // form, which we then need to translate to a user ID. - if ($account = user_load_by_name($usr)) { - $node->uid = $account->uid; - } - else { - $node->uid = 0; - } + $checkboxno = 'os2_borger_dk_micro_' . $microno; + $h2_text_field = 'os2_borger_dk_micro_h2_' . $microno; + $text_area = 'os2_borger_dk_micro_textarea_' . $microno; - // Insert default value of a new node. - $node->type = 'os2web_borger_dk_article'; - $node->title = (!empty($article['title'])) ? $article['title'] : ''; - $node->body['und']['0']['value'] = !empty($body) ? $body : ''; - $node->field_os2web_borger_dk_borgerurl['und'][0]['value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und']['0']['safe_value'] = $body; - $node->field_os2web_borger_dk_borgerurl['und'][0]['safe_value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_header['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_selfservi['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_byline['und'][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; - $node->field_os2web_borger_dk_legislati['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_shortlist['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_recommend['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $field_settings = $form_state['values']['os2web_borger_dk_field_settings']; - // Check admin field settings : are there fields set as hidden by admin. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - foreach ($admin_display_fields as $type => $items) { - if (!$admin_display_fields[$type]) { - $field_settings[$type] = $type; - } + if (!$view && is_object($node)) { + $field_microarticle_settings[$microno] = isset($node->$checkboxno) ? $node->$checkboxno : 1; + // Body text (Article text). + $article_text .= "
" . "\r\n"; + + $micro_h2 = "

"; + $micro_h2 .= $node->$h2_text_field . "

"; + + $micro_content = "
"; + $micro_content .= $node->$text_area . "\r\n
"; + + $article_text .= $micro_h2 . "\r\n"; + $article_text .= $micro_content; + $article_text .= "\r\n
\r\n\r\n"; + } + elseif ($view) { + foreach ($item->getElementsByTagName('h2') as $articletitle) { + $title = trim($articletitle->nodeValue); } - // TODO: Perform a logical-test (on paper) to - // see if the external_status is correct. - $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; - $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; - $node->os2web_borger_dk_article = array( - 'external_id' => $article['external_id'], - 'external_url' => $article['external_url'], - 'external_status' => $external_status, - 'field_settings' => $field_settings, - 'published_date' => strtotime($article['published_date']), - 'last_updated' => strtotime($article['last_updated']), - ); - if (!empty($article['Exceptions']) || !empty($article['error'])) { - drupal_set_message(t('An exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); - drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); - drupal_goto('node/add/os2web-borger-dk-article'); + $text = ''; + foreach ($item->getElementsByTagName('div')->item(0)->childNodes as $articletext) { + $text .= $doc->saveHTML($articletext); } - else { - $node = node_submit($node); + if ($node[$microno] != 0) { + // Body text (Article text). + $article_text .= "
" . "\r\n"; - // We need to store the field values and article-settings. - node_save($node); + $micro_h2 = "

"; + $micro_h2 .= $title . "

"; - // Then we need to update the ArticleStatus in the Title-list. - if ($node->nid) { - db_update('os2web_borger_dk_article_titles') - ->fields(array('ArticleStatus' => $node->nid)) - ->condition('ArticleID', $article['external_id'], '=') - ->execute(); - drupal_goto('node/' . $node->nid . '/edit'); - } + $micro_content = "
"; + $micro_content .= $text . "\r\n
"; + + $article_text .= $micro_h2 . "\r\n"; + $article_text .= $micro_content; + $article_text .= "\r\n
\r\n\r\n"; } } + // End of body text (Article text). + } + if (!$view && is_object($node)) { + + $serialized_microarticle = serialize($field_microarticle_settings); + db_update('os2_borger_dk_article') + ->fields(array( + 'field_microarticle_settings' => $serialized_microarticle, + )) + ->condition('nid', $node->nid, '=') + ->execute(); + } + + return $article_text; +} +/** + * Function _os2_borger_dk_update_node_content(). + */ +function _os2_borger_dk_update_node_content($nid, $article) { + if (!empty($article['Exceptions']) || !empty($article['error'])) { + return; + } + if ($nid && is_numeric($nid)) { + // First we load the corresponding node. + $node = node_load($nid, NULL, TRUE); + } + else { + $node = new stdClass(); + $node->language = 'da'; + $node->uid = 1; + $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; + $node->type = 'os2_borger_dk_article'; + $node->validated = TRUE; + } + + // And we update all the node-fields with the article-values. + $node->title = $article['title']; + + $body = ''; + foreach ($article['kernetekst'] as $div => $content) { + $body .= $content . "\n"; } + + $node->title = (!empty($article['title'])) ? $article['title'] : ''; + + $node->body[LANGUAGE_NONE][0]['value'] = $body; + $node->body[LANGUAGE_NONE][0]['safe_value'] = $body; + $node->body[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + $node->field_os2_borger_dk_byline[LANGUAGE_NONE][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; + $node->field_os2_borger_dk_byline[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; + $node->field_os2_borger_dk_byline[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; + + $node->field_os2_borger_dk_header[LANGUAGE_NONE][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; + $node->field_os2_borger_dk_header[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; + $node->field_os2_borger_dk_header[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + $node->field_os2_borger_dk_selfservi[LANGUAGE_NONE][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; + $node->field_os2_borger_dk_selfservi[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; + $node->field_os2_borger_dk_selfservi[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + $node->field_os2_borger_dk_recommend[LANGUAGE_NONE][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; + $node->field_os2_borger_dk_recommend[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; + $node->field_os2_borger_dk_recommend[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + $node->field_os2_borger_dk_legislati[LANGUAGE_NONE][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; + $node->field_os2_borger_dk_legislati[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; + $node->field_os2_borger_dk_legislati[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + $node->field_os2_borger_dk_shortlist[LANGUAGE_NONE][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; + $node->field_os2_borger_dk_shortlist[LANGUAGE_NONE][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; + $node->field_os2_borger_dk_shortlist[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + + // Some fields from borger_dk_article can not be syncronized nor changed here. + $node->os2_borger_dk_article['external_id'] = $article['external_id']; + $node->os2_borger_dk_article['external_url'] = $article['external_url']; + + $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; + $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; + + $node->os2_borger_dk_article['external_status'] = $external_status; + $node->os2_borger_dk_article['published_date'] = strtotime($article['published_date']); + $node->os2_borger_dk_article['last_updated'] = strtotime($article['last_updated']); + + db_update('os2_borger_dk_article') + ->fields(array('last_updated' => strtotime($article['last_updated']))) + ->condition('nid', $nid, '=') + ->execute(); + + return $node; } /********************* Menu import ************/ /** - * Function os2web_borger_dk_import_menu_now_form_submit(). + * Function os2_borger_dk_import_menu_now_form_submit(). */ -function os2web_borger_dk_import_menu_now_form_submit($form, &$form_state) { +function os2_borger_dk_import_menu_now_form_submit($form, &$form_state) { if (($form_state['submitted'] == 1) && ($form_state['input']['op'] == 'Import Borger.dk-menu now')) { // Next we get a list of all menu-items from the Borger.dk-webservice. - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $menu_items_availlable = _os2web_borger_dk_GetAllSites($wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $menu_items_availlable = _os2_borger_dk_GetAllSites($wsdl); if (!empty($menu_items_availlable['Exceptions']) || !empty($menu_items_availlable['error'])) { $msg = 'An error occured while fetching the Borger.dk menus. Last succesful update was at: %success'; @@ -1168,17 +1165,17 @@ function os2web_borger_dk_import_menu_now_form_submit($form, &$form_state) { // $menu_name = $form['build_borger_menu_under_menu']['#value']; $menu_name = variable_get('build_borger_menu_under_menu'); - os2web_borger_dk_create_custom_menu($menu_items_availlable, $total, $parent_array, $menu_name); + os2_borger_dk_create_custom_menu($menu_items_availlable, $total, $parent_array, $menu_name); } } /** - * Function os2web_borger_dk_create_custom_menu(). + * Function os2_borger_dk_create_custom_menu(). * * Create a custom menu. */ -function os2web_borger_dk_create_custom_menu($menu_items_availlable, $total, $parent_array, $menu_name) { - $borger_dk_menu = variable_get('os2web_borger_dk_borger_dk_menu_name', t('Borger.dk menu')); +function os2_borger_dk_create_custom_menu($menu_items_availlable, $total, $parent_array, $menu_name) { + $borger_dk_menu = variable_get('os2_borger_dk_borger_dk_menu_name', t('Borger.dk menu')); if ($menu_name == 'borgerdkmenu2' && $borger_dk_menu == 'Borger.dk menu') { $existing_menu = db_query('SELECT * FROM {menu_custom} WHERE menu_name = :menu_name', array('menu_name' => $menu_name))->fetchAssoc(); @@ -1190,30 +1187,16 @@ function os2web_borger_dk_create_custom_menu($menu_items_availlable, $total, $pa menu_save($menu); } } - /* elseif ($menu_name != 'borgerdkmenu2') { - $existing_menu = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', - array('link_title' => $borger_dk_menu, 'menu_name' => $menu_name))->fetchAssoc(); - if (!$existing_menu) { - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => 'node', - 'link_title' => $borger_dk_menu, - 'module' => 'os2web_borger_dk', - 'plid' => 0, - ); - menu_link_save($menu_item); - } - }*/ $operations[] = array(); // Then import the menu from Borger.dk and tag all imported articles. - $operations[] = array('_os2web_borger_dk_menus_cronbatch_wrapper', array($total)); + $operations[] = array('_os2_borger_dk_menus_cronbatch_wrapper', array($total)); $groups = array_chunk($menu_items_availlable, 10); foreach ($groups as $gid => $group) { // Set the batch operation to import 10 menu items each time. $operations[] = array( - '_os2web_borger_dk_import_menu_items', + '_os2_borger_dk_import_menu_items', array($group, $total, $parent_array, $menu_name), ); } @@ -1223,61 +1206,103 @@ function os2web_borger_dk_create_custom_menu($menu_items_availlable, $total, $pa 'title' => t('Importing menu from Borger.dk'), 'init_message' => t('Import job is starting.'), 'progress_message' => t('Processed @current out of @total.'), - 'finished' => 'os2web_borger_dk_batch_menu_import_finished', + 'finished' => 'os2_borger_dk_batch_menu_import_finished', ); // Finally we execute the batch process(es). batch_set($batch); - // menu_cache_clear_all(); - // menu_link_load($menu); -} +} +function _os2_borger_dk_add_node_menu($node, $existing_parent = array()) { + $menu_name = variable_get('build_borger_menu_under_menu'); + $node->menu = array( + 'link_title' => $node->title, + 'menu_name' => $menu_name, + 'description' => '', + 'plid' => $existing_parent['mlid'], + 'enabled' => 1, + ); + menu_node_save($node); + return $node; +} /** - * Function _os2web_borger_dk_import_menu_items(). + * Function _os2_borger_dk_import_menu_items(). */ -function _os2web_borger_dk_import_menu_items($group, $total, $parent_array, $menu_name, &$context) { +function _os2_borger_dk_import_menu_items($group, $total, $parent_array, $menu_name, &$context) { if (empty($context['sandbox'])) { $context['sandbox'] = array(); $context['sandbox']['progress'] = 0; $context['sandbox']['max'] = $total; } + $menu_to_term = variable_get('os2_borger_dk_choose_term', 0); + $vocab_name = variable_get('build_borger_menu_under_vocabulary', 'os2_base_tax_site_structure'); + $vocab = taxonomy_vocabulary_machine_name_load($vocab_name); + if ($vocab) { + $vid = $vocab->vid; + } + else { + $vid = FALSE; + } + foreach ($group as $item) { $item_site_id = $item['SiteID']; $item_pid = $item['ParentID']; $menu_item = array(); + $mlid = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', array('link_title' => $item['SiteTitle'], 'menu_name' => $menu_name))->fetchAssoc(); // The first menu item from Borger.dk does NOT contain a parent ID. // 'Emner', it is the root of Borger.dk menu tree structure. - if (empty($item['ParentID'])) { - $mlid = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', array('link_title' => $item['SiteTitle'], 'menu_name' => $menu_name))->fetchAssoc(); + if (empty($item['ParentID']) && $item['SiteTitle'] == 'Emner') { // If the menu link is NOT existed. if (!$mlid) { - $nid = _os2web_borger_dk_create_menu_page($item); - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => "node/" . $nid, - 'link_title' => $item['SiteTitle'], - 'module' => 'os2web_borger_dk', - 'plid' => $item_pid, - ); - menu_link_save($menu_item); + + + $item['SiteTitle'] = 'Borger'; + if (!$vid && !$menu_to_term) { + $nid = _os2_borger_dk_create_menu_page($item); + $node = node_load($nid); + _os2_borger_dk_add_node_menu($node, array()); + } + else { + $borger = taxonomy_get_term_by_name('Borger', $vocab_name); + if (!$borger) { + $borger = taxonomy_get_term_by_name('Emner', $vocab_name); + } + + if (!$borger) { + // Create a new top level term programmatically. + $item['SiteTitle'] = 'Borger'; + _os2_borger_dk_create_menu_term($item, $vid, array(), $vocab_name); + } + } + } // Update our progress information. $context['sandbox']['progress']++; } else { - $mlid = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', array('link_title' => $item['SiteTitle'], 'menu_name' => $menu_name))->fetchAssoc(); + + if (!$vid && !$menu_to_term) { // If the menu link is NOT existed. $existing_parent = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', array('link_title' => $parent_array[$item_pid], 'menu_name' => $menu_name))->fetchAssoc(); - if ($existing_parent && !$mlid) { - // Create a menu page for the Menu item (path). - $nid = _os2web_borger_dk_create_menu_page($item); - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => "node/" . $nid, - 'link_title' => $item['SiteTitle'], - 'module' => 'os2web_borger_dk', - 'plid' => $existing_parent['mlid'], - ); - menu_link_save($menu_item); + if ($existing_parent && !$mlid) { + // Create a menu page for the Menu item (path). + $nid = _os2_borger_dk_create_menu_page($item); + $node = node_load($nid); + _os2_borger_dk_add_node_menu($node, $existing_parent); + } + } + else { + $mlid = taxonomy_get_term_by_name($item['SiteTitle'], $vocab_name); + // If the menu link is NOT existed. + + $existing_parent = taxonomy_get_term_by_name($parent_array[$item_pid], $vocab_name); + + if (!$mlid) { + if (!empty($existing_parent)) { + $existing_parent = reset($existing_parent); + // Create a term for the Menu item (path). + _os2_borger_dk_create_menu_term($item, $vid, array($existing_parent->tid), $vocab_name); + } + } } // Update our progress information. $context['sandbox']['progress']++; @@ -1286,22 +1311,24 @@ function _os2web_borger_dk_import_menu_items($group, $total, $parent_array, $men $context['finished'] = 1; } /** - * Function _os2web_borger_dk_create_menu_page(). + * Function _os2_borger_dk_create_menu_page(). */ -function _os2web_borger_dk_create_menu_page($item) { +function _os2_borger_dk_create_menu_page($item) { + $type = variable_get('os2_borger_dk_menus_menu_page', 'os2_base_contentpage'); $result = db_query('SELECT * FROM {node} WHERE type = :type AND title = :title', - array('type' => 'menu_page', 'title' => $item['SiteTitle']))->fetchAssoc(); + array('type' => $type, 'title' => $item['SiteTitle']))->fetchAssoc(); if (!$result) { $node = new stdClass(); + $node->uid = 1; $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; $node->validated = TRUE; // Insert default value of a new node. - $node->type = 'menu_page'; + $node->type = $type; $node->title = $item['SiteTitle']; - $node->body['und']['0']['value'] = ''; - $node->body['und']['0']['safe_value'] = ''; - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + $node->body[LANGUAGE_NONE]['0']['value'] = ''; + $node->body[LANGUAGE_NONE]['0']['safe_value'] = ''; + $node->body[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; $node = node_submit($node); node_save($node); return $node->nid; @@ -1313,63 +1340,42 @@ function _os2web_borger_dk_create_menu_page($item) { } /** - * Funtion : Get articleIds from each pages/site. + * Function _os2_borger_dk_create_menu_term(). */ -function _os2web_borger_dk_GetArticleIDsBySiteID($site_id, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { - $error = array(); - // The ID of the Borger.dk-site to get must be given as argument. - if (empty($site_id)) { - return $error; - } - $ids = array(); - // We use a soap-client to fetch the specified article from Borger.dk. - $client = new SoapClient($wsdl, array('exceptions' => 0)); - - // Then we execute our webservice-request. - $array_get_article_ids = array('siteID' => $site_id); +function _os2_borger_dk_create_menu_term($item, $vid, $tid, $vocab_name = NULL) { + $vocab_name = variable_get('build_borger_menu_under_vocabulary', 'os2_base_tax_site_structure'); + // Create a new term programmatically under 'Borger'. + $newterm = new stdClass(); + $newterm->name = $item['SiteTitle']; // The name of the term + $newterm->vid = $vid; // The ID of the parent vocabulary + $newterm->vocabulary_machine_name = $vocab_name; + $newterm->description = ''; + $newterm->parent = array($tid); + taxonomy_term_save($newterm); + return $newterm->tid; - $result_article = $client->GetArticleIDsBySiteID($array_get_article_ids); - if (is_soap_fault($result_article)) { - // An error was encountered and we examine it more closely. - $error = _os2web_borger_dk_translate_soap_fault(2, $result_article->faultcode, $result_article->faultstring); - - return $error; - } - else { - $article_ids = $result_article->GetArticleIDsBySiteIDResult; - if (isset($article_ids->ArticleShortDescription)) { - if (is_array($article_ids->ArticleShortDescription)) { - foreach ($article_ids->ArticleShortDescription as $article_id) { - $ids[] = $article_id->ArticleID; - } - } - else { - $ids[] = $article_ids->ArticleShortDescription->ArticleID; - } - } - } - return $ids; } + /** - * Function _os2web_borger_dk_menus_cronbatch_wrapper(). + * Function _os2_borger_dk_menus_cronbatch_wrapper(). * * A batch-wrapper so that the cronbatch function can * also be run via the browser, and not just as a cron-job. */ -function _os2web_borger_dk_menus_cronbatch_wrapper($max_count, &$context) { - // _os2web_borger_dk_menus_cronbatch(TRUE); +function _os2_borger_dk_menus_cronbatch_wrapper($max_count, &$context) { + // _os2_borger_dk_menus_cronbatch(TRUE); $context['sandbox']['progress']++; $context['message'] = t("Importing the menu from Borger.dk."); $context['finished'] = 1; } /** - * Function os2web_borger_dk_batch_article_import_finished(). + * Function os2_borger_dk_batch_article_import_finished(). * * When menu structure is imported, show message and go * to next process: import articles. */ -function os2web_borger_dk_batch_menu_import_finished($success, $results, $operations) { +function os2_borger_dk_batch_menu_import_finished($success, $results, $operations) { if ($success) { drupal_set_message(t('The Borger.dk menu items are imported.')); drupal_set_message(t('You can now import all articles from Borger.dk')); @@ -1380,23 +1386,23 @@ function os2web_borger_dk_batch_menu_import_finished($success, $results, $operat '@operation' => $error_operation[0], '@args' => print_r($error_operation[0], TRUE)))); } menu_cache_clear_all(); - // _os2web_borger_dk_import_all_articles(); - drupal_goto('admin/config/os2web_borger_dk/settings'); + // _os2_borger_dk_import_all_articles(); + drupal_goto('admin/config/os2_borger_dk/settings'); } /** - * Function os2web_borger_dk_import_articles_now_form_submit(). + * Function os2_borger_dk_import_articles_now_form_submit(). */ -function os2web_borger_dk_import_articles_now_form_submit($form, &$form_state) { +function os2_borger_dk_import_articles_now_form_submit($form, &$form_state) { if ($form_state['submitted'] == 1) { // First we find the list of availlable articles at Borger.dk. $operations = array(); - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $titles_availlable = _os2web_borger_dk_GetAllArticles($wsdl, FALSE); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $titles_availlable = _os2_borger_dk_GetAllArticles($wsdl, FALSE); // Then get a list of already imported articles to update. $update_items = array(); - $sql = 'SELECT n.nid, ba.external_id FROM {node} AS n LEFT JOIN {os2web_borger_dk_article} AS ba ON n.nid = ba.nid WHERE n.type LIKE :node_type'; - $result = db_query($sql, array(':node_type' => 'os2web_borger_dk_article')); + $sql = 'SELECT n.nid, ba.external_id FROM {node} AS n LEFT JOIN {os2_borger_dk_article} AS ba ON n.nid = ba.nid WHERE n.type LIKE :node_type'; + $result = db_query($sql, array(':node_type' => 'os2_borger_dk_article')); foreach ($result as $record) { $update_items[$record->external_id] = $record->nid; } @@ -1419,19 +1425,19 @@ function os2web_borger_dk_import_articles_now_form_submit($form, &$form_state) { $groups = array_chunk($full_id_list, 10); foreach ($groups as $gid => $group) { // Set the batch operation to import 10 articles at a time. - $operations[] = array('_os2web_borger_dk_batch_article_import', array($group, + $operations[] = array('_os2_borger_dk_batch_article_import', array($group, $max_count, $update_items)); } // Then import the menu from Borger.dk and tag all imported articles. - $operations[] = array('_os2web_borger_dk_articles_cronbatch_wrapper', array($max_count)); + $operations[] = array('_os2_borger_dk_articles_cronbatch_wrapper', array($max_count)); $batch = array( 'operations' => $operations, 'title' => t('Importing articles from Borger.dk'), 'init_message' => t('Import job is starting.'), 'progress_message' => t('Processed @current out of @total.'), - 'finished' => 'os2web_borger_dk_batch_article_import_finished', + 'finished' => 'os2_borger_dk_batch_article_import_finished', ); // Finally we execute the batch process(es). @@ -1439,10 +1445,10 @@ function os2web_borger_dk_import_articles_now_form_submit($form, &$form_state) { } } /** - * Function _os2web_borger_dk_batch_article_import(). + * Function _os2_borger_dk_batch_article_import(). */ -function _os2web_borger_dk_batch_article_import($external_id_list, $max_count, $update_items, &$context) { - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); +function _os2_borger_dk_batch_article_import($external_id_list, $max_count, $update_items, &$context) { + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); if (empty($context['sandbox'])) { $context['sandbox'] = array(); $context['sandbox']['progress'] = 0; @@ -1451,99 +1457,27 @@ function _os2web_borger_dk_batch_article_import($external_id_list, $max_count, $ foreach ($external_id_list as $eid) { // Import the Borger.dk-article with the given ArticleID. - $article = _os2web_borger_dk_GetArticleByID($eid, $wsdl, FALSE); + $article = _os2_borger_dk_GetArticleByID($eid, $wsdl, FALSE); if (empty($article['Exceptions']) && empty($article['error'])) { $title = $article['title']; $nid = FALSE; // Then check if this node should be updated or created. if (!isset($update_items[$eid])) { - // And we update all the node-fields with the article-values. - $node = new stdClass(); - $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; - $node->validated = TRUE; - - // Insert default value of a new node. - $node->type = 'os2web_borger_dk_article'; - $node->title = (!empty($article['title'])) ? $article['title'] : ''; - $node->body['und']['0']['value'] = !empty($body) ? $body : ''; - $node->field_os2web_borger_dk_borgerurl['und'][0]['value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und']['0']['safe_value'] = $body; - $node->field_os2web_borger_dk_borgerurl['und'][0]['safe_value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_header['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_selfservi['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_byline['und'][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; - $node->field_os2web_borger_dk_legislati['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_shortlist['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_recommend['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $field_settings = $form_state['values']['os2web_borger_dk_field_settings']; - // Check admin field settings : are there fields set as hidden by admin. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - foreach ($admin_display_fields as $type => $items) { - if (!$admin_display_fields[$type]) { - $field_settings[$type] = $type; - } - } - // TODO: Perform a logical-test (on paper) to - // see if the external_status is correct. - $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; - $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; - $node->os2web_borger_dk_article = array( - 'external_id' => $article['external_id'], - 'external_url' => $article['external_url'], - 'external_status' => $external_status, - 'field_settings' => $field_settings, - 'published_date' => strtotime($article['published_date']), - 'last_updated' => strtotime($article['last_updated']), - ); - - if (!empty($article['Exceptions']) || !empty($article['error'])) { - drupal_set_message(t('An exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); - drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); - } - else { - $node = node_submit($node); - - // We need to store the field values and article-settings. - node_save($node); - - // Then we need to update the ArticleStatus in the Title-list. - if ($node->nid) { - db_update('os2web_borger_dk_article_titles') - ->fields(array('ArticleStatus' => $node->nid)) - ->condition('ArticleID', $article['external_id'], '=') - ->execute(); - } - } - $nid = $node->nid; + _os2_borger_dk_create_article_node($nid, $article); } else { // This is an already imported article, and we should // update the node-content. $nid = $update_items[$eid]; + // If a nid was found we can update the node with the + // article from Borger.dk. + if (is_numeric($nid)) { + $node = _os2_borger_dk_update_node_content($nid, $article); + node_save($node); + } } - // If a nid was found we can update the node with the - // article from Borger.dk. - if ($nid) { - _os2web_borger_dk_update_node_content($nid, $article); - } $context['results'][] = $nid . ' : ' . check_plain($title); $context['message'] = 'Imported title: ' . check_plain($title); } @@ -1558,19 +1492,11 @@ function _os2web_borger_dk_batch_article_import($external_id_list, $max_count, $ $context['finished'] = 1; } + /** - * Function _os2web_borger_dk_articles_cronbatch_wrapper(). - */ -function _os2web_borger_dk_articles_cronbatch_wrapper() { - // _os2web_borger_dk_menus_cronbatch(TRUE); - $context['sandbox']['progress']++; - $context['message'] = t("Importing articles from Borger.dk."); - $context['finished'] = 1; -} -/** - * Function os2web_borger_dk_batch_article_import_finished(). + * Function os2_borger_dk_batch_article_import_finished(). */ -function os2web_borger_dk_batch_article_import_finished($success, $results, $operations) { +function os2_borger_dk_batch_article_import_finished($success, $results, $operations) { if ($success) { drupal_set_message(t('@count results processed.', array('@count' => count($results)))); drupal_set_message(t('The final result was "%final"', array('%final' => end($results)))); @@ -1580,19 +1506,19 @@ function os2web_borger_dk_batch_article_import_finished($success, $results, $ope drupal_set_message(t('An error occurred while processing @operation with arguments : @args', array( '@operation' => $error_operation[0], '@args' => print_r($error_operation[0], TRUE)))); } - drupal_goto('admin/config/os2web_borger_dk/settings'); + drupal_goto('admin/config/os2_borger_dk/settings'); } /** - * Function os2web_os2web_borger_dk_create_borger_dk_menu_now_form_submit(). + * Function os2_os2_borger_dk_create_borger_dk_menu_now_form_submit(). * * Create links to articles under a chosen menu. */ -function os2web_borger_dk_create_borger_dk_menu_now_form_submit($form, &$form_state) { +function os2_borger_dk_create_borger_dk_menu_now_form_submit($form, &$form_state) { if ($form_state['submitted'] == 1) { // Next we get a list of all menu-items from the Borger.dk-webservice. - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $menu_items_availlable = _os2web_borger_dk_GetAllSites($wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $menu_items_availlable = _os2_borger_dk_GetAllSites($wsdl); if (!empty($menu_items_availlable['Exceptions']) || !empty($menu_items_availlable['error'])) { $msg = 'An error occured while fetching the Borger.dk menus. Last succesful update was at: %success'; @@ -1604,18 +1530,18 @@ function os2web_borger_dk_create_borger_dk_menu_now_form_submit($form, &$form_st $menu_name = variable_get('build_borger_menu_under_menu'); $operations[] = array(); // Then import the menu from Borger.dk and tag all imported articles. - $operations[] = array('_os2web_borger_dk_create_menustructure_cronbatch_wrapper', array($total)); + $operations[] = array('_os2_borger_dk_create_menustructure_cronbatch_wrapper', array($total)); foreach ($menu_items_availlable as $item) { $operations[] = array( - '_os2web_borger_dk_create_borger_dk_meun_structure', + '_os2_borger_dk_create_borger_dk_meun_structure', array($item, $total, $menu_name), ); } /* $groups = array_chunk($menu_items_availlable, 10); foreach ($groups as $gid => $group) { // Set the batch operation to import 10 menu items each time. - $operations[] = array('_os2web_borger_dk_create_borger_dk_meun_structure', array($group, $total)); + $operations[] = array('_os2_borger_dk_create_borger_dk_meun_structure', array($group, $total)); }*/ $batch = array( @@ -1623,32 +1549,21 @@ function os2web_borger_dk_create_borger_dk_menu_now_form_submit($form, &$form_st 'title' => t('Create Borger.dk menu structure'), 'init_message' => t('Create job is starting.'), 'progress_message' => t('Processed @current out of @total.'), - 'finished' => 'os2web_borger_dk_batch_menustructure_create_finished', + 'finished' => 'os2_borger_dk_batch_menustructure_create_finished', ); // Finally we execute the batch process(es). batch_set($batch); } } /** - * Function _os2web_borger_dk_create_borger_dk_meun_structure(). + * Function _os2_borger_dk_create_borger_dk_meun_structure(). */ -function _os2web_borger_dk_create_borger_dk_meun_structure($item, $total, $menu_name, &$context) { +function _os2_borger_dk_create_borger_dk_meun_structure($item, $total, $menu_name, &$context) { if (empty($context['sandbox'])) { $context['sandbox'] = array(); $context['sandbox']['progress'] = 0; $context['sandbox']['max'] = $total; } - /* This part is only for Ishøj kommune or other u - * sers where they create their own - * 'Emner' menu link and rename it to 'Borger'. - */ - if ($item['SiteTitle'] == 'Emner') { - $result = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', - array('link_title' => 'Borger', 'menu_name' => $menu_name))->fetchAssoc(); - if ($result) { - $item['SiteTitle'] = 'Borger'; - } - } // Search each menu link under the given menu_name. $pid = db_query('SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name', @@ -1656,134 +1571,67 @@ function _os2web_borger_dk_create_borger_dk_meun_structure($item, $total, $menu_ if ($pid) { // If the menu link is existed, then get all article // IDs in the menu link page. - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $article_ids = _os2web_borger_dk_GetArticleIDsBySiteID($item['SiteID'], $wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $article_ids = _os2_borger_dk_GetArticleIDsBySiteID($item['SiteID'], $wsdl); // When there are articles with IDs under the page. if (!empty($article_ids)) { foreach ($article_ids as $id => $value) { // TODO: check if the links is existed.!!!! // Check if article is existed. - $result = db_query("SELECT `ArticleID`, `ArticleStatus`, `ArticleTitle` FROM {os2web_borger_dk_article_titles} + $result = db_query("SELECT `ArticleID`, `ArticleStatus`, `ArticleTitle` FROM {os2_borger_dk_article_titles} WHERE `ArticleID` = " . $value); if ($result) { foreach ($result as $row) { $article_title = $row->ArticleTitle; - $query = 'SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name AND plid = :plid'; + $query = 'SELECT * FROM {menu_links} WHERE link_title= :link_title AND menu_name = :menu_name AND plid = :plid'; $mlid = db_query($query, array( 'link_title' => $article_title, 'menu_name' => $menu_name, - 'plid' => $pid['mlid']) + 'plid' => $pid['mlid'], + ) )->fetchAssoc(); if ($mlid) { - return; + + $menu_to_term = variable_get('os2_borger_dk_choose_term', 0); + $vocab_name = variable_get('build_borger_menu_under_vocabulary', 'os2_base_tax_site_structure'); + $vocab = taxonomy_vocabulary_machine_name_load($vocab_name); + if ($vocab) { + $vid = $vocab->vid; + } + else { + $vid = FALSE; + } + if ($menu_to_term && $vid) { + // Delete the term. + $tid = db_query('SELECT tid FROM {taxonomy_menu} WHERE mlid = :mlid', array(':mlid' => $mlid['mlid'],))->fetchField(); + + taxonomy_term_delete($tid); + } + + return; + } if ($row->ArticleStatus > 0) { - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => "node/" . $row->ArticleStatus, - 'link_title' => $row->ArticleTitle, - 'module' => 'os2web_borger_dk', - 'plid' => isset($pid['mlid']) ? $pid['mlid'] : 0, - ); - menu_link_save($menu_item); + + $node = node_load($row->ArticleStatus); + _os2_borger_dk_add_node_menu($node, $pid); + } // If the article is NOT imported yet, so import it. else { - $article = _os2web_borger_dk_GetArticleByID($value, $wsdl, FALSE); + $article = _os2_borger_dk_GetArticleByID($value, $wsdl, FALSE); if (empty($article['Exceptions']) && empty($article['error'])) { - $body = ''; - foreach ($article['kernetekst'] as $div => $content) { - $body .= $content . "\n"; - } - $title = $article['title']; $nid = FALSE; - $node = new stdClass(); - $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; - $node->validated = TRUE; - // Insert default value of a new node. - $node->type = 'os2web_borger_dk_article'; - $node->title = (!empty($article['title'])) ? $article['title'] : ''; - $node->body['und']['0']['value'] = !empty($body) ? $body : ''; - $node->field_os2web_borger_dk_borgerurl['und'][0]['value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und']['0']['safe_value'] = $body; - $node->field_os2web_borger_dk_borgerurl['und'][0]['safe_value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_header['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_selfservi['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_byline['und'][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; - $node->field_os2web_borger_dk_legislati['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_shortlist['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_recommend['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $field_settings = $form_state['values']['os2web_borger_dk_field_settings']; - // Check admin field settings : are there fields - // set as hidden by admin. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - foreach ($admin_display_fields as $type => $items) { - if (!$admin_display_fields[$type]) { - $field_settings[$type] = $type; - } - } - // TODO: Perform a logical-test (on paper) to - // see if the external_status is correct. - $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; - $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; - $node->os2web_borger_dk_article = array( - 'external_id' => $article['external_id'], - 'external_url' => $article['external_url'], - 'external_status' => $external_status, - 'field_settings' => $field_settings, - 'published_date' => strtotime($article['published_date']), - 'last_updated' => strtotime($article['last_updated']), - ); - - if (!empty($article['Exceptions']) || !empty($article['error'])) { - drupal_set_message(t('An exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); - drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); - } - else { - $node = node_submit($node); - // We need to store the field values and article-settings. - node_save($node); - // Then we need to update the ArticleStatus in the Title-list. - if ($node->nid) { - db_update('os2web_borger_dk_article_titles') - ->fields(array('ArticleStatus' => $node->nid)) - ->condition('ArticleID', $article['external_id'], '=') - ->execute(); - } - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => "node/" . $node->nid, - 'link_title' => $node->title, - 'module' => 'os2web_borger_dk', - 'plid' => isset($pid['mlid']) ? $pid['mlid'] : 0, - ); - menu_link_save($menu_item); - } + $node = _os2_borger_dk_create_article_node($nid, $article, $pid); } } } } // If article is NOT existed, then import by articleID. else { - _os2web_borger_dk_import_supplement_article($value); + _os2_borger_dk_import_supplement_article($value, $pid); } // Update our progress information. $context['sandbox']['progress']++; @@ -1804,9 +1652,9 @@ function _os2web_borger_dk_create_borger_dk_meun_structure($item, $total, $menu_ if (!empty($node_id)) { $node = node_load($node_id); - $node->body['und']['0']['value'] = $body_content; - $node->body['und']['0']['safe_value'] = $body_content; - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + $node->body[LANGUAGE_NONE]['0']['value'] = $body_content; + $node->body[LANGUAGE_NONE]['0']['safe_value'] = $body_content; + $node->body[LANGUAGE_NONE][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; node_save($node); } }*/ @@ -1814,90 +1662,65 @@ function _os2web_borger_dk_create_borger_dk_meun_structure($item, $total, $menu_ $context['finished'] = 1; } +function _os2_borger_dk_create_article_node($nid, $article, $pid = NULL) { + $node = _os2_borger_dk_update_node_content($nid, $article); + $field_settings = $form_state['values']['os2_borger_dk_field_settings']; + // Check admin field settings : are there fields set as hidden by admin. + $admin_display_fields = variable_get('os2_borger_dk_display'); + foreach ($admin_display_fields as $type => $items) { + if (!$admin_display_fields[$type]) { + $field_settings[$type] = $type; + } + } + // TODO: Perform a logical-test (on paper) to + // see if the external_status is correct. + $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; + $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; + $node->os2_borger_dk_article = array( + 'external_id' => $article['external_id'], + 'external_url' => $article['external_url'], + 'external_status' => $external_status, + 'field_settings' => $field_settings, + 'published_date' => strtotime($article['published_date']), + 'last_updated' => strtotime($article['last_updated']), + ); + + if (!empty($article['Exceptions']) || !empty($article['error'])) { + drupal_set_message(t('An exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); + drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); + } + else { + $node = node_submit($node); + // We need to store the field values and article-settings. + node_save($node); + // Then we need to update the ArticleStatus in the Title-list. + if ($node->nid) { + db_update('os2_borger_dk_article_titles') + ->fields(array('ArticleStatus' => $node->nid)) + ->condition('ArticleID', $article['external_id'], '=') + ->execute(); + + } + if (is_numeric($pid)) { + _os2_borger_dk_add_node_menu($node, $pid); + } + } + return $node; +} /** - * Functioin _os2web_borger_dk_import_supplement_article(). + * Functioin _os2_borger_dk_import_supplement_article(). */ -function _os2web_borger_dk_import_supplement_article($value) { - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); +function _os2_borger_dk_import_supplement_article($value, $pid) { + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); // Import the Borger.dk-article with the given ArticleID. - $article = _os2web_borger_dk_GetArticleByID($value, $wsdl, FALSE); + $article = _os2_borger_dk_GetArticleByID($value, $wsdl, FALSE); if (empty($article['Exceptions']) && empty($article['error'])) { - $body = ''; - foreach ($article['kernetekst'] as $div => $content) { - $body .= $content . "\n"; - } - $title = $article['title']; $nid = FALSE; - $node = new stdClass(); - $node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME; - $node->validated = TRUE; - // Insert default value of a new node. - $node->type = 'os2web_borger_dk_article'; - $node->title = (!empty($article['title'])) ? $article['title'] : ''; - $node->body['und']['0']['value'] = !empty($body) ? $body : ''; - $node->field_os2web_borger_dk_borgerurl['und'][0]['value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und']['0']['safe_value'] = $body; - $node->field_os2web_borger_dk_borgerurl['und'][0]['safe_value'] = (!empty($article['external_url'])) ? $article['external_url'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_header['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_selfservi['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_byline['und'][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; - $node->field_os2web_borger_dk_legislati['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_shortlist['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - $node->field_os2web_borger_dk_recommend['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $field_settings = $form_state['values']['os2web_borger_dk_field_settings']; - // Check admin field settings : are there fields set as hidden by admin. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - foreach ($admin_display_fields as $type => $items) { - if (!$admin_display_fields[$type]) { - $field_settings[$type] = $type; - } - } - // TODO: Perform a logical-test (on paper) to - // see if the external_status is correct. - $external_status = (empty($article['Exceptions']) && empty($article['error'])) ? 1 : 0; - $external_status = (!empty($article['error']) && $article['error_type'] == 'not_found') ? -1 : $external_status; - $node->os2web_borger_dk_article = array( - 'external_id' => $article['external_id'], - 'external_url' => $article['external_url'], - 'external_status' => $external_status, - 'field_settings' => $field_settings, - 'published_date' => strtotime($article['published_date']), - 'last_updated' => strtotime($article['last_updated']), - ); + $node = _os2_borger_dk_create_article_node($nid, $article, $pid); - if (!empty($article['Exceptions']) || !empty($article['error'])) { - drupal_set_message(t('An exception was thrown by the Borger.dk webservice for the specified URL.'), 'error'); - drupal_set_message(t('You can fetch this article when the webservice is responsive again.'), 'error'); - } - else { - $node = node_submit($node); - // We need to store the field values and article-settings. - node_save($node); - // Then we need to update the ArticleStatus in the Title-list. - if ($node->nid) { - db_insert('os2web_borger_dk_article_titles') - ->fields(array('ArticleStatus' => $node->nid)) - ->condition('ArticleID', $article['external_id'], '=') - ->execute(); - db_insert('os2web_borger_dk_article_titles') + db_insert('os2_borger_dk_article_titles') ->fields(array( 'ArticleID' => $article['external_id'], 'ArticleTitle' => $article['title'], @@ -1907,30 +1730,13 @@ function _os2web_borger_dk_import_supplement_article($value) { 'FORMFields' => $article['FORMFields'], )) ->execute(); - } - $menu_item = array( - 'menu_name' => $menu_name, - 'link_path' => "node/" . $node->nid, - 'link_title' => $node->title, - 'module' => 'os2web_borger_dk', - 'plid' => isset($pid['mlid']) ? $pid['mlid'] : 0, - ); - menu_link_save($menu_item); - } } } + /** - * Function _os2web_borger_dk_create_menustructure_cronbatch_wrapper(). - */ -function _os2web_borger_dk_create_menustructure_cronbatch_wrapper($max_count, &$context) { - $context['sandbox']['progress']++; - $context['message'] = t("Creating Borger.dk menu structure."); - $context['finished'] = 1; -} -/** - * Function os2web_borger_dk_batch_menustructure_create_finished(). + * Function os2_borger_dk_batch_menustructure_create_finished(). */ -function os2web_borger_dk_batch_menustructure_create_finished($success, $results, $operations) { +function os2_borger_dk_batch_menustructure_create_finished($success, $results, $operations) { if ($success) { $menu_name = variable_get('build_borger_menu_under_menu'); @@ -1946,18 +1752,19 @@ function os2web_borger_dk_batch_menustructure_create_finished($success, $results menu_cache_clear_all(); // Finished. - drupal_goto('admin/config/os2web_borger_dk/settings'); + drupal_goto('admin/config/os2_borger_dk/settings'); } /***************** End of menu import *****************************************/ +/**************** Borger.dk Cron. ********************************************/ /** * Implements hook_cron(). */ -function os2web_borger_dk_cron() { - $cron_settings_time_articles = variable_get('os2web_borger_dk_nightly_article_sync', FALSE); - $titles_autocomplete = variable_get('os2web_borger_dk_titles_sync', FALSE); - $borger_dk_menus_import = variable_get('os2web_borger_dk_menus_import', FALSE); - $cron_settings_time_menus = variable_get('os2web_borger_dk_nightly_menu_sync'); +function os2_borger_dk_cron() { + $cron_settings_time_articles = variable_get('os2_borger_dk_nightly_article_sync', FALSE); + $titles_autocomplete = variable_get('os2_borger_dk_titles_sync', FALSE); + $borger_dk_menus_import = variable_get('os2_borger_dk_menus_import', FALSE); + $cron_settings_time_menus = variable_get('os2_borger_dk_nightly_menu_sync'); // Then we can find out if it is time for our cron-job to run. if (!empty($cron_settings_time_articles) || !empty($cron_settings_time_menus)) { @@ -1970,43 +1777,60 @@ function os2web_borger_dk_cron() { // Is it time for auto-updating imported Borger.dk-articles. if ($cron_settings_time_articles == $current_hour) { // Run the auto-update for articles already imported. - _os2web_borger_dk_cronbatch(); + _os2_borger_dk_cronbatch(); // Fetch availlable Borger.dk-titles if autocomplete has been activated. if ($titles_autocomplete) { // We must fetch a list of all availlable articles from Borger.dk. - _os2web_borger_dk_titles_cronbatch(); + _os2_borger_dk_titles_cronbatch(); } } // Is it time for auto-updating imported Borger.dk-menus. if ($cron_settings_time_menus == $current_hour) { $this_run = time(); - $last_run = variable_get('os2web_borger_dk_menus_last_update', $this_run); - $weekly = variable_get('os2web_borger_dk_weekly_borger_dk_menus_import', 0); + $last_run = variable_get('os2_borger_dk_menus_last_update', $this_run); + $weekly = variable_get('os2_borger_dk_weekly_borger_dk_menus_import', 0); // 7 * 24 * 60 * 60 = 604800. We deduct 800 seconds to give // the cron-request some time to start. if (!empty($weekly) && ($weekly > 0) && ($this_run - $last_run > 604000)) { // It is "about" a week ago now, so we start the cronbatch-job now. - _os2web_borger_dk_menus_cronbatch(); + _os2_borger_dk_menus_cronbatch(); } elseif (empty($weekly) || ($weekly == 0)) { // If run daily then we start the cronbatch-job now. - _os2web_borger_dk_menus_cronbatch(); + _os2_borger_dk_menus_cronbatch(); } } } // We check for deleted-items in the queue at every cron-run. - _os2web_borger_dk_cron_queue(); + _os2_borger_dk_cron_queue(); } /** - * Function _os2web_borger_dk_cron_queue(). + * Function _os2_borger_dk_articles_cronbatch_wrapper(). + */ +function _os2_borger_dk_articles_cronbatch_wrapper() { + // _os2_borger_dk_menus_cronbatch(TRUE); + $context['sandbox']['progress']++; + $context['message'] = t("Importing articles from Borger.dk."); + $context['finished'] = 1; +} +/** + * Function _os2_borger_dk_create_menustructure_cronbatch_wrapper(). + */ +function _os2_borger_dk_create_menustructure_cronbatch_wrapper($max_count, &$context) { + $context['sandbox']['progress']++; + $context['message'] = t("Creating Borger.dk menu structure."); + $context['finished'] = 1; +} +/** + * Function _os2_borger_dk_cron_queue(). */ -function _os2web_borger_dk_cron_queue() { - $queue = DrupalQueue::get('os2web_borger_dk_delete_queue'); - $result = db_query('SELECT nid, external_id FROM {os2web_borger_dk_article} WHERE external_status = -2'); +function _os2_borger_dk_cron_queue() { + $queue = DrupalQueue::get('os2_borger_dk_delete_queue'); + $result = db_query('SELECT nid, external_id FROM {os2_borger_dk_article} WHERE external_status = -2'); foreach ($result as $item) { $qitem = array('nid' => $item->nid, 'external_id' => $item->external_id); $queue->createItem($qitem); @@ -2014,19 +1838,19 @@ function _os2web_borger_dk_cron_queue() { } /** - * Function _os2web_borger_dk_cronbatch(). + * Function _os2_borger_dk_cronbatch(). */ -function _os2web_borger_dk_cronbatch() { +function _os2_borger_dk_cronbatch() { // First we determine the time for our last check for new updates. $this_run = time(); - $last_run = variable_get('os2web_borger_dk_last_update', time()); + $last_run = variable_get('os2_borger_dk_last_update', time()); $updated_after = date('Y-m-d\TH\:i\:s', $last_run); - $titles_autocomplete = variable_get('os2web_borger_dk_titles_sync', FALSE); + $titles_autocomplete = variable_get('os2_borger_dk_titles_sync', FALSE); // Next we get a list of all imported articles. $article_id_list = array(); $article_id_to_nid = array(); - $result = db_query('SELECT nid, external_id FROM {os2web_borger_dk_article} WHERE external_status > 0'); + $result = db_query('SELECT nid, external_id FROM {os2_borger_dk_article} WHERE external_status > 0'); foreach ($result as $item) { // We also build an index of "external_id" => "nid". $article_id2nid[$item->external_id] = $item->nid; @@ -2034,11 +1858,11 @@ function _os2web_borger_dk_cronbatch() { } // Then we get all the updated articles. We can not(!) use the LastUpdated- - // field in the 'os2web_borger_dk_titles'-table since it only works when + // field in the 'os2_borger_dk_titles'-table since it only works when // titles-autocomplete has been activated. $articles = array(); - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $articles = _os2web_borger_dk_GetArticlesByIDs($article_id_list, $updated_after, $wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $articles = _os2_borger_dk_GetArticlesByIDs($article_id_list, $updated_after, $wsdl); // We must check if the webservice throws ANY errors. $any_webservice_errors = FALSE; @@ -2056,7 +1880,8 @@ function _os2web_borger_dk_cronbatch() { if (empty($article['no_updates'])) { // We only update articles that does not contain an error. if (empty($article['Exceptions']) && empty($article['error'])) { - _os2web_borger_dk_update_node_content($nid, $article); + $node = _os2_borger_dk_update_node_content($nid, $article); + node_save($node); } if (!empty($article['Exceptions'])) { $any_webservice_errors = TRUE; @@ -2066,10 +1891,10 @@ function _os2web_borger_dk_cronbatch() { // Articles with errors might have been deleted, and we must handle it. // But if "Titles autocomplete" is active, then it will be handled by // the titles-auto-update in the cron-function: - // _os2web_borger_dk_titles_cronbatch(). + // _os2_borger_dk_titles_cronbatch(). if (!$titles_autocomplete) { // Try to get this one article, to see if it still exists. - $item = _os2web_borger_dk_GetArticleByID($external_id, $wsdl); + $item = _os2_borger_dk_GetArticleByID($external_id, $wsdl); if (!empty($item['error']) && $item['error'] == 1) { if (!empty($item['error_type']) && ($item['error_type'] == 'not_found')) { // $deleted_items[$nid] = $item; @@ -2088,7 +1913,7 @@ function _os2web_borger_dk_cronbatch() { // Deleted_ids will only contain elements // if "Titles autocomplete" is inactive. if (!empty($deleted_ids)) { - $sql = "UPDATE {os2web_borger_dk_article} SET external_status = -2 WHERE nid IN (:nids)"; + $sql = "UPDATE {os2_borger_dk_article} SET external_status = -2 WHERE nid IN (:nids)"; $nid_list = implode(',', $deleted_ids); db_query($sql, array(':updated' => $this_run, ':nids' => $nid_list)); } @@ -2113,7 +1938,7 @@ function _os2web_borger_dk_cronbatch() { // Now we must update the "last_updated" variable. // But only if no errors were encountered. if (!$any_webservice_errors) { - variable_set('os2web_borger_dk_last_update', $this_run); + variable_set('os2_borger_dk_last_update', $this_run); $updated_at = date('Y-m-d\TH\:i\:s', $this_run); $msg = 'All Borger.dk webservice articles have been updated succesfully at: %success'; watchdog('OS2web Borger.dk', $msg, $variables = array('%success' => $updated_at)); @@ -2133,18 +1958,18 @@ function _os2web_borger_dk_cronbatch() { } /** - * Function _os2web_borger_dk_titles_cronbatch(). + * Function _os2_borger_dk_titles_cronbatch(). */ -function _os2web_borger_dk_titles_cronbatch($first_run = FALSE) { - $borger_dk_menus_import = variable_get('os2web_borger_dk_menus_import', FALSE); +function _os2_borger_dk_titles_cronbatch($first_run = FALSE) { + $borger_dk_menus_import = variable_get('os2_borger_dk_menus_import', FALSE); $titles_availlable = array(); - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); - $titles_availlable = _os2web_borger_dk_GetAllArticles($wsdl); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $titles_availlable = _os2_borger_dk_GetAllArticles($wsdl); // We must update the table of Borger.dk Article titles. // And to do that we must know what is already there, so that we can mark // un-listed titles for deletion. - $titles_result = db_query('SELECT `ArticleID`, `ArticleStatus`, `LastUpdated` FROM {os2web_borger_dk_article_titles} WHERE `ArticleStatus` >= 0'); + $titles_result = db_query('SELECT `ArticleID`, `ArticleStatus`, `LastUpdated` FROM {os2_borger_dk_article_titles} WHERE `ArticleStatus` >= 0'); $known_ids = array(); foreach ($titles_result as $item) { $aid = $item->ArticleID; @@ -2160,7 +1985,7 @@ function _os2web_borger_dk_titles_cronbatch($first_run = FALSE) { if ($updated > $known_ids[$aid]['LastUpdated']) { // We know about this article and we update the DB-entry // because the content has changed since we updated it last. - db_update('os2web_borger_dk_article_titles') + db_update('os2_borger_dk_article_titles') ->fields(array( 'ArticleTitle' => $item['ArticleTitle'], 'ArticleUrl' => $item['ArticleUrl'], @@ -2176,7 +2001,7 @@ function _os2web_borger_dk_titles_cronbatch($first_run = FALSE) { } else { // This is a new article-title and we must insert it into DB. - db_insert('os2web_borger_dk_article_titles') + db_insert('os2_borger_dk_article_titles') ->fields(array( 'ArticleID' => $aid, 'ArticleTitle' => $item['ArticleTitle'], @@ -2202,14 +2027,14 @@ function _os2web_borger_dk_titles_cronbatch($first_run = FALSE) { // to autocomplete titles on import we MUST keep it up to date, and can // not have "non-availlable" article titles "ready for import"! $aid_list = implode(',', array_keys($known_ids)); - $sql = "UPDATE {os2web_borger_dk_article_titles} SET `ArticleStatus` = -1 WHERE `ArticleID` IN (:aids)"; + $sql = "UPDATE {os2_borger_dk_article_titles} SET `ArticleStatus` = -1 WHERE `ArticleID` IN (:aids)"; db_query($sql, array(':aids' => $aid_list)); // We create a queue for handling the many SoapClient->request's needed // for examinig if all unknown articles has been deleted. - $queue = DrupalQueue::get('os2web_borger_dk_check_status_queue'); + $queue = DrupalQueue::get('os2_borger_dk_check_status_queue'); - $sql = 'SELECT `nid`, `external_id` FROM {os2web_borger_dk_article} WHERE `external_id` IN (:aids)'; + $sql = 'SELECT `nid`, `external_id` FROM {os2_borger_dk_article} WHERE `external_id` IN (:aids)'; $result = db_query($sql, array(':aids' => $aid_list)); // Step through the known_ids that has not been found. @@ -2224,17 +2049,17 @@ function _os2web_borger_dk_titles_cronbatch($first_run = FALSE) { /** * Implements hook_cron_queue_info(). */ -function os2web_borger_dk_cron_queue_info() { +function os2_borger_dk_cron_queue_info() { $queues = array(); - $queues['os2web_borger_dk_delete_queue'] = array( + $queues['os2_borger_dk_delete_queue'] = array( // Function to call for each item. - 'worker callback' => '_os2web_borger_dk_delete_queue_callback', + 'worker callback' => '_os2_borger_dk_delete_queue_callback', // Seconds to spend working on the queue. 'time' => 20, ); - $queues['os2web_borger_dk_check_status_queue'] = array( + $queues['os2_borger_dk_check_status_queue'] = array( // Function to call for each item. - 'worker callback' => '_os2web_borger_dk_status_check_queue_callback', + 'worker callback' => '_os2_borger_dk_status_check_queue_callback', // Seconds to spend working on the queue. 'time' => 60, ); @@ -2243,23 +2068,23 @@ function os2web_borger_dk_cron_queue_info() { } /** - * Function _os2web_borger_dk_status_check_queue_callback(). + * Function _os2_borger_dk_status_check_queue_callback(). */ -function _os2web_borger_dk_status_check_queue_callback($data) { +function _os2_borger_dk_status_check_queue_callback($data) { // Uses SoapClient->request GetArticleByID to check the // status of a Borger.dk Article with the Borger.dk-WebService. if (!isset($data['nid']) || !isset($data['external_id'])) { return; } - $wsdl = variable_get('os2web_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); + $wsdl = variable_get('os2_borger_dk_webservice', 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl'); // Try to get this one article, to see if it still exists. - $item = _os2web_borger_dk_GetArticleByID($data['external_id'], $wsdl); + $item = _os2_borger_dk_GetArticleByID($data['external_id'], $wsdl); if (!empty($item['error']) && $item['error'] == 1) { if (!empty($item['error_type']) && ($item['error_type'] == 'not_found')) { // Not found articles are marked for deletion, // which is handled by another queue. - $sql = "UPDATE {os2web_borger_dk_article} SET `external_status` = -2 WHERE `nid` = :nid"; + $sql = "UPDATE {os2_borger_dk_article} SET `external_status` = -2 WHERE `nid` = :nid"; db_query($sql, array(':nid' => $data['nid'])); } else { @@ -2281,15 +2106,15 @@ function _os2web_borger_dk_status_check_queue_callback($data) { elseif (!isset($item['Exceptions'])) { // Well - NO ERRORS AND NO EXCEPTIONS - WHATS UP: // We un-mark this title, and let it point back to the borger_dk_article. - $sql = "UPDATE {os2web_borger_dk_article_titles} SET `ArticleStatus` = :nid WHERE `ArticleID` = :aid"; + $sql = "UPDATE {os2_borger_dk_article_titles} SET `ArticleStatus` = :nid WHERE `ArticleID` = :aid"; db_query($sql, array(':nid' => $data['nid'], ':aid' => $data['external_id'])); } } /** - * Function _os2web_borger_dk_delete_queue_callback(). + * Function _os2_borger_dk_delete_queue_callback(). */ -function _os2web_borger_dk_delete_queue_callback($data) { +function _os2_borger_dk_delete_queue_callback($data) { // This function loads a node with node_load, sets the status // to un-published, writes a log-message, // and stores it as a new revision. @@ -2304,7 +2129,7 @@ function _os2web_borger_dk_delete_queue_callback($data) { $node->log = t('Un-publishing article because it has been deleted at Borger.dk. This is an un-published copy of the revision from %date.', array( '%date' => format_date($node->revision_timestamp))); // And we mark the "external-link-table-item" as deleted (status = -1). - $node->os2web_borger_dk_article['external_status'] = -1; + $node->os2_borger_dk_article['external_status'] = -1; // Finally we store the new revision. node_save($node); @@ -2312,71 +2137,53 @@ function _os2web_borger_dk_delete_queue_callback($data) { watchdog('OS2web Borger.dk', $msg, $variables = array('%nid' => $node->nid)); } -/** - * Function _os2web_borger_dk_update_node_content(). - */ -function _os2web_borger_dk_update_node_content($nid, $article) { - if (!empty($article['Exceptions']) || !empty($article['error'])) { - return; - } - // First we load the corresponding node. - $node = node_load($nid, NULL, TRUE); - // And we update all the node-fields with the article-values. - $node->title = $article['title']; +/***************** End of Borger.dk cron. ***********************************/ - $body = ''; - foreach ($article['kernetekst'] as $div => $content) { - $body .= $content . "\n"; +/*************** Borger.dk webservices functions. ******************/ +/** + * Funtion : Get articleIds from each pages/site. + */ +function _os2_borger_dk_GetArticleIDsBySiteID($site_id, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { + $error = array(); + // The ID of the Borger.dk-site to get must be given as argument. + if (empty($site_id)) { + return $error; } + $ids = array(); + // We use a soap-client to fetch the specified article from Borger.dk. + $client = new SoapClient($wsdl, array('exceptions' => 0)); - $node->title = (!empty($article['title'])) ? $article['title'] : ''; - - $node->body['und'][0]['value'] = $body; - $node->body['und'][0]['safe_value'] = $body; - $node->body['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $node->field_os2web_borger_dk_byline['und'][0]['value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['safe_value'] = (!empty($article['byline'])) ? $article['byline'] : ''; - $node->field_os2web_borger_dk_byline['und'][0]['format'] = BORGERDK_TEXT_FORMAT_PLAIN; - - $node->field_os2web_borger_dk_header['und'][0]['value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['safe_value'] = (!empty($article['header'])) ? $article['header'] : ''; - $node->field_os2web_borger_dk_header['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $node->field_os2web_borger_dk_selfservi['und'][0]['value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['safe_value'] = (!empty($article['selvbetjeningslinks'])) ? $article['selvbetjeningslinks'] : ''; - $node->field_os2web_borger_dk_selfservi['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $node->field_os2web_borger_dk_recommend['und'][0]['value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['safe_value'] = (!empty($article['anbefaler'])) ? $article['anbefaler'] : ''; - $node->field_os2web_borger_dk_recommend['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $node->field_os2web_borger_dk_legislati['und'][0]['value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['safe_value'] = (!empty($article['lovgivning'])) ? $article['lovgivning'] : ''; - $node->field_os2web_borger_dk_legislati['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; - - $node->field_os2web_borger_dk_shortlist['und'][0]['value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['safe_value'] = (!empty($article['huskeliste'])) ? $article['huskeliste'] : ''; - $node->field_os2web_borger_dk_shortlist['und'][0]['format'] = BORGERDK_TEXT_FORMAT_HTML; + // Then we execute our webservice-request. + $array_get_article_ids = array('siteID' => $site_id); - // Some fields from borger_dk_article can not be syncronized nor changed here. - $node->os2web_borger_dk_article['external_id'] = $article['external_id']; - $node->os2web_borger_dk_article['external_url'] = $article['external_url']; - $node->os2web_borger_dk_article['published_date'] = strtotime($article['published_date']); - $node->os2web_borger_dk_article['last_updated'] = strtotime($article['last_updated']); + $result_article = $client->GetArticleIDsBySiteID($array_get_article_ids); + if (is_soap_fault($result_article)) { + // An error was encountered and we examine it more closely. + $error = _os2_borger_dk_translate_soap_fault(2, $result_article->faultcode, $result_article->faultstring); - node_save($node); - db_update('os2web_borger_dk_article') - ->fields(array('last_updated' => strtotime($article['last_updated']))) - ->condition('nid', $nid, '=') - ->execute(); + return $error; + } + else { + $article_ids = $result_article->GetArticleIDsBySiteIDResult; + if (isset($article_ids->ArticleShortDescription)) { + if (is_array($article_ids->ArticleShortDescription)) { + foreach ($article_ids->ArticleShortDescription as $article_id) { + $ids[] = $article_id->ArticleID; + } + } + else { + $ids[] = $article_ids->ArticleShortDescription->ArticleID; + } + } + } + return $ids; } /** - * Function _os2web_borger_dk_GetAllArticles(). + * Function _os2_borger_dk_GetAllArticles(). */ -function _os2web_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { +function _os2_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { // This function uses the Borger.dk Webservice // GetAllArticles in order to fetch a list of // availlable articles (by title). @@ -2385,11 +2192,11 @@ function _os2web_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bi // find the article-ID from the Borger.dk-URL. $client = new SoapClient($wsdl, array('exceptions' => 0)); // First we make sure to keep requests/minute within given limits. - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); // Then we execute our webservice-request. $result_list = $client->GetAllArticles(); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_translate_soap_fault('GetAllArticles', $result_list->faultcode, $result_list->faultstring); + $errors = _os2_borger_dk_translate_soap_fault('GetAllArticles', $result_list->faultcode, $result_list->faultstring); return $errors; } @@ -2397,7 +2204,7 @@ function _os2web_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bi // Then we get the result-list from the specified webservice. $article_list = $result_list->GetAllArticlesResult; if (is_soap_fault($article_list)) { - $errors = _os2web_borger_dk_translate_soap_fault('GetAllArticlesResult', $article_list->faultcode, $article_list->faultstring); + $errors = _os2_borger_dk_translate_soap_fault('GetAllArticlesResult', $article_list->faultcode, $article_list->faultstring); return $errors; } @@ -2408,13 +2215,13 @@ function _os2web_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bi // But TWO found articles are placed in an array. if (is_array($article_list->ArticleDescription)) { foreach ($article_list->ArticleDescription as $id => $article) { - $new_item = _os2web_borger_dk_parse_borgerdk_article_desc($article); + $new_item = _os2_borger_dk_parse_borgerdk_article_desc($article); $article_items[] = $new_item; } } else { foreach ($article_list as $id => $article) { - $new_item = _os2web_borger_dk_parse_borgerdk_article_desc($article); + $new_item = _os2_borger_dk_parse_borgerdk_article_desc($article); $article_items[] = $new_item; } } @@ -2424,9 +2231,9 @@ function _os2web_borger_dk_GetAllArticles($wsdl = 'https://www.borger.dk/_vti_bi } /** - * Function _os2web_borger_dk_GetArticlesByIDs(). + * Function _os2_borger_dk_GetArticlesByIDs(). */ -function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after = NULL, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { +function _os2_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after = NULL, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { // This function uses the Borger.dk WebService GetArticlesByIDs // in order to fetch a list of Borger.dk-articles by article-IDs // and an "updateAfter"-datestamp. @@ -2443,31 +2250,31 @@ function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after if (empty($updated_after) && !empty($borgerdk_ids)) { // We have a specified list of articles to fetch. // First we make sure to keep requests/minute within given limits. - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); // Then we execute our webservice-request. $result_list = $client->GetArticlesByIDs(array('articleIDs' => $borgerdk_ids)); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_translate_soap_fault($borgerdk_ids, $result_list->faultcode, $result_list->faultstring); + $errors = _os2_borger_dk_translate_soap_fault($borgerdk_ids, $result_list->faultcode, $result_list->faultstring); return $errors; } } elseif (!empty($updated_after) && empty($borgerdk_ids)) { // First we make sure to keep requests/minute within given limits. - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); // Then we execute our webservice-request. // We have a specified date, and want all articles that have been // updated since the given date. $result_list = $client->GetArticlesByIDs(array('updatedAfter' => $updated_after)); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_translate_soap_fault(array('updatedAfter' => $updated_after), $result_list->faultcode, $result_list->faultstring); + $errors = _os2_borger_dk_translate_soap_fault(array('updatedAfter' => $updated_after), $result_list->faultcode, $result_list->faultstring); return $errors; } } elseif (!empty($updated_after) && !empty($borgerdk_ids)) { // First we make sure to keep requests/minute within given limits. - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); // Then we execute our webservice-request. // We have a specified date, and a specified list of article-IDs. We // want all articles from that list that has also been updated since @@ -2479,7 +2286,7 @@ function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after ) ); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_translate_soap_fault( + $errors = _os2_borger_dk_translate_soap_fault( array( 'articleIDs' => $borgerdk_ids, 'updatedAfter' => $updated_after, @@ -2496,7 +2303,7 @@ function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after // Then we get the result-list from the specified webservice. $article_list = $result_list->GetArticlesByIDsResult; if (is_soap_fault($article_list)) { - $errors = _os2web_borger_dk_translate_soap_fault('GetArticlesByIDsResult', $article_list->faultcode, $article_list->faultstring); + $errors = _os2_borger_dk_translate_soap_fault('GetArticlesByIDsResult', $article_list->faultcode, $article_list->faultstring); return $errors; } @@ -2508,14 +2315,14 @@ function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after // But TWO found articles are placed in an array. if (is_array($article_list->Article)) { foreach ($article_list->Article as $id => $article) { - $new_item = _os2web_borger_dk_parse_borgerdk_article($article); + $new_item = _os2_borger_dk_parse_borgerdk_article($article); $found_ids[$new_item['external_id']] = 1; $article_items[] = $new_item; } } else { foreach ($article_list as $id => $article) { - $new_item = _os2web_borger_dk_parse_borgerdk_article($article); + $new_item = _os2_borger_dk_parse_borgerdk_article($article); $found_ids[$new_item['external_id']] = 1; $article_items[] = $new_item; } @@ -2537,9 +2344,9 @@ function _os2web_borger_dk_GetArticlesByIDs($borgerdk_ids = NULL, $updated_after } /** - * Function _os2web_borger_dk_GetArticleByUrl(). + * Function _os2_borger_dk_GetArticleByUrl(). */ -function _os2web_borger_dk_GetArticleByUrl($borgerdk_url, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { +function _os2_borger_dk_GetArticleByUrl($borgerdk_url, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl') { // This function uses the Borger.dk WebServices // GetArticleIDByUrl and GetArticleByID in order // to fetch a Borger.dk-article by its URL. @@ -2554,13 +2361,13 @@ function _os2web_borger_dk_GetArticleByUrl($borgerdk_url, $wsdl = 'https://www.b // from the Borger.dk-URL. $client = new SoapClient($wsdl, array('exceptions' => 0)); // First we make sure to keep requests/minute within given limits. - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); // Then we execute our webservice-request. $result_id = $client->GetArticleIDByUrl(array('url' => $borgerdk_url)); if (is_soap_fault($result_id)) { // An error was encountered and we examine it more closely. - $error = _os2web_borger_dk_translate_soap_fault($borgerdk_url, $result_id->faultcode, $result_id->faultstring); + $error = _os2_borger_dk_translate_soap_fault($borgerdk_url, $result_id->faultcode, $result_id->faultstring); return $error; } @@ -2569,18 +2376,18 @@ function _os2web_borger_dk_GetArticleByUrl($borgerdk_url, $wsdl = 'https://www.b $id2get = $result_id->GetArticleIDByUrlResult->ArticleID; // Then we use the article-ID to fetch the actual Borger.dk-article. - $article = _os2web_borger_dk_GetArticleByID($id2get); + $article = _os2_borger_dk_GetArticleByID($id2get); } return $article; } /** - * Function _os2web_borger_dk_GetArticleByID(). + * Function _os2_borger_dk_GetArticleByID(). */ -function _os2web_borger_dk_GetArticleByID($borgerdk_id, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { +function _os2_borger_dk_GetArticleByID($borgerdk_id, $wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { // Check the admin setting. - $admin_municipality = variable_get('os2web_borger_dk_municipality_active'); + $admin_municipality = variable_get('os2_borger_dk_municipality_active'); // This function uses the Borger.dk WebService // GetArticleByID in order to fetch a Borger.dk-article // by its article-ID. @@ -2602,7 +2409,7 @@ function _os2web_borger_dk_GetArticleByID($borgerdk_id, $wsdl = 'https://www.bor $result_article = $client->GetArticleByID($array_get_article); if (is_soap_fault($result_article)) { // An error was encountered and we examine it more closely. - $error = _os2web_borger_dk_translate_soap_fault($borgerdk_id, $result_article->faultcode, $result_article->faultstring); + $error = _os2_borger_dk_translate_soap_fault($borgerdk_id, $result_article->faultcode, $result_article->faultstring); return $error; } @@ -2610,21 +2417,21 @@ function _os2web_borger_dk_GetArticleByID($borgerdk_id, $wsdl = 'https://www.bor $article = $result_article->GetArticleByIDResult; if (is_soap_fault($article)) { // An error was encountered and we examine it more closely. - $error = _os2web_borger_dk_translate_soap_fault($borgerdk_id, $article->faultcode, $article->faultstring); + $error = _os2_borger_dk_translate_soap_fault($borgerdk_id, $article->faultcode, $article->faultstring); return $error; } } - return _os2web_borger_dk_parse_borgerdk_article($article); + return _os2_borger_dk_parse_borgerdk_article($article); } /** - * Function _os2web_borger_dk_GetAllSites(). + * Function _os2_borger_dk_GetAllSites(). * * This function uses the Borger.dk Webservice GetAllSites * in order to fetch the menu-structure from Borger.dk */ -function _os2web_borger_dk_GetAllSites($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { +function _os2_borger_dk_GetAllSites($wsdl = 'https://www.borger.dk/_vti_bin/borger/ArticleExport.svc?wsdl', $use_constraints = TRUE) { $errors = array(); $menu_items = array(); @@ -2633,12 +2440,12 @@ function _os2web_borger_dk_GetAllSites($wsdl = 'https://www.borger.dk/_vti_bin/b $client = new SoapClient($wsdl, array('exceptions' => 0)); // First we make sure to keep requests/minute within given limits. if ($use_constraints) { - _os2web_borger_dk_check_webservice_constraints(); + _os2_borger_dk_check_webservice_constraints(); } // Then we execute our webservice-request. $result_list = $client->GetAllSites(); if (is_soap_fault($result_list)) { - $errors = _os2web_borger_dk_articles_translate_soap_fault('GetAllSites', $result_list->faultcode, $result_list->faultstring); + $errors = _os2_borger_dk_articles_translate_soap_fault('GetAllSites', $result_list->faultcode, $result_list->faultstring); return $errors; } @@ -2647,7 +2454,7 @@ function _os2web_borger_dk_GetAllSites($wsdl = 'https://www.borger.dk/_vti_bin/b // Then we get the result-list from the specified webservice. $menu_list = $result_list->GetAllSitesResult; if (is_soap_fault($menu_list)) { - $errors = _os2web_borger_dk_articles_translate_soap_fault('GetAllSitesResult', $menu_list->faultcode, $menu_list->faultstring); + $errors = _os2_borger_dk_articles_translate_soap_fault('GetAllSitesResult', $menu_list->faultcode, $menu_list->faultstring); return $errors; } @@ -2656,22 +2463,24 @@ function _os2web_borger_dk_GetAllSites($wsdl = 'https://www.borger.dk/_vti_bin/b // convert them to arrays of wanted field-sets. if (is_array($menu_list->Site)) { foreach ($menu_list->Site as $id => $menu_item) { - $new_item = _os2web_borger_dk_parse_borgerdk_menu_item($menu_item); + $new_item = _os2_borger_dk_parse_borgerdk_menu_item($menu_item); $menu_items[] = $new_item; } } else { - $new_item = _os2web_borger_dk_parse_borgerdk_menu_item($menu_list->Site); + $new_item = _os2_borger_dk_parse_borgerdk_menu_item($menu_list->Site); $menu_items[] = $new_item; } } return $menu_items; } + +/**************** End of Borger.dk webservices functions. **************/ /** - * Function _os2web_borger_dk_tag_borger_dk_articles(). + * Function _os2_borger_dk_tag_borger_dk_articles(). */ -function _os2web_borger_dk_tag_borger_dk_articles($menu = array(), $update_items = array()) { +function _os2_borger_dk_tag_borger_dk_articles($menu = array(), $update_items = array()) { $not_tagged = array(); foreach ($menu as $id => $item) { @@ -2688,7 +2497,7 @@ function _os2web_borger_dk_tag_borger_dk_articles($menu = array(), $update_items $aid = (isset($item['ArticleID'])) ? $item['ArticleID'] : FALSE; if ($aid && isset($update_items[$aid])) { $node = node_load($update_items[$aid]); - $node->field_os2web_borger_dk_formterm['und'][$tid] = (array) $term; + $node->field_os2_borger_dk_formterm[LANGUAGE_NONE][$tid] = (array) $term; node_save($node); } @@ -2704,7 +2513,7 @@ function _os2web_borger_dk_tag_borger_dk_articles($menu = array(), $update_items } // Now we go recursive on any and all child-elements. if (isset($item['nl']) && is_array($item['nl'])) { - $errors = _os2web_borger_dk_tag_borger_dk_articles($item['nl'], $update_items); + $errors = _os2_borger_dk_tag_borger_dk_articles($item['nl'], $update_items); if (!empty($errors)) { $not_tagged = array_merge($not_tagged, $errors); } @@ -2715,12 +2524,12 @@ function _os2web_borger_dk_tag_borger_dk_articles($menu = array(), $update_items } /** - * Function _os2web_borger_dk_parse_borgerdk_menu_item(). + * Function _os2_borger_dk_parse_borgerdk_menu_item(). * * This function parses a Borger.dk-MenuItemDescription and extracts all * the field values we want for our Borger.dk-menu-structure. */ -function _os2web_borger_dk_parse_borgerdk_menu_item($menu_item) { +function _os2_borger_dk_parse_borgerdk_menu_item($menu_item) { // First we extract the directly accessible fields // from the ArticleDescription. $pid = (isset($menu_item->ParentID)) ? $menu_item->ParentID : ''; @@ -2735,9 +2544,9 @@ function _os2web_borger_dk_parse_borgerdk_menu_item($menu_item) { } /** - * Function _os2web_borger_dk_parse_borgerdk_article(). + * Function _os2_borger_dk_parse_borgerdk_article(). */ -function _os2web_borger_dk_parse_borgerdk_article($article) { +function _os2_borger_dk_parse_borgerdk_article($article) { // This function can parse a Borger.dk XML-article and extract // all the field values we want for our Drupal-nodes. $borgerdk_article = array( @@ -2762,43 +2571,36 @@ function _os2web_borger_dk_parse_borgerdk_article($article) { @$doc->loadHTML('' . $article->Content); $xml = simplexml_import_dom($doc); - foreach ($xml->body->div as $div) { - $div_id = $div->attributes()->id; - switch ($div_id) { - case 'selvbetjeningslinks': - $borgerdk_article['selvbetjeningslinks'] = _os2web_borger_dk_create_general_html($div); - break; + $links_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='selvbetjeningslinks']"); + $borgerdk_article['selvbetjeningslinks'] = _os2_borger_dk_create_general_html($links_xml); - case 'kernetekst': - $borgerdk_article['kernetekst'] = _os2web_borger_dk_create_kernetekst_html($div); - break; + $lov_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='lovgivning']"); + $borgerdk_article['lovgivning'] = _os2_borger_dk_create_general_html($lov_xml); - case 'byline': - $byline = _os2web_borger_dk_create_general_html($div->div); - if (FALSE !== strpos($byline, '
Skrevet af')) { - $byline = trim($byline); - $new_byline = preg_replace("/
(Skrevet af .+?)<\/div>/i", "$1", $byline, 1); - if (0 < strlen($new_byline)) { - // We only overwrite the byline if we found some replacement text. - $byline = $new_byline; - } - } - $borgerdk_article['byline'] = $byline; - break; + $borgerdk_article['kernetekst'] = _os2_borger_dk_create_kernetekst_html($xml); - case 'anbefaler': - $borgerdk_article['anbefaler'] = _os2web_borger_dk_create_general_html($div); - break; - case 'huskeliste': - $borgerdk_article['huskeliste'] = _os2web_borger_dk_create_general_html($div); - break; - - case 'lovgivning': - $borgerdk_article['lovgivning'] = _os2web_borger_dk_create_general_html($div); - break; + $byline_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='byline']"); + $byline = _os2_borger_dk_create_general_html($byline_xml->div); + if (FALSE !== strpos($byline, '
Skrevet af')) { + $byline = trim($byline); + $new_byline = preg_replace("/
(Skrevet af .+?)<\/div>/i", "$1", $byline, 1); + if (0 < strlen($new_byline)) { + // We only overwrite the byline if we found some replacement text. + $byline = $new_byline; } } + $borgerdk_article['byline'] = $byline; + + $anbefaler_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='anbefaler']"); + $borgerdk_article['anbefaler'] = _os2_borger_dk_create_general_html($anbefaler_xml); + + $huskeliste_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='huskeliste']"); + $borgerdk_article['huskeliste'] = _os2_borger_dk_create_general_html($huskeliste_xml); + + $lovgivning_xml = _os2_borger_dk_get_xml_by_query($xml, "//*[@id='lovgivning']"); + $borgerdk_article['lovgivning'] = _os2_borger_dk_create_general_html($lovgivning_xml); + // yx@bellcom.dk: add 'faktaboks' case since Borger.dk updated, // some of selvbetjeningslinks contains ID as 'faktaboks' @@ -2807,14 +2609,14 @@ function _os2web_borger_dk_parse_borgerdk_article($article) { foreach ($xml->body->div as $div) { if ($div->attributes()->id == 'faktaboks') { - $text = _os2web_borger_dk_create_html_from_xml($div->h3); + $text = _os2_borger_dk_create_html_from_xml($div->h2); // ​ str string from borger.dk $text = str_replace('​', '', $text); preg_match("/Selvbetjening/", $text, $text_2); if (isset($text_2[0])) { - $borgerdk_article['selvbetjeningslinks'] = _os2web_borger_dk_create_general_html($div); + $borgerdk_article['selvbetjeningslinks'] = _os2_borger_dk_create_general_html($div); } } } @@ -2829,9 +2631,45 @@ function _os2web_borger_dk_parse_borgerdk_article($article) { } /** - * Function _os2web_borger_dk_parse_borgerdk_article_desc(). + * Returns an XML object of the inner-HTML contained in the borger.dk XML response. */ -function _os2web_borger_dk_parse_borgerdk_article_desc($article) { +function _os2_borger_dk_get_xml_by_query($xml, $xpath_query) { + + $html = ''; + $item = $xml->xpath($xpath_query); + + if (count($item) > 0) { + + // Turn xpath query result into HTML + while(list(,$node) = each($item)) { + $html .= $node->asXML(); + } + + // Test if more than one element was returned. This can happen, since sometimes there are + // several elements with the same ID in the borger.dk HTML. + if (count($item) > 1) { + // Elements were continated. Log this to dblog. + + watchdog('OS2Web Borger.dk', 'Dual id\'s in structure when using Xpath query "'. $xpath_query .'"" Elements were concatinated'); + } + } + else { + // Noting returned by query. $html variable must contain an element in order for + // proceeding code not to error, so we fill in a dummy + $html .= ''; + } + + $new_dom = new DOMDocument('1.0', 'UTF-8'); + $new_dom->strictErrorChecking = FALSE; + @$new_dom->loadHTML('' . $html); + $xml = simplexml_import_dom($new_dom); + return $xml; +} + +/** + * Function _os2_borger_dk_parse_borgerdk_article_desc(). + */ +function _os2_borger_dk_parse_borgerdk_article_desc($article) { // This function parses a Borger.dk-ArticleDescription and // extracts all the field values we want for our list of // titles (for autocompletion etc). @@ -2880,25 +2718,37 @@ function _os2web_borger_dk_parse_borgerdk_article_desc($article) { } /** - * Function _os2web_borger_dk_create_kernetekst_html(). + * Function _os2_borger_dk_create_kernetekst_html(). */ -function _os2web_borger_dk_create_kernetekst_html($xml) { +function _os2_borger_dk_create_kernetekst_html($xml) { // This function steps through the so called microArticle's // and converts plus concatenates each element as HTML. + $microarticles = _os2_borger_dk_get_xml_by_query($xml, "//*[starts-with(@id, 'microArticle')]"); + $output = array(); $counter = 1; $baseclass = 'mArticle'; - foreach ($xml->div as $element) { - $div_attr = $element->attributes()->id; + foreach ($microarticles->body->div as $microarticle) { + $div_attr = $microarticle->attributes()->id; $search = '
'; $replace = '
'; - $html = _os2web_borger_dk_create_html_from_xml($element, $search, $replace); + $html = _os2_borger_dk_create_html_from_xml($microarticle, $search, $replace); // We replace the first

-tag with

. $pattern = '/

/'; $replacement = '

'; $html = preg_replace($pattern, $replacement, $html, 1); + // We replace the first

-tag with

. + $pattern = '/

/'; + $replacement = '

'; + $html = preg_replace($pattern, $replacement, $html, 1); + + // We replace the first

-tag with

. + $pattern = '/<\/h3>/'; + $replacement = ''; + $html = preg_replace($pattern, $replacement, $html, 1); + // And we replace the first
-tag with
. $pattern = '/
/'; $replacement = '
'; @@ -2916,13 +2766,13 @@ function _os2web_borger_dk_create_kernetekst_html($xml) { /** * This function converts a list of XML elements to HTML. */ -function _os2web_borger_dk_create_general_html($xml) { +function _os2_borger_dk_create_general_html($xml) { $output = ''; // We convert each of the XML elements to HTML. foreach ($xml as $element) { // We use a general method to convert XML to HTML. - $output .= _os2web_borger_dk_create_html_from_xml($element); + $output .= _os2_borger_dk_create_html_from_xml($element); $output .= "\n"; } @@ -2932,7 +2782,7 @@ function _os2web_borger_dk_create_general_html($xml) { /** * This function converts XML-entities to ordinary HTML. */ -function _os2web_borger_dk_create_html_from_xml($xml, $search = NULL, $replace = NULL) { +function _os2_borger_dk_create_html_from_xml($xml, $search = NULL, $replace = NULL) { // DOMDocuments converts special characters to HTML-characters, and we // need to replace some of those back into danish letters. Also
-tags // gets replaced with
-tags, and we need to convert those as well. @@ -2966,9 +2816,9 @@ function _os2web_borger_dk_create_html_from_xml($xml, $search = NULL, $replace = } /** - * Function _os2web_borger_dk_translate_soap_fault(). + * Function _os2_borger_dk_translate_soap_fault(). */ -function _os2web_borger_dk_translate_soap_fault($borgerdk_id, $faultcode, $faultstring) { +function _os2_borger_dk_translate_soap_fault($borgerdk_id, $faultcode, $faultstring) { // This function is used to translate SoapClient-errors // from string-elements to an array of // "real"/"usable" error-information. @@ -3014,49 +2864,49 @@ function _os2web_borger_dk_translate_soap_fault($borgerdk_id, $faultcode, $fault } /** - * Function _os2web_borger_dk_check_webservice_constraints(). + * Function _os2_borger_dk_check_webservice_constraints(). * * Checking if the webservice constraints has been reached, and in that case * delaying the script. */ -function _os2web_borger_dk_check_webservice_constraints() { +function _os2_borger_dk_check_webservice_constraints() { $time = time(); // We start of by getting the webservice request-limits. - $webservice_request_limit = variable_get('os2web_borger_dk_webservice_request_limit', 100); - $webservice_time_limit = variable_get('os2web_borger_dk_webservice_time_limit', 60); + $webservice_request_limit = variable_get('os2_borger_dk_webservice_request_limit', 100); + $webservice_time_limit = variable_get('os2_borger_dk_webservice_time_limit', 60); // And we keep track of the number of webservice-requests per timeperiod. - $os2web_borger_dk_article_count_no = variable_get('os2web_borger_dk_webservice_request_counter', 0); - $os2web_borger_dk_article_start_time = variable_get('os2web_borger_dk_webservice_time_counter', 0); + $os2_borger_dk_article_count_no = variable_get('os2_borger_dk_webservice_request_counter', 0); + $os2_borger_dk_article_start_time = variable_get('os2_borger_dk_webservice_time_counter', 0); // We restart the counters if the timer is too old. - if ($os2web_borger_dk_article_start_time < ($time - $webservice_time_limit)) { - $os2web_borger_dk_article_count_no = 0; - $os2web_borger_dk_article_start_time = $time; - variable_set('os2web_borger_dk_webservice_request_counter', $os2web_borger_dk_article_count_no); - variable_set('os2web_borger_dk_webservice_time_counter', $os2web_borger_dk_article_start_time); + if ($os2_borger_dk_article_start_time < ($time - $webservice_time_limit)) { + $os2_borger_dk_article_count_no = 0; + $os2_borger_dk_article_start_time = $time; + variable_set('os2_borger_dk_webservice_request_counter', $os2_borger_dk_article_count_no); + variable_set('os2_borger_dk_webservice_time_counter', $os2_borger_dk_article_start_time); } // Then we check if the limits has been reached, and it's time for a break. - if (($webservice_time_limit >= ($time - $os2web_borger_dk_article_start_time)) && - ($webservice_request_limit <= $os2web_borger_dk_article_count_no)) { + if (($webservice_time_limit >= ($time - $os2_borger_dk_article_start_time)) && + ($webservice_request_limit <= $os2_borger_dk_article_count_no)) { // We have reached the work-load limit of 100 items per minute, and must // take a small break or the webservice will stop answering us. - sleep($webservice_time_limit - ($time - $os2web_borger_dk_article_start_time)); + sleep($webservice_time_limit - ($time - $os2_borger_dk_article_start_time)); // Then we reset/store the counters for limiting the webservice work-load. - $os2web_borger_dk_article_count_no = 0; - $os2web_borger_dk_article_start_time = time(); - variable_set('os2web_borger_dk_webservice_time_counter', $os2web_borger_dk_article_start_time); + $os2_borger_dk_article_count_no = 0; + $os2_borger_dk_article_start_time = time(); + variable_set('os2_borger_dk_webservice_time_counter', $os2_borger_dk_article_start_time); } } /** - * Implements hook_os2web_help(). + * Implements hook_os2_help(). */ -function os2web_borger_dk_os2web_help($sections) { +function os2_borger_dk_os2_help($sections) { // Content types. $sections['contenttype'] = t('

Borger.dk Article: Add @@ -3065,9 +2915,9 @@ function os2web_borger_dk_os2web_help($sections) { See the advanced documentation for the borger.dk module(.pdf)

', array( - '@url' => url('node/add/os2web-borger-dk-article'), + '@url' => url('node/add/os2-borger-dk-article'), '@borger' => file_create_url( - drupal_get_path('module', 'os2web_borger_dk') . '/doc/Guide til OS2web borger.dk - articles.pdf' + drupal_get_path('module', 'os2_borger_dk') . '/doc/Guide til OS2web borger.dk - articles.pdf' ), ) ); @@ -3078,9 +2928,9 @@ function os2web_borger_dk_os2web_help($sections) { Borger.dk menu import.pdf (Danish only)

', array( - '@url' => url('admin/config/os2web_borger_dk/settings'), + '@url' => url('admin/config/os2_borger_dk/settings'), '@import-guide' => file_create_url( - drupal_get_path('module', 'os2web_borger_dk') . '/doc/Borger.dk menu import.pdf' + drupal_get_path('module', 'os2_borger_dk') . '/doc/Borger.dk menu import.pdf' ), ) ); @@ -3091,9 +2941,9 @@ function os2web_borger_dk_os2web_help($sections) { /** * Implements hook_help(). */ -function os2web_borger_dk_help($path, $arg) { +function os2_borger_dk_help($path, $arg) { switch ($path) { - case 'admin/help#os2web_borger_dk': + case 'admin/help#os2_borger_dk': // TODO. return t('Missing documentation.'); } diff --git a/os2web_borger_dk.strongarm.inc b/os2_borger_dk.strongarm.inc similarity index 65% rename from os2web_borger_dk.strongarm.inc rename to os2_borger_dk.strongarm.inc index a6925d5..9f5e2ad 100644 --- a/os2web_borger_dk.strongarm.inc +++ b/os2_borger_dk.strongarm.inc @@ -1,68 +1,68 @@ disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_anonymous_os2web_borger_dk_article'; + $strongarm->name = 'comment_anonymous_os2_borger_dk_article'; $strongarm->value = 0; - $export['comment_anonymous_os2web_borger_dk_article'] = $strongarm; + $export['comment_anonymous_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_default_mode_os2web_borger_dk_article'; + $strongarm->name = 'comment_default_mode_os2_borger_dk_article'; $strongarm->value = 1; - $export['comment_default_mode_os2web_borger_dk_article'] = $strongarm; + $export['comment_default_mode_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_default_per_page_os2web_borger_dk_article'; + $strongarm->name = 'comment_default_per_page_os2_borger_dk_article'; $strongarm->value = '50'; - $export['comment_default_per_page_os2web_borger_dk_article'] = $strongarm; + $export['comment_default_per_page_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_form_location_os2web_borger_dk_article'; + $strongarm->name = 'comment_form_location_os2_borger_dk_article'; $strongarm->value = 1; - $export['comment_form_location_os2web_borger_dk_article'] = $strongarm; + $export['comment_form_location_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_os2web_borger_dk_article'; + $strongarm->name = 'comment_os2_borger_dk_article'; $strongarm->value = '2'; - $export['comment_os2web_borger_dk_article'] = $strongarm; + $export['comment_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_preview_os2web_borger_dk_article'; + $strongarm->name = 'comment_preview_os2_borger_dk_article'; $strongarm->value = '1'; - $export['comment_preview_os2web_borger_dk_article'] = $strongarm; + $export['comment_preview_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'comment_subject_field_os2web_borger_dk_article'; + $strongarm->name = 'comment_subject_field_os2_borger_dk_article'; $strongarm->value = 1; - $export['comment_subject_field_os2web_borger_dk_article'] = $strongarm; + $export['comment_subject_field_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'field_bundle_settings_node__os2web_borger_dk_article'; + $strongarm->name = 'field_bundle_settings_node__os2_borger_dk_article'; $strongarm->value = array( 'view_modes' => array( 'teaser' => array( @@ -105,54 +105,54 @@ function os2web_borger_dk_strongarm() { 'display' => array(), ), ); - $export['field_bundle_settings_node__os2web_borger_dk_article'] = $strongarm; + $export['field_bundle_settings_node__os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'language_content_type_os2web_borger_dk_article'; + $strongarm->name = 'language_content_type_os2_borger_dk_article'; $strongarm->value = '0'; - $export['language_content_type_os2web_borger_dk_article'] = $strongarm; + $export['language_content_type_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'menu_options_os2web_borger_dk_article'; + $strongarm->name = 'menu_options_os2_borger_dk_article'; $strongarm->value = array( 0 => 'borgerdkmenu2', - 1 => 'os2web-main-menu', + 1 => 'os2-main-menu', 2 => 'main-menu', - 3 => 'os2web-menu-contentmenu', + 3 => 'os2-menu-contentmenu', ); - $export['menu_options_os2web_borger_dk_article'] = $strongarm; + $export['menu_options_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'menu_parent_os2web_borger_dk_article'; + $strongarm->name = 'menu_parent_os2_borger_dk_article'; $strongarm->value = 'borgerdkmenu2:0'; - $export['menu_parent_os2web_borger_dk_article'] = $strongarm; + $export['menu_parent_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'node_options_os2web_borger_dk_article'; + $strongarm->name = 'node_options_os2_borger_dk_article'; $strongarm->value = array(); - $export['node_options_os2web_borger_dk_article'] = $strongarm; + $export['node_options_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'node_preview_os2web_borger_dk_article'; + $strongarm->name = 'node_preview_os2_borger_dk_article'; $strongarm->value = '1'; - $export['node_preview_os2web_borger_dk_article'] = $strongarm; + $export['node_preview_os2_borger_dk_article'] = $strongarm; $strongarm = new stdClass(); $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */ $strongarm->api_version = 1; - $strongarm->name = 'node_submitted_os2web_borger_dk_article'; + $strongarm->name = 'node_submitted_os2_borger_dk_article'; $strongarm->value = 0; - $export['node_submitted_os2web_borger_dk_article'] = $strongarm; + $export['node_submitted_os2_borger_dk_article'] = $strongarm; return $export; } diff --git a/os2web_borger_dk.info b/os2web_borger_dk.info deleted file mode 100644 index d338b47..0000000 --- a/os2web_borger_dk.info +++ /dev/null @@ -1,57 +0,0 @@ -name = OS2web - Borger.dk -description = Handles Borger.dk Articles -core = 7.x -package = Features -php = 5.2.4 -project = os2web_borger_dk -dependencies[] = ctools -dependencies[] = features -dependencies[] = media -dependencies[] = strongarm -features[ctools][] = strongarm:strongarm:1 -features[features_api][] = api:1 -features[field_base][] = field_os2web_borger_dk_image -features[field_base][] = field_os2web_borger_dk_borgerurl -features[field_base][] = field_os2web_borger_dk_byline -features[field_base][] = field_os2web_borger_dk_formterm -features[field_base][] = field_os2web_borger_dk_header -features[field_base][] = field_os2web_borger_dk_legislati -features[field_base][] = field_os2web_borger_dk_pagetitle -features[field_base][] = field_os2web_borger_dk_post_text -features[field_base][] = field_os2web_borger_dk_pre_text -features[field_base][] = field_os2web_borger_dk_recommend -features[field_base][] = field_os2web_borger_dk_selfservi -features[field_base][] = field_os2web_borger_dk_shortlist -features[field_base][] = field_os2web_borger_dk_kle -features[field_instance][] = node-os2web_borger_dk_article-body -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_image -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_borgerurl -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_byline -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_formterm -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_header -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_legislati -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_pagetitle -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_post_text -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_pre_text -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_recommend -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_selfservi -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_shortlist -features[field_instance][] = node-os2web_borger_dk_article-field_os2web_borger_dk_kle -features[node][] = os2web_borger_dk_article -features[taxonomy][] = kle -features[taxonomy][] = os2web_borger_dk_form_menu -features[variable][] = comment_anonymous_os2web_borger_dk_article -features[variable][] = comment_default_mode_os2web_borger_dk_article -features[variable][] = comment_default_per_page_os2web_borger_dk_article -features[variable][] = comment_form_location_os2web_borger_dk_article -features[variable][] = comment_os2web_borger_dk_article -features[variable][] = comment_preview_os2web_borger_dk_article -features[variable][] = comment_subject_field_os2web_borger_dk_article -features[variable][] = field_bundle_settings_node__os2web_borger_dk_article -features[variable][] = language_content_type_os2web_borger_dk_article -features[variable][] = menu_options_os2web_borger_dk_article -features[variable][] = menu_parent_os2web_borger_dk_article -features[variable][] = node_options_os2web_borger_dk_article -features[variable][] = node_preview_os2web_borger_dk_article -features[variable][] = node_submitted_os2web_borger_dk_article -files[] = theme/node--os2web_borger_dk_article diff --git a/theme/node--os2_borger_dk_article.tpl.php b/theme/node--os2_borger_dk_article.tpl.php new file mode 100644 index 0000000..e3095ce --- /dev/null +++ b/theme/node--os2_borger_dk_article.tpl.php @@ -0,0 +1,305 @@ +body becomes $body. When needing to + * access a field's raw values, developers/themers are strongly encouraged to + * use these variables. Otherwise they will have to explicitly specify the + * desired field language; for example, $node->body['en'], thus overriding any + * language negotiation rule that was previously applied. + * + * @see template_preprocess() + * @see template_preprocess_node() + * @see template_process() + */ +?> +
> + + +> + title; ?> + +*/?> + + + +
> + + type == 'os2_borger_dk_article') { + + $content_field = array(); + $fields = $node->os2_borger_dk_article['field_settings']; + // First get admin display settings. + $admin_display_fields = variable_get('os2_borger_dk_display'); + $locked_os2_types = array('field_os2_borger_dk_borgerurl' => 1); + // We get admin microarticle display settings. + $microarticle = variable_get('os2_borger_dk_microarticle_active', FALSE); + if ($microarticle) { + $field_microarticle_settings = $node->os2_borger_dk_microarticle['field_microarticle_settings']; + } + + foreach ($admin_display_fields as $type => $value) { + + // If ADMIN set this field to display. + if ($admin_display_fields[$type]) { + $arr = $node-> $type; + + if (count($arr) > 0 && $type != 'title' && $type != 'field_billede') { + $content_field[$type] = $arr[LANGUAGE_NONE]['0']['value']; + } + elseif (count($arr) > 0 && $type == 'field_billede') { + $filepath = $arr[LANGUAGE_NONE]['0']['uri']; + $alt = $arr[LANGUAGE_NONE]['0']['alt']; + $content_field[$type] = theme('image', array('path' => $filepath, 'alt' => $alt, 'title' => $alt)); + } + else { + $content_field[$type] = ''; + } + // Microarticles : if microarticle is set up to show by admin. + if ($microarticle) { + // Check if content field is body and field_microarticle_settings + // is NOT empty. + // The field_microarticle_setting will be empty when a new + // article is imported and shown in a form, then node_view + // will display full body text. + if ($type == 'body' && !empty($field_microarticle_settings)) { + $body_text = $node->body[LANGUAGE_NONE]['0']['value']; + + $article_text = ''; + + $doc = new DOMDocument(); + $doc->loadHTML('' . $body_text); + $xpath = new DOMXPath($doc); + + $results = $xpath->query("//*[@class='microArticle']"); + + $microno = 0; + foreach ($results as $item) { + foreach ($item->getElementsByTagName('h2') as $articletitle) { + $title = trim($articletitle->nodeValue); + } + + $text = ''; + foreach ($item->getElementsByTagName('div')->item(0)->childNodes as $articletext) { + $text .= $doc->saveHTML($articletext); + } + $microno++; + + if ($field_microarticle_settings[$microno] != 0) { + // Body text (Article text). + $article_text .= "
" . "\r\n"; + + $micro_h2 = "

"; + $micro_h2 .= $title . "

"; + + $micro_content = "
"; + $micro_content .= $text . "\r\n
"; + + $article_text .= $micro_h2 . "\r\n"; + $article_text .= $micro_content; + $article_text .= "\r\n
\r\n\r\n"; + } + } + // Content body shows only visible microarticles/ part of body_text. + $content_field[$type] = $article_text; + } + } + elseif ($type == 'body') { + $content_field['body'] = $node->body[LANGUAGE_NONE]['0']['value']; + } + + // End of microarticles. + // If EDITOR set this field to be hidden. + if ($fields[$type] == '0') { + $content_field[$type] = ''; + } + } + + // If ADMIN set this field to be hidden. + else { + $content_field[$type] = ''; + } + } + drupal_add_js(drupal_get_path('module', 'os2_borger_dk') . '/js/os2_borger_dk.js', 'file'); + drupal_add_css(drupal_get_path('module', 'os2_borger_dk') . '/css/os2_borger_dk.css', 'file'); + + // Set the page-title if field-value is given. + // if (!empty($node->field_os2_borger_dk_pagetitle[LANGUAGE_NONE][0]['value'])) { + //drupal_set_title($node->field_os2_borger_dk_pagetitle[LANGUAGE_NONE][0]['value']); + //} + } + ?> + + +
"; + if (!empty($content_field['field_billede'])) { + print "
"; + print render($content_field['field_billede']); + print "
"; + } + + if (!empty($content_field['field_os2_borger_dk_header'])) { + print "
"; + print render($content_field['field_os2_borger_dk_header']); + print "
"; + } + print "
"; + ?> +
> + +
+
"; + print render($content_field['field_os2_borger_dk_selfservi']); + print '
+
+
'; + } + + ?> +
+
> + +
"; + if (!empty($content_field['field_os2_borger_dk_pre_text'])) { + print "
"; + print render($content_field['field_os2_borger_dk_pre_text']); + print '
'; + print "
"; + } + + if (!empty($content_field['body'])) { + print "
"; + print "
" . "Læs om " . $node->title . "
"; + print render($content_field['body']); + print '
'; + print "
"; + } + if (!empty($content_field['field_os2_borger_dk_post_text'])) { + print "
"; + print render($content_field['field_os2_borger_dk_post_text']); + print '
'; + print "
"; + } + + if (!empty($content_field['field_os2_borger_dk_legislati'])) { + print "
"; + print render($content['field_os2_borger_dk_legislati']); + print "
"; + } + print "
"; + + print "
"; + print "
"; + if (!empty($content_field['field_os2_borger_dk_recommend'])) { + print "
"; + print render($content_field['field_os2_borger_dk_recommend']); + print "
"; + print "
"; + + } + if (!empty($content_field['field_os2_borger_dk_shortlist'])) { + print "
"; + print render($content_field['field_os2_borger_dk_shortlist']); + print "
"; + } + if (!empty($content_field['field_os2_borger_dk_byline'])) { + print ""; + } + + print "
"; + +// print render($content); + ?> +
+
+ + + + + + + +
diff --git a/theme/node--os2web_borger_dk_article.tpl.php b/theme/node--os2web_borger_dk_article.tpl.php deleted file mode 100644 index c71b1eb..0000000 --- a/theme/node--os2web_borger_dk_article.tpl.php +++ /dev/null @@ -1,192 +0,0 @@ -
> - - -
> - - type == 'os2web_borger_dk_article') { - $content_field = array(); - $fields = $node->os2web_borger_dk_article['field_settings']; - // First get admin display settings. - $admin_display_fields = variable_get('os2web_borger_dk_display'); - $locked_os2web_types = array('field_os2web_borger_dk_borgerurl' => 1); - // We get admin microarticle display settings. - $microarticle = variable_get('os2web_borger_dk_microarticle_active', FALSE); - if ($microarticle) { - $field_microarticle_settings = $node->os2web_borger_dk_microarticle['field_microarticle_settings']; - } - foreach ($admin_display_fields as $type => $value) { - // If ADMIN set this field to display. - if ($admin_display_fields[$type]) { - $arr = $node-> $type; - if (count($arr) > 0 && $type != 'title' && $type != 'field_os2web_borger_dk_image') { - $content_field[$type] = $arr['und']['0']['value']; - } - elseif (count($arr) > 0 && $type == 'field_os2web_borger_dk_image') { - $filepath = $arr['und']['0']['uri']; - $alt = $arr['und']['0']['alt']; - $content_field[$type] = theme('image', array('path' => $filepath, 'alt' => $alt, 'title' => $alt)); - } - else { - $content_field[$type] = ''; - } - // Microarticles : if microarticle is set up to show by admin. - if ($microarticle && $type == 'body') { - // Check if content field is body and field_microarticle_settings - // is NOT empty. - // The field_microarticle_setting will be empty when a new - // article is imported and shown in a form, then node_view - // will display full body text. - if (!empty($field_microarticle_settings)) { - $body_text = $node->body['und']['0']['value']; - // Link break in body_text: in windows \r\n, linux \n. - preg_match("/<\/div>\n/", $body_text, $link_break); - if (isset($link_break[0])) { - $div = preg_split("/\n<\/div>\n/", $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - else { - $div = preg_split('/\r\n<[\/]div>\r\n/', $body_text, -1, PREG_SPLIT_DELIM_CAPTURE); - } - $show_div = ''; - foreach ($div as $key => $text) { - $microno = $key + 1; - $checkboxno = 'os2web_borger_dk_micro_' . $microno; - // The last div is a link break \n or \r\n. - if ($div[$key] != $div[(count($div) - 1)]) { - // If editor set this microarticle to be visible,(TRUE) - if ($field_microarticle_settings[$microno] != 0) { - $show_div .= $div[$key]; - $show_div .= "\n
"; - $show_div .= "\n"; - } - } - } - $show_div = str_replace("","+",$show_div); - // Content body shows only visible microarticles/ part of body_text. - $content_field[$type] = $show_div; - } - else { - $show_div = $node->body['und']['0']['value']; - $show_div = str_replace("","+",$show_div); - $content_field['body'] = $show_div; - } - } - elseif (!$microarticle && $type == 'body') { - $show_div = $node->body['und']['0']['value']; - $show_div = str_replace("","+",$show_div); - $content_field['body'] = $show_div; - } - // End of microarticles. - // If EDITOR set this field to be hidden. - if ($fields[$type] == '0') { - $content_field[$type] = ''; - } - } - // If ADMIN set this field to be hidden. - else { - $content_field[$type] = ''; - } - } - drupal_add_js(drupal_get_path('module', 'os2web_borger_dk') . '/js/os2web_borger_dk.js', 'file'); - drupal_add_css(drupal_get_path('module', 'os2web_borger_dk') . '/css/os2web_borger_dk.css', 'file'); - } - ?> - - - -
- > - title; ?> - -
-
- - "; - if (!empty($content_field['field_os2web_borger_dk_header'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_header']); - print "
"; - } - print "
"; - ?> -
> - "; - if (!empty($content_field['field_os2web_borger_dk_pre_text'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_pre_text']); - print '
'; - print "
"; - print "
"; - }?> - -
-
"; - print render($content_field['field_os2web_borger_dk_selfservi']); - print '
-
-
'; - } - if (!empty($content_field['body'])) { - print "
"; - print "
" . "Læs om " . $node->title .''; - print "
Åben/luk alle+"; - print "-
"; - print "
"; - print render($content_field['body']); - print '
'; - print "
"; - } - if (!empty($content_field['field_os2web_borger_dk_post_text'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_post_text']); - print '
'; - print "
"; - } - if (!empty($content['field_os2web_borger_dk_legislati'])) { - print "
"; - print render($content['field_os2web_borger_dk_legislati']); - print "
"; - } - print "
"; - if (!empty($content_field['field_os2web_borger_dk_recommend'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_recommend']); - print "
"; - print "
"; - } - if (!empty($content_field['field_os2web_borger_dk_shortlist'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_shortlist']); - print "
"; - } - if (!empty($content_field['field_os2web_borger_dk_byline'])) { - print "
"; - print render($content_field['field_os2web_borger_dk_byline']); - print "
"; - } - print "
"; - ?> - -
- - - - - - - - - - - -