moodle2.7 scormのバグ?

moodle2.7 scormのバグ?

- 那須 靖弘 の投稿
返信数: 1

はじめまして那須と申します

moodleの初心者です。

既知の問題かもわかりませんが報告します

このたびscorm準拠教材を作ることになりmoodleで色々と動かしているのですが、

バージョンを2.7に上げたところ

ScormProcessSetValue("adl.nav.request", "exitAll");

とすると、Target Activity does not exist というエラーメッセージが表示されるようになりました。

moodleのソースを追跡していくと、mod/scorm/datamodel.phpにおいて、73行目あたりに

$search = array('@continue@', '@previous@', '@\{target=(\S+)\}choice@', '@exit@', '@exitAll@', '@abandon@', '@abandonAll@');
$replace = array('continue_', 'previous_', '\1', 'exit_', 'exitall_', 'abandon_', 'abandonall');
$action = preg_replace($search, $replace, $value);

if ($action != $value) {
         // Evaluating navigation request
          $valid = scorm_seq_overall ($scoid, $USER->id, $action, $attempt);

となっており、意図としては"exitAll"を"exitall_"に置き換えているつもりだと思うのですが、これだと"exit"の置き換えによって"exitAll"が"exit_All"となってしまうため挙動がおかしくなります。

対策としては、かっこ悪いですが、

$search = array('@continue@', '@previous@', '@\{target=(\S+)\}choice@', '@exit@', '@exit_All@', '@abandon@', '@abandon_All@');

とし、"exit_All"をもう一度"exitall_"と置換すればOKです。

取り急ぎご報告まで。

係り

評点平均:有益(Useful) (1)
那須 靖弘 への返信

Tracker で報告を (Re: moodle2.7 scormのバグ?)

- Takayuki ISHIKAWA の投稿
画像 Developers

こんにちは、石川と申します。有用な書き込み、ありがとうございます。いくつか助言させて下さい。

別の対処法

私は PHP を系統的に学んだことがないのでトンチンカンなことを言っているかも知れませんが、以下の形でも期待通りの動作をしませんでしょうか。こちらの方が行の追加もなく単純かと思います (しかし再置換を前提とした文字列を埋め込んでいるので美しくないかも知れません)。

$search = array('@continue@', '@previous@', '@\{target=(\S+)\}choice@', '@exit@', '@exit_All@', '@abandon@', '@abandonAll@');

最新版で確認を

Moodle は現在 2.8.1+ になっていますので、上記の問題は 2.7 から 2.8.1+ の間に解決している可能性があります。こういった問題は、最新版でも再現されるかどうかを確認されることをお勧めします。

bug が紛れ込んだ時期

Moodle の source の中から mod/scorm/datamodel.php を見ると、件の行は最新版でもそのままですね。最後の commit では内容に変わりが無いので、もっと前から問題があったことになります。変更履歴を見ると、2007年1月の「added scorm 2004 sequencing/navigation support」という変更によって埋め込まれたことが判ります (該当差分)。つまり、この頃以降の Moodle releases ではこの問題が発生しうる状態だったと推測されます (何らかの理由で発現しない状態だったかも知れませんが)。

Moodle Tracker で報告を

こういった bug を見つけたら、是非 Moodle Tracker で報告して下さい。拙い英語でも構いません。英語に自信がない場合は、代わりに報告してくれる人をこの日本語 forum で探すのも1つの手だと思います。その場合、Moodle 開発者 forum が向いていると思います。