Esempio n. 1
0
    $url->param('return', $return);
}
if (!empty($add)) {
    $section = required_param('section', PARAM_INT);
    $course = required_param('course', PARAM_INT);
    $url->param('add', $add);
    $url->param('section', $section);
    $url->param('course', $course);
    $PAGE->set_url($url);
    $course = $DB->get_record('course', array('id' => $course), '*', MUST_EXIST);
    require_login($course);
    // There is no page for this in the navigation. The closest we'll have is the course section.
    // If the course section isn't displayed on the navigation this will fall back to the course which
    // will be the closest match we have.
    navigation_node::override_active_url(course_get_url($course, $section));
    list($module, $context, $cw) = can_add_moduleinfo($course, $add, $section);
    $cm = null;
    $data = new stdClass();
    $data->section = $section;
    // The section number itself - relative!!! (section column in course_sections)
    $data->visible = $cw->visible;
    $data->course = $course->id;
    $data->module = $module->id;
    $data->modulename = $module->name;
    $data->groupmode = $course->groupmode;
    $data->groupingid = $course->defaultgroupingid;
    $data->id = '';
    $data->instance = '';
    $data->coursemodule = '';
    $data->add = $add;
    $data->return = 0;
Esempio n. 2
0
/**
 * Create a module.
 *
 * It includes:
 *      - capability checks and other checks
 *      - create the module from the module info
 *
 * @param object $module
 * @return object the created module info
 * @throws moodle_exception if user is not allowed to perform the action or module is not allowed in this course
 */
function create_module($moduleinfo)
{
    global $DB, $CFG;
    require_once $CFG->dirroot . '/course/modlib.php';
    // Check manadatory attributs.
    $mandatoryfields = array('modulename', 'course', 'section', 'visible');
    if (plugin_supports('mod', $moduleinfo->modulename, FEATURE_MOD_INTRO, true)) {
        $mandatoryfields[] = 'introeditor';
    }
    foreach ($mandatoryfields as $mandatoryfield) {
        if (!isset($moduleinfo->{$mandatoryfield})) {
            throw new moodle_exception('createmodulemissingattribut', '', '', $mandatoryfield);
        }
    }
    // Some additional checks (capability / existing instances).
    $course = $DB->get_record('course', array('id' => $moduleinfo->course), '*', MUST_EXIST);
    list($module, $context, $cw) = can_add_moduleinfo($course, $moduleinfo->modulename, $moduleinfo->section);
    // Add the module.
    $moduleinfo->module = $module->id;
    $moduleinfo = add_moduleinfo($moduleinfo, $course, null);
    return $moduleinfo;
}
Esempio n. 3
0
/**
 * Prepare the standard module information for a new module instance.
 *
 * @param  stdClass $course  course object
 * @param  string $modulename  module name
 * @param  int $section section number
 * @return array module information about other required data
 * @since  Moodle 3.2
 */
function prepare_new_moduleinfo_data($course, $modulename, $section)
{
    global $CFG;
    list($module, $context, $cw) = can_add_moduleinfo($course, $modulename, $section);
    $cm = null;
    $data = new stdClass();
    $data->section = $section;
    // The section number itself - relative!!! (section column in course_sections)
    $data->visible = $cw->visible;
    $data->course = $course->id;
    $data->module = $module->id;
    $data->modulename = $module->name;
    $data->groupmode = $course->groupmode;
    $data->groupingid = $course->defaultgroupingid;
    $data->id = '';
    $data->instance = '';
    $data->coursemodule = '';
    if (plugin_supports('mod', $data->modulename, FEATURE_MOD_INTRO, true)) {
        $draftid_editor = file_get_submitted_draft_itemid('introeditor');
        file_prepare_draft_area($draftid_editor, null, null, null, null, array('subdirs' => true));
        $data->introeditor = array('text' => '', 'format' => FORMAT_HTML, 'itemid' => $draftid_editor);
        // TODO: add better default
    }
    if (plugin_supports('mod', $data->modulename, FEATURE_ADVANCED_GRADING, false) and has_capability('moodle/grade:managegradingforms', $context)) {
        require_once $CFG->dirroot . '/grade/grading/lib.php';
        $data->_advancedgradingdata['methods'] = grading_manager::available_methods();
        $areas = grading_manager::available_areas('mod_' . $module->name);
        foreach ($areas as $areaname => $areatitle) {
            $data->_advancedgradingdata['areas'][$areaname] = array('title' => $areatitle, 'method' => '');
            $formfield = 'advancedgradingmethod_' . $areaname;
            $data->{$formfield} = '';
        }
    }
    return array($module, $context, $cw, $cm, $data);
}