Unsupported contextlevel in category record!の対処法について

Unsupported contextlevel in category record!の対処法について

- 居間中 太郎 の投稿
返信数: 3
いつもお世話になっております。
居間中です。

今回も皆様の力をお借りしたいと思っております。
よろしくお願いいたします。

早速、本題ですがmoodle1.8.11から1.9.7にアップグレードしたのですが、小テストの受験結果タブを押したときに出てくる、評点のリンクをクリックすると「Unsupported contextlevel in category record!」とエラーメッセージが表示されます。

このエラーはアップグレードによるものなのでしょうか、それともデータに何か問題があるのでしょうか。


居間中 太郎 への返信

Re: Unsupported contextlevel in category record!の対処法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
エラー表示が「小テストの受験結果タブをクリック」した場合のみ発生するかどうかご確認ください。
可能でしたら、Moodle 1.8.11でも同様のエラーが発生していたかどうかご確認ください。

下記投稿にもありますように、恐らくデータに何らかの問題が発生していると思われます。

[Unsupported contextlevel in category record!]
http://moodle.org/mod/forum/discuss.php?d=107152

Mitsuhiro Yoshida への返信

Re: Unsupported contextlevel in category record!の対処法について

- 居間中 太郎 の投稿
ご返信ありがとうございます。

小テストの受験結果タブをクリック」した場合のみ発生します。
1.8.11ではエラーは発生していません。

1.8.11で作成した小テストのみエラーとなります。
1.9.7で新しく作成した小テストはエラーは発生しません。

moodle/lib/questionlib.phpの関数question_has_capability_onの

if (!has_capability('moodle/question:'.$cap.'all',
get_context_instance_by_id($category->contextid))){

でif文の結果がTRUEになってしまっています。

$category->contextidの値を調べてみると0でした。

$category->contextidの値は0でも問題ないのでしょうか。

居間中 太郎 への返信

Re: Unsupported contextlevel in category record!の対処法について

- 居間中 太郎 の投稿
ソース解析の結果、アップデートの際に、mdl_question_categoriesテーブルのデータのcontextidに0が入ってしまっていたのが原因だということがわかりました。

そこで、また、みなさんのお力をお借りしたいと思います。

mdl_question_categoriesテーブルのデータのcontextidに正しい値を入れたいのですが、contextidの正しい値を見つけるためのSQLなどございますでしょうか。

SQL文を示していただかなくても、「こうすればできるかも」など、ヒントめいたものでも大歓迎です。

よろしくお願いいたします。