Tagged: course

Moodle php code : To create quiz dynamically



    require_once($CFG->dirroot . '/mod/quiz/locallib.php');
    require_once($CFG->dirroot . '/course/modlib.php');

    // Retrieve the course record.
    
    $course = get_course($course->id);
    $timelimit = 3600; // 60 minute

// set quiz opens as per your need
    $record = array(
        'course' => $course->id,
        'timeopen' => $course->startdate,
        'timeclose' => $course->enddate,
        'preferredbehaviour' => 'deferredfeedback',
        'attempts' => 1,
        'attemptonlast' => 0,
        'grademethod' => QUIZ_GRADEHIGHEST,
        'decimalpoints' => 2,
        'questiondecimalpoints' => -1,
        'attemptduring' => 1,
        'correctnessduring' => 0,
        'marksduring' => 0,
        'specificfeedbackduring' => 0,
        'generalfeedbackduring' => 0,
        'rightanswerduring' => 0,
        'overallfeedbackduring' => 0,
        'attemptimmediately' => 0,
        'correctnessimmediately' => 0,
        'marksimmediately' => 0,
        'specificfeedbackimmediately' => 0,
        'generalfeedbackimmediately' => 0,
        'rightanswerimmediately' => 0,
        'overallfeedbackimmediately' => 0,
        'attemptopen' => 0,
        'correctnessopen' =>0,
        'marksopen' => 0,
        'specificfeedbackopen' => 0,
        'generalfeedbackopen' => 0,
        'rightansweropen' => 0,
        'overallfeedbackopen' => 0,
        'attemptclosed' => 0,
        'correctnessclosed' => 0,
        'marksclosed' => 0,
        'specificfeedbackclosed' => 0,
        'generalfeedbackclosed' => 0,
        'rightanswerclosed' => 0,
	'overallfeedbackclosed' => 0,
        'questionsperpage' => 10,
        'shuffleanswers' => 1,
        'sumgrades' => 0,
        'grade' => 100,
        'timecreated' => time(),
        'timemodified' => time(),
        'timelimit' => $timelimit,
        'overduehandling' => 'autosubmit',
        'graceperiod' => 0,
        'quizpassword' => '',
        'subnet' => '',
        'browsersecurity' => '',
        'delay1' => 0,
        'delay2' => 0,
        'showuserpicture' => 0,
        'showblocks' => 0,
        'navmethod' => QUIZ_NAVMETHOD_FREE,
    );

    $record = (object) record;
    // Merge options into record and add default values.
   // put up default values for module
    $record = prepare_moduleinfo_record($record);
    $record->name = $course->fullname;
    $record->intro = $course->summary;
    $record->introformat = FORMAT_HTML;
    $record->introeditor = array(
        'text' => $course->summary,
        'format'=>FORMAT_HTML
    ); 

    if (isset($record->tags) && !is_array($record->tags)) {
        $record->tags = preg_split('/\s*,\s*/', trim($record->tags), -1, PREG_SPLIT_NO_EMPTY);
    }
    $record->completion = 0;

    // Add the module to the course.
    $moduleinfo = add_moduleinfo($record, $course, $mform = null);
    
// function to setup up default options of a module and override them above
function prepare_moduleinfo_record($record) {
    global $DB;
    // Make sure we don't modify the original object.
    $moduleinfo = (object) (array) $record;

    $moduleinfo->modulename = 'quiz';
    $moduleinfo->module = $DB->get_field('modules', 'id', array('name' => 'quiz'));
    $moduleinfo->cmidnumber = $moduleinfo->idnumber;


    // These are the fields from table 'course_modules' in 2.6 when the second
    // argument $options is being deprecated.
    // List excludes fields: instance (does not exist yet), course, module and idnumber (set above)
    $easymergefields = array('section', 'added', 'score', 'indent',
        'visible', 'visibleold', 'groupmode', 'groupingid',
        'completion', 'completiongradeitemnumber', 'completionview', 'completionexpected',
        'availability', 'showdescription');
    foreach ($easymergefields as $key) {
        if (isset($options[$key])) {
            $moduleinfo->$key = $options[$key];
        }
    }

    // Set default values. Note that visibleold and completiongradeitemnumber are not used when creating a module.
    $defaults = array(
        'section' => 0,
        'visible' => 1,
        'visibleoncoursepage' => 1,
        'cmidnumber' => '',
        'groupmode' => 0,
        'groupingid' => 0,
        'availability' => null,
        'completion' => 0,
        'completionview' => 0,
        'completionexpected' => 0,
        'conditiongradegroup' => array(),
        'conditionfieldgroup' => array(),
        'conditioncompletiongroup' => array()
    );
    foreach ($defaults as $key => $value) {
        if (!isset($moduleinfo->$key)) {
            $moduleinfo->$key = $value;
        }
    }

    return $moduleinfo;
}

Moodle php code : To create a course with enrolment method and course overview file


// 1: category object

$cat = $DB->get_record("course_categories", array("id" => <get category>));
   
        $catcontext  = \context_coursecat::instance($cat->id);
   
     // Prepare course and the editor.
        $editoroptions = array('maxfiles' => EDITOR_UNLIMITED_FILES, 'maxbytes' => $CFG->maxbytes, 'trusttext' => false, 'noclean' => true);
        // Editor should respect category context if course context is not set.
        $editoroptions['context'] = $catcontext;
        $editoroptions['subdirs'] = 0;

        $data = new \stdClass();
        $data->summary_editor['text'] = "course description";
        $data = file_prepare_standard_editor($data, 'summary', $editoroptions, null, 'course', 'summary', null);

        $data->fullname = "Course FullName";
        $data->idnumber = "Course id number";
        $data->shortname = "Course shortname :Unique";
        $data->category = $cat->id;
        $data->startdate = time();
        $data->format = 'topic';
        $data->lang = '';
        $data->showgrades = '1';
        $data->showreports = '0';
        $data->enablecompletion = '1';
        $data->groupmode = '0';
        $data->tags =array("Sample Course")
       
        $course = create_course($data, $editoroptions);
        
        // once the course has been created let 's create and enrolment method
// if you want to add any enrolment method which is not created at course creation automatically

        $enrolM = enrol_get_plugin('manual');
        $fields = array('status' => ENROL_INSTANCE_ENABLED, 'enrolperiod' => $enrolM->get_config('enrolperiod', 0), 'roleid' => $enrolM->get_config('roleid', 0));
        $enrolM->add_instance($course, $fields);

// Course over view image
$image = file_get_contents("/var/www/html/a.png");
         if($image){
            $fs = get_file_storage();
            $coursecontext = \context_course::instance($course->id);
            $file_record = new \stdClass;
            $file_record->component = 'course';
            $file_record->contextid = $coursecontext->id;
            $file_record->userid = $USER->id; // logged in User
            $file_record->filearea = 'overviewfiles';
            $file_record->filename = "oveerview.png";
            $file_record->filepath = '/';
            $file_record->itemid = 0;
            $file_record->license = $CFG->sitedefaultlicense;
            $file_record->author = fullname($USER);
            $file_record->source = '';
            $fs->create_file_from_string($file_record, $image);
           
        }