如何在moodle中创建新的课程类别?

时间:2014-02-19 11:47:53

标签: mysql moodle

我需要直接在数据库中创建一些moodle的itens。

我有查询要插入一个新的moodle课程,以及创建课程上下文的规则(在mdl_context中)并且它运作良好。

INSERT INTO mdl_course (category,fullname,shortname) VALUES (1,'NewCourse','C1')    

还需要插入新的moodle category,,但在这种情况下,简单的插入查询不起作用

我不知道如何在mdl_context中发现创建新类别上下文的参数

INSERT INTO `unasus_ava`.`mdl_course_categories` (`name`, `idnumber`, `description`, `descriptionformat`, `sortorder`, `timemodified`, `depth`, `path`) VALUES ('New category', '', '<p>some text</p>', 1, 50000, 1392726085, 1, '/5');

关于参数,显然上下文中的path是关于什么类别的课程,depth'2'categories和{{1}到'3'。但我没有关于contextlevel的意识形态

courses

1 个答案:

答案 0 :(得分:0)

使用moodle REST api解决了我的问题

我根据sample-ws-clients

中的示例执行了此脚本
$token = 'my_auth_token';
$domainname = 'http://localhost/moodle';
$functionname = 'core_course_create_categories';
$restformat = 'json';

$category = new stdClass();
$category->name = 'Example';
$category->parent = 0;
$category->description = '<p>text</p>';
$category->descriptionformat = 1;
$categories = array( $category);
$params = array('categories' => $categories);

/// REST CALL
header('Content-Type: text/plain');
$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;
require_once('./curl.php');
$curl = new curl;
//if rest format == 'xml', then we do not add the param for backward compatibility with Moodle < 2.2
$restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';
$resp = $curl->post($serverurl . $restformat, $params);
print_r($resp);

此方法自动创建上下文