function node_reference_get_referred_nodes in References 7.2
Returns nodes of the given type(s) that are referred to in a given node.
Parameters
object $node: The node object from which the references should be retrieved.
array $types: An array listing the desired content types. If omitted all referenced nodes are returned, regardless of type.
Return value
array An associative array of nodes of the given types that are referred to in the given node, keyed by nid.
File
- node_reference/
node_reference.module, line 1333 - Defines a field type for referencing one node from another.
Code
function node_reference_get_referred_nodes($node, array $types = array()) {
$nodes = array();
if (!isset($node->type)) {
return $nodes;
}
foreach (field_info_fields() as $field_name => $field_info) {
if ($field_info['type'] == 'node_reference' && (empty($types) || array_intersect($types, $field_info['settings']['referenceable_types'])) && array_intersect(array(
$node->type,
), $field_info['bundles']['node'])) {
$field_items = field_get_items('node', $node, $field_name);
if (is_array($field_items) && !empty($field_items)) {
foreach ($field_items as $field_item) {
if (($referred_node = node_load($field_item['nid'])) && (empty($types) || in_array($referred_node->type, $types))) {
$nodes[$field_item['nid']] = $referred_node;
}
}
}
}
}
return $nodes;
}