第 6 章 システムの実現方法
6.5 追加または編集したプログラムファイル
6.5.1 lib.php
77 6.5 追加または編集したプログラムファイル
78
attendanceテーブルからは削除する出欠モジュールのidと一致するidを持つレコード
が削除される。attendance_sessionsとattendance_statusesテーブルからは削除する出欠モ ジュールのidと一致するattendanceidを持つカラムが削除される。
attendance_seatとattendance_seatexistとattendance_seatvacantとattendance_logテー ブルからはattendance_sessionsの内の削除する出欠モジュールのidと一致する
attendanceidを持つレコードのidと一致するレコードが削除される。
attendance_delete_instanceメソッドへは3行追加した。追加した3行は
attendance_seatテーブル, attendance_seatexistテーブル, attendance_seatvacantテーブル からレコードを削除する文である。
8行目では、atttendance_sessionsテーブルの中で削除する出欠モジュールのidと一致
するattendanceidフィールドを持つレコードのidが変数$sessidsに格納されている。
9行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionidフ ィールドを持つレコードをattendance_seatテーブルから削除している。
10行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionid フィールドを持つレコードをattendance_seatexistテーブルから削除している。
11行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionid フィールドを持つレコードをattendance_seatvacantテーブルから削除している。
79
6.5.1.2 attendance_delete_course メソッドへの追加
attendance_delete_course メソッドはコースが削除された時に動作するメソッドであ
る。Moodleのコースが削除されるとそのコースの中にあった出欠活動モジュールも削除 される。出欠活動モジュールが削除されるとその出欠活動モジュールに関連する様々なデ ータをデータベース上から削除必要がある。図 6-19のメソッドはそれらのデータをデー タベース上から削除するメソッドである。
図 6-19のメソッドが操作するテーブルはattendance_seat, attendance_seatexist, attendance_seatvacant, attendance_log, attendance_sessions, attendance_statuses, attendanceである。
attendanceテーブルからは削除するコースのidと一致するcourseを持つレコードが削
除される。
function attendance_delete_course($course, $feedback=true) { global $DB;
$attids = array_keys($DB->get_records('attendance', array('course'=>
$course->id), '', 'id'));
$sessids = array_keys($DB->get_records_list('attendance_sessions', 'attendanceid', $attids, '', 'id'));
if ($sessids) {
$DB->delete_records_list('attendance_seat', 'sessionid', $sessids);//この行 を追加した
$DB->delete_records_list('attendance_seatexist', 'sessionid', $sessids);//こ の行を追加した
$DB->delete_records_list('attendance_seatvacant', 'sessionid', $sessids);//
この行を追加した
$DB->delete_records_list('attendance_log', 'sessionid', $sessids);
}
if ($attids) {
$DB->delete_records_list('attendance_statuses', 'attendanceid', $attids);
$DB->delete_records_list('attendance_sessions', 'attendanceid', $attids);
}
$DB->delete_records('attendance', array('course'=> $course->id));
return true;
}
図 6-19 attendance_delete_course メソッド
80
attendance_sessionsとattendance_statusesテーブルからはattendanceテーブルの内で 削除するコースのidと一致するcourseを持つレコードのidと一致するattendanceidを持 つレコードが削除される。
attendance_seatとattendance_seatexistとattendance_seatvacantとattendance_logテー ブルからは、attendance_sessionsテーブルの内でattendanceテーブルの内の削除するコー スのidと一致するcourseを持つレコードのidと一致するattendanceidを持つレコードの idと一致するレコードが削除される。
attendance_delete_course メソッドへは3行追加した。
4行目では変数$attidsにatttendanceテーブルの中から削除するコースのidと一致する
courseフィールドを持つレコードのidフィールドを取り出し格納している。
5行目では変数$sessidsにatttendance_sessionsテーブルの中から変数$attidsと一致す
るattendanceidフィールドを持つレコードのidを取り出し格納している。
7行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionidフ ィールドを持つレコードをattendance_seatテーブルから削除している。
8行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionidフ ィールドを持つレコードをattendance_seatexistテーブルから削除している。
9行目ではdelete_records_listメソッドを使って、変数$sessidと一致するsessionidフ ィールドを持つレコードをattendance_seatvacantテーブルから削除している。
81