ユーザー一覧の表示やロールの割り当て画面の検索機能で、都道府県を検索対象にできないでしょうか。
都道府県(City)の欄をユーザの所属に読み替えて運用しています。学生の場合は学科と入学年度(これはユーザアカウント名でも識別できるので問題なし)、教員の場合は所属学科、その他の人の場合はそれぞれの役割(事務職員、など)。
都道府県によるソートはできるのですが。。。
見てみた感じでは、ユーザ一覧の表示ではlib/datalib.php中の、
function get_users_listing($sort='lastaccess', $dir='ASC', $page=0, $recordsperpage=0,
$search='', $firstinitial='', $lastinitial='', $remotewhere='') {global $CFG;
$LIKE = sql_ilike();
$fullname = sql_fullname();$select = "deleted <> '1'";
if (!empty($search)) {
$search = trim($search);
$select .= " AND ($fullname $LIKE '%$search%' OR email $LIKE '%$search%') ";
}if ($firstinitial) {
$select .= ' AND firstname '. $LIKE .' \''. $firstinitial .'%\' ';
}if ($lastinitial) {
$select .= ' AND lastname '. $LIKE .' \''. $lastinitial .'%\' ';
}$select .= $remotewhere;
if ($sort) {
$sort = ' ORDER BY '. $sort .' '. $dir;
}/// warning: will return UNCONFIRMED USERS
return get_records_sql("SELECT id, username, email, firstname, lastname, city, country, lastaccess, confirmed, mnethostid
FROM {$CFG->prefix}user
WHERE $select $sort", $page, $recordsperpage);}
を呼んでいるようです。青文字で示したあたりだと思うのですが、$searchに検索文字列が入力されていて、$selectの中の$fullnameと$emailを検索対象としているように見えますので、ここに追加すれば良いのかな?
紫色の行のところを見よう見真似で以下のように変更したら、ユーザー一覧の表示では、検索ができるようになりました。
$select .= " AND ($fullname $LIKE '%$search%' OR email $LIKE '%$search%' OR city $LIKE '%$search%') ";
赤い部分の追加しただけなのですが。。。SQLについて(も?)初心者ですので、これで安全なのかどうか判断が付きません。なお、この改良を施してもロール割り当て画面での検索では都道府県でのサーチはできませんねぇ。ソースの共通化はされていないようで、admin/role/assign.php内にもっとベタベタと関数をあまり使わずに記述されています。