在Moodle课程中插入部分

时间:2016-10-07 08:50:10

标签: moodle

我正在尝试使用脚本 Moodle 课程中创建部分,但我不能。我正在使用Moodle course_create_sections_if_missing函数但无法获取部分显示在Web上但在数据库中它们已创建。

我使用的代码如下:

if($numSections >0){                   

    foreach ($sections as $nameSection) {

        $idSection = checkSections($moodle_course , $nameSection);

        if($idSection == -1){                                   

            m("crear section: ". $nameSection);

            $maxSection = getMaxSections($moodle_course );

            if($maxSection != -1){                              
                m("max section: " . $maxSection);

                $idSec = $maxSection + 1;
                course_create_sections_if_missing($moodle_course , $idSec);

                $res = updateNameSection($moodle_course , $nameSection, $idSec); 

                m("result update: " . $res);

            }else{
                m("There aren't sections for the course");
            }

        }else{
            m("section already exists: ". $nameSection);
        }   
    }
}else{
    m("No sections for the course. ");
} 

注意:m("")函数负责在控制台上显示文本。

函数 checkSections 是这样的:

/**
 * Check if there is a section.
 *
 * @param $course id of the course.
 * @param $section name of the section
 *
 * @return id of section
 */
function checkSections($course , $section){

    global $DB;
    $id = null;

    $sql = "SELECT id FROM mdl_course_sections where course = ? and name = ? ";
    $sections = $DB->get_records_sql($sql, array($course, $section));

    foreach ( $sections as $r ) {                       
        $id = $r->id;
    }

    if(is_null($id))
        return -1;
    else
        return $id;
}

函数 getMaxSections 是这样的:

/**
 * Returns the id of the highest section for a course.
 *
 * @param $course id of the course.
 *
 * @return max id of section
 */
function getMaxSections($course){

    global $DB;
    $id = null;

    $sql = "SELECT max(section) as sec FROM mdl_course_sections where course = ? ";
    $sections = $DB->get_records_sql($sql, array($course));

    foreach ( $sections as $r ) {                       
        $id = $r->sec;
    }

    if(is_null($id))
        return -1;
    else
        return $id;
}

函数 updateNameSection 是:

/**
 * Update the name of a section .
 *
 * @param $course id of the course.
 * @param $nameSection name of the section.
 * @param $idSection id of the section.
 *
 * @return result
 */
function updateNameSection($course, $nameSection , $idSection){

    global $DB;
    $id = null;

    $sql = "update mdl_course_sections set name = ? where course = ? and section = ?";
    $result = $DB->execute($sql, array($nameSection , $course, $idSection));

    return $result;
}

因此,如果有人知道该怎么做或有任何可能有用的示例或文档,那将会有所帮助。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要更新表格中的部分编号 mdl_course_format_options

试试这个:

$sql = "update mdl_course_format_options set value = ? where courseid = ? and name ='numsections'";
$result = $DB->execute($sql, array($numSections , $course));

答案 1 :(得分:0)

我尝试了@aleix建议的代码,它适用于我,这就是代码的方式:

if($numSections >0){                   

    foreach ($sections as $nameSection) {

        $idSection = checkSections($moodle_course , $nameSection);

        if($idSection == -1){                                   

            m("crear section: ". $nameSection);

            $maxSection = getMaxSections($moodle_course );

            if($maxSection != -1){                              
                m("max section: " . $maxSection);

                $idSec = $maxSection + 1;
                course_create_sections_if_missing($moodle_course , $idSec);

                $res = updateNameSection($moodle_course , $nameSection, $idSec); 


                if($res){   
                    $idSec = $idSec + 1;
                    $res2 = updateNumSectionsCourse($comunidad_moodle, $idSec);
                }        
            }else{
                m("There aren't sections for the course");
            }

        }else{
            m("section already exists: ". $nameSection);
        }   
    }
}else{
    m("No sections for the course. ");
} 

并且函数 updateNumSectionsCourse 就是:

/**
 * Update the number of sections for a course.
 *
 * @param $course id of the course.
 * @param $numSections number of sections.
 *
 * @return result
 */
function updateNumSectionsCourse($course, $numSections){

    global $DB;

    $sql = "update mdl_course_format_options set value = ? where courseid = ? and name ='numsections'";
    $result = $DB->execute($sql, array($numSections , $course));

    return $result;
}