フィードバック・小テストモジュールが完了した際のメールが教師に届かない

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿
返信数: 9

それぞれのプログラムを確認したのですが、requireで別ファイルを読み込むように追加しているだけでとどまっております。

そうなると、読み込んでいるファイルがおかしいのか、そもそもrequireで読み込むのがいけなのでしょうか。
試しに、読み込んでいるファイルのプログラムを直接書いてみましたが現状は変わりないです。

自分の知識不足で大変申し訳ございませんが、何か分かりましたらまた教えて頂けると幸いでございます。

1つお聞きしたいのですが、http://www.twalker.co.jp/moodle/tools/moot2015_presentation1.htmlを参考に
新たなブロックを開発しているのですが、このフォルダに新たに◯◯.phpファイルを加えると不具合が生じますでしょうか?

プラグインに関係あるファイルをこのフォルダにまとめているので質問させて頂きました。

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

Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

http://www.twalker.co.jp/moodle/tools/moot2015_presentation1.html の28ページで構成されたスライドを拝見しましたが、「このフォルダ」とはどのフォルダのことでしょうか?

例えば、下記のような内容のPHPファイルを既存のMoodle活動モジュールまたはブロックのディレクトリ (フォルダ) 内に新たに追加したとしても、不具合が生じることはないと思います。

<?php

echo 'Test';

Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- udagawa mitsuru の投稿

うだがわです。

自作モジュールや改変部の不具合について協力を求めるのであれば当該プログラムソースの添付くらいはすべきでしょう、エスパーしか分からないような書き込みでは対応して下さる相手の時間の無駄です。

評点平均: お役立ち度: ★★★★★★★ (1)
Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿

うたがわさま

ご返信ありがとうございます。
確かに、私の質問は不躾な質問ばかりでした。大変申し訳ございません。

以後気をつけて参ります。


Yoshidaさま

ご返信ありがとうございます。
分かりにくい表現で大変申し訳ございません。

「このフォルダ」というのは新規に開発したディレクトリ(pluginという名で作成)を指しております。

pluginディレクトリに作成した、mod/quiz/locallib.phpの1500行目で読み込んでいる【plugin_quiz.php】のソースと
1500行目付近のソースを以下に記しておきます。

また、現在はMacBook Airで取り組んでおり、Windowsではどうなのか試してみて結果をここに書かせて頂きますので
よろしければ確認して頂けると幸いでございます。

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


mod/quiz/locallib.phpの1500行目付近のソース(追加部分を太字・下線部をつけて表示)

/**

     * Sends notification messages to the interested parties that assign the role capability

     *

     * @param object $recipient user object of the intended recipient

     * @param object $a associative array of replaceable fields for the templates

     *

     * @return int|false as for {@link message_send()}.

     */

    function quiz_send_notification($recipient, $submitter, $a) {

        global $CFG, $DB, $USER, $COURSE;


        require "/Applications/MAMP/htdocs/moodle29/blocks/plugin/plugin_quiz.php";


        // Recipient info for template.

        $a->useridnumber = $recipient->idnumber;

        $a->username     = fullname($recipient);

        $a->userusername = $recipient->username;


        // Prepare the message.

        $eventdata = new stdClass();

        $eventdata->component         = 'mod_quiz';

        $eventdata->name              = 'submission';

        $eventdata->notification      = 1;

plugin_quiz.phpのソース

<?php

        //mod,quiz,local.phpの1500目あたりに追加

   require_once($CFG->dirroot . '/grade/querylib.php');

        require_once($CFG->libdir . '/gradelib.php');


        $course_id = $COURSE->id;  

        $user_id = $USER->id;    


        $course_modules = get_array_of_activities($course_id);

        $user = $DB->get_record('user', array('id'=>$user_id));


        $result = '';


        foreach($course_modules as $key=>$item) {

           if ($item->mod == 'quiz') {

               $grading_info = grade_get_grades($course_id, 'mod', 'quiz', $item->id, $user_id);

               $grade = reset($grading_info->items[0]->grades);

               $result .= $item->name . ' - ' . $grade->str_long_grade . ', ';

           }

        }


        $a->result = substr($result, 0, -2);



        $sql = "SELECT ls.timecreated AS loggedintime

               FROM {logstore_standard_log} ls

               WHERE ls.action = :action AND ls.userid = :userid ORDER BY ls.timecreated";

        $params = array('action' => 'loggedin', 'userid' => $user_id);


        $now = time();

        $week =  strtotime('-7 day');

        $login = '';

        $total = 0;

        $result2 = '';

        $i = 0;

        


        if ($results = $DB->get_records_sql($sql, $params)) {


          $a->result2 = '';


            foreach ($results as $res) {

                     $login = $res->loggedintime;

                      if($login <= $now && $week <= $login) {

                         $a->result2 .= "・" . date("Y/m/d H:i:s", $res->loggedintime) . "   ";

                         $i++;

                         if($i % 3 == 0){

                            $a->result2 .= "\r";

                         }

                      }


            }


            $total = count($results);


            $a->result2 .= "\r" . get_string('total') . get_string('login') . ":" . $total . "回";


        }


?>

Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
新たに開発したプログラムファイル (plugin_quiz.php) をブロック用ディレクトリ (blocks) に入れてしまったため、「ブロックプラグインに必須の「version.php」ファイルが存在しないのでMoodleはシステム全体の動作を停止しますよ」ということだと思います。

まず、ブロック用ディレクトリ (blocks) 内の「plugin」ディレクトリを削除してください。それから、新たに開発したプログラムファイル (plugin_quiz.php) を小テストモジュールと同じディレクトリ (/mod/quiz) に入れてください。最後に下記を参考にプログラムを修正してください。

修正対象プログラム:
mod/quiz/locallib.php

修正箇所:
1500行目

[ 修正前 ]
require "/Applications/MAMP/htdocs/moodle29/blocks/plugin/plugin_quiz.php";

[ 修正後 ]
require_once($CFG->dirroot.'/mod/quiz/plugin_quiz.php');

添付 moodle_errors.png
Mitsuhiro Yoshida への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿

Yoshidaさま

ご返信ありがとうございます。

教えて頂いた通り、新規に開発したブロックに関係しないファイルをmod/quiz、mod/feedbackに
移動しました(フィードバックモジュールに関係あるソースファイルもあったので移動させました)

その結果、フィードバックモジュールが完了した際にはメールがちゃんと届くようになりました。
ありがとうございます。

しかし、小テストモジュールに関しては未だに出力エラーの画面に飛んでしまいます。
開発したソース(plugin_quiz.php)に不具合があるのか確認している次第です。

他に原因として思い当たる節がありましたら、教えて頂けたら幸いでございます。
よろしくお願い致します。

また、新たに開発しているブロックとそのブロック(1枚目)のディレクトリ(2枚目)を画像として添付させて頂きますのでよろしければ確認お願い致します(添付する画像のディレクトリ内にpkugin_quiz.phpなどが入っておりました)

なお、新規開発しているブロックは正常に動いております。

添付 スクリーンショット 2016-08-29 10.52.58.png
添付 スクリーンショット 2016-08-29 10.53.17.png
Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> 他に原因として思い当たる節がありましたら、教えて頂けたら幸いでございます。

全体を把握しておりませんため、残念ですが、思い当たる節はありません。

一旦、新しく開発したブロックすべてをアンインストールして、フィードバック関連の修正部分を元に戻した上で、同じように小テストモジュールで出力エラーが表示されるかどうか確認されてはいかがでしょうか。

または、クリーンインストールしたMoodleに小テストの修正部分のみを適用して、出力エラーが表示されるかどうか確認されてはいかがでしょうか。

Mitsuhiro Yoshida への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿

ご返信ありがとうございます。

はい、1つずつちゃんと動作するか確認してみます。
大変お世話になりました、ありがとうございます。

Shota Abe への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿

いま試してみたら、小テストモジュールもメールが届くようになていました。

本当にありがとうございました。

Mitsuhiro Yoshida への返信

Re: フィードバック・小テストモジュールが完了した際のメールが教師に届かない

- Shota Abe の投稿

本日の12頃にメールが来ることを確認し、先ほどもう一度試したのですが
フィードバックモジュール、小テストモジュールどちらともメールが届かなくなっていました。

一切設定もソースもいじって無いのですがこのようなことは通常起こるものなのでしょうか。

おかしいと思ったので、とりあえずこちらに書かせて頂きます。