Exemplo n.º 1
0
/**
 * Install function for this plugin
 *
 * @return  boolean  true  Returns true to satisfy install procedure
 */
function xmldb_elisprogram_usetdisppriority_install()
{
    global $CFG;
    require_once elispm::lib('setup.php');
    // Migrate component.
    $oldcmp = 'pmplugins_userset_display_priority';
    $newcmp = 'elisprogram_usetdisppriority';
    $upgradestepfuncname = 'elisprogram_usetdisppriority_pre26upgradesteps';
    $migrator = new \local_eliscore\install\migration\migrator($oldcmp, $newcmp, $upgradestepfuncname);
    if ($migrator->old_component_installed() === true) {
        $migrator->migrate();
    }
    $field = new field();
    $field->shortname = USERSET_DISPLAY_PRIORITY_FIELD;
    $field->name = get_string('display_priority_field_name', 'elisprogram_usetdisppriority');
    $field->datatype = 'int';
    $category = new field_category();
    $category->name = get_string('display_settings_category_name', 'elisprogram_usetdisppriority');
    $field = field::ensure_field_exists_for_context_level($field, CONTEXT_ELIS_USERSET, $category);
    // make sure 'manual' is an owner
    if (!isset($field->owners['manual'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'manual';
        $owner->param_view_capability = '';
        $owner->param_edit_capability = '';
        $owner->param_control = 'text';
        $owner->param_options_source = 'userset_display_priority';
        $owner->param_help_file = 'elisprogram_usetdisppriority/display_priority';
        $owner->save();
    }
    return true;
}
 /**
  * Validate that course description-moodle template course associations
  * can be created during a course description update action
  */
 public function test_associate_moodle_course_during_course_update()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/course/lib.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/coursetemplate.class.php');
     $coursecategory = new stdClass();
     $coursecategory->name = 'testcoursecategoryname';
     $coursecategory->id = $DB->insert_record('course_categories', $coursecategory);
     $templatecourse = new stdClass();
     $templatecourse->category = $coursecategory->id;
     $templatecourse->shortname = 'testcourseshortname';
     $templatecourse->fullname = 'testcoursefullname';
     $templatecourse = create_course($templatecourse);
     // Create the course description.
     $pmcourse = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $pmcourse->save();
     // Run the course description update action.
     $record = new stdClass();
     $record->name = 'testcoursename';
     $record->idnumber = 'testcourseidnumber';
     $record->link = $templatecourse->shortname;
     $importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
     $importplugin->fslogger = new silent_fslogger(null);
     $importplugin->course_update($record, 'bogus');
     // Validation.
     $this->assertTrue($DB->record_exists(coursetemplate::TABLE, array('courseid' => $pmcourse->id, 'location' => $templatecourse->id, 'templateclass' => 'moodlecourseurl')));
 }
Exemplo n.º 3
0
/**
 * Install function for this plugin
 *
 * @return  boolean  true  Returns true to satisfy install procedure
 */
function xmldb_elisprogram_usetclassify_install()
{
    global $CFG, $DB;
    require_once elispm::lib('setup.php');
    require_once elis::lib('data/customfield.class.php');
    require_once elispm::file('plugins/usetclassify/usersetclassification.class.php');
    // Migrate component.
    $oldcmp = 'pmplugins_userset_classification';
    $newcmp = 'elisprogram_usetclassify';
    $upgradestepfuncname = 'elisprogram_usetclassify_pre26upgradesteps';
    $tablechanges = array('crlm_cluster_classification' => 'elisprogram_usetclassify');
    $migrator = new \local_eliscore\install\migration\migrator($oldcmp, $newcmp, $upgradestepfuncname, $tablechanges);
    if ($migrator->old_component_installed() === true) {
        $migrator->migrate();
    }
    $field = new field();
    $field->shortname = USERSET_CLASSIFICATION_FIELD;
    $field->name = get_string('classification_field_name', 'elisprogram_usetclassify');
    $field->datatype = 'char';
    $category = new field_category();
    $category->name = get_string('classification_category_name', 'elisprogram_usetclassify');
    $field = field::ensure_field_exists_for_context_level($field, CONTEXT_ELIS_USERSET, $category);
    // make sure we're set as owner
    if (!isset($field->owners['userset_classifications'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'userset_classifications';
        $owner->save();
    }
    // make sure 'manual' is an owner
    if (!isset($field->owners['manual'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'manual';
        $owner->param_view_capability = '';
        $owner->param_edit_capability = 'moodle/user:update';
        $owner->param_control = 'menu';
        $owner->param_options_source = 'userset_classifications';
        $owner->param_help_file = 'elisprogram_usetclassify/cluster_classification';
        $owner->save();
    }
    // make sure we have a default value set
    if (!field_data::get_for_context_and_field(NULL, $field)) {
        field_data::set_for_context_and_field(NULL, $field, 'regular');
    }
    $regclassify = $DB->get_record(usersetclassification::TABLE, array('shortname' => 'regular'));
    if (empty($regclassify)) {
        $default = new usersetclassification();
        $default->shortname = 'regular';
        $default->name = get_string('cluster', 'local_elisprogram');
        $default->param_autoenrol_curricula = 1;
        $default->param_autoenrol_tracks = 1;
        $default->save();
    }
    return true;
}
Exemplo n.º 4
0
/**
 * Install function for this plugin
 *
 * @return  boolean  true  Returns true to satisfy install procedure
 */
function xmldb_elisprogram_preposttest_install()
{
    global $CFG;
    require_once elispm::lib('setup.php');
    require_once elis::lib('data/customfield.class.php');
    // Migrate component.
    $oldcmp = 'pmplugins_pre_post_test';
    $newcmp = 'elisprogram_preposttest';
    $upgradestepfuncname = 'elisprogram_preposttest_pre26upgradesteps';
    $migrator = new \local_eliscore\install\migration\migrator($oldcmp, $newcmp, $upgradestepfuncname);
    if ($migrator->old_component_installed() === true) {
        $migrator->migrate();
    }
    // Pre-test field
    $field = new field();
    $field->shortname = PRE_TEST_FIELD;
    $field->name = get_string('pre_test_field_name', 'elisprogram_preposttest');
    $field->datatype = 'char';
    $category = new field_category();
    $category->name = get_string('pre_post_test_category_name', 'elisprogram_preposttest');
    $field = field::ensure_field_exists_for_context_level($field, CONTEXT_ELIS_COURSE, $category);
    // make sure 'manual' is an owner
    if (!isset($field->owners['manual'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'manual';
        $owner->param_view_capability = '';
        $owner->param_edit_capability = '';
        $owner->param_control = 'menu';
        $owner->param_options_source = 'learning_objectives';
        $owner->param_help_file = 'elisprogram_preposttest/pre_test';
        $owner->save();
    }
    // Post-test field
    $field = new field();
    $field->shortname = POST_TEST_FIELD;
    $field->name = get_string('post_test_field_name', 'elisprogram_preposttest');
    $field->datatype = 'char';
    $category = new field_category();
    $category->name = get_string('pre_post_test_category_name', 'elisprogram_preposttest');
    $field = field::ensure_field_exists_for_context_level($field, CONTEXT_ELIS_COURSE, $category);
    // make sure 'manual' is an owner
    if (!isset($field->owners['manual'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'manual';
        $owner->param_view_capability = '';
        $owner->param_edit_capability = '';
        $owner->param_control = 'menu';
        $owner->param_options_source = 'learning_objectives';
        $owner->param_help_file = 'elisprogram_preposttest/post_test';
        $owner->save();
    }
    return true;
}
Exemplo n.º 5
0
 /**
  * Require ELIS dependencies if ELIS is installed, otherwise return false.
  * @return bool Whether ELIS dependencies were successfully required.
  */
 public static function require_elis_dependencies()
 {
     global $CFG;
     if (file_exists($CFG->dirroot . '/local/elisprogram/lib/setup.php')) {
         require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
         require_once elispm::lib('data/userset.class.php');
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 6
0
 /**
  * Perform initialization that should
  * be done at the beginning of the export
  *
  * @param int $targetstarttime The timestamp representing the theoretical
  *                             time when this task was meant to be run
  * @param int $lastruntime     The last time the export was run
  *                             (required for incremental scheduled export)
  */
 public function init($targetstarttime = 0, $lastruntime = 0)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/user.class.php');
     require_once elispm::lib('data/student.class.php');
     require_once elispm::lib('data/pmclass.class.php');
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/classmoodlecourse.class.php');
     // Columns that are always displayed.
     $columns = array(get_string('header_firstname', 'dhexport_version1'), get_string('header_lastname', 'dhexport_version1'), get_string('header_username', 'dhexport_version1'), get_string('header_useridnumber', 'dhexport_version1'), get_string('header_courseidnumber', 'dhexport_version1'), get_string('header_startdate', 'dhexport_version1'), get_string('header_enddate', 'dhexport_version1'), get_string('header_status', 'dhexport_version1elis'), get_string('header_grade', 'dhexport_version1'), get_string('header_letter', 'dhexport_version1'));
     // Query parameters.
     $params = array();
     // Track extra SQL and parameters needed for custom fields.
     $extra_joins = implode(" \n ", rlipexport_version1elis_extrafields::get_extra_joins());
     $extra_select = implode(', ', rlipexport_version1elis_extrafields::get_extra_select());
     if (!empty($extra_select)) {
         $extra_select = ', ' . $extra_select;
     }
     // Get columns.
     $columns = array_merge($columns, rlipexport_version1elis_extrafields::get_extra_columns());
     // Add passed as completion status requirement.
     $params[] = student::STUSTATUS_PASSED;
     // Sql time condition.
     $time_condition = '';
     // Determine if we're in incremental or non-incremental mode.
     $nonincremental = get_config('dhexport_version1elis', 'nonincremental');
     if (empty($nonincremental)) {
         if ($this->manual) {
             // Manual export incremental mode.
             // Get string delta.
             $incrementaldelta = get_config('dhexport_version1elis', 'incrementaldelta');
             // Convert to number of seconds.
             $numsecs = rlip_time_string_to_offset($incrementaldelta);
             // Add to query parameters.
             $params[] = time() - $numsecs;
             // Add query fragment.
             $time_condition = 'AND stu.completetime >= ?';
         } else {
             // Scheduled export incremental mode.
             // Set up the query fragment and parameters.
             $params[] = $lastruntime;
             $time_condition = 'AND stu.completetime >= ?';
         }
     }
     // Initialize our recordset to the core data.
     $sql = "SELECT u.id AS userid,\n                       u.firstname,\n                       u.lastname,\n                       u.username,\n                       u.idnumber,\n                       crs.idnumber AS crsidnumber,\n                       stu.enrolmenttime,\n                       stu.completetime,\n                       stu.grade,\n                       mdlcrs.id AS mdlcrsid\n                       {$extra_select}\n                FROM {" . user::TABLE . "} u\n                JOIN {" . student::TABLE . "} stu\n                  ON u.id = stu.userid\n                JOIN {" . pmclass::TABLE . "} cls\n                  ON stu.classid = cls.id\n                JOIN {" . course::TABLE . "} crs\n                  ON cls.courseid = crs.id\n                LEFT JOIN {" . classmoodlecourse::TABLE . "} clsmdl\n                  ON cls.id = clsmdl.classid\n                LEFT JOIN {course} mdlcrs\n                  ON clsmdl.moodlecourseid = mdlcrs.id\n                {$extra_joins}\n                WHERE stu.completestatusid = ?\n                {$time_condition}\n                ORDER BY u.idnumber ASC,\n                         crs.idnumber ASC,\n                         stu.completetime ASC,\n                         stu.grade DESC,\n                         cls.idnumber ASC,\n                         u.username ASC";
     $this->recordset = $DB->get_recordset_sql($sql, $params);
     // Write out header.
     $this->fileplugin->write($columns);
     // Load string to prevent calling get_string for every record.
     $this->completestatusstring = get_string('completestatusstring', 'dhexport_version1elis');
 }
Exemplo n.º 7
0
 /**
  * Require ELIS dependencies if ELIS is installed, otherwise return false.
  * @return bool Whether ELIS dependencies were successfully required.
  */
 public static function require_elis_dependencies()
 {
     global $CFG;
     if (file_exists($CFG->dirroot . '/local/elisprogram/lib/setup.php')) {
         require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
         require_once elispm::lib('data/user.class.php');
         require_once dirname(__FILE__) . '/../../importplugins/version1elis/version1elis.class.php';
         return true;
     } else {
         return false;
     }
 }
 /**
  * Set up permissions that allow the current user to enrol users in tracks
  */
 protected function assign_track_enrol_permissions()
 {
     global $CFG, $USER, $DB;
     require_once elispm::lib('data/user.class.php');
     // Set up a test role that allows users to enrol users in tracks.
     $roleid = create_role('trackenrol', 'trackenrol', 'trackenrol');
     $syscontext = context_system::instance();
     assign_capability('local/elisprogram:track_enrol', CAP_ALLOW, $roleid, $syscontext->id);
     // Set up our current user.
     $activeuser = new user(array('idnumber' => 'activeuser', 'username' => 'activeuser', 'firstname' => 'Activeuser', 'lastname' => 'Activeuser', 'email' => '*****@*****.**', 'country' => 'CA'));
     $activeuser->save();
     $USER = $DB->get_record('user', array('username' => 'activeuser'));
     // Assign the role to the current user.
     role_assign($roleid, $USER->id, $syscontext->id);
 }
Exemplo n.º 9
0
 /**
  * Validate that appropriate fields are synched over to Moodle when PM user is enrolled in a class instance during an import.
  */
 public function test_user_sync_on_pm_user_create()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/course/lib.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/classmoodlecourse.class.php');
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/pmclass.class.php');
     require_once elispm::lib('data/user.class.php');
     // Configure the elis enrolment plugin.
     $roleid = $DB->get_field('role', 'id', array(), IGNORE_MULTIPLE);
     set_config('roleid', $roleid, 'enrol_elis');
     $user = new user(array('idnumber' => 'testuseridnumber', 'username' => 'testuserusername', 'firstname' => 'testuserfirstname', 'lastname' => 'testuserlastname', 'email' => '*****@*****.**', 'country' => 'CA'));
     $user->save();
     $course = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $course->save();
     $class = new pmclass(array('courseid' => $course->id, 'idnumber' => 'testclassidnumber'));
     $class->save();
     $category = new stdClass();
     $category->name = 'testcategoryname';
     $category->id = $DB->insert_record('course_categories', $category);
     // Create the associated context.
     context_coursecat::instance($category->id);
     $mdlcourse = new stdClass();
     $mdlcourse->category = $category->id;
     $mdlcourse->fullname = 'testcoursefullname';
     $mdlcourse = create_course($mdlcourse);
     // Associate class instance to Moodle course.
     $classmoodlecourse = new classmoodlecourse(array('classid' => $class->id, 'moodlecourseid' => $mdlcourse->id));
     $classmoodlecourse->save();
     // Run the enrolment create action.
     $record = new stdClass();
     $record->context = 'class_testclassidnumber';
     $record->user_username = '******';
     $importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
     $importplugin->fslogger = new silent_fslogger(null);
     $importplugin->class_enrolment_create($record, 'bogus', 'testclassidnumber');
     // Validate the enrolment.
     $enrolid = $DB->get_field('enrol', 'id', array('enrol' => 'elis', 'courseid' => $mdlcourse->id));
     $this->assertNotEquals(false, $enrolid);
     $mdluserid = $DB->get_field('user', 'id', array('username' => 'testuserusername'));
     $this->assertNotEquals(false, $mdluserid);
     $this->assertTrue($DB->record_exists('user_enrolments', array('enrolid' => $enrolid, 'userid' => $mdluserid)));
     // Validate the role assignment.
     $mdlcoursecontext = context_course::instance($mdlcourse->id);
     $this->assertTrue($DB->record_exists('role_assignments', array('roleid' => $roleid, 'contextid' => $mdlcoursecontext->id, 'userid' => $mdluserid)));
 }
 /**
  * Set up necessary data
  *
  * @param int $numfields The number of custom fields used in auto-association
  */
 private function init_required_data($numfields = 1)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elis::file('eliscore/fields/moodleprofile/custom_fields.php');
     require_once elis::lib('data/customfield.class.php');
     require_once elispm::file('accesslib.php');
     require_once elispm::lib('data/userset.class.php');
     require_once $CFG->dirroot . '/user/profile/definelib.php';
     require_once $CFG->dirroot . '/user/profile/field/checkbox/define.class.php';
     // Set up the category only once.
     $fieldcategory = new field_category(array('name' => 'testcategoryname'));
     $fieldcategory->save();
     // Ste up the target userset only once.
     $userset = new userset(array('name' => 'testusersetname'));
     $userset->save();
     for ($i = 1; $i <= $numfields; $i++) {
         // Custom field.
         $field = new field(array('categoryid' => $fieldcategory->id, 'shortname' => 'testfieldshortname' . $i, 'name' => 'testfieldname' . $i, 'datatype' => 'bool'));
         $field->save();
         // Ensure manual field owner exists for syncing.
         field_owner::ensure_field_owner_exists($field, 'manual');
         $ownerid = $DB->get_field(field_owner::TABLE, 'id', array('fieldid' => $field->id, 'plugin' => 'manual'));
         $owner = new field_owner($ownerid);
         $owner->param_control = 'checkbox';
         $owner->save();
         // Ensure moodle profile field owner exists.
         field_owner::ensure_field_owner_exists($field, 'moodle_profile');
         $DB->execute("UPDATE {" . field_owner::TABLE . "} SET exclude = ?", array(pm_moodle_profile::sync_to_moodle));
         // Field context level assocation.
         $fieldcontextlevel = new field_contextlevel(array('fieldid' => $field->id, 'contextlevel' => CONTEXT_ELIS_USER));
         $fieldcontextlevel->save();
         // The associated Moodle user profile field.
         $profiledefinecheckbox = new profile_define_checkbox();
         $data = new stdClass();
         $data->datatype = 'checkbox';
         $data->categoryid = 99999;
         $data->shortname = 'testfieldshortname' . $i;
         $data->name = 'testfieldname' . $i;
         $profiledefinecheckbox->define_save($data);
         $mfield = $DB->get_record('user_info_field', array('shortname' => 'testfieldshortname' . $i));
         // The "cluster-profile" association.
         $usersetprofile = new userset_profile(array('clusterid' => $userset->id, 'fieldid' => $mfield->id, 'value' => 1));
         $usersetprofile->save();
     }
 }
 /**
  * Validate that the enrolment count excludes inactive users when the site is not configured to show inactive users
  */
 public function test_usercountexcludesinactivewhenexcludinginactive()
 {
     require_once elispm::lib('lib.php');
     // Set up all the data needed for the listing.
     $this->load_csv_data();
     // Disable showing of inactive users.
     pm_set_config('legacy_show_inactive_users', 0);
     elis::$config = new elis_config();
     // Obtain the listing.
     $listing = track_assignment_get_listing(1);
     // Validate the number of rows.
     $count = 0;
     foreach ($listing as $entity) {
         $count++;
         // Validate the aggregated count in the first row.
         $this->assertEquals(1, $entity->enrolments);
     }
     unset($listing);
     $this->assertEquals(1, $count);
 }
Exemplo n.º 12
0
/**
 * Install function for this plugin
 *
 * @return  boolean  true  Returns true to satisfy install procedure
 */
function xmldb_elisprogram_archive_install()
{
    global $CFG;
    require_once elispm::lib('setup.php');
    require_once elis::lib('data/customfield.class.php');
    // Migrate component.
    $oldcmp = 'pmplugins_archive';
    $newcmp = 'elisprogram_archive';
    $upgradestepfuncname = 'elisprogram_archive_pre26upgradesteps';
    $migrator = new \local_eliscore\install\migration\migrator($oldcmp, $newcmp, $upgradestepfuncname);
    if ($migrator->old_component_installed() === true) {
        $migrator->migrate();
    }
    // Archive field
    $field = new field();
    $field->shortname = ARCHIVE_FIELD;
    $field->name = get_string('archive_field_name', 'elisprogram_archive');
    $field->datatype = 'bool';
    $category = new field_category();
    $category->name = get_string('archive_category_name', 'elisprogram_archive');
    $field = field::ensure_field_exists_for_context_level($field, CONTEXT_ELIS_PROGRAM, $category);
    // make sure 'manual' is an owner
    if (!isset($field->owners['manual'])) {
        $owner = new field_owner();
        $owner->fieldid = $field->id;
        $owner->plugin = 'manual';
        $owner->param_required = 0;
        $owner->param_view_capability = '';
        $owner->param_edit_capability = '';
        $owner->param_control = 'checkbox';
        $owner->param_options_source = '';
        $owner->param_help_file = 'elisprogram_archive/archive_program';
        $owner->save();
    }
    $owner_options = array('required' => 0, 'edit_capability' => '', 'view_capability' => '', 'control' => 'checkbox', 'columns' => 30, 'rows' => 10, 'maxlength' => 2048, 'help_file' => 'elisprogram_archive/archive_program');
    field_owner::ensure_field_owner_exists($field, 'manual', $owner_options);
    return true;
}
Exemplo n.º 13
0
 /**
  * Validate that the sync from course role assignment to class instance enrolment works
  */
 public function test_enrolled_course_user_syncstoclass()
 {
     global $CFG, $DB;
     require_once elispm::lib('lib.php');
     // Set up import data.
     $this->load_csv_data();
     // Make sure the context is set up.
     $crsctx = context_course::instance(100);
     // Set up our test role.
     $roleid = create_role('gradedrole', 'gradedrole', 'gradedrole');
     set_config('gradebookroles', $roleid);
     // Create role assignments.
     role_assign($roleid, 100, $crsctx->id);
     // Attempt the sync.
     $sync = new \local_elisprogram\moodle\synchronize();
     $sync->synchronize_moodle_class_grades();
     // Make sure the student record was created.
     $student = student::find();
     $this->assertTrue($student->valid());
     // Make sure the student has the right class id.
     $student = $student->current();
     $this->assertEquals(100, $student->classid);
 }
Exemplo n.º 14
0
 /**
  * Test enrolment functions using an invalid class ID.
  */
 public function test_enrolment_with_invalid_classid()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('lib.php');
     $this->load_csv_data();
     $enrolment = new stdClass();
     $enrolment->classid = 1000;
     // Invalid class ID.
     $enrolment->userid = 103;
     $enrolment->enrolmenttime = time();
     $enrolment->completetime = 0;
     $enrolment->endtime = 0;
     $enrolment->completestatusid = 0;
     $enrolment->grade = 0;
     $enrolment->credits = 0.0;
     $enrolment->locked = 0;
     // Directly insert the record to bypass 'student' class validation on the classid.
     $this->assertGreaterThan(0, $DB->insert_record(student::TABLE, $enrolment));
     // Attempt to update status before the required learning objective is satisfied.
     // ELIS-4955 -- This should ignore the bad data and proceed without error.
     pm_update_enrolment_status();
     // Validate that the enrolment is still in progress.
     $sturecord = new student(100);
     $this->assertEquals(STUSTATUS_NOTCOMPLETE, $sturecord->completestatusid);
     $this->assertEquals(0, $sturecord->locked);
     // Satisfy the required learning objective.
     $graderecord = new student_grade(1);
     $graderecord->grade = 80;
     $graderecord->save();
     // Attempt to update status now that the required learning objective is satisfied.
     pm_update_enrolment_status();
     // Validate that the enrolment is passed.
     $sturecord = new student(100);
     $this->assertEquals(STUSTATUS_PASSED, $sturecord->completestatusid);
     $this->assertEquals(1, $sturecord->locked);
 }
Exemplo n.º 15
0
/**
 * This function looks for course descriptions that issue certificates and students who have met the criteria to receive a
 * certificate
 * @return bool This function will always return true as to not interfere with the rest of the cron process.
 */
function pm_issue_course_certificates()
{
    require_once elispm::lib('certificate.php');
    require_once elispm::lib('data/certificateissued.class.php');
    global $DB;
    $status = true;
    $certuser = null;
    $certusers = array();
    // Find all courses having certificate settings and are enabled.
    $params = array('entity_type' => CERTIFICATE_ENTITY_TYPE_COURSE, 'disable' => 0);
    $certcourses = $DB->get_recordset('local_elisprogram_certcfg', $params, '', 'id, entity_id');
    if (empty($certcourses)) {
        return $status;
    }
    foreach ($certcourses as $certcoursesetting) {
        /* Find all users who completed classes and have not already recieved
         * certificates for those classes
         */
        $subselect = "SELECT * ";
        $subfrom = "FROM {local_elisprogram_certissued} certissued ";
        $subwhere = "WHERE certissued.cert_setting_id = :certsettingid AND " . "certissued.cm_userid = clsenrol.userid AND clsenrol.completetime = certissued.timeissued ";
        $params = array('completestatus' => STUSTATUS_PASSED, 'locked' => 1, 'courseid' => $certcoursesetting->entity_id, 'certsettingid' => $certcoursesetting->id);
        $select = "SELECT clsenrol.userid, clsenrol.completetime ";
        $from = "FROM {local_elisprogram_cls} cmclass " . "INNER JOIN {local_elisprogram_cls_enrol} clsenrol ON clsenrol.classid = cmclass.id ";
        $where = "WHERE clsenrol.completestatusid = :completestatus AND clsenrol.locked = :locked AND " . "cmclass.courseid = :courseid AND " . "NOT EXISTS ({$subselect} {$subfrom} {$subwhere}) ORDER BY clsenrol.userid ";
        $certusers = $DB->get_recordset_sql($select . $from . $where, $params);
        $certissueddata = new certificateissued(0);
        $result = pm_issue_user_certificate($certcoursesetting->id, $certusers, $certissueddata);
        $certusers->close();
    }
    return $status;
}
Exemplo n.º 16
0
 /**
  * Validate the various behaviours of the parent field during userset creation
  *
  * @param string $inputvalue The parent value specified
  * @param int $dbvalue The expected parent value stored in the database
  * @param int $depth The expected userset depth
  * @dataProvider parent_provider
  */
 public function test_create_elis_userset_respects_parent_field($inputvalue, $dbvalue, $depth)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/userset.class.php');
     // Set up a parent userset.
     $parent = new userset(array('name' => 'testparentusersetname'));
     $parent->save();
     // Run the import.
     $data = array('parent' => $inputvalue);
     $this->run_core_userset_import($data, true);
     // Validation.
     $data['name'] = 'testusersetname';
     $data['parent'] = $dbvalue;
     $data['depth'] = $depth;
     $this->assertTrue($DB->record_exists(userset::TABLE, $data));
 }
Exemplo n.º 17
0
 /**
  * Validate that track-class associations can be created during a class instance
  * update action
  *
  * @param mixed $autoenrol The appropriate autoenrol value specified
  * @param int $dbautoenrol The value expected to be set in the db for autoenrol
  * @dataProvider autoenrol_provider
  */
 public function test_associate_track_during_class_update($autoenrol, $dbautoenrol)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/curriculum.class.php');
     require_once elispm::lib('data/curriculumcourse.class.php');
     require_once elispm::lib('data/pmclass.class.php');
     require_once elispm::lib('data/track.class.php');
     // Create the course description.
     $course = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $course->save();
     // Create the class instance.
     $pmclass = new pmclass(array('courseid' => $course->id, 'idnumber' => 'testclassidnumber'));
     $pmclass->save();
     // Create the curriculum / program.
     $curriculum = new curriculum(array('idnumber' => 'testcurriculumidnumber'));
     $curriculum->save();
     // Associate the course description to the program.
     $curriculumcourse = new curriculumcourse(array('curriculumid' => $curriculum->id, 'courseid' => $course->id));
     $curriculumcourse->save();
     // Create the track.
     $track = new track(array('curid' => $curriculum->id, 'idnumber' => 'testtrackidnumber'));
     $track->save();
     // Run the class instance update action.
     $record = new stdClass();
     $record->assignment = 'testcourseidnumber';
     $record->idnumber = 'testclassidnumber';
     $record->track = 'testtrackidnumber';
     if ($autoenrol !== null) {
         $record->autoenrol = $autoenrol;
     }
     $importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
     $importplugin->fslogger = new silent_fslogger(null);
     $importplugin->class_update($record, 'bogus');
     // Validation.
     $classid = $DB->get_field(pmclass::TABLE, 'id', array('idnumber' => 'testclassidnumber'));
     $this->assertTrue($DB->record_exists(trackassignment::TABLE, array('trackid' => $track->id, 'classid' => $classid, 'autoenrol' => $dbautoenrol)));
 }
Exemplo n.º 18
0
 * @copyright  (C) 2008-2013 Remote Learner.net Inc http://www.remote-learner.net
 *
 */
/**
 * Generates a PDF certificate corresponding to a particular curriculum assignment.
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
require_once elispm::lib('deprecatedlib.php');
// cm_get_crlmuserid()
require_once elispm::lib('data/user.class.php');
require_once elispm::lib('data/course.class.php');
require_once elispm::lib('data/certificatesettings.class.php');
require_once elispm::lib('data/certificateissued.class.php');
require_once elispm::lib('data/student.class.php');
require_once elispm::lib('data/instructor.class.php');
$ciid = required_param('id', PARAM_INT);
// Issued certificate id
$csid = required_param('csid', PARAM_INT);
// certificate setting id
global $USER;
$cmuserid = cm_get_crlmuserid($USER->id);
$student = new user($cmuserid);
$student->load();
if (empty($student->id)) {
    return get_string('studentnotfound', 'local_elisprogram');
}
// Retrieve the certificate settings record
$certsettingrec = new certificatesettings($csid);
$certsettingrec->load();
// Check if the record exists or if the certificate is disabled
 * @author     James McQuillan <*****@*****.**>
 *
 */
require_once dirname(__FILE__) . '/../../eliscore/test_config.php';
global $CFG;
require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
require_once dirname(__FILE__) . '/other/deepsight_testlib.php';
require_once elispm::lib('deepsightpage.class.php');
require_once elispm::lib('selectionpage.class.php');
require_once elispm::lib('data/clusterassignment.class.php');
require_once elispm::lib('data/clustercurriculum.class.php');
require_once elispm::lib('data/curriculum.class.php');
require_once elispm::lib('data/curriculumstudent.class.php');
require_once elispm::lib('data/user.class.php');
require_once elispm::lib('data/userset.class.php');
require_once elispm::lib('data/usermoodle.class.php');
/**
 * Mock userprogram_assigned datatable class to expose protected methods and properties.
 */
class deepsight_datatable_userprogram_assigned_mock extends deepsight_datatable_userprogram_assigned
{
    /**
     * Magic function to expose protected properties.
     * @param string $name The name of the property
     * @return string|int|bool The value of the property
     */
    public function __get($name)
    {
        return isset($this->{$name}) ? $this->{$name} : false;
    }
    /**
 /**
  * Validate that export does not respect completion time
  *
  * @param int $completiontimeindex The index of the time to use.
  * @param int $numrows The total number of rows to expect, including the header
  * @dataProvider completion_time_provider
  */
 public function test_export_respects_completiontime($completiontimeindex, $numrows)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/student.class.php');
     // The times are provided in the test rather than in the dataprovider as the dataprovider is run at the start
     // of all tests when tests are run as a group, and the time value can become irrelevant.
     $times = array(0, 1000000000, time() - 25 * HOURSECS, time() - 23 * HOURSECS, time());
     if (!isset($times[$completiontimeindex])) {
         // Fail the test if someone has added an invalid dataprovider value.
         $this->assertTrue(false);
     } else {
         $completiontime = $times[$completiontimeindex];
     }
     // Data setup.
     $this->load_csv_data();
     $sql = "UPDATE {" . student::TABLE . "} SET completetime = ?";
     $params = array($completiontime);
     $DB->execute($sql, $params);
     // Validation.
     $data = $this->get_export_data();
     $this->assertEquals($numrows, count($data));
 }
Exemplo n.º 21
0
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @package    local_elisprogram
 * @author     Remote-Learner.net Inc
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @copyright  (C) 2008-2013 Remote Learner.net Inc http://www.remote-learner.net
 *
 */
require_once dirname(__FILE__) . '/../../eliscore/test_config.php';
global $CFG;
require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
// Data objects.
require_once elispm::lib('data/curriculumcourse.class.php');
/**
 * Test courseprerequisite data object.
 * Since class isdefined within curriculumcourse.class.php testDataObjectsFieldsAndAssociations.php will not auto test this class.
 * @group local_elisprogram
 */
class courseprerequisite_testcase extends elis_database_test
{
    /**
     * Load initial data from CSVs.
     */
    protected function load_csv_data()
    {
        $dataset = $this->createCsvDataSet(array(courseprerequisite::TABLE => elispm::file('tests/fixtures/course_prerequisite.csv')));
        $this->loadDataSet($dataset);
    }
Exemplo n.º 22
0
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @package    local_elisprogram
 * @author     Remote-Learner.net Inc
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @copyright  (C) 2013 Remote Learner.net Inc http://www.remote-learner.net
 * @author     James McQuillan <*****@*****.**>
 *
 */
require_once elispm::lib('data/clusterassignment.class.php');
/**
 * An action to assign a user to a program.
 */
class deepsight_action_programuser_assign extends deepsight_action_confirm
{
    public $label = 'Assign User';
    public $icon = 'elisicon-assoc';
    /**
     * Constructor.
     * @param moodle_database $DB The active database connection.
     * @param string $name The unique name of the action to use.
     * @param string $descsingle The description when the confirmation is for a single element.
     * @param string $descmultiple The description when the confirmation is for the bulk list.
     */
    public function __construct(moodle_database &$DB, $name, $descsingle = '', $descmultiple = '')
Exemplo n.º 23
0
/**
 * Get Curriculum user id for a given Moodle user id.
 *
 * @param int $userid  the Moodle userid
 * @uses $DB
 */
function cm_get_crlmuserid($userid)
{
    global $DB;
    require_once elispm::lib('data/user.class.php');
    $select = 'SELECT cu.id ';
    $from = 'FROM {user} mu ';
    $join = 'INNER JOIN {' . user::TABLE . '} cu ON cu.idnumber = mu.idnumber ';
    $where = 'WHERE mu.id = ? ';
    return $DB->get_field_sql($select . $from . $join . $where, array($userid));
}
Exemplo n.º 24
0
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @package    local_elisprogram
 * @author     Remote-Learner.net Inc
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @copyright  (C) 2008-2013 Remote Learner.net Inc http://www.remote-learner.net
 *
 */
defined('MOODLE_INTERNAL') || die;
require_once elispm::lib('data/curriculum.class.php');
require_once elispm::lib('managementpage.class.php');
require_once elispm::lib('contexts.php');
require_once elispm::lib('datedelta.class.php');
require_once elispm::file('form/curriculumform.class.php');
require_once elispm::file('curriculumcoursepage.class.php');
require_once elispm::file('curriculumstudentpage.class.php');
require_once elispm::file('clustercurriculumpage.class.php');
require_once elispm::file('rolepage.class.php');
/// The main management page.
class curriculumpage extends managementpage
{
    var $pagename = 'cur';
    var $section = 'curr';
    var $data_class = 'curriculum';
    var $form_class = 'cmCurriculaForm';
    var $view_columns = array('name', 'description');
    static $contexts = array();
    static function get_contexts($capability)
Exemplo n.º 25
0
 /**
  * Test that a record can be modified, and that the corresponding Moodle
  * user is modified.
  */
 public function test_canupdaterecordandsynctomoodle()
 {
     global $DB;
     require_once elispm::lib('lib.php');
     $this->load_csv_data();
     // Read a record.
     $src = new user(103, null, array(), false, array());
     $src->reset_custom_field_list();
     // Modify the data.
     $src->firstname = 'Testuser';
     $src->lastname = 'One';
     $src->field_sometext = 'boo';
     $src->field_sometextfrompm = 'bla';
     $src->save();
     // Read it back.
     $retr = new user($src->id, null, array(), false, array());
     $this->assertEquals($src->firstname, $retr->firstname);
     $this->assertEquals($src->lastname, $retr->lastname);
     // Check the Moodle user.
     $retr = $DB->get_record('user', array('id' => 100));
     profile_load_data($retr);
     fix_moodle_profile_fields($retr);
     $this->assertEquals($src->firstname, $retr->firstname);
     $this->assertEquals($src->lastname, $retr->lastname);
     // Check custom fields.
     $result = new moodle_recordset_phpunit_datatable('user_info_data', $DB->get_records('user_info_data', null, '', 'id, userid, fieldid, data'));
     $dataset = new PHPUnit_Extensions_Database_DataSet_CsvDataSet();
     $dataset->addTable('user_info_data', elispm::file('tests/fixtures/user_info_data.csv'));
     $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset);
     // Only the second text field should be changed; everything else should be the same.
     $dataset->addFullReplacement('Second text entry field', 'bla');
     $this->assertTablesEqual($dataset->getTable('user_info_data'), $result);
 }
Exemplo n.º 26
0
 function do_delete()
 {
     // action_delete()
     require_once elispm::lib('data/user.class.php');
     $this->session_selection_deletion();
     $users = explode(',', $this->required_param('selectedusers', PARAM_TEXT));
     // make sure everything is an int
     foreach ($users as $key => $val) {
         $users[$key] = (int) $val;
         if (empty($users[$key])) {
             unset($users[$key]);
         }
     }
     foreach ($users as $userid) {
         $userobj = new user($userid);
         $userobj->delete();
         // TBD: try {} catch () {} ???
     }
     $tmppage = new bulkuserpage();
     redirect($tmppage->url, get_string('success_bulk_delete', 'local_elisprogram'));
 }
Exemplo n.º 27
0
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @package    local_elisprogram
 * @author     Remote-Learner.net Inc
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @copyright  (C) 2008-2013 Remote Learner.net Inc http://www.remote-learner.net
 *
 */
defined('MOODLE_INTERNAL') || die;
require_once elispm::file('form/cmform.class.php');
require_once elispm::lib('lib.php');
/**
 * the form element for curriculum
 */
class cmCurriculaForm extends cmform
{
    /**
     * defines items in the form
     */
    public function definition()
    {
        $configData = array('title');
        if ($this->_customdata['obj']) {
            // FIXME: This is probably not be the right place for set_data.  Move it.
            $this->set_data($this->_customdata['obj']);
        }
Exemplo n.º 28
0
 /**
  * Set up data that is needed for testing
  *
  * @param boolean $setcustomfielddata Specify whether the userset's custom fields should be set
  * @param boolean $assignuser Specify whether the user should be directly assigned to the user set
  * @param boolean $setautoassociatefields Specity whether we should set up fields that allow userset autoassociation
  */
 private function set_up_required_data($setcustomfielddata = true, $assignuser = true, $setautoassociatefields = false)
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elis::lib('data/customfield.class.php');
     require_once elispm::file('accesslib.php');
     require_once elispm::file('enrol/userset/moodleprofile/userset_profile.class.php');
     require_once elispm::lib('data/clusterassignment.class.php');
     require_once elispm::lib('data/user.class.php');
     require_once elispm::lib('data/usermoodle.class.php');
     require_once elispm::lib('data/userset.class.php');
     $fieldcategoryid = $DB->get_field(field_category::TABLE, 'id', array('name' => 'Associated Group'));
     $this->assertNotEquals(false, $fieldcategoryid);
     $fieldcategory = new field_category($fieldcategoryid);
     $fieldcategory->load();
     // Set up the test user.
     $user = new user(array('idnumber' => 'testuseridnumber', 'username' => 'testuserusername', 'firstname' => 'testuserfirstname', 'lastname' => 'testuserlastname', 'email' => '*****@*****.**', 'country' => 'CA'));
     $user->save();
     $user->synchronize_moodle_user();
     // We need a system-level role assignment.
     $roleid = create_role('systemrole', 'systemrole', 'systemrole');
     $userid = $DB->get_field('user', 'id', array('username' => 'testuserusername'));
     $context = context_system::instance();
     role_assign($roleid, $userid, $context->id);
     // Set up the userset.
     $userset = new userset();
     $usersetdata = array('name' => 'testusersetname');
     if ($setcustomfielddata) {
         $usersetdata['field_userset_group'] = 1;
         $usersetdata['field_userset_groupings'] = 1;
     }
     $userset->set_from_data((object) $usersetdata);
     $userset->save();
     if ($setautoassociatefields) {
         // Set up a file we can use to auto-associate users to a userset.
         $field = new field(array('categoryid' => $fieldcategory->id, 'shortname' => 'autoassociate', 'name' => 'autoassociate', 'datatype' => 'bool'));
         $field->save();
         // Ensure manual field owner exists for syncing.
         field_owner::ensure_field_owner_exists($field, 'manual');
         $ownerid = $DB->get_field(field_owner::TABLE, 'id', array('fieldid' => $field->id, 'plugin' => 'manual'));
         $owner = new field_owner($ownerid);
         $owner->param_control = 'checkbox';
         $owner->save();
         field_owner::ensure_field_owner_exists($field, 'moodle_profile');
         $DB->execute("UPDATE {" . field_owner::TABLE . "} SET exclude = ?", array(pm_moodle_profile::sync_to_moodle));
         $fieldcontextlevel = new field_contextlevel(array('fieldid' => $field->id, 'contextlevel' => CONTEXT_ELIS_USER));
         $fieldcontextlevel->save();
         // The associated Moodle user profile field.
         require_once $CFG->dirroot . '/user/profile/definelib.php';
         require_once $CFG->dirroot . '/user/profile/field/checkbox/define.class.php';
         $profiledefinecheckbox = new profile_define_checkbox();
         $data = new stdClass();
         $data->datatype = 'checkbox';
         $data->categoryid = 99999;
         $data->shortname = 'autoassociate';
         $data->name = 'autoassociate';
         $profiledefinecheckbox->define_save($data);
         $mfield = $DB->get_record('user_info_field', array('shortname' => 'autoassociate'));
         // The "cluster-profile" association.
         $usersetprofile = new userset_profile(array('clusterid' => $userset->id, 'fieldid' => $mfield->id, 'value' => 1));
         $usersetprofile->save();
     }
     if ($assignuser) {
         // Assign the user to the user set.
         $clusterassignment = new clusterassignment(array('clusterid' => $userset->id, 'userid' => $user->id, 'plugin' => 'manual'));
         $clusterassignment->save();
     }
 }
 /**
  * Validate that class instance-moodle course associations can be created during a class instance update action.
  *
  * @param string $link The link attribute to use in the import, or 'auto' to auto-create from template.
  * @dataProvider link_course_provider
  */
 public function test_associate_moodle_course_during_class_update($link)
 {
     global $CFG, $DB, $USER;
     require_once $CFG->dirroot . '/course/lib.php';
     require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
     require_once elispm::lib('data/classmoodlecourse.class.php');
     require_once elispm::lib('data/coursetemplate.class.php');
     require_once elispm::lib('data/course.class.php');
     require_once elispm::lib('data/pmclass.class.php');
     // Make sure $USER is set up for backup/restore.
     $USER->id = $DB->get_field_select('user', 'id', "username != 'guest' AND deleted = 0", array(), IGNORE_MULTIPLE);
     // Need the moodle/backup:backupcourse capability.
     $guestroleid = create_role('guestrole', 'guestrole', 'guestrole');
     set_config('guestroleid', $guestroleid);
     set_config('siteguest', '');
     $systemcontext = context_system::instance();
     $roleid = create_role('testrole', 'testrole', 'testrole');
     assign_capability('moodle/backup:backupcourse', CAP_ALLOW, $roleid, $systemcontext->id);
     role_assign($roleid, $USER->id, $systemcontext->id);
     $coursecategory = new stdClass();
     $coursecategory->name = 'testcoursecategoryname';
     $coursecategory->id = $DB->insert_record('course_categories', $coursecategory);
     $moodlecourse = new stdClass();
     $moodlecourse->category = $coursecategory->id;
     $moodlecourse->shortname = 'testcourseshortname';
     $moodlecourse->fullname = 'testcoursefullname';
     $moodlecourse = create_course($moodlecourse);
     $course = new course(array('name' => 'testcoursename', 'idnumber' => 'testcourseidnumber', 'syllabus' => ''));
     $course->save();
     $class = new pmclass(array('courseid' => $course->id, 'idnumber' => 'testclassidnumber'));
     $class->save();
     // Need this for the 'auto' case, at the very least.
     $coursetemplate = new coursetemplate(array('courseid' => $course->id, 'location' => $moodlecourse->id, 'templateclass' => 'moodlecourseurl'));
     $coursetemplate->save();
     // Run the class instance create action.
     $record = new stdClass();
     $record->idnumber = 'testclassidnumber';
     $record->assignment = 'testcourseidnumber';
     $record->link = $link;
     $importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
     $importplugin->fslogger = new silent_fslogger(null);
     $importplugin->class_update($record, 'bogus');
     // Validation.
     if ($record->link == 'auto') {
         $moodlecourseid = $moodlecourse->id + 1;
     } else {
         $moodlecourseid = $moodlecourse->id;
     }
     $dbautocreated = $record->link == 'auto' ? 1 : 0;
     $this->assertTrue($DB->record_exists(classmoodlecourse::TABLE, array('classid' => $class->id, 'moodlecourseid' => $moodlecourseid, 'enroltype' => 0, 'enrolplugin' => 'crlm', 'autocreated' => $dbautocreated)));
     ini_set('max_execution_time', '0');
 }
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @package    local_elisprogram
 * @author     Remote-Learner.net Inc
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @copyright  (C) 2013 Remote Learner.net Inc http://www.remote-learner.net
 *
 */
require_once dirname(__FILE__) . '/../../eliscore/test_config.php';
global $CFG;
require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
// Libs.
require_once elispm::lib('data/certificatesettings.class.php');
require_once elispm::file('tests/other/datagenerator.php');
/**
 * PHPUnit test to retrieve a certificate settings record by entity id and type
 * @group local_elisprogram
 */
class get_certificate_settings_by_entity_testcase extends elis_database_test
{
    /**
     * Load PHPUnit test data
     */
    protected function load_csv_data()
    {
        $dataset = $this->createCsvDataSet(array(certificatesettings::TABLE => elispm::file('tests/fixtures/certificate_settings.csv')));
        $this->loadDataSet($dataset);
    }