/**
 * Function to be run periodically according to the moodle cron
 * This function searches for things that need to be done, such 
 * as sending out mail, toggling flags etc ... 
 * @uses $CFG
 *
 */
function flashcard_cron()
{
    global $CFG, $DB, $SITE;
    // get all flashcards
    $flashcards = $DB->get_records('flashcard');
    foreach ($flashcards as $flashcard) {
        if ($flashcard->starttime != 0 && time() < $flashcard->starttime) {
            continue;
        }
        if ($flashcard->endtime != 0 && time() > $flashcard->endtime) {
            continue;
        }
        if ($flashcard->autodowngrade) {
            $cards = $DB->get_records_select('flashcard_card', 'flashcardid = ? AND deck > 1', array($flashcard->id));
            foreach ($cards as $card) {
                // downgrades to deck 3 (middle low)
                if ($flashcard->decks > 3) {
                    if ($card->deck == 4 && time() > $card->lastaccessed + ($flashcard->deck4_delay * HOURSECS + $flashcard->deck4_release * HOURSECS)) {
                        $DB->set_field('flashcard_card', 'deck', 3, array('id' => $card->id));
                    }
                }
                // downgrades to deck 2 (middle)
                if ($flashcard->decks > 2) {
                    if ($card->deck == 3 && time() > $card->lastaccessed + ($flashcard->deck3_delay * HOURSECS + $flashcard->deck3_release * HOURSECS)) {
                        $DB->set_field('flashcard_card', 'deck', 2, array('id' => $card->id));
                    }
                }
                // downgrades to deck 1 (difficult)
                if ($card->deck == 2 && time() > $card->lastaccessed + ($flashcard->deck2_delay * HOURSECS + $flashcard->deck2_release * HOURSECS)) {
                    $DB->set_field('flashcard_card', 'deck', 1, array('id' => $card->id));
                }
            }
        }
        if ($flashcard->remindusers) {
            if ($users = flashcard_get_participants($flashcard->id)) {
                // restrict to real participants
                $participants = count($users);
                mtrace("Participants : {$participants} users ");
                $voiduser = new StdClass();
                $voiduser->email = $CFG->noreplyaddress;
                $voiduser->firstname = '';
                $voiduser->lastname = '';
                $voiduser->id = 1;
                $coursename = $DB->get_field('course', 'fullname', array('id' => $flashcard->course));
                $notified = 0;
                foreach ($users as $u) {
                    $decks = flashcard_get_deck_status($flashcard, $u->id);
                    foreach ($decks->decks as $deck) {
                        $sendnotif = 0;
                        if (@$deck->reactivate) {
                            if ($state = $DB->get_record('flashcard_userdeck_state', array('userid' => $u->id, 'flashcardid' => $flashcard->id, 'deck' => $deck->deckid))) {
                                if ($state->state) {
                                    continue;
                                }
                            } else {
                                $state = new StdClass();
                                $state->flashcardid = $flashcard->id;
                                $state->userid = $u->id;
                                $state->deck = $deck->deckid;
                                $DB->insert_record('flashcard_userdeck_state', $state);
                            }
                            $vars = array('FULLNAME' => fullname($u), 'COURSE' => format_string($coursename), 'URL' => $CFG->wwwroot . '/mod/flashcard/view.php?f=' . $flashcard->id);
                            $notification = flashcard_compile_mail_template('notifyreview', $vars, $u->lang);
                            $notification_html = flashcard_compile_mail_template('notifyreview_html', $vars, $u->lang);
                            if ($CFG->debugsmtp) {
                                echo "Sending Review Notification Mail Notification to " . fullname($u) . '<br/>' . $notification_html;
                            }
                            email_to_user($u, $voiduser, get_string('flashcardneedsreview', 'flashcard', $SITE->shortname . ':' . format_string($flashcard->name)), $notification, $notification_html);
                            // Mark it has been sent
                            $DB->set_field('flashcard_userdeck_state', 'state', 1, array('userid' => $u->id, 'flashcardid' => $flashcard->id, 'deck' => $deck->deckid));
                            $notified++;
                        }
                    }
                }
                mtrace("Notified : {$notified} users ");
            }
        }
    }
    return true;
}
require_once $CFG->dirroot . '/enrol/locallib.php';
$course_context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
$course = $DB->get_record('course', array('id' => $COURSE->id), '*', MUST_EXIST);
$manager = new course_enrolment_manager($PAGE, $course);
$courseusers = $manager->get_users('lastname', 'ASC', 0, 250);
$struser = get_string('username');
$strdeckstates = get_string('deckstates', 'flashcard');
$strcounts = get_string('counters', 'flashcard');
$table = new html_table();
$table->head = array("<b>{$struser}</b>", "<b>{$strdeckstates}</b>", "<b>{$strcounts}</b>");
$table->size = array('30%', '50%', '20%');
$table->width = '90%';
echo $out;
if (!empty($courseusers)) {
    foreach ($courseusers as $auser) {
        $status = flashcard_get_deck_status($flashcard, $auser->id);
        $userbox = $OUTPUT->user_picture($auser);
        $userbox .= fullname($auser);
        if ($status) {
            $flashcard->cm =& $cm;
            $deckbox = flashcard_print_deck_status($flashcard, $auser->id, $status, true);
            $countbox = flashcard_print_deckcounts($flashcard, true, $auser->id);
        } else {
            $deckbox = get_string('notinitialized', 'flashcard');
            $countbox = '';
        }
        $table->data[] = array($userbox, $deckbox, $countbox);
    }
    echo html_writer::table($table);
} else {
    echo '<center>';
Example #3
0
 * @contributors Valery Fremaux
 * @version Moodle 2.0
 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
 */
// Security.
if (!defined('MOODLE_INTERNAL')) {
    die('Direct access to this script is forbidden.');
    /// It must be included from a Moodle page.
}
// Print deferred header.
echo $out;
// Get available decks for user and calculate deck state.
if (!($decks = flashcard_get_deck_status($flashcard))) {
    // If deck status have bever been initialized initialized them.
    if (flashcard_initialize($flashcard, $USER->id)) {
        $decks = flashcard_get_deck_status($flashcard);
    } else {
        if (has_capability('mod/flashcard:manage', $context)) {
            $url = new moodle_url('/mod/flashcard/view.php', array('id' => $cm->id, 'view' => 'edit'));
        } else {
            $url = new moodle_url('/course/view.php', array('id' => $course->id));
        }
        echo $OUTPUT->notification(get_string('nocards', 'flashcard'), $url);
    }
}
?>

<center>
<table width="90%" cellspacing="10">
    <tr>
        <th>