小テスト、フィードバックのCSVにuseridを表示させたい

小テスト、フィードバックのCSVにuseridを表示させたい

- Yuuki Murakami の投稿
返信数: 6

いつもお世話になっております。村上です。

現在、moodle3.1.3を用いてサーバを構築しております。
小テストとフィードバックを中心に利用していますが
小テストおよびフィードバックの集計の画面、およびCSVにはlastname
firstnameは表示されますが、usernameを表示させることは可能でしょうか?

いつも質問ばかりで申し訳ありませんが、宜しくお願い致します。

Yuuki Murakami への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

- T N の投稿

サイト管理▶評定▶一般設定▼評定エクスポート - ユーザプロファイルフィールド 欄に username をカンマで区切って書き加えてください。以下は、その例です。

lastname,firstname,idnumber,id,username

標題の userid をカスタムプロファイルとして定義しているのであれば、▼評定エクスポート - カスタムプロファイルフィールド 欄に userid を書き加えてください。

T N への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

- Yuuki Murakami の投稿

TN様、ありがとうございます。

ご教授していただいた設定を変更すると表示的にどこが変わりますでしょうか?


こちらの質問の仕方が悪かったのかもしれませんが、
小テストの受験件数をクリックした時に表示されるレポートの画面と
Excelファイルにエクスポートした時の画面でuserid(アカウント名)を
表示させたいと思っています。

言葉足らずで申し訳ありません。

Yuuki Murakami への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

- T N の投稿

すみせん、そういうことでしたか。

画面への表示に関しては、サイト管理▶ユーザ▶パーミッション▶ユーザポリシー▼表示するユーザ固有情報 で制御できますが、残念ながら username の制御はできないようです。

IDナンバーなどの項目に代用させるのも有効かと思いますが、本格的に制御するなら、改造が必要と思います。

改造については、私の手に余るので、他の方にお任せします。

T N への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

- Yuuki Murakami の投稿

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

了解しました。ご丁寧に対応いただきましてありがとうございました。
他の手段が無いかを調べていきたいと思います。

以上、宜しくお願い致します。

Yuuki Murakami への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

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

下記プログラム修正ではいかがでしょうか。

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

修正箇所:
164行目

[ 修正前 ]
        if (!$table->is_downloading()) {
            $columns[] = 'fullname';
            $headers[] = get_string('name');
        } else {
            $columns[] = 'lastname';
            $headers[] = get_string('lastname');
            $columns[] = 'firstname';
            $headers[] = get_string('firstname');
        }

        // When downloading, some extra fields are always displayed (because
        // there's no space constraint) so do not include in extra-field list.

[ 修正後 ]
        if (!$table->is_downloading()) {
            $columns[] = 'fullname';
            $headers[] = get_string('name');
        } else {
            $columns[] = 'lastname';
            $headers[] = get_string('lastname');
            $columns[] = 'firstname';
            $headers[] = get_string('firstname');
        }
        $columns[] = 'username';
        $headers[] = get_string('username');

        // When downloading, some extra fields are always displayed (because
        // there's no space constraint) so do not include in extra-field list.

--------------------------

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

修正箇所:
405行目

[ 修正前 ]
        $fields .= '
                quiza.uniqueid AS usageid,
                quiza.id AS attempt,
                u.id AS userid,
                u.idnumber, ' . $allnames . ',
                u.picture,
                u.imagealt,
                u.institution,
                u.department,
                u.email' . $extrafields . ',
                quiza.state,
                quiza.sumgrades,
                quiza.timefinish,
                quiza.timestart,
                CASE WHEN quiza.timefinish = 0 THEN null

[ 修正後 ]
        $fields .= '
                quiza.uniqueid AS usageid,
                quiza.id AS attempt,
                u.id AS userid,
                u.idnumber, ' . $allnames . ',
                u.username,
                u.picture,
                u.imagealt,
                u.institution,
                u.department,
                u.email' . $extrafields . ',
                quiza.state,
                quiza.sumgrades,
                quiza.timefinish,
                quiza.timestart,
                CASE WHEN quiza.timefinish = 0 THEN null


--------------------------

修正対象プログラム:
mod/feedback/classes/responses_table.php

修正箇所:
108行目

[ 修正前 ]
    /**
     * Initialises table
     * @param int $group retrieve only users from this group (optional)
     */
    protected function init($group = 0) {

        $tablecolumns = array('userpic', 'fullname');
        $tableheaders = array(get_string('userpic'), get_string('fullnameuser'));

        $extrafields = get_extra_user_fields($this->get_context());
        $ufields = user_picture::fields('u', $extrafields, $this->useridfield);
        $fields = 'c.id, c.timemodified as completed_timemodified, c.courseid, '.$ufields;
        $from = '{feedback_completed} c '
                . 'JOIN {user} u ON u.id = c.userid AND u.deleted = :notdeleted';
        $where = 'c.anonymous_response = :anon
                AND c.feedback = :instance';

[ 修正後 ]
    /**
     * Initialises table
     * @param int $group retrieve only users from this group (optional)
     */
    protected function init($group = 0) {

//        $tablecolumns = array('userpic', 'fullname');
//        $tableheaders = array(get_string('userpic'), get_string('fullnameuser'));
        $tablecolumns = array('userpic', 'fullname', 'username');
        $tableheaders = array(get_string('userpic'), get_string('fullnameuser'), get_string('username'));

        $extrafields = get_extra_user_fields($this->get_context());
        $ufields = user_picture::fields('u', $extrafields, $this->useridfield);
//        $fields = 'c.id, c.timemodified as completed_timemodified, c.courseid, '.$ufields;
        $fields = 'c.id, c.timemodified as completed_timemodified, c.courseid, u.username, '.$ufields;
        $from = '{feedback_completed} c '
                . 'JOIN {user} u ON u.id = c.userid AND u.deleted = :notdeleted';
        $where = 'c.anonymous_response = :anon
                AND c.feedback = :instance';

Mitsuhiro Yoshida への返信

Re: 小テスト、フィードバックのCSVにuseridを表示させたい

- Yuuki Murakami の投稿

Yoshida様、ありがとうございました。

先程、Moodleに修正を行いましたら、思っている表示になりました。
本当にありがとうございました。

さっそく活用させていただきます。ありがとうございました。