2015-10-30 71 views
0

我使用API​​添加文件夾模塊到Moodle課程:的Moodle - 無效課程模塊ID

folder_add_instance($data, null); 

我正在運行使用CMD腳本時的錯誤如下:

!!! Invalid course module ID !!! 

我查看了庫中的folder_add_instance()函數,發現錯誤時嘗試獲取上下文:

$context = context_module::instance($cmid)//$cmid = 8 

我查看了Moodle數據庫中的mdl_context表,但無法理解值和它們與我得到的錯誤的關係。

從數據庫中刪除mdl_context值會有幫助嗎?或者我在這裏錯過了什麼?

請注意,該腳本工作正常,直到我刪除了所有我在Moodle上使用Web界面的課程(我刪除了包含所有課程的類別)。

回答

0

要以編程方式在Moodle中創建模塊,您應該使用函數add_moduleinfo()。

看看在文件夾中生成的例子: https://github.com/moodle/moodle/blob/master/mod/forum/tests/generator/lib.php#L67

將是這樣:

require_once($CFG->dirroot.'/course/modlib.php'); 
$foldername = 'YOUR NAME HERE'; 
$courseid = 12345; 
$sectionnum = 0; 

$course = get_course($courseid); 
$moduleid = $DB->get_field('modules', 'id', array('name' => 'folder')); 

$data = (object)array(
    'name' => $foldername, 
    'intro' => '', 
    'display' => FOLDER_DISPLAY_PAGE, 
    'revision' => 1, 
    'showexpanded' => 1, 
    'files' => file_get_unused_draft_itemid(), 
    'visible' => 1, 
    'modulename' => 'folder', 
    'module' => $moduleid, 
    'section' => $sectionnum, 
    'introformat' => FORMAT_HTML, 
    'cmidnumber' => '', 
    'groupmode' => NOGROUPS, 
    'groupingid' => 0, 
    'availability' => null, 
    'completion' => 0, 
    'completionview' => 0, 
    'completionexpected' => 0, 
    'conditiongradegroup' => array(), 
    'conditionfieldgroup' => array(), 
    'conditioncompletiongroup' => array() 
); 
return add_moduleinfo($data, $course, $mform = null);