commons_follow_term.module in Drupal Commons 7.3
File
modules/commons/commons_follow/commons_follow_term/commons_follow_term.module
View source
<?php
include_once 'commons_follow_term.features.inc';
function commons_follow_term_commons_follow_get_nids($account, $options) {
$flag_ids = commons_follow_get_subscription_flags_ids('taxonomy_term');
if (empty($flag_ids)) {
return array();
}
$query = db_select('flagging', 'f');
$result = $query
->condition('fid', $flag_ids, 'IN')
->condition('uid', $account->uid, '=')
->condition('entity_type', 'taxonomy_term', '=')
->fields('f', array(
'entity_id',
))
->execute()
->fetchAll();
if (empty($result)) {
return array();
}
$tids = array();
foreach ($result as $row) {
$tids[] = (int) $row->entity_id;
}
$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();
$nids = array();
foreach ($result as $row) {
$nids[] = (int) $row->nid;
}
return $nids;
}
function commons_follow_term_commons_follow_get_message_ids(&$followed_mids, $followed_content = array()) {
$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;
}
}