Moodleのソース変更・Plugin導入メモ(2017.04.18)

非常勤先生より、小テスト機能の拡張提案がありました。2017.4.17に以下をMoodle3.1系に導入してみました。正答が複数ある問題も作成できるようになりました。

Regular expression questions


Moodle2.7系を使っています。利用者からの要望によりMoodleソースを少し変更した情報を残します。

  • 要望:課題一括ダウンロード後のzipファイルを展開すると利用者姓名などが含まれており、ファイル名を処理したいときにやりにくい
    • 変更:課題のzipファイル作成箇所を変更し、姓名情報を除き学生番号(本学ではidnumberに学生番号が含まれている)を追加した。但しidnumberが未定義の場合は、オリジナルの名前の付け方にした。
    • 箇所:/mod/assign/locallib.php
      • 変更前
      • if ($this->is_blind_marking()) {
        • $prefix = str_replace(‘_’, ‘ ‘, $groupname . get_string(‘participant’, ‘assign’));
        • $prefix = clean_filename($prefix . ‘_’ . $this->get_uniqueid_for_user($userid) . ‘_’);
      • } else {
        • $prefix = str_replace(‘_’, ‘ ‘, $groupname . fullname($student));
        • $prefix = clean_filename($prefix . ‘_’ . $this->get_uniqueid_for_user($userid) . ‘_’);
      • }
      • 変更後
      • if ($this->is_blind_marking()) {
        • $prefix = str_replace(‘_’, ‘ ‘, $groupname . get_string(‘participant’, ‘assign’));
        • $prefix = clean_filename($prefix . ‘_’ . $this->get_uniqueid_for_user($userid) . ‘_’);
      • } else {
        • if ($student->idnumber == ”) {
             $prefix = str_replace(‘_’, ‘ ‘, $groupname . fullname($student));
          } else {
             $prefix = str_replace(‘_’, ‘ ‘, $groupname . $student->idnumber);
          }
        • $prefix = clean_filename($prefix . ‘_’ . $this->get_uniqueid_for_user($userid) . ‘_’);
      • }

Moodle3.1(2016.9-)も使い始めました。

要望:コースの自己登録を使用する際に、コース登録キー(enrol_self | requirepassword)を忘れないようにセットするようにしたが、コース作成後はコース登録キーを削除してもよい設定にしたい

  • /enrol/self/lib.php
  •  関連の場所:コース作成時の初期パスワード生成箇所
    • /**
    • * Add new instance of enrol plugin with default settings.
      * @param stdClass $course
      * @return int id of new instance
      */
    • public function add_default_instance($course) {
      $fields = $this->get_instance_defaults();
    • if ($this->get_config(‘requirepassword’)) {
      $fields[‘password’] = generate_password(20);
      }
    • return $this->add_instance($course, $fields);
      }
  • 変更の場所:
  • if ($checkpassword) {
    • // $require = $this->get_config(‘requirepassword’);
    • $require = 0; // パスワードがなくてもOKにする
    • $policy = $this->get_config(‘usepasswordpolicy’);
    • if ($require and trim($data[‘password’]) === ”) {
      • $errors[‘password’] = get_string(‘required’);
    • } else if (!empty($data[‘password’]) && $policy) {
      • $errmsg = ”;
      • if (!check_password_policy($data[‘password’], $errmsg)) { $errors[‘password’] = $errmsg; }
    • }
  • }

Moodle3.1.3or3.1.4+ (Build: 20170223) のバグ?

  • コース中にグループを設定している場合、課題確認「全ての課題の提出を表示」に画面がくずれすべての提出が表示できない(2017.3.2)。
    • エラー表示は「データベースへの書き込み中にエラーが発生しました。」
    • mt.el.kyutech.ac.jpで発生
  • 変更
    • 過去のMoodleのバグトラックより https://tracker.moodle.org/browse/MDL-47123 が一番現象に近いととりあえず判断
    • 変更箇所:/mod/assign/feedback/editpdf/locallib.php
    • diff結果 diff locallib.php locallib.org.php
      • 66,80c66
        < //ohnishi add start MDL-47123
        < if (!$attempt) {
        < $submission = null;
        < // Make sure this grade matches the latest submission attempt.
        < if ($this->assignment->get_instance()->teamsubmission) {
        < $submission = $this->assignment->get_group_submission($userid, 0, false);
        < } else {
        < $submission = $this->assignment->get_user_submission($userid, false);
        < }
        < if ($submission) {
        < $attempt = $submission->attemptnumber;
        < }
        < }
        < //ohnishi add end MDL-47123
        <

        >

moodleコースの表示順序(新しい順にかえる)

  • blocks/course_overview/
  • 変更箇所 diff locallib.org.php locallib.php
    171a172,173
    > // ohnishi add 2016.3.25
    > arsort($courses);