function engagements_get_alert_count_by_type
Search API
6.x engagements.module | engagements_get_alert_count_by_type($account = NULL) |
Implements hook_get_count_for_alert_type
Set and Return back "unread" (not in content_last_access)
File
- modules/
engagements/ engagements.module, line 169 - This is the primary module file for the engagements module.
Code
function engagements_get_alert_count_by_type($account = NULL) {
global $user;
if ($account === NULL) {
$account = $user;
}
if ($account->id == 0) {
return FALSE;
}
$rtn = array();
$rtn ['engagement']['total'] = 0;
$rtn ['engagement']['read'] = 0;
$rtn ['engagement']['unread'] = 0;
$already_counted = array();
// We need to know this user's list of advisees.
$advisees = advise_get_advisees($account->cwid);
$advisee_line = "";
if ($advisees && count($advisees) > 0) {
$advisees_list = "'" . join("','", $advisees) . "'";
$advisee_line = " AND b.field__student_id IN (" . $advisees_list . ") ";
/*
$total_count = db_result(db_query("SELECT COUNT(*) as mycount
FROM content__engagement b,
content n
WHERE n.type = ?
AND b.vid = n.vid
AND b.cid = n.cid
AND n.published = 1
AND n.delete_flag = 0
AND field__direction = 'received'
AND field__engagement_type IN ('email', 'txt_msg')
AND (field__manual_entry IS NULL OR field__manual_entry != 'Y')
$advisee_line ", array('engagement')));
*/
$total_count = 0;
$res = db_query("SELECT b.cid
FROM content__engagement b,
content n
WHERE n.type = ?
AND b.vid = n.vid
AND b.cid = n.cid
AND n.published = 1
AND n.delete_flag = 0
AND field__direction = 'received'
AND field__engagement_type IN ('email', 'txt_msg')
AND (field__manual_entry IS NULL OR field__manual_entry != 'Y')
$advisee_line ", array('engagement'));
while ($cur = db_fetch_array($res)) {
$cid = $cur ['cid'];
$already_counted [$cid] = $cid;
$total_count++;
}
$read_count = db_result(db_query("SELECT COUNT(*) as mycount
FROM content_last_access a,
content__engagement b,
content n
WHERE n.type = ?
AND n.published = 1
AND b.vid = n.vid
AND b.cid = n.cid
AND n.delete_flag = 0
AND n.cid = a.cid
AND field__direction = 'received'
AND field__engagement_type IN ('email', 'txt_msg')
AND (field__manual_entry IS NULL OR field__manual_entry != 'Y')
$advisee_line
AND a.user_id = ?", array('engagement', $account->id)));
$rtn ['engagement']['total'] = intval($total_count);
$rtn ['engagement']['read'] = intval($read_count);
$rtn ['engagement']['unread'] = $total_count - $read_count;
} // if advisees
// We should ALSO get these students to show up when we're the recipient of a text number, regardless of if they are
// considered our "advisee" or not.
$numbers = engagements_get_user_notify_sms_receipt_values($account->id);
if ($numbers && is_array($numbers) && count($numbers) > 0) {
// Were there any txt messages sent to these number, which we have not read?
$numbers_line = "";
$numbers_list = "'" . join("','", $numbers) . "'";
$numbers_line = " AND b.field__to_sms_phone IN (" . $numbers_list . ") ";
// So, we should also search for results where we received at these numbers, regardless of if the user was our advisee or not.
$total_count = 0;
$res = db_query("SELECT b.cid
FROM content__engagement b,
content n
WHERE n.type = ?
AND b.vid = n.vid
AND b.cid = n.cid
AND n.published = 1
AND n.delete_flag = 0
AND field__direction = 'received'
AND field__engagement_type IN ('email', 'txt_msg')
AND (field__manual_entry IS NULL OR field__manual_entry != 'Y')
$numbers_line ", array('engagement'));
while ($cur = db_fetch_array($res)) {
$cid = $cur ['cid'];
if (!in_array($cid, $already_counted)) {
$already_counted [$cid] = $cid;
$total_count++;
}
}
$read_count = db_result(db_query("SELECT COUNT(*) as mycount
FROM content_last_access a,
content__engagement b,
content n
WHERE n.type = ?
AND n.published = 1
AND b.vid = n.vid
AND b.cid = n.cid
AND n.delete_flag = 0
AND n.cid = a.cid
AND field__direction = 'received'
AND field__engagement_type IN ('email', 'txt_msg')
AND (field__manual_entry IS NULL OR field__manual_entry != 'Y')
$numbers_line
AND a.user_id = ?", array('engagement', $account->id)));
$rtn ['engagement']['total'] += intval($total_count);
$rtn ['engagement']['read'] += intval($read_count);
$rtn ['engagement']['unread'] += ($total_count - $read_count);
} // if numbers
if (count($rtn) == 0) {
return FALSE;
}
return $rtn;
}