condition('fid', $flag_ids, 'IN') ->condition('uid', $account->uid, '=') ->condition('entity_type', 'taxonomy_term', '=') ->fields('f',array('entity_id')) ->execute() ->fetchAll(); if (empty($result)) { // No term flags. return array(); } $tids = array(); foreach($result as $row) { $tids[] = (integer) $row->entity_id; } // Get IDs of nodes tagged by the specified terms. $query = db_select('taxonomy_index', 't'); if (!empty($options['range'])) { $query->range(0, $options['range']); } $result = $query ->addTag('node_access') ->condition('tid', $tids, 'IN') ->fields('t',array('nid')) ->groupBy('nid') ->execute() ->fetchAll(); // Return the node IDs. $nids = array(); foreach($result as $row) { $nids[] = (integer) $row->nid; } return $nids; } /** * Implements hook_commons_follow_get_message_ids(). */ function commons_follow_term_commons_follow_get_message_ids(&$followed_mids, $followed_content = array()) { // Generate a list of message IDs where the target nodes are followed by // the current user. $result = db_query("SELECT m.mid AS mid FROM {message} m INNER JOIN {field_data_field_target_nodes} tn ON m.mid=tn.entity_id INNER JOIN {field_data_field_topics} ft ON ft.entity_id=tn.field_target_nodes_target_id WHERE ft.field_topics_tid IN (:tids) AND tn.entity_type = 'node'", array(':tids' => array_values($followed_content['commons_follow_term']))); foreach ($result as $this_result) { $followed_mids[] = $this_result->mid; } }