コード例 #1
0
ファイル: folder.php プロジェクト: saurabh947/MoodleLearning
     }
     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 {
コード例 #2
0
/**
 * 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;
            }
        }
    }
}
コード例 #3
0
ファイル: lib.php プロジェクト: saurabh947/MoodleLearning
/**
 * 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();
}