node_reference.inc in Default Content 7
File
plugins/node_reference.inc
View source
<?php
$plugin = array();
function node_reference_export_alter(&$node) {
$fields = get_ref_fields();
foreach ($fields as $field_name => $field) {
if (isset($node->{$field_name})) {
foreach ($node->{$field_name} as $lang => $items) {
foreach ($items as $key => $item) {
if (($nid = $item['nid']) && ($machine_name = defaultcontent_get_default($nid))) {
$node->{$field_name}[$lang][$key]['machine_name'] = $machine_name;
unset($node->{$field_name}[$lang][$key]['nid']);
}
elseif (isset($item['machine_name'])) {
}
else {
unset($node->{$field_name}[$lang][$key]);
}
}
}
}
}
}
function node_reference_import_alter(&$node) {
$fields = get_ref_fields();
foreach ($fields as $field_name => $field) {
if (isset($node->{$field_name})) {
foreach ($node->{$field_name} as $lang => $items) {
foreach ($items as $key => $item) {
if (($machine_name = $item['machine_name']) && ($nid = defaultcontent_get_default($machine_name))) {
$node->{$field_name}[$lang][$key]['nid'] = $nid;
unset($node->{$field_name}[$lang][$key]['machine_name']);
}
elseif (isset($item['nid'])) {
}
else {
unset($node->{$field_name}[$lang][$key]);
}
}
}
}
}
}
function node_reference_import_sort($a, $b) {
$fields = get_ref_fields();
$a_children = array();
$b_children = array();
foreach ($fields as $field_name => $field) {
if (isset($a->{$field_name})) {
foreach ($a->{$field_name} as $lang => $items) {
foreach ($items as $key => $item) {
$a_children[] = $item['machine_name'];
}
}
}
if (isset($b->{$field_name})) {
foreach ($b->{$field_name} as $lang => $items) {
foreach ($items as $key => $item) {
$b_children[] = $item['machine_name'];
}
}
}
}
if (in_array($a->machine_name, $b_children) || empty($a_children)) {
return -1;
}
elseif (in_array($b->machine_name, $a_children) || empty($b_children)) {
return 1;
}
else {
return 0;
}
}
function get_ref_fields() {
$ref_fields = array();
foreach (field_info_fields() as $id => $field) {
if ($field['type'] == 'node_reference') {
$ref_fields[$id] = $field;
}
}
return $ref_fields;
}