php5.2.5MySQLデータベースからcourseidでモジュールを取得する関数を作成しました。
function getModules($courses, $mod) {
global $DB;
$result = array();
foreach ($courses as $value) {
$value->mods = array();
$value->count = 0;
$temp = $DB->get_records_sql("
SELECT q.*, cm.idnumber as cmidnumber, q.course as courseid
FROM {modules} m
JOIN {course_modules} cm ON m.id = cm.module
JOIN {".$mod."} q ON cm.instance = q.id
WHERE m.name = '".$mod."' AND cm.course = ?", array($value->id));
foreach ($temp as $vS) {
$value->mods[] = $vS;
$value->count++;
}
$result[] = $value;
}
return $result;
}
いくつかのタイプのモジュールを取得してみてください(to_debugはvar_dumpに関する一種のラッパーです)
$learningScorm = getModules($learning, 'scorm');
to_debug($learningScorm); // in debug I can see right values.
echo '<br><br><br>';
$learningLesson = getModules($learning, 'lesson');
to_debug($learningScorm);// in debug I see what value of $learningScorm is replaced by value of $learningLesson
$testingQuiz = getModules($testing, 'quiz');
$labAssignment = getModules($lab, 'assignment');
なぜこの置き換えが行われているのか理解できません。そのような動作についてのヒントがあれば、教えてください。
これらの行にコメントすると
$value->mods = array();
$value->count = 0;
次に、$learningScormは$learningScormと$learningLessonからのモジュールを合計しています。どうやら...関数O_Oの間に$coursesがローカルではないようです。もう何を考えたらいいのかわからない。