You are here

function featured_content_get_cck_nids in Featured Content 7.2

Same name and namespace in other branches
  1. 6.2 featured_content.module \featured_content_get_cck_nids()
  2. 6 featured_content.module \featured_content_get_cck_nids()
  3. 7 featured_content.module \featured_content_get_cck_nids()

Get CCK node nids.

1 call to featured_content_get_cck_nids()
featured_content_block_view in ./featured_content.module
Implements hook_block_view().

File

./featured_content.module, line 1459
Featured Content module for created related & featured content blocks.

Code

function featured_content_get_cck_nids($data) {
  $nids = array();
  $node = _featured_content_load_node();
  if (isset($node->nid)) {
    $cck_fields = field_info_fields();
    if (!empty($cck_fields)) {
      foreach ($cck_fields as $field_name => $field_data) {
        if (!empty($data['fields'][$field_name])) {
          $cck_field = NULL;
          if (isset($node->{$field_name})) {
            $cck_field = $node->{$field_name};
          }
          if (!empty($cck_field) && $field_data['type'] == 'text') {

            // Parse the text field.
            $cck_text = '';
            if (isset($cck_field['und'][0]['value'])) {
              $cck_text = trim($cck_field['und'][0]['value']);
            }
            if (!empty($cck_text)) {
              $tmp = explode(',', $cck_text);
              if (!empty($tmp)) {
                foreach ($tmp as $nid) {
                  $nid = trim($nid);
                  if (is_numeric($nid) && $nid > 0) {
                    $nids[$nid] = $nid;
                  }
                }
              }
            }
          }
          elseif ($field_data['type'] == 'node_reference') {
            if (is_array($cck_field) && isset($cck_field['und'])) {
              foreach ($cck_field['und'] as $node_refs) {
                if (!empty($node_refs['nid'])) {
                  $nids[$node_refs['nid']] = $node_refs['nid'];
                }
              }
            }
          }
          elseif ($field_data['type'] == 'user_reference') {
            $uids = array();
            if (is_array($cck_field) && isset($cck_field['und'])) {
              foreach ($cck_field['und'] as $user_refs) {
                if (!empty($user_refs['uid'])) {
                  $uids[] = $user_refs['uid'];
                }
              }
            }
            if (!empty($uids)) {
              $query = db_select('node', 'n');
              $query
                ->fields('n', array(
                'nid',
              ));
              $query
                ->condition('uid', $uids);
              $results = $query
                ->execute();
              foreach ($results as $row) {
                if (is_numeric($row->nid) && $row->nid > 0) {
                  $nids[$row->nid] = $row->nid;
                }
              }
            }
          }
        }
      }
    }
  }
  return $nids;
}