} if ($subfolder = email_is_subfolder($oldfolder->id)) { // If user changed parent folder if ($subfolder->folderparentid != $data->parentfolder) { if (!$DB->set_field('block_email_list_subfolder', 'folderparentid', $data->parentfolder, array('id' => $subfolder->id))) { print_error('failchangingparentfolder', 'block_email_list'); } } } // Unset parentfolder unset($data->parentfolder); if ($preference = $DB->get_record('block_email_list_preference', array('userid' => $USER->id))) { if ($preference->marriedfolders2courses) { // Change on all subfolders if this course has changed. if ($oldfolder->course != $data->foldercourse) { if ($subfolders = email_get_all_subfolders($data->id)) { foreach ($subfolders as $subfolder0) { $DB->set_field('block_email_list_folder', 'course', $data->foldercourse, array('id' => $subfolder0->id)); } } } } } // Update record if (!$DB->update_record('block_email_list_folder', $updatefolder)) { return false; } add_to_log($courseid, 'email_list', "update subfolder", 'folder.php?id=' . $id, "{$data->name}", 0, $USER->id); echo $OUTPUT->notification(get_string('modifyfolderok', 'block_email_list'), ''); email_print_administration_folders($options); } else {
/** * This functions return number of unreaded mails * * @uses $CFG * @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; if (!$folderid or $folderid <= 0) { // Get draft folder if ($folder = email_get_root_folder($userid, EMAIL_INBOX)) { $foldersid = $folder->id; // Get all subfolders if ($subfolders = email_get_all_subfolders($folder->id)) { foreach ($subfolders as $subfolder) { $foldersid .= ', ' . $subfolder->id; } } $sql = "SELECT count(*)\n\t\t FROM {$CFG->prefix}email_mail m\n\t\t LEFT JOIN {$CFG->prefix}email_send s ON m.id = s.mailid\n\t\t LEFT JOIN {$CFG->prefix}email_foldermail fm ON m.id = fm.mailid "; // WHERE principal clause for filter by user and course $wheresql = " WHERE s.userid = {$userid}\n\t\t\t\t\t\t AND s.course = {$courseid}\n\t\t\t\t\t\t AND fm.folderid IN ( {$foldersid} )\n\t\t\t\t\t\t AND s.readed = 0\n\t\t\t\t\t\t AND s.sended = 1"; return count_records_sql($sql . $wheresql); } else { return 0; } // return mails unreaded // wreturn count_records('email_send', 'userid', $userid, 'course', $courseid, 'readed', 0); } else { // Get folder if (!($folder = email_get_folder($folderid))) { return 0; } if (email_isfolder_type($folder, EMAIL_INBOX)) { // For apply order, I've writting an sql clause $sql = "SELECT count(*)\n\t\t FROM {$CFG->prefix}email_mail m\n\t\t LEFT JOIN {$CFG->prefix}email_send s ON m.id = s.mailid\n\t\t LEFT JOIN {$CFG->prefix}email_foldermail fm ON m.id = fm.mailid "; // WHERE principal clause for filter by user and course $wheresql = " WHERE s.userid = {$userid}\n\t\t\t\t\t\t AND s.course = {$courseid}\n\t\t\t\t\t\t AND fm.folderid = {$folder->id}\n\t\t\t\t\t\t AND s.readed = 0\n\t\t\t\t\t\t AND s.sended = 1"; return count_records_sql($sql . $wheresql); } else { if (email_isfolder_type($folder, EMAIL_DRAFT)) { // For apply order, I've writting an sql clause $sql = "SELECT count(*)\n\t\t \tFROM {$CFG->prefix}email_mail m\n\t\t \tLEFT JOIN {$CFG->prefix}email_foldermail fm ON m.id = fm.mailid "; // WHERE principal clause for filter user and course $wheresql = " WHERE m.userid = {$userid}\n\t\t\t\t\t\t AND m.course = {$courseid}\n\t\t\t\t\t\t AND fm.folderid = {$folder->id}"; return count_records_sql($sql . $wheresql); } else { return 0; } } } }
/** * This function gets all userid unread mails. It don't read trash, draft and send folders. * Only used in the cron. * * @param int $userid User Id. * @return Array All Inbox mails. */ function email_get_unread_mails($userid) { global $CFG, $DB; // Get user courses (don't read hidden courses) if ($mycourses = get_my_courses($userid)) { // Get inbox folder if ($folder = email_get_root_folder($userid, EMAIL_INBOX)) { // Get all subfolders $subfolders = email_get_all_subfolders($folder->id); $myfolders = array_merge($folder, $subfolders); $params = array('userid' => $userid, 'readed' => 0, 'sended' => 1); list($csql, $params) = $DB->get_in_or_equal($mycourses); list($fsql, $params) = $DB->get_in_or_equal($myfolders); $sql = "SELECT s.userid, s.mailid, s.course\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 "; // WHERE principal clause for filter by user and course $wheresql = " WHERE s.userid = :userid\n\t\t\t\t\t\t AND s.readed = :readed\n\t\t\t\t\t\t AND s.sended = :sended\n\t\t\t\t\t\t {$usql} {$csql}"; return $DB->get_records_sql($sql . $wheresql, $params); } } return array(); }