function globallink_entity_reference_generate_xml_document in GlobalLink Connect for Drupal 7.7
1 call to globallink_entity_reference_generate_xml_document()
- globallink_entity_reference_get_xml in globallink_custom_entity/
globallink_custom_entity.inc
File
- globallink_custom_entity/
globallink_custom_entity.inc, line 15
Code
function globallink_entity_reference_generate_xml_document($entity, $target_arr, $tnid = NULL, $for_display = FALSE, $source_lang = '', $entity_type) {
$entityref = array();
$is_hook_enabled = variable_get('globallink_implementation_type', 0);
try {
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = TRUE;
$root = $dom
->createElement('content');
$eid = $dom
->createAttribute('eid');
if ($tnid != NULL) {
$eid->value = $tnid;
}
else {
$eid->value = $entity->id;
}
$root
->appendChild($eid);
$type = $dom
->createAttribute('entityType');
$type->value = $entity_type;
$root
->appendChild($type);
$entity_bundle = $dom
->createAttribute('entityBundle');
$entity_bundle->value = $entity->type;
$root
->appendChild($entity_bundle);
$url = $dom
->createAttribute('pageUrl');
$root
->appendChild($url);
$dom
->appendChild($root);
$field_arr = field_info_instances($entity_type, $entity->type);
//check if fields are added to field config table.
//globallink_custom_entity_add_fields_config($field_arr, $entity, $entity_type);
$keys = array_keys($field_arr);
foreach ($keys as $field) {
$field_def = field_read_field($field);
$items = field_get_items($entity_type, $entity, $field, $source_lang);
if ($items) {
$parent_fc = '';
if ($field_def['type'] == 'field_collection') {
$parent_fc = $field;
if (isset($items[0]['revision_id'])) {
entity_load('field_collection_item', array(
$items[0]['value'],
), array(
'revision_id' => $items[0]['revision_id'],
));
}
}
$entityref[] = globallink_entity_traverse_fields_and_field_collections($entity_type, $entity->type, $parent_fc, $entity->type, $entity->id, $items, $field, $field_def, $dom, $root, $entity, $target_arr, 0);
}
}
if (module_exists('metatag')) {
if (isset($entity->metatags)) {
$ignore_metatags = [
'geo.position',
'icbm',
'rating',
'referrer',
'revisit-after',
'content-language',
];
if ($for_display) {
if (!empty($entity->metatags[$entity->language])) {
$metatags = $entity->metatags[$entity->language];
foreach ($metatags as $name => $value) {
if (isset($value['value']) && !is_array($value['value'])) {
if (in_array($name, $ignore_metatags)) {
continue;
}
globallink_insert_child_element($dom, $root, 'metatag', $value['value'], array(
'entity_type' => GLOBALLINK_ENTITY_TYPE_NODE,
'name' => $name,
'label' => 'Metatag - ' . ucwords($name),
));
}
}
}
}
elseif (globallink_is_field_configured_for_translation(GLOBALLINK_ENTITY_TYPE_NODE, $entity->type, 'metatags', $entity->type)) {
if (!empty($entity->metatags[$entity->language])) {
$metatags = $entity->metatags[$entity->language];
foreach ($metatags as $name => $value) {
if (isset($value['value']) && !is_array($value['value'])) {
if (in_array($name, $ignore_metatags)) {
continue;
}
globallink_insert_child_element($dom, $root, 'metatag', $value['value'], array(
'entity_type' => GLOBALLINK_ENTITY_TYPE_NODE,
'name' => $name,
'label' => 'Metatag - ' . ucwords($name),
));
}
}
}
}
}
}
} catch (Exception $e) {
watchdog(GLOBALLINK_MODULE, 'Exception - %function - File[%file], Line[%line], Code[%code], Message[%message]', array(
'%function' => __FUNCTION__,
'%file' => $e
->getFile(),
'%line' => $e
->getLine(),
'%code' => $e
->getCode(),
'%message' => $e
->getMessage(),
), WATCHDOG_ERROR);
throw $e;
}
$root_element = $dom
->getElementsByTagName('content')
->item(0);
if (!$root_element
->hasChildNodes()) {
return FALSE;
}
$result = array(
$dom
->saveXML(),
$entityref,
);
return $result;
}