You are here

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;
}