コード例 #1
0
 function definition()
 {
     global $COURSE;
     $mform =& $this->_form;
     $current = cegep_local_current_term();
     $year = substr($current, 0, 4);
     $semester = substr($current, 4, 1);
     // If course isn't visible, offer the option
     if (!$COURSE->visible) {
         $mform->addElement('checkbox', 'makevisible', null, get_string('make_visible', 'block_cegep'));
     }
     $enrol = array();
     $enrol[] =& $mform->createElement('select', 'semester', null, array('1' => get_string('winter', 'block_cegep'), '2' => get_string('summer', 'block_cegep'), '3' => get_string('autumn', 'block_cegep')));
     $enrol[] =& $mform->createElement('select', 'year', null, array($year - 1 => $year - 1, $year => $year, $year + 1 => $year + 1));
     $mform->addGroup($enrol, 'semester', get_string('semester', 'block_cegep') . ' :', ' ', false);
     $mform->addRule('semester', get_string('specifysemester', 'block_cegep'), 'required');
     $mform->addGroupRule('semester', array('trimestre' => array(array(get_string('specifysemester', 'block_cegep'), 'required')), 'year' => array(array(get_string('specifyyear', 'block_cegep'), 'required'))), 'required', null, 2);
     $mform->setType('semester', PARAM_INT);
     $mform->setType('year', PARAM_INT);
     $mform->addElement('text', 'coursecode', get_string('coursecode', 'block_cegep') . ' :', 'size="8", maxlength="8"');
     $mform->setType('coursecode', PARAM_TEXT);
     $mform->addElement('text', 'coursegroup', get_string('coursegroup', 'block_cegep') . ' :', 'size="8", maxlength="32"');
     $mform->addRule('coursegroup', get_string('specifycoursegroup', 'block_cegep'), 'required');
     $mform->setType('coursegroup', PARAM_TEXT);
     $mform->SetDefaults(array('year' => $year, 'semester' => $semester));
     $mform->addElement('checkbox', 'creategroups', null, get_string('creategroups', 'block_cegep'));
     $this->add_action_buttons();
 }
コード例 #2
0
ファイル: lib_dawson.php プロジェクト: jcharaoui/moodle-cegep
function cegep_dawson_get_create_course_buttons()
{
    global $CFG, $USER;
    $items = array();
    $previous_term_str = '';
    $courseterms = array();
    $enrolments = cegep_local_get_teacher_enrolments($USER->idnumber, cegep_local_current_term());
    foreach ($enrolments as $enrolment) {
        // Skip already displayed courses
        if (in_array($enrolment['coursecode'] . $enrolment['term'], $courseterms)) {
            continue;
        }
        // Check if course title is empty
        if (!empty($enrolment['coursetitle'])) {
            $coursetitle = $enrolment['coursetitle'];
        } else {
            $coursetitle = get_string('cousetitlemissing', 'block_cegep');
        }
        // Display term string
        $current_term_str = cegep_local_term_to_string($enrolment['term']);
        if ($current_term_str != $previous_term_str) {
            $items[] = '<div style="font-weight: bold; font-size: 1.2em;">' . $current_term_str . '</div>';
        }
        $previous_term_str = $current_term_str;
        $items[] = '<form action="' . $CFG->wwwroot . '/blocks/cegep/block_cegep_createcourse.php" method="post" class="form_create">' . '<div class="coursenumber create_button">' . '<input type="hidden" name="coursecode" value="' . $enrolment['coursecode'] . '" />' . '<input type="hidden" name="term" value="' . $enrolment['term'] . '" />' . '<input type="submit" value="' . get_string('create', 'block_cegep') . '" name="submit" style="margin-right: 5px;" />' . $enrolment['coursecode'] . '</div><div class="coursetitle">' . $coursetitle . '</div></form>';
        array_push($courseterms, $enrolment['coursecode'] . $enrolment['term']);
    }
    if (count($enrolments) > 0) {
        $items[] = '<li><a target="_blank" href="' . $CFG->wwwroot . '/help/missing.course.php">Can\'t find your course?</a></li>';
    }
    return $items;
}
コード例 #3
0
ファイル: lib.php プロジェクト: jcharaoui/moodle-cegep
function cegep_sisdb_sync_form()
{
    $currenttab = 'sync';
    require 'sisdb_tabs.php';
    print_box('Please input the term at which you would like to start the synchronization.');
    $form = '<center><form enctype="multipart/form-data" action="sisdb.php" method="post">';
    $form .= 'Term (eg. ' . cegep_local_current_term() . '): <input name="start_term" type="text" size="5" maxlength="5" />';
    $form .= '<input type="hidden" name="op" value="sync" />';
    $form .= '<br /><br /><input type="submit" value="Start" /></form></center>';
    print_box($form);
    print_footer();
}
コード例 #4
0
 function validation($data, $files)
 {
     global $DB, $USER;
     $errors = parent::validation($data, $files);
     $allowed = FALSE;
     // Admins and teachers can create courses
     if (is_siteadmin($USER)) {
         $allowed = TRUE;
     } else {
         // Check if the current user is a teacher enrolled in this course
         $enrolments = cegep_local_get_teacher_enrolments($USER->idnumber, cegep_local_current_term());
         foreach ($enrolments as $enrolment) {
             if ($enrolment['coursecode'] == $data['coursecode']) {
                 $allowed = TRUE;
                 break;
             }
         }
     }
     if (!$allowed) {
         $errors['_coursecode'] = get_string('errormustbeteachercourse', 'block_cegep');
     }
     return $errors;
 }
コード例 #5
0
ファイル: lib.php プロジェクト: jcharaoui/moodle-cegep
function cegep_local_get_coursegroups($course_idnumber, $teacher_idnumber = '')
{
    global $CFG, $sisdb;
    $coursecode = substr($course_idnumber, 0, strpos($course_idnumber, '_'));
    if (empty($coursecode)) {
        $coursecode = $course_idnumber;
    }
    $term = cegep_local_current_term();
    $select = "SELECT * FROM `{$CFG->sisdb_name}`.`coursegroup` WHERE `coursecode` = '{$coursecode}' AND `term` >= {$term};";
    $coursegroups_rs = $sisdb->Execute($select);
    if (!$coursegroups_rs) {
        trigger_error($enroldb->ErrorMsg() . ' STATEMENT: ' . $select, E_USER_ERROR);
        return false;
    }
    $coursegroups = array();
    $teacher_enrolments = array();
    if (!empty($teacher_idnumber)) {
        $teacher_enrolments = cegep_local_get_teacher_enrolments($teacher_idnumber, $term);
    }
    while (!$coursegroups_rs->EOF) {
        $coursegroup = array();
        $coursegroup['id'] = $coursegroups_rs->fields['id'];
        $coursegroup['coursecode'] = $coursegroups_rs->fields['coursecode'];
        $coursegroup['group'] = $coursegroups_rs->fields['group'];
        $coursegroup['term'] = $coursegroups_rs->fields['term'];
        // Count student enrolments in SIS
        $select = "SELECT COUNT(`username`) AS numberofstudents FROM `{$CFG->sisdb_name}`.`student_enrolment` WHERE coursegroup_id = {$coursegroup['id']};";
        $coursegroup['numberofstudents'] = $sisdb->Execute($select)->fields['numberofstudents'];
        // If teacher_idnumber is specified, return only coursegroups/sections in which that teacher is enrolled in SIS
        if (!empty($teacher_idnumber)) {
            foreach ($teacher_enrolments as $teacher_enrolment) {
                if ($teacher_enrolment['coursecode'] === $coursegroup['coursecode'] && $teacher_enrolment['coursegroup'] === $coursegroup['group']) {
                    array_push($coursegroups, $coursegroup);
                    break;
                }
            }
        } else {
            array_push($coursegroups, $coursegroup);
        }
        $coursegroups_rs->MoveNext();
    }
    return $coursegroups;
}
コード例 #6
0
ファイル: sisdb_cli.php プロジェクト: jcharaoui/moodle-cegep
<?php

define('CLI_SCRIPT', true);
error_reporting(E_ALL | E_STRICT);
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/config.php';
require_once $CFG->libdir . '/clilib.php';
// cli only functions
require_once $CFG->dirroot . '/blocks/cegep/lib.php';
require_once $CFG->dirroot . '/blocks/cegep/sisdb/lib.php';
list($options, $unrecognized) = cli_get_params(array('sync' => false, 'prune' => false, 'help' => false), array('s' => 'sync', 'p' => 'prune', 'h' => 'help'));
if ($unrecognized) {
    $unrecognized = implode("\n  ", $unrecognized);
    cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
}
if ($options['help']) {
    $help = "Execute SISDB maintenance.\n\nOptions:\n-s, --sync            Sync internal SIS BD with source.\n-p, --prune           Prune old SIS information (1 year +)\n-h, --help            Print out this help\n";
    echo $help;
    die;
}
set_time_limit(600);
cegep_sisdb_init();
if ($options['prune']) {
    cegep_sisdb_prune(3);
}
if ($options['sync']) {
    cegep_sisdb_sync(cegep_local_current_term());
}
cegep_sisdb_close();
exit(0);