You are here

function globallink_fieldable_panels_pane_get_xml in GlobalLink Connect for Drupal 7.5

Same name and namespace in other branches
  1. 7.7 globallink_fieldable_panels/globallink_fieldable_panels.inc \globallink_fieldable_panels_pane_get_xml()
  2. 7.6 globallink_fieldable_panels/globallink_fieldable_panels.inc \globallink_fieldable_panels_pane_get_xml()

Gets XML data from specific fieldable panel.

Parameters

string $fpid: The fieldable panel ID.

string $path: The path to the page with the Fieldable Panel Pane on it.

Return value

array Associative array of fieldable panel XML data.

2 calls to globallink_fieldable_panels_pane_get_xml()
globallink_fieldable_panels_get_translations_for_row_id in globallink_fieldable_panels/globallink_fieldable_panels_receive.inc
Gets fieldable panels translations by row ID.
globallink_fieldable_panels_pane_send_for_translations in globallink_fieldable_panels/globallink_fieldable_panels.inc
Sends fieldable panels for translation.

File

globallink_fieldable_panels/globallink_fieldable_panels.inc, line 83

Code

function globallink_fieldable_panels_pane_get_xml($fpid, $path = NULL) {
  $dom = new DOMDocument('1.0', 'UTF-8');
  $dom->formatOutput = TRUE;
  $root = $dom
    ->createElement('content');
  $dom
    ->appendChild($root);

  /*  if (!empty($path) && drupal_lookup_path('source', $path)) {
      $url = $dom->createAttribute('pageUrl');
      $url->value = url($path, array('absolute' => TRUE));
      $root->appendChild($url);
      insert_child_element($dom, $root, 'path', $path);
    }*/
  $id = $dom
    ->createAttribute('fpid');
  $id->value = $fpid;
  $root
    ->appendChild($id);
  $fieldable_panels_pane = fieldable_panels_panes_load($fpid);
  $language = $fieldable_panels_pane->language;
  $fields = globallink_fieldable_panels_pane_get_fields($fieldable_panels_pane->bundle);
  $configured_fields = globallink_get_configured_fields_for_fpp($fieldable_panels_pane->bundle);
  foreach ($fields as $field) {
    if (empty($fieldable_panels_pane->{$field})) {
      continue;
    }
    if (array_key_exists($field, $configured_fields) && $configured_fields[$field]->translatable == 1) {
      $field_values = field_get_items('fieldable_panels_pane', $fieldable_panels_pane, $field, $language);
      $field_info = field_info_field($field);
      if (is_array($field_values) && !empty($field_values)) {
        foreach ($field_values as $delta => $values) {
          if ($field_info['type'] == 'link_field') {
            globallink_insert_child_element($dom, $root, 'field', $values['title'], array(
              'field' => $field,
              'delta' => $delta,
              'langcode' => $language,
            ));
          }
          elseif ($field_info['type'] == 'image' && !module_exists('file_entity')) {
            if (isset($values['alt'])) {
              globallink_insert_child_element($dom, $root, 'field_image', $values['alt'], array(
                'field_name' => $field,
                'type' => 'alt',
                'delta' => $delta,
              ));
            }
            if (isset($values['title'])) {
              globallink_insert_child_element($dom, $root, 'field_image', $values['title'], array(
                'field_name' => $field,
                'type' => 'title',
                'delta' => $delta,
              ));
            }
          }
          elseif ($field_info['type'] == 'image' && module_exists('file_entity')) {
            $parent_info = field_info_instance('fieldable_panels_pane', $field, $fieldable_panels_pane->bundle);
            $file_entity_info = field_info_field($field);
            $file_fields = field_info_instances('file', $file_entity_info['type']);
            foreach ($file_fields as $file_field) {
              $f_value = field_get_items('file', (object) $values, $file_field['field_name']);
              if (empty($f_value)) {
                continue;
              }
              globallink_insert_child_element($dom, $root, 'field_image', $f_value[0]['value'], array(
                'field_name' => $field,
                'subfield' => $file_field['field_name'],
                'delta' => $delta,
                'label' => $parent_info['label'],
                'langcode' => $language,
                'subfield_label' => $file_field['label'],
              ));
            }
          }
          elseif (!empty($values['value'])) {
            globallink_insert_child_element($dom, $root, 'field', $values['value'], array(
              'field' => $field,
              'delta' => $delta,
              'langcode' => $language,
            ));
          }
        }
      }
      elseif (!empty($field_values) && is_string($field_values)) {

        // Test this without field translation
        globallink_insert_child_element($dom, $root, 'field', $field_values, array(
          'field' => $field,
        ));
      }
    }
  }
  $xml = $dom
    ->saveXML();
  return $xml;
}