tl; dr; mysql 또는 공식 moodle API를 통해 코스 모듈을 통해 코스 모듈 인스턴스를 가져 오려고합니다. 결국 내 솔루션은 오히려 부 끄 러운 것, 그래서 몇 가지 조언을 싶습니다.코스 모듈의 인스턴스를 검색하고 싶습니다.
하이 무 사람들
내가 mdl_course_modules의 각 행에 해당하는 코스 모듈 인스턴스를 검색하는 것을 시도하고, 이러한 맥락에서 인스턴스 mdl_quiz, mdl_wiki 또는 다른 course_modules 인스턴스에서 하나의 행이 될 것입니다.
내가 몇 가지를 시도, 내가 작업에 예상하고 있었다 :
function get_all_course_modules($course_id) {
global $DB;
$course = $DB->get_record('course', array('id' => $course_id));
$mod_info = get_fast_modinfo($course);
}
내가 $ mod_info를에서 코스 모듈 인스턴스를 얻을 수 없습니다.
그래서 나는 의미, 내가 미리 다른 코스 모듈을 모두 잘 모릅니다 사실에 발견은 SQL 꽤 완성되지SELECT course.id, course.fullname, cm.course, cm.section, m.name
FROM mdl_course AS course
JOIN mdl_course_modules AS cm ON cm.course = course.id
JOIN mdl_modules AS m ON m.id = cm.module
JOIN CONCAT('mdl_', m.name) AS module_type ON ...somethingsomething
WHERE course.id = 2;
대신 일부 사용자 지정 mysql을을하려고 노력하는 내가 course_module의 이름을 동적으로 가입시켜야 할 인스턴스 테이블을 선택하거나, 모든 가능한 코스 모듈 인스턴스 테이블에서 LEFT JOIN을 선택해야합니다.하지만 누군가가 새로운 코스에 입장하면 영원히 걸리고 작업을 중단하게됩니다. 모듈 인스턴스.
지금 다음을 수행 메신저 :
이$result = array();
$course_mods = get_course_mods($course_id);
if($course_mods) {
foreach($course_mods as $course_mod) {
$DB->get_records_sql('some sql that selects the instance');
}
}
return $result;
코드의이 마지막 부분은 결국 일을, 내가 동적으로 $ course_mod-로 $의 course_mod 변수에서 쿼리를 만들 수 할 수있을 것이다 것> 인스턴스를 , $ course_mod-> mod_name 등등.
그러나 이것은 힘든 것 같아요. 여러분 중 누구라도 쉽게 course_module 인스턴스를 얻는 데 성공했습니다.
감사합니다.
달성하고자하는 바를 정확히 설명하면 도움이 될 수 있습니다. 각 액티비티 인스턴스의 대부분의 필드는 액티비티 자체의 내부에만 관련이 있습니다. 모든 유형과 관련된 일반 필드는 get_fast_modinfo ($ courseid) -> get_cms()를 통해 사용할 수 있습니다. – davosmith
코스 모듈의 시작일은 다음과 같습니다. 활동 내부에 숨겨진 내용 :-) – DenLilleMand
시작 날짜는 특정 활동 유형에만 관련이 있으므로 각 활동을 처리하기 위해 사용자 정의 코드가 필요합니다. get_fast_modinfo는 강좌에 사용 된 모듈 유형의 목록을 제공하고 시작 날짜를 얻으려는 모듈로 필터링 한 다음 지원하려는 모든 모듈 유형을 사용하여 동적으로 SQL 문을 작성합니다 (COALESCE를 사용하여 다른 테이블에서 시간 데이터를 수집하십시오.) – davosmith