「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿
返信数: 7

「課題」をいま片っ端から”評価”しています.ついつい仕事を溜めてしまいました.
さて,入力した結果を「評定」でダウンロードしようとしたのですが,
  • ODSフォーマット:ファイルが壊れていて開けない(これはマルチバイトが原因?).
  • Excelフォーマット:シート名は化けるが項目名(日本語)は各セルに正しく入っている.しかし出力されているのは項目名だけであって,学生の名前のリストとその評価が全く出力されていない.
  • テキストフォーマット:Excel同様に,第1行目の項目名は出力されるが,肝心の評価結果が一切,出力されない.

moodle/grade/lib.phpのfunction grade_download()関数が指定された上記フォーマットに合わせて「評定」の結果を出力する関数のようです.出力されるデータは,$gradesや$studentsだろうと踏んでvar_dump()して見たのですが,false.これはマルチバイトの問題といった問題(以前にどなたか50~60データくらいのサイズになるとExcelの出力がおかしくなるとポストされていましたが)とは別の次元のような気がします.

「評定」に関する私の認識が何か間違えているか,あるいは設定を何か忘れているのか,では無いのかと思い,質問させて頂きました.私,何か間違えているのでしょうか赤面

#課題のモジュール,そのクイック評定ともにとても使いやすいですね.電子メールで提出課題を受け付けていた去年までの苦労がウソのようです.あとは評定結果を出力できれば万々歳です.

Tatsuya Shirai への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Toshihiro KITA の投稿
採点ご苦労様です。

こちらの Moodle 1.8.2+ on Vine Linux 4.1 (PHP 4.4.7, MySQL 5.0.27), OpenOffice.org 2.2, Excel 2003 の環境では問題なく「評定」の画面でダウンロードして課題の評価データが取得出来ます。

どのコースにおいても,「評定」のダウンロードがダメでしょうか?

そちらで試すため,こちらでうまく行っているコースのバックアップファイルを作ってお送りしましょうか?
Toshihiro KITA への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿
アドバイスありがとうございます.

> どのコースにおいても,「評定」のダウンロードがダメでしょうか?

そうですよね.初歩的なことですが,まだ試していませんでした赤面

いま,まったく一つも課題が存在しない別のコースに,適当な課題(「単一ファイルのアップロード」)を追加し,そのまま(誰もファイルを提出していないし,私も評価していない)の状態で「評定」の画面を表示したところ,いままで一度も見たことのない(つまり正しい画面なのでしょう!)学生の一覧とその評定結果のテーブルが画面に出力されました.なるほど,このテーブルをどのファイル形式で保存するのか,を選択するのが上のタブだったのですね.

当初は学生の氏名が日本語だからダメなのではないか,教員が評価を行っていない学生や,そもそも課題を未提出の学生が居ると出力されないのではないか(それではいつまでたっても成績が出せませんね)などと考えていたのですが...

いま評定のダウンロード(それ以前に一覧表表示)ができないコースは,課題が20個あります.1,2個で実験をしてから徐々に拡大すれば良かったのかも知れません.

こちらのサイトでもどうやら評定機能は最低限,動いているようですので,テスト用に作成したコースと,いままさに採点しているコースとでは何が違うのかをデバッグしてみます.(採点が遅れる悲しい
Tatsuya Shirai への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿

原因が分かりました.グループ設定です.
moodle/grade/lib.phpの315行の以下のif文をコメントアウトすることで正常に評価の一覧表が表示されました.
if ($currentgroup = get_current_group($course->id)) {
$groupmembers = get_group_users($currentgroup);
}
そういえばグループの機能はMoodle1.9で実装し直す,と,どこかで読んだ気がします.最新のソースではグループ周りのソースが消えていますよね(消さずに未練がましく残しているのが原因?).それでもグループ設定はできてしまう.ちなみにコースのグループを削除してもダメです.一旦,グループを作ってしまったあとは,デフォルトで管理者がグループメンバーとして残ってしまうようです.では,グループに学生を全員入れれば大丈夫かと言えば,これもダメ.一時的に上記の通り,このコースにグループが設定されているかどうかのチェックを殺して,「このコースにグループは存在しない!」と騙すしか無さそうです.データベースのmdl_groups関係を全て削除する勇気はありません青あざ

324行の
if ( (isset($groupmembers) && isset($groupmembers[$student])) || !isset($groupmembers)) {
ここで,$grades_by_studentの学生がグループに属しているかどうかをチェックし,属していないと判断されると,406行の以下のunset()で片っ端から削除されています!
else {
// unset grade since they are not in the selected group.
unset($grades_by_student["$student"]);
}

ちなみにコースのグループ設定は,グループモード:No. 強制:No.です.mdl_groupsを全削除するしかないですかねぇ.皆さんの環境ではグループを使っていますか?

一覧表は表示されるようになったのですが,ダウンロードはダメですね.グループ設定を行っていないコースならば,少なくともテキストフォーマットでダウンロードできるので,同じ原因だと思います.もう少し調べてみます.
Tatsuya Shirai への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿
ダウンロードできないのも同じくグループが関わってしました.
moodle/grade/lib.phpのfunction grade_download(),1207行近辺の

/// Check to see if groups are being used in this course
$currentgroup = get_current_group($course->id);

if ($currentgroup) {
// $students = get_group_students($currentgroup, "u.lastname ASC");
$students = grade_get_course_students($course->id);
} else {
$students = grade_get_course_students($course->id);
}

乱暴ですが,$currentgroupが設定されていようがいなかろうが,grade_get_course_students()を呼ぶように変更すればExcelでも(一応)ダウンロードできます.

Tatsuya Shirai への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿
mdl_groups関連のデータを全て「空にする」してから,再ログイン(重要)することで,ソースリストの修正なしのオリジナルの状態で,評定が表示,ダウンロード可能であることを確認しました.

Tatsuya Shirai への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Toshihiro KITA の投稿
なるほど,グループですか。
私はほとんど使ったことが無いので。

短時間にバグを突き止めるとは,さすがですね。
Toshihiro KITA への返信

Re: 「課題」の「評定」がダウンロードできないのは設定ミスでしょうか?

- Tatsuya Shirai の投稿
phpMyAdminを使って mdl_groups関連のデータベース内容を全て空にしましたが,もしかしたらこれは不要だったかも知れません.(未確認です)
どうやら$SESSION変数に現在のログインしているコースのグループ情報がキャッシュされているようです.ですので,もしかしたらコースの管理メニューのグループで,グループを削除した後(あるいは正しく全学生をグループに入れた後に?)に,一旦,ログアウトしてログインし直せば評定が表示されたのかも知れません.

いま試しにグループを作り直してみました.クラスの学生を2つのグループに分け,管理者(氏名の左に#記号が付いている)を両方のグループに追加しました.
この状態で評定を表示すると一方のグループの学生のリストが正しく表示されました.
もしかしたらグループのデータベースが少しおかしかったのかも知れません.

なお,もう一方のグループの評定に切り替える機能もきっとあると思うのですが,これは発見できていません.

当初,使い勝手が良いのか悪いのか調べるために一時的にグループを作成し,そのまま放置していたのが今回の大騒ぎの原因でした恥ずかしい.一旦,グループを消去した後にもう一度,設定し直したならば,ソースを追いかけることなく評定が表示できた可能性があります...

> 短時間にバグを突き止めるとは,さすがですね。
今日は休日出勤の代休ですので思う存分にソースリストを追い掛けられました.なお,今回の件はバグとは言い切れないです...お恥ずかしい.