diff --git a/message_subscribe_email/message_subscribe_email.module b/message_subscribe_email/message_subscribe_email.module index 251ce4e..525981f 100644 --- a/message_subscribe_email/message_subscribe_email.module +++ b/message_subscribe_email/message_subscribe_email.module @@ -86,24 +86,36 @@ function message_subscribe_email_message_subscribe_get_subscribers_alter(&$uids, return; } - $flags = message_subscribe_email_flag_get_flags(); + extract($values); - $flag_ids = array(); - foreach ($flags as $flag) { - $flag_ids[] = $flag->fid; - } + foreach($context as $entity_type => $entity_ids) { + if (!$entity_ids) { + continue; + } + + if (!$flags = message_subscribe_email_flag_get_flags($entity_type)) { + continue; + } - $result = db_select('flag_content', 'f') - ->fields('f', array('uid')) - ->condition('fid', $flag_ids, 'IN') - ->condition('uid', array_keys($uids), 'IN') - ->groupBy('uid') - ->execute() - ->fetchAll(); + $fids = array(); + foreach ($flags as $flag) { + $fids[$flag->fid] = $flag->name; + } + + $query = db_select('flag_content', 'fc') + ->fields('fc') + ->condition('content_type', $entity_type) + ->condition('content_id', $entity_ids, 'IN') + ->condition('fid', array_keys($fids), 'IN') + ->condition('uid', array_keys($uids), 'IN') + ->orderBy('uid', 'ASC'); - foreach ($result as $row) { - // Add 'email' to the list of notifiers. - $uids[$row->uid]['notifiers']['email'] = 'email'; + $result = $query->execute(); + + foreach ($result as $row) { + // Add 'email' to the list of notifiers. + $uids[$row->uid]['notifiers']['email'] = 'email'; + } } }