You are here

function globallink_fieldable_panels_get_translated_array 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_get_translated_array()
  2. 7.6 globallink_fieldable_panels/globallink_fieldable_panels.inc \globallink_fieldable_panels_get_translated_array()

Gets array of translated fieldable panels.

Parameters

object $xml: XML representation of fieldable panels.

Return value

array Associative array of translated fieldable panels.

2 calls to globallink_fieldable_panels_get_translated_array()
globallink_fieldable_panels_get_translated in globallink_fieldable_panels/globallink_fieldable_panels.inc
Gets number of translated fieldable panels.
globallink_fieldable_panels_get_translations_for_row_id in globallink_fieldable_panels/globallink_fieldable_panels_receive.inc
Gets fieldable panels translations by row ID.

File

globallink_fieldable_panels/globallink_fieldable_panels.inc, line 654

Code

function globallink_fieldable_panels_get_translated_array($xml) {
  if (is_null($xml) || !is_string($xml) || $xml == '') {
    return array();
  }
  $dom = new DomDocument();
  $dom->preserveWhiteSpace = FALSE;
  $dom
    ->loadXML($xml);
  $arr = array();
  $titles = $dom
    ->getElementsByTagName('title');
  foreach ($titles as $title) {
    $arr['title'] = $title->nodeValue;
  }
  $contents = $dom
    ->getElementsByTagName('content');
  $fpid = '';
  foreach ($contents as $content) {
    if (!is_null($content->attributes)) {
      foreach ($content->attributes as $attr_name => $attr_node) {
        if ($attr_name == 'fpid') {
          $fpid = $attr_node->value;
        }
      }
    }
  }
  if ($fpid == '') {
    return array();
  }
  $arr['fpid'] = $fpid;
  $field_image = $dom
    ->getElementsByTagName('field_image');
  foreach ($field_image as $attr) {
    $field_image_object = new GLFieldImage();
    if (!is_null($attr->attributes)) {
      foreach ($attr->attributes as $attr_name => $attr_node) {
        switch ($attr_name) {
          case 'type':
            if ($attr_node->value == 'title') {
              $field_image_object->title = $attr->nodeValue;
            }
            elseif ($attr_node->value == 'alt') {
              $field_image_object->alt = $attr->nodeValue;
            }
            continue 2;
          case 'delta':
            $field_image_object->delta = $attr_node->value;
            continue 2;
          case 'field_name':
            $field_image_object->field_name = $attr_node->value;
            continue 2;
          case 'subfield':
            $field_image_object->subfield = $attr_node->value;
            $field_image_object->{$field_image_object->subfield} = $attr->nodeValue;
            $field_image_object->type = 'file_entity';
            continue 2;
          case 'langcode':
          case 'label':
          case 'subfield_label':
            $field_image_object->{$attr_name} = $attr_node->value;
            continue 2;
        }
      }
      if (is_null($field_image_object->delta)) {
        $field_image_object->delta = '0';
      }
      if (isset($field_image_object->field_name)) {
        if (isset($field_image_object->title)) {
          $arr[$field_image_object->field_name][LANGUAGE_NONE][$field_image_object->delta]->title = $field_image_object->title;
        }
        if (isset($field_image_object->alt)) {
          $arr[$field_image_object->field_name][LANGUAGE_NONE][$field_image_object->delta]->alt = $field_image_object->alt;
        }
        if (module_exists('file_entity')) {
          $arr[$field_image_object->field_name][LANGUAGE_NONE][$field_image_object->delta] = $field_image_object;
        }
      }
      else {
        $arr[$field_image_object->field_name][LANGUAGE_NONE][$field_image_object->delta] = $field_image_object;
      }
    }
  }
  $fields = $dom
    ->getElementsByTagName('field');
  foreach ($fields as $field) {
    $field_obj = new GLField();
    $field_obj->type = 'field';
    $field_obj->translatedContent = $field->nodeValue;
    if (is_null($field->attributes)) {
      continue;
    }
    foreach ($field->attributes as $attr_name => $attr_node) {
      switch ($attr_name) {
        case 'field':
          $field_obj->fieldName = $attr_node->value;
          continue 2;
        case 'delta':
          $field_obj->delta = $attr_node->value;
          continue 2;
        case 'langcode':
          $field_obj->langcode = $attr_node->value;
          continue 2;
      }
    }
    if (is_null($field_obj->langcode)) {
      $field_obj->langcode = LANGUAGE_NONE;
    }
    if (is_null($field_obj->delta)) {
      $field_obj->delta = '0';
    }
    $arr[$field_obj->fieldName][$field_obj->langcode][$field_obj->delta] = $field_obj;
  }
  return $arr;
}