活動完了のレポートにユーザ名を表示させたい

活動完了のレポートにユーザ名を表示させたい

- hiroki nanba の投稿
返信数: 3

活動完了のレポートで出力させるCSVファイルに

ユーザ名(username)をカラムとして追加して表示させたいです。

どのようにすれば表示項目を追加出来るのでしょうか。

Moodleのバージョンは3.6.1です。

ご教授願えれば幸いです。よろしくお願いします。

hiroki nanba への返信

Re: 活動完了のレポートにユーザ名を表示させたい

- hiroki nanba の投稿
すみません、試したことだけでもこちらに記述します。


評定者リストにUsernameを表示

https://moodle.org/mod/forum/discuss.php?d=348858


こちらにあるソースコードの修正は試してみたのですが、

評定者リストと活動完了レポートではソースコードの修正する箇所はやはり異なるかと思うのですが、とりあえず試したことを記述しておこうと思いまして書きました。

hiroki nanba への返信

Re: 活動完了のレポートにユーザ名を表示させたい

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

ご参考までにどうぞ。

修正対象プログラム:
report/progress/index.php

修正箇所:
300行目

[ 修正前 ]
} else {
    foreach ($extrafields as $field) {
        echo $sep . csv_quote(get_user_field_name($field));
    }
}

[ 修正後 ]
} else {
    echo $sep . csv_quote(get_string('username'));
    foreach ($extrafields as $field) {
        echo $sep . csv_quote(get_user_field_name($field));
    }
}
修正対象プログラム:
report/progress/index.php

修正箇所:
352行目

[ 修正前 ]
// Row for each user
foreach($progress as $user) {
    // User name
    if ($csv) {
        print csv_quote(fullname($user));
        foreach ($extrafields as $field) {
            echo $sep . csv_quote($user->{$field});
        }
    } else {
        print '<tr><th scope="row"><a href="'.$CFG->wwwroot.'/user/view.php?id='.
            $user->id.'&amp;course='.$course->id.'">'.fullname($user).'</a></th>';
        foreach ($extrafields as $field) {
            echo '<td>' . s($user->{$field}) . '</td>';
        }
    }

[ 修正後 ]
// Row for each user
foreach($progress as $user) {
    $sql = "SELECT id,username FROM {user} WHERE id = :userid";
    $placeholders['userid'] = $user->id;
    $userdata = $DB->get_records_sql($sql, $placeholders);

    $decoded_data = json_decode(json_encode($userdata), JSON_OBJECT_AS_ARRAY);
    $username_array = array_column($decoded_data, 'username');
    $username = $username_array[0];

    // User name
    if ($csv) {
        print csv_quote(fullname($user));
        print $sep.csv_quote($username);
        foreach ($extrafields as $field) {
            echo $sep . csv_quote($user->{$field});
        }
    } else {
//        print '<tr><th scope="row"><a href="'.$CFG->wwwroot.'/user/view.php?id='.
//            $user->id.'&amp;course='.$course->id.'">'.fullname($user).'</a></th>';
        print '<tr><th scope="row"><a href="'.$CFG->wwwroot.'/user/view.php?id='.
            $user->id.'&amp;course='.$course->id.'">'.fullname($user).' ('. $username .')'.'</a></th>';
        foreach ($extrafields as $field) {
            echo '<td>' . s($user->{$field}) . '</td>';
        }
    }
評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: 活動完了のレポートにユーザ名を表示させたい

- hiroki nanba の投稿
コードまで記述いただきありがとうございます。

おかげさまでユーザ名を出力することができました。

誠にありがとうございます。