Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Moodle activities programmatically

Tags:

php

moodle

Does anyone know if it’s possible to add an activity programmatically to a course in Moodle?

I was thinking to maybe use the class module_add_instance() from the lib.php of my custom plugin...

e.g.

function feedback_add_instance(stdClass $mod) {
   global $DB;

   $newmodule->timecreated = time();

   // You may have to add extra stuff in here.

   $newmodule->id = $DB->insert_record('exams', $newmodule);

   unicexams_grade_item_update($newmodule);

   return $newmodule->id;
}

But then again: What is the $mod variable? What does it contain and how to construct it?

Does anyone has knowledge on the subject? Or something to advise?

like image 951
Christos312 Avatar asked Sep 21 '15 13:09

Christos312


People also ask

How do I create a custom activity in Moodle?

Activities in MoodleUnder each course or section, you should find the option 'Add activity or resource' to add an activity. Moodle provides you 14 different activity types: Assignment: An assignment is an activity a student has to complete off line and then upload for the teacher to check.

What is an activity module in Moodle?

Activity modules are a fundamental course feature and are usually the primary delivery method for learning content in Moodle. The plugintype of an Activity module is mod , and the frankenstyle name of a plugin is therefore mod_[modname] . All activity module plugins are located in the /mod/ folder of Moodle. note.


1 Answers

add_moduleinfo() would be better. Below is something I use for facetoface.

To get started, edit /course/modedit.php then temporarily add the following, then add the required activity via the front end - this will give you a list of most of the properties required:

var_dump($fromform);
die();
$fromform = add_moduleinfo($fromform, $course, $mform);

Code to create a facetoface instance

$newfacetoface = new stdClass();
$newfacetoface->name = $facetoface->facetofacename;
$newfacetoface->intro = '';
$newfacetoface->thirdparty = '';
$newfacetoface->display = 6;
$newfacetoface->approvalreqd = 0;
$newfacetoface->selfapprovaltandc = $strmgr->get_string('selfapprovaltandccontents', 'facetoface', $facetoface->langcode);
$newfacetoface->allowcancellationsdefault = 1;
$newfacetoface->cancellationscutoffdefault = 0;
$newfacetoface->multiplesessions = 1; // Allow multiple sessions.
$newfacetoface->managerreserve = '0';
$newfacetoface->maxmanagerreserves = '1';
$newfacetoface->reservecancel = '1';
$newfacetoface->reservecanceldays = '1';
$newfacetoface->reservedays = '2';
$newfacetoface->showoncalendar = '1';
$newfacetoface->usercalentry = '1';
$newfacetoface->shortname = '';
$newfacetoface->published = $facetoface->visible;
$newfacetoface->branches = $facetoface->branches;
$newfacetoface->visible = $facetoface->visible;
$newfacetoface->cmidnumber = $facetoface->facetofaceid;
$newfacetoface->idnumber = $facetoface->facetofaceid;
$newfacetoface->groupmode = '0';
$newfacetoface->availabilityconditionsjson = '{"op":"&","c":[],"showc":[]}';
$newfacetoface->completionunlocked = 1;
$newfacetoface->completionunlockednoreset = 0;
$newfacetoface->completion = COMPLETION_TRACKING_AUTOMATIC;
$newfacetoface->completionstatusrequired = '{"100":1}';
$newfacetoface->completionexpected = 0;
$newfacetoface->course = $course->id;
$newfacetoface->coursemodule = 0;
$newfacetoface->section = 1;
$newfacetoface->module = $moduleid;
$newfacetoface->modulename = 'facetoface';
$newfacetoface->instance = 0;
$newfacetoface->add = 'facetoface';
$newfacetoface->update = 0;
$newfacetoface->return = 0;
$newfacetoface->sr = 0;

$moduleinfo = add_moduleinfo($newfacetoface, $course);
like image 91
Russell England Avatar answered Oct 08 '22 23:10

Russell England