必須のプロフィール項目を非表示&編集不可にする

都道府県や国名など、必須フィールドを非表示にして欲しい、という要望がありました。これらのフィールドには、外部プログラムを使ったユーザー登録時に値は設定されていますが、それ以降は学生に見せずに編集もさせたくない、とのこと。

user/editlib.php を以下のように修正。(例として都道府県と国名)

	// 全管理者の情報を取得
	$admins = get_admins();

	if (!empty($admins[$USER->id])) {
		$mform->addElement('text', 'city', get_string('city'), 'maxlength="20" size="21"');
		$mform->setType('city', PARAM_MULTILANG);
		$mform->addRule('city', $strrequired, 'required', null, 'client');
	} else {
		$mform->addElement('hidden', 'city', $CFG->city);
		$mform->setType('city', PARAM_MULTILANG);
	}

	if (!empty($admins[$USER->id])) {
		$choices = get_list_of_countries();
		$choices= array(''=>get_string('selectacountry').'...') + $choices;
		$mform->addElement('select', 'country', get_string('selectacountry'), $choices);
		$mform->addRule('country', $strrequired, 'required', null, 'client');
		if (!empty($CFG->country)) {
			$mform->setDefault('country', $CFG->country);
		}
	} else {
		$mform->addElement('hidden', 'country', $CFG->country);
		$mform->setType('country', PARAM_MULTILANG);
	}

管理者ロールでログインした場合のみ修正可能としてみました。

あとは 【サイト管理】 → 【ユーザー】 → 【パーミッション】 → 【ユーザーポリシー】 → 【ユーザーフィールドを隠す】 の設定をしてやればだいたいOK。

ついでに自己紹介を任意(必須でない)にしてみました。 user/edit_form.php を 1行コメントアウトするだけ。

        /// extra settigs
        //$mform->addRule('description', $strrequired, 'required', null, 'client');

自己紹介はコースに登録されると必須になる…んだったかな。ちょっとうろ覚え…。

コメント

  1. E-問答 Moodle プロファイル情報変更

    Moodleのプロファイル情報の変更を行ったので記載する。 (「フロントページ・カテゴリ・コースの初期設定について」の記載は後日とする。) Moodleのデフォルトプロファイル項目 Moodle…