/** * This functions return number of unreaded mails * * @uses $CFG, $DB * @param int $userid User ID * @param int $courseid Course ID * @param int $folderid Folder ID (Optional) When fault this param, return total number of unreaded mails * @return int Number of unread mails. * @todo Finish documenting this function **/ function email_count_unreaded_mails($userid, $courseid, $folderid = NULL) { global $CFG, $DB; require_once $CFG->dirroot . '/blocks/email_list/email/folder.class.php'; $folderman = new folder(); if (!$folderid or $folderid <= 0) { $myfolders = $folderman->get_folders($userid, EMAIL_INBOX); // Prepare list of folders foreach ($myfolders as $myfolder) { $folders[] = $myfolder->id; } list($fsql, $params2) = $DB->get_in_or_equal($folders); $params = array('userid' => $userid, 'courseid' => $courseid, 'readed' => 0, 'sended' => 1); $params = array_merge($params, $params2); $sql = "SELECT COUNT(m.id)\n\t FROM {block_email_list_mail} m\n\t LEFT JOIN {block_email_list_send} s ON m.id = s.mailid\n\t LEFT JOIN {block_email_list_foldermail} fm ON m.id = fm.mailid "; // WHERE principal clause for filter by user and course $wheresql = " WHERE s.userid = ?\n\t\t\t\t\t AND s.course = ?\n\t\t\t\t\t AND s.readed = ?\n\t\t\t\t\t AND s.sended = ?\n\t\t\t\t\t AND fm.folderid {$fsql}"; return $DB->count_records_sql($sql . $wheresql, $params); } else { // Get folder if (!($folder = $folderman->get_folder($folderid))) { return 0; } if ($folder->isparenttype == EMAIL_INBOX) { // For apply order, I've writting an sql clause $sql = "SELECT count(*)\n\t\t FROM {block_email_list_mail} m\n\t\t LEFT JOIN {block_email_list_send} s ON m.id = s.mailid\n\t\t LEFT JOIN {block_email_list_foldermail} fm ON m.id = fm.mailid "; $params = array('userid' => $userid, 'course' => $courseid, 'folderid' => $folder->id, 'readed' => 0, 'sended' => 1); // WHERE principal clause for filter by user and course $wheresql = " WHERE s.userid = :userid\n\t\t\t\t\t\t AND s.course = :course\n\t\t\t\t\t\t AND fm.folderid = :folderid\n\t\t\t\t\t\t AND s.readed = :readed\n\t\t\t\t\t\t AND s.sended = :sended"; return $DB->count_records_sql($sql . $wheresql, $params); } else { if ($folder->isparenttype == EMAIL_DRAFT) { // For apply order, I've writting an sql clause $sql = "SELECT count(*)\n\t\t \tFROM {block_email_list_mail} m\n\t\t \tLEFT JOIN {block_email_list_foldermail} fm ON m.id = fm.mailid "; $params = array('userid' => $userid, 'course' => $courseid, 'folderid' => $folder->id); // WHERE principal clause for filter user and course $wheresql = " WHERE m.userid = :userid\n\t\t\t\t\t\t AND m.course = :course\n\t\t\t\t\t\t AND fm.folderid = :folderid"; return $DB->count_records_sql($sql . $wheresql, $params); } else { return 0; } } } }