• 検索結果がありません。

第 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