function globallink_fieldable_panels_get_translated_array in GlobalLink Connect for Drupal 7.6
Same name and namespace in other branches
- 7.7 globallink_fieldable_panels/globallink_fieldable_panels.inc \globallink_fieldable_panels_get_translated_array()
- 7.5 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 648
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;
}