20201018のPHPに関する記事は9件です。

PHP: IF文(初心者向け)

if(式)

式がtrueなら最初のくくりで処理が行われます。
式がtrueでなくてelseがあればelseくくりで処理が行われます。

公式リンク

ifのいろいろなパターン
//超基本形
if () {
    //式 が trueなら処理が行われる
}
//否定形
if (!) {
    //式 が falseなら処理が行われる
}
//if ~ else
if () {
    //式 が trueなら処理が行われる
} else {
    //式 が falseなら処理が行われる
}
//if ~ elseif ~ else
if (式1) {
    //式1 が trueなら処理が行われる
} elseif (式2){
    //式2 が trueなら処理が行われる
} else {
    //式1 と 式2 が true でなかったときに処理が行われる
}

おまけ・よく出る比較演算子(詳しくは公式で)

公式リンク: 例がたくさんあります

よく使う比較演算子
//同じか?
if ($a == $b) {
    //$a が $bに等しいとき -> true -> 処理が行われる
}
//違っているか?
if ($a != $b) {
    //$a が $bに等しくないとき -> true -> 処理が行われる
}
//小さいか?
if ($a < $b) {
    //$a が $bより小さいとき -> true -> 処理が行われる
}
//大きいか?
if ($a > $b) {
    //$a が $bより大きいとき -> true -> 処理が行われる
}
//小さい若しくは等しいか?
if ($a <= $b) {
    //$a が $bより小さいか等しいとき -> true -> 処理が行われる
}
//大きい若しくは等しいか?
if ($a >= $b) {
    //$a が $bより大きいか等しいとき -> true -> 処理が行われる
}

使用例

使用例
$a = 5;
$b = 10;

//等しいか?
if ($a == $b) {
    echo '$a と $b は等しい';
} else {
    echo '$a と $b は等しくない';
}
//-> $a と $b は等しくない

//大きいか?小さいか?
if ($a <= $b) {
    echo '$a と $b より小さいか等しい';
} elseif ($a > $b) {
    echo '$a は $b より大きい';
}
//-> $a は $b より小さいか等しい

//気をつけないといけないパターン
$res = '';
if ($a == $b) {
    echo '$a と $b は等しい';
}
//-> なにも出力されません。
// 式がfalseかつ elseがないので resには何も入りませんでした。

if (式) { は、trueなら最初のくくりを処理します。
そうでないときにelseがあればelseくくりを処理します。

ネストの闇の話

深いネストはアンチパターン
if (Aの条件) { //if:A
    //Aの条件が通ったとき
    if (Bの条件) {  //if:B
        //Bの条件が通ったとき
        if (Cの条件) {    //if:C
            //Cの条件が通ったとき
        } else {         //if:C
            //Cの条件が通らなかったとき
        }
    } else {       //if:B
        //Bの条件が通らなかったとき
    }
} else {      //if:A
    //Aの条件が通らなかったとき
}

ネストとは上記のようにifの中ifが入った (入れ子)状態をいいます。
ネストの深い条件分岐読むのに時間がかかるようになります。
上記のようにネストは3つぐらいに抑えたいですね。

ネストを抑えるために: 一例

ガード節
if (!Aの条件) {
    //Aの条件が通らなかったとき
    //終了
}
if (!Bの条件) {
    //Bの条件が通らなかったとき
    //終了
}
if (Cの条件) {
    //A、B、Cの条件が通ったとき
}

A、Bの条件通らなかったときに終了としたのは少し乱暴ですが、考え方として捉えてください。
ネストだとAの条件Bの条件頭のどっかに置いたままコードリーディングします。
対してガード節だと、AとBが通らなかったときは終了しているのでCの条件に集中できるので理解しやすくなります。

ここまで読んでいただいてありがとうございます!
初心者の方への一助になれば幸いです。

LGTMお願いします!
ストックのついでにお願いします!
モチベーションがあがります!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Moodle 3.9 マニュアル - カテゴリ:アカウント

原文

カテゴリ:アカウント

ユーザーアカウントに関するドキュメントページのインデックス。
カテゴリ「アカウント」のページ

全14ページ中、以下の14ページがこのカテゴリに属しています。

新規ユーザーの追加

バルクユーザーアクション

ユーザーをアップロードする

A

Accounts FAQ
Add a new user (日本語訳:新規ユーザーの追加)
Additional name fields

B

Browse list of users
Bulk user actions 日本語訳:バルクユーザーアクション

C

Capabilities/moodle/site:uploadusers

D

Download users by role

E

Edit profile

M

Managing accounts

U

Upload cohorts
Upload users (日本語訳:ユーザーをアップロードする)
User pictures
User profile fields

V

View profile

カテゴリ サイト管理

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

エラーバンドリングの表示

【概要】

1.結論

2.どのようにコーディングするか

3.開発環境

補足

1.結論

@if (count($errors) > 0) と、@foreachを使用する!

2.どのようにコーディングするか

@if@foreach の使い方は自分のこちらの記事にて説明しているので、よかったらご覧ください!
blade構文

resorces/views/hoge/index.blade.php
<p>{{$msg}}</p>
 @if (count($errors) > 0)
  <div>
   <ul>
    @foreach ($errors->all() as $error)
     <li>{{$error}}</li>
    @endforeach
   </ul>
  </div>
 @endif

エラーメッセージあれば、そのエラーの全てをそれぞれ取り出すようにしています。そしてそれを変数を用いて表示しています。

ただ、バリデーションがかかっていることが前提なので下記のようにコーディングしています。

app/Http/Controllers/HogeController.php
class HogeController extends Controller
{
    public function index(Request $request)
    {
      return view('hoge.index', ['msg'=>'入力してください:']);
    }

    public function post(Request $request)
    {
      $validate_rule = [
        'name' => 'required' ,
        'mail' => 'email' ,
        'age' => 'numeric|between:0,150' ,
        ];
        $this->validate($request , $validate_rule);
        return view('hoge.index' , ['msg'=>'正しく入力してください']);
    }
}


3.開発環境

Mac catalina 10.15.4
Vscode
PHP 7.4.10
Laravel 8.9.0
Apache 2.4.41

補足

エラーバンドリングを表示させるということは2.のあとにform要素を付け加えると思います。その際に@csrfの記載を忘れないでください。セキュリティ対策になります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LaradockをベースにしたLaravelのボイラープレートを作りました!

自己紹介

皆さん、はじめまして!
記事の内容に入る前に、簡単な挨拶を。

人生初の記事投稿です。
これまでは気が向いた時に勉強して自己満足してたのですが
これからは、学習した内容とか日々の気付きなどを、せっかくなのでアウトプットしていけたらと思います!(メモとしても)
至らない点もあるかと思いますが、よろしくお願いします!

※2020/10/19 追記
記事を投稿して早々、GitHubにTemplateRepositoryというオプションがあることに気づいたので、そちらのやり方で使用方法の項目を修正しました。

概要

Laradockをベースにした、Laravelのボイラープレートを作ったので、
それの紹介と簡単なイントロダクションをします。

ボイラープレートだけ欲しい方は、下記のリンクからどうぞ!
https://github.com/ryuyaF/LaravelBoilerplateOfLaradock

なぜ作ったのか

前から気になっていたLaradockを触ってみた際に、結構使い勝手が良かったのと
勉強も兼ねて、自前のLaravelのボイラープレートを作ってみたいな〜と思っていたからです。

自前のボイラープレートっておいしいの?

Laradockのボイラープレート自体は、探せばいくらでも有用なものがあるので、ぶっちゃけ作る意味はそこまでないです。
ですが、今回自前で用意したメリットとしては、下記のようなものがあるかなと思います。

Laradockのインストール方法をいつまでも覚えていられない

Laradockに限った話ではないですが、
私の場合はプロジェクトを作る際、大抵は作り方がうろ覚えです。なんとなくの流れを覚えている程度です。
その度に、公式ページを見て、細かい設定方法やルールを確認し、作ってもいいのですが、、、面倒ですよね。
作りたい時にパッと用意する。
そういう点に魅力を感じる方にはおすすめです。

好みの構成に出来る

自分好みって良いですよね。作業しやすいです。

簡単なイントロダクション

ディレクトリ構成と解説

YourProjectName/
  └App/
  └data/
  └laradock/ ※サブモジュール
  └env-example ※laradockのenv-example
  • App
    • Laravelのインストールディレクトリ
  • data
    • mysqlのdataディレクトリ
      • DATA_PATH_HOST=../data
      • 初期設定では、laradockディレクトリの直上(=プロジェクトディレクトリの直下)に設定されている
      • ※Volumeディレクトリを変えたい場合は、laradock/.envDATA_PATH_HOSTを変更する
  • laradock
  • env-exampleファイル
    • サブモジュールは特定コミットをCloneする
    • laradockのenvファイル共通化のため、カスタマイズされたものを配置している

使用方法

  1. リポジトリにアクセス
  2. Use This Templateをクリック image.png
  3. 必要な情報を入力してCreate repository from templateをクリック image.png
  4. ちょっと待つと、リポジトリが作成される image.pngimage.png
  5. あとは、CloneするところからREADMEの流れに沿って作業すれば完了

こだわりポイント

Laradockリポジトリをサブモジュール化

Laradockを単にCloneしたものをリポジトリに含めるのではなく、サブモジュールとしてリポジトリに定義しました。
それによって、Laradockリポジトリの更新が反映しやすくなったかと思います。

Laradockのenvファイルをカスタマイズして、自前のリポジトリにて管理

Laradockをサブモジュール化したことによって、Cloneする際に、Laradockのenv-exampleファイルが直接管理できなくなりました。
なので、env-exampleを外出しして、カスタマイズできるような構成にしました。

XDebugの設定

今回はとりあえず、Laradockを使用したLaravelのボイラープレートの作成が目的でしたので、気が向いたら今後追記します。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Windows 版 PHP で gRPC を使う

XAMPP for WindowsPHPgRPC エクステンションをインストールしたときの手順メモ
今回はプリコンパイル済みの dll をダウンロードしてインストールした

検証環境

Windows10 Home Edition
XAMPP for Windows 7.4.9 (x64)

PHP がスレッドセーフか確認

D:\>php --version
PHP 7.4.9 (cli) (built: Aug  4 2020 11:52:41) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies
    with Xdebug v2.8.1, Copyright (c) 2002-2019, by Derick Rethans

D:\>php -i | grep -i thread
Thread Safety => enabled
Thread API => Windows Threads

XAMPP に付属している PHP はスレッドセーフ

gRPC エクステンションのセットアップ

ダウンロード

下記のサイトから dll のアーカイブをダウンロードする
PECL :: Package :: gRPC

2020-10-18 現在、最新の安定板は 1.32.0
PECL :: Package :: gRPC 1.32.0 for Windows

XAMPPPHP のバージョンは 7.4.9 ZTS x64 なので、7.4 Thread Safe (TS) x64 をダウンロードする
grpc_win_1.32.0.png

dll のインストール

ダウンロードしたファイルを解凍して php_grpc.dll\xampp\php\ext にコピーする
\xampp\php\php.ini に下記を追加

extension=grpc

動作確認

D:\>php -i | grep -i grpc
grpc
grpc support => enabled
grpc module version => 1.32.0
grpc.enable_fork_support => 0 => 0
grpc.grpc_trace => no value => no value
grpc.grpc_verbosity => no value => no value
grpc.log_filename => no value => no value
grpc.poll_strategy => no value => no value

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel8 CRUD処理を使った投稿アプリを作成する その2 投稿入力画面の作成

目的

  • 投稿アプリの投稿入力画面の作成を行う

実施環境

  • 筆者の実施環境を記載する。
  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.8 Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする
Laravel バージョン 8.6.0 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする

前提条件

  • その1の記事の内容が完了していること。

前提情報

概要

  1. ルーティング情報の記載
  2. コントローラファイルの作成と記載
  3. ビューファイルの作成と記載
  4. 確認

詳細

  1. ルーティング情報の記載

    1. laravel8_crudディレクトリで下記コマンドを実行してルーティングファイルを開く。

      $ vi routes/web.php
      
    2. 開いたファイルに下記の2行を追記する。(Laravel8からルーティング情報の記載方法が異なっているので注意する。)

      laravel8_crud/routes/web.php
      use App\Http\Controllers\ContentController;
      // -----------省略-----------
      Route::get('/input', [ContentController::class, 'input'])->name('input');
      
    3. 追記後のルーティングファイルの内容を下記に記載する。

      laravel8_crud/routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      // 下記を追記する
      use App\Http\Controllers\ContentController;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Auth::routes();
      
      Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
      
      // 下記を追記する
      Route::get('/input', [ContentController::class, 'input'])->name('input');
      
  2. コントローラファイルの作成と記載

    1. laravel8_crudディレクトリで下記コマンドを実行してコントローラファイルを作成する。

      $ php artisan make:controller ContentController
      
    2. laravel8_crudディレクトリで下記コマンドを実行してコントローラファイルを開く。

      $ vi app/Http/Controllers/ContentController.php
      
    3. 開いたコントローラファイルに下記の内容を追記する。

      app/Http/Controllers/ContentController.php
      public function input()
      {
          return view('contents.input');
      }
      
    4. 追記後のコントローラファイルの内容を下記に記載する。

      app/Http/Controllers/ContentController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class ContentController extends Controller
      {
          // 下記を追記する
          public function input()
          {
              return view('contents.input');
          }
      }
      
  3. ビューファイルの作成と記載

    1. laravel8_crudディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。

      $ mkdir resources/views/contents
      
    2. laravel8_crudディレクトリで下記コマンドを実行してビューファイルを作成する。

      vi resources/views/contents/input.blade.php
      
    3. 作成して開いたビューファイルに下記の内容を追記する。

      laravel8_crud/resources/views/contents/input.blade.php
      <h1>input</h1>
      
      <form action="" method="post">
          @csrf
          <textarea name="content" cols="30" rows="10"></textarea>
          <input type="submit" value="送信">
      </form>
      
  4. 確認

    1. laravel8_crudディレクトリで下記コマンドを実行してローカルサーバを起動する。

      $ php artisan serve
      
    2. ブラウザで下記にアクセスする。

    3. 下記の様に表示されれば本記事の作業は完了である。

      127_0_0_1_8000_input.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Codewars] Stop gninnipS My sdroW!

概要

Codewarsの問題 Stop gninnipS My sdroW! の回答の復習とベストプラクティスをまとめる個人メモです。

問題

Write a function that takes in a string of one or more words, and returns the same string, but with all five or more letter words reversed (Just like the name of this Kata). Strings passed in will consist of only letters and spaces. Spaces will be included only when more than one word is present.
Examples: spinWords( "Hey fellow warriors" ) => returns "Hey wollef sroirraw" spinWords( "This is a test") => returns "This is a test" spinWords( "This is another test" )=> returns "This is rehtona test"

スペースを含む文字列が引数で渡され、文字数が5以上の場合は反転させる問題です。

回答

explodeで文字列を配列に変換後、array_mapを使用し各要素の文字列を操作します。
5以上の場合は、strrevを使用し文字列を反転させます。
implodeで配列を文字列に変換しますが、スペースをうまく返せなかったため、,を含む文字列を返却後preg_replaceで,を空白に置換しています。

function spinWords(string $str): string {
  $str_list = explode(" ", $str);
  $result_list = array_map(function($value){
    return strlen($value) > 4 ? strrev($value) : $value;
  }, $str_list);
  return preg_replace('/,/', ' ', implode(",", $result_list));
}

ベストプラクティス

preg_replace_callbackを使用したことがなかったため勉強になりました。

function spinWords(string $str): string {
  return preg_replace_callback('/\w{5,}/', function($matches) {return strrev($matches[0]);}, $str);
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Moodle 3.9 マニュアル - コースのダウンロード

原文

内容

1 コースのダウンロード
2 インストール
3 ダウンロードオプション
4 ファイルのダウンロード
4.1 コースフィールド
4.2 コースの上書き

1 コースのダウンロード

管理者は、全コースのリストをカンマ区切りの値形式(CSV)またはExcel 2007のファイル形式にダウンロードすることができます。ウェブインターフェースに加えて、admin/tool/downloaddata/cli/downloaddata.phpにあるコマンドラインツールもあります。

コースをダウンロードするには

  1. 管理画面 > サイト管理 > コース > コースのダウンロードに進みます。
  2. ダウンロードオプションを選択し、ダウンロードボタンをクリックします。

600px-download_courses_v3.0.4_2.png
コースのダウンロードページ

2 インストール

このプラグインはMoodle 2.7およびそれ以降のバージョンで動作するようにテストされています。それ以前のバージョンでも動作することを保証するものではありません。

一般的なインストール手順はすべてのMoodleプラグインに共通しています。プラグインのインストール

最初に、あなたのMoodleバージョンに対応するブランチを選択する必要があります。その後、リポジトリをクローンするか、zipファイルをダウンロードして解凍するか、または管理 > サイト管理 > プラグイン > プラグインのインストールでアクセスできるプラグインインストールインターフェイスのzipファイルを使用するかを選択することができます。

リポジトリをクローンすることを選択した場合、ブランチを指定してMOODLE_ROOT_DIRECTORY/admin/tool/downloaddataにクローンする必要があります。例えば、Moodle 3.0がインストールされている場合。

   git clone -b MOODLE_30_STABLE https://github.com/alexandru-elisei/moodle-tool_downloaddata.git MOODLE_ROOT_DIRECTORY/admin/tool/downloaddata

MOODLE_ROOT_DIRECTORYを実際のMoodleインストールルートディレクトリのパスに置き換えてください。zipファイルは同じ場所に展開してください。

リポジトリをクローンすることで、隠し.gitディレクトリも作成されることを覚えておいてください。

注意: プラグインインストールインターフェイスを使用する場合、アーカイブ内のフォルダの名前をdownloaddataに変更することを忘れないでください。

3 ダウンロードオプション

コースをダウンロードする際には、いくつかのオプションがあります。

ファイル形式
ファイル形式を選択します。CSVまたはExcel 2007を選択してください。

エンコード
ファイルのエンコーディングを選択します。CSVファイルをダウンロードするときにのみ使用できます。

CSVの区切り文字
CSVファイルのフィールドの区切り文字を選択します。

フィールドを上書きする
フィールドをオーバーライドするかどうか。独自のオーバーライドを、フィールド=値のペアをカンマで区切ったリストとして提供する必要があります。

カテゴリパスによるソート
コースをカテゴリパスでソートするかどうかを指定します。サイトがコースカテゴリに年/学期などの階層を使用している場合に便利です。

4 ファイルのダウンロード

ファイルを正常にダウンロードするためには、保存するコースフィールドを選択する必要があります。同様に、もしオーバーライドを使用することを選択した場合、ページのオーバーライドセクションでフィールド=値のペアをカンマで区切ったリストとして提供する必要があります (スクリーンショットのように)。

4.1 コースフィールド

ダウンロードしたファイルに含まれるフィールドは、「フィールド」セクションで選択できます。フィールドは、「コース情報フィールド」セクションの「コースのアップロード」で説明されているものです。

4.2 コースの上書き

オーバーライドの使用を有効にしている場合は、オーバーライドのセクションでフィールド=オーバーライドのペアをカンマで区切ったリストとしてオーバーライドを指定することができます。フィールド名や値に制限はありません。注意: オーバーライドを使用オプションが選択されていない場合、ここで指定された値は何の効果もありません。

カテゴリ プラグイン コース

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Moodle 3.9 マニュアル - ユーザーをアップロードする

原文

ユーザーをアップロードする

内容

1 テキストファイルによるユーザーのアップロード
2 アップロードユーザーファイルのファイル形式
2.1 テスト用の有効なアップロードファイル
3 含めることができるユーザーフィールド
3.1 必須フィールド
3.2 パスワード
3.3 オプションのユーザーフィールド
3.4 カスタムプロファイルフィールド名
3.5 特殊なユーザー変更フィールド
3.6 登録フィールド
3.7 コホートメンバーの割り当て
3.8 MNet
3.9 システムの役割を設定する
4 ユーザープロセスのアップロード
5 ユーザープレビューの更新
5.1 アップロードタイプ
5.2 新しいユーザーのパスワード
5.3 既存のユーザーの詳細
5.4 既存のユーザーのパスワード
5.5 パスワードを強制的に変更する
5.6 名前の変更を許可する
5.7 削除を許可する
5.8 アカウントの一時停止と有効化を許可する
5.9 メールアドレスの重複を防ぐ
5.10 ユーザ名の標準化
5.11 バルクユーザーアクションの選択
5.12 デフォルト値
6 ユーザーの結果をアップロードする
7 ユーザーアップロードの高度な可能性
7.1 テンプレート
7.2 アカウントの削除
8 エンコードファイル形式
9 ヒント
9.1 スプレッドシート
9.2 フィールドサイズの制限
9.3 ここに記載されているすべてのユーザーフィールド
9.4 ケイパビリティ
10 関連項目

1 テキストファイルによるユーザーのアップロード

この方法では、コース固有の役割を持つ複数のコースにユーザーを登録したり、ユーザープロファイルのユーザー情報を更新したり、サイトからユーザーを削除したりと、情報(ユーザーに関連付けられたフィールド)をアップロードするための多くのオプションが用意されています。

ヒント: 通常、ユーザーを一括してアップロードする必要はありません。メンテナンス作業を減らすためには、既存の外部データベースに接続したり、ユーザーに自分のアカウントを作成させたりするなど、手動でのメンテナンスを必要としない認証方法をまず検討する必要があります(自己登録)。詳細については、認証を参照してください。

video
ユーザーを一括アップロードしてコースに追加する方法

2 アップロードユーザーファイルのファイル形式

アップロードユーザーファイルのフィールドはコンマ(またはその他の区切り文字)で区切られていますが、スペースはありません。最初の行には有効なフィールド名が含まれています。残りの行(レコード)には各ユーザーに関する情報が含まれます。

ヒント。フィールド情報には、引用符やカンマなどの特殊文字を使用しないようにしてください。大規模なアップロードを行う前に、1つのレコードのみでファイルをテストします。

ヒント:スプレッドシートプログラムを使用して、必要な列とフィールドを含むファイルを作成することができます。その後、ファイルを「CSV(カンマ区切り)」として保存します。これらのファイルは、検証のために簡単なテキストエディタ(例:メモ帳++)で開くことができます。

2.1 テスト用の有効なアップロードファイル

・サイト管理/ユーザー/ユーザーのアップロードから、テキストの例(.csv)ファイルが利用可能です。これは、ダウンロードして、あなたのニーズに合わせて適応させることができます。

username,firstname,lastname,email

student1,Student,One,s1@example.com

student2,Student,Two,s2@example.com

student3,Student,Three,s3@example.com

・追加フィールドは以下のように追加することができます。コースとコホートはすでに手動で作成されている必要があります。

username,firstname,lastname,email,course1,group1,cohort1

student1,Student,One,s1@example.com,math102,groupA,cohortZ

student2,Student,Two,s2@example.com,math102,groupB,cohort Y

student3,Student,Three,s3@example.com,math102,groupA,cohortZ

3 含めることができるユーザーフィールド

ヒント:初めてファイルのアップロードを試みる前に、1人のユーザーで使用することを提案したフィールドを含むファイルをテストすることを強くお勧めします。

3.1 必須フィールド

これらは必須のユーザー識別フィールドです。

username,firstname,lastname,email

有効性のチェックは以下のために実行されます。

・ユーザー名はアルファベット小文字、数字、ハイフン '-'、アンダースコア '_'、ピリオド '.'、アットサイン '@' のみを含むことができます。
・電子メールは、フォームにあります: name@example.com

3.2 パスワード

アップロード画面の「新規ユーザーパスワード」の設定が「必要に応じてパスワードを作成し、メールで送信する」に設定されている場合、「パスワード」フィールドはオプションですが、設定が「ファイル内の必須フィールド」に設定されている場合は必須です。

含める場合は、サイトのパスワードポリシーの要件を満たしている必要があります。

特定のユーザーのパスワードを強制的に変更するには、パスワードフィールドを「changeme」に設定します。省略した場合は、各ユーザーに対してパスワードが生成され(次のCronジョブの間に)、ウェルカムメールが送信されます。歓迎メールのテキストは、サイト管理 > 言語 > 言語のカスタマイズの言語設定で、'newusernewpasswordtext'という文字列識別子を使用しています。

3.3 オプションのユーザーフィールド

注意: フィールド内のカンマは &#44 としてエンコードされなければなりません - スクリプトはこれらをカンマに戻してデコードします。ヒント。2つの値のみを持つブール値フィールドには、falseには0を、trueには1を使用します。

デフォルト以外の値を提供するには、これらのオプションのユーザフィールドを1つ以上含めることができます。

institution,department,city,country,lang,auth,timezone,idnumber,icq,phone1,phone2,address,url,description,mailformat,maildisplay,maildigest,htmleditor,autosubscribe,interests,theme

これらのほとんどは、ユーザープロファイルフィールドまたはユーザープリファレンスフィールドで、ユーザープロファイルに属しており、ユーザーまたは手動で作成する際に入力されます。しかし、一部は特定のフォーマットを必要とします。

詳細は追加の名前フィールドを参照してください。注意すべき点は以下の通りです。

国 - AU,ES,GB,USなど、大文字で国の2文字コードを使用してください。これらはすべて大文字です。国コードとして "au "や "es "や "USA "を使用すると、データベースエラーになります。ある国の2文字コードがわからない場合は、ISOウェブサイトの国名とコード要素のリストを参照してください。よくあるエラーは、United KingdomにUKを使うことです。

lang - Moodle言語パックで定義されている2文字 (または拡張4文字) コードを使用してください (例: en, es, en_us, de, サイト管理 > 言語 > 言語パック)。

auth - サイトがLDAPのような代替認証方法を使用している場合、authフィールドは使用されなければなりません。プラグイン > 認証で定義されているショートネームコードを様々なタイプに使用してください。authカラムを含まない場合、新しく作成されたユーザーは手動アカウントタイプで作成されます。

csvファイルで "auth "を "nologin "に設定すると、以下のようになります。

timezone - ゾーン/地域の観点から、ロケーションの設定で見られるフォーマットにする必要があります。入力は大文字と小文字を区別しますので、ヨーロッパ/ロンドンは機能しますが、ヨーロッパ/ロンドンは機能しません。

注意:必要なもの:mailformat、maildisplay、htmleditor、autosubscribeの設定

maildigest コースや強制購読のフォーラムからの大量のメールをユーザーが受信しないようにするには、maildigestを使用します。このフィールドのオプションは0 = ダイジェストなし、1 = 完全なダイジェスト、2 = 件名のみのダイジェストです。

maildisplay は、ユーザーのメール表示オプションを設定することができます。このフィールドのオプションは0 = 非特権ユーザーから私のメールアドレスを隠す、1 = 全員に私のメールアドレスを見せる、2 = 他のコースメンバーだけに私のメールアドレスを見せる、です。

theme ユーザーテーマは、'classic'、'boost'、または他のインストールされているテーマの名前を使用して追加することができます。値はテーマのshortnameでなければなりません。例えば、'Boost'ではなく'boost'、'Fordson'ではなく'Fordson'などです。

3.4 カスタムプロファイルのフィールド名

これらはオプションであり、あなたのサイトでカスタムプロファイルフィールドを作成したかどうかに依存します。ファイル内のヘッダーの名前は、'profile_field_xxxxx' という形式になります。

フィールド名は、プロファイルフィールドの短縮名と一致している必要があります。そのため、例えばカスタムプロファイルフィールドの短縮名がすべて大文字、例えばDOBの場合は、 profile_field_dobではなく、 profile_field_DOBのヘッダを使用して大文字小文字を一致させます。同様に、Dobのような大文字小文字が混在するショートネームの場合は、 profile_field_Dobのヘッダを使うべきです。 (例外として、ショートネームがすべて小文字の場合は、どのような大文字小文字でもフィールドヘッダで動作しますが、これは歴史的な気まぐれです。)

profile_field_xxxxx

例です。カスタムフィールド「ジャンル」を作成するには、新しいフィールドにショートネーム「ジャンル」を記述し、.csvファイルのヘッダーに「profile_field_genre」と記述する必要があります。

日付であるカスタムプロファイルフィールドの場合、ISO標準フォーマットYYYY-MM-DD、例えば2014-06-19を使用すると、インターフェイス内で適切にローカライズされます。例えば、雇用日のためのdohireと呼ばれるフィールドは、フィールドは次のようになります。

username,firstname,lastname,email,profile_field_dohire
blumbergh,Bill,Lumbergh,blumbergh@example.com,1990-02-19
pgibbons,Peter,BGibbons,pgibbons@example.com,1996-06-05
tsmykowski,Tom,Smykowski,tsmykowski@example.com,1970-01-01 

メニューであるカスタムプロファイルフィールドの場合、定義した通りにフィールドからメニューリストの対応する値を使用します。例えば、カスタムフィールド'corporatedivision'に'Management'、'Development'、'Training'の3つの値のうちの1つを設定したとします。そのフィールドの値として、これらの3つの単語のうちの1つを挿入します(例: 'Training')。例えば、以下のようになります。

username,firstname,lastname,email,profile_field_corporatedivision
blumbergh,Bill,Lumbergh,blumbergh@example.com,Management
pgibbons,Peter,BGibbons,pgibbons@example.com,Development
tsmykowski,Tom,Smykowski,tsmykowski@example.com,Training 

3.5 特殊なユーザー変更フィールド

ユーザーアカウントの管理には、オールドユーザー名、削除されたユーザー名、サスペンドされたユーザー名の3つの特殊なフィールドを使用します。詳細は以下を参照してください。

3.6 登録フィールド

手動登録を使用して既存のコースにユーザーを登録することができます。手動登録のみがこの方法で行われます。コースで手動登録が無効になっている場合、登録は行われません。

このタイプのアップロードファイルのフィールドを使用します。

course1,type1,role1,group1,enroltimestart1,enrolperiod1,enrolstatus1,course2,type2,role2,group2,enroltimestart2,enrolperiod2,enrolstatus2

などのように、ヘッダフィールドには数字の接尾辞をつけなければなりません。

見出しのフィールドには、type1,role1,group1,enrolperiod1,enrolstatus1 のような数字の接尾辞をつけなければなりません。1つのコースだけの登録であっても、見出し名には1という数字を使用しなければなりません。course,role1 などのように、数字のないむき出しの見出しは使用しないでください。

course#はコースの短縮名で、これがあればユーザはそのコースに登録されます。コースのフルネームを使用しないでください。このフィールドは登録を成功させるための唯一の必須フィールドです。他の項目はすべて任意です。

type#は登録に使用するロールを設定します。値1はデフォルトのコースロール、2はレガシーの教師ロール、3はレガシーの非編集教師です。

role#はロールを直接指定するために、ロールの短縮名またはロールIDのいずれかを使用することができます(ロールの数値名はサポートされていません)。通常は、Users > Permissions > Define rolesで定義されているロールの短縮名であるロール名を使用します(例:student、editingteacher)。ロール欄が省略されている場合、ユーザーはデフォルトのロールでコースに登録されます。

group#は名前またはIDを使用してコース内のグループにユーザーを割り当てるために使用することができます(数値のグループ名はサポートされていません)。注意: グループがまだ存在しない場合、グループが作成されます。

enroltimestart#は各コースの登録開始時刻を設定するために使用することができます。ここで明示的に設定されていない場合、登録開始時刻は今日に設定されます。

enrolperiod# は各コースの登録期間を日単位で設定するために使用することができます。ここに明示的に設定されていない場合、すべてのユーザはコースの手動登録メソッドで設定された期間を取得します (デフォルトは無制限を意味する0です)。

enrolstatus#はオプションで、デフォルトではすべての新規登録されたユーザーはアクティブに設定されます。もし値が1の場合、コース内のユーザーを一時停止します。もしユーザーが以前に非アクティブ/一時停止に設定されていた場合、値が0の場合は一時停止を解除して再びアクティブにします。

3.7 コホートメンバーの割り当て

ユーザー名」と「コホートID」の2つのフィールドだけで、既に存在する任意のコホートにユーザーを割り当てることができます。これは、ユーザーのファーストネーム、ラストネーム、メールアドレスが必要な通常のケースの例外であることに注意してください。

cohort# は使用するフォームで、コースへの登録と同様に、各ヘッダに番号を追加しなければなりません。

内部のコホートID番号または既存のコホートの非数値コホートIDを使用しなければなりません; フルネームは使用できません。フルネームを使用してはいけません(コホートIDは、通常「ショートネーム」として他の場所で知られているものであることに注意してください)。

以下にCSVファイルのサンプルを示します。

username,cohort1,cohort2
学生1,看護,2016年度クラス
学生2, 看護学科, 2014年度クラス
学生3, 看護学科, 2014年度クラス

3.8 MNet

既存の MNetusers は,フィールドヘッダ mnethostid を使用して,以下のようにコース,グループ,コホートに追加することができます。

コースへの登録:ユーザー名+mnethostid+必須コース
グループへの追加:ユーザー名+mnethostid+コース+グループ必須
コホートへの追加: username+mnethostid+コホート必須
アカウントの一時停止/復活: username+mnethostid+suspended 必須

それ以外の操作はすべて無視されます。ユーザーの追加、削除、更新(名前やメールアドレスの変更、プロフィールフィールドの変更など)はできません。

3.9 ステムの役割を設定する

ユーザーは、サイト管理 > ユーザー > 権限 > システムコンテキストが定義されているロールのロールの定義で定義されているシステムロールの短縮名を使用して、すでに定義されているシステムロールに割り当てることもできます。

sysrole1,sysrole2,sysrole3

ユーザーはそのロールの短縮名を入力することで、システムロール(通常はマネージャーまたはコース作成者)にアップロードすることができます。他のロールは、'システム'コンテキストで既に割り当てられている場合にのみアップロードできます。カスタムロールの作成を参照してください。sysrole2、sysrole3などのフィールドを使用して複数のロールを割り当てることができます。番号のサフィックスは、登録フィールドの番号のサフィックスとは関係がないことに注意してください。番号の接尾辞は、登録フィールドの番号の接尾辞とは関係がないことに注意してください。

システム・ロールの割り当て解除 ユーザは、そのロールの短縮名の前にマイナス記号を入力することで、与えられたシステム・ロールから削除することもできます。'-'. そのユーザが現在そのロールに割り当てられている場合、そのユーザはそのロールから削除されます。ユーザーが現在そのシステム・ロールに割り当てられていない場合、フィールドの値は無視されます。ただし、フィールド値はシステム上に存在するシステム・ロールを参照しなければならず、そうでない場合はエラーが発生します。

500px-GlobalRoles1.png
グローバル/システム・ロールを持つユーザをアップロードするためのファイルの例

4 ユーザープロセスのアップロード

  1. アップロード用ファイルの作成
  2. サイト管理 > ユーザー > アカウント > ユーザーのアップロードに移動します。
  3. アップロードするファイルを追加
  4. ユーザーのプレビューをアップロードする - 設定とデフォルトのユーザープロファイル設定を確認する
  5. ユーザーのプレビューをアップロードする - "ユーザーをアップロード "をクリック
  6. ユーザーの結果をアップロードする - ユーザーのリスト、アップロード時に行われた例外、ユーザー数の概要を表示します。
  7. ユーザーの結果をアップロードする - "Continue "をクリックします。
  8. ユーザーのアップロード画面に戻る

5 ユーザープレビューの更新

アップロードの動作をより良く制御するために、様々な設定があります。これらの設定は "アップロードユーザーのプレビュー "ページにあります。

警告: 既存のアカウントを更新する際にエラーが発生すると、ユーザーに悪影響を及ぼす可能性があります。更新するオプションを使用する際には注意してください。

5.1 アップロードタイプ

アップロードタイプは、既存のアカウントをどのように扱うかを指定します。

新規のみ追加、既存のユーザーをスキップ
はデフォルトのMoodleアップロードタイプです。これはアップロードされたファイル内のそれぞれの新しいレコードに対して新しいユーザアカウントを作成します。アップロードされたファイル内で既存のユーザ名が既存のユーザ名と一致する場合、そのレコードはスキップされます。既存のユーザアカウントをスキップすることで、既存のレコード内のデータには触れず(「新規ユーザを追加して既存のユーザを更新する」オプションとは対照的です)、2番目の新しいユーザアカウントは作成されません(「すべて追加して、必要に応じてユーザ名に番号を追加する」オプションとは対照的です)。

必要に応じてユーザー名に番号を追加します。
アップロードされたファイルの各レコードに対して新しいユーザーアカウントを作成します。既存のユーザーアカウントが見つかった場合は、ユーザー名に番号が付加された新しいアカウントが作成されます。例えば、ユーザ名 'jsmith' のユーザアカウントが既に存在し、アップロードされたファイルの新しいレコードにユーザ名 'jsmith' のレコードが含まれている場合、ユーザ名に 1 が付加された追加のユーザアカウントが作成され、ユーザ名 'jsmith1' が生成されます。

新規ユーザの追加と既存ユーザの更新
は、アップロードされたファイル内の新しいユーザーごとに新しいユーザーアカウントを作成します。同じユーザー名の既存のユーザーアカウントが見つかった場合、アップロードされたファイル内のデータによってアカウント情報が更新されます。

既存のユーザーのみを更新する
はアップロードされたファイルで見つかった新しいユーザーを無視し、一致するユーザー名のレコードがアップロードされたファイルで見つかった場合はユーザーアカウントを更新します。

5.2 新しいユーザーのパスワード

新しいユーザアカウントを作成する際、Moodleは新しいパスワードを作成するか(パスワードが提供されていない場合)、アップロードされたファイルにパスワードを要求することができます。

必要に応じてパスワードを作成し、Eメールで送信してください
は、アップロードされたファイルで提供されていない場合は、新しいユーザーアカウントごとにランダムなデフォルトパスワードを作成し、ユーザーにユーザー情報と新しいパスワードを電子メールで送信します。

ファイルに必須のフィールド
を使用するには、アップロードされたファイルにパスワードが提供されている必要があります。パスワードが提供されていない場合はエラーが発生し、ユーザーアカウントは作成されません。このユーザー情報やパスワードの通知はユーザーに送信されません。

5.3 既存のユーザーの詳細

既存のユーザ詳細オプションは、アップロードタイプが既存のユーザアカウントの更新を許可している場合にのみ利用可能です。このオプションは、既存のユーザのユーザ詳細情報をMoodleがどのように処理するかを指定します。

変更はありません
は、アップロードされたユーザー詳細データを無視し、既存のユーザーアカウントデータを変更せずに残します。
ファイルでオーバーライド
既存のユーザーアカウントのデータを、アップロードされたファイルで提供されたデータで上書きします。
ファイルとデフォルトで上書き
は、アップロードされたファイルで提供されたデータで既存のユーザーアカウントのデータを上書きし、アップロードされたファイルにデータが提供されていない場合は、既存のユーザー詳細のデフォルト値を埋めます。
ファイルから欠落しているデータを入力し、デフォルトに
は、フィールドが空の場合(まだデータが含まれていない場合)はアップロードされたファイルで提供されたデータを既存のユーザーアカウントに追加し、アップロードされたファイルでデータが提供されていない場合は既存のユーザー詳細の既定値を埋めます。

5.4 既存のユーザーのパスワード

既存ユーザーのパスワードオプションは、「既存ユーザーの詳細」の設定を「ファイルで上書き」に設定している場合に表示されます。これは、既存のユーザーアカウントのパスワードデータをどのように扱うか、変更するか、そのままにしておくかを指定します。これは、本当にユーザーのパスワードを大量に変更したい場合のちょっとした保険です。

変更しない
アップロードされたユーザーファイルのパスワードフィールドを無視し、既存のユーザーアカウントのパスワードをそのままにします。
アップデート
既存のユーザーアカウントのパスワードをアップロードされたファイルで提供されたパスワードで上書きします。

5.5 パスワードを強制的に変更する

パスワード変更を強制するオプションは、ユーザーアカウントにタグを付けるタイミングを指定し、次回のログイン時にユーザーのパスワード変更を要求するようにします。

弱いパスワードを持つユーザ
ユーザー アカウントにサイトのパスワード ポリシーで定義された弱いパスワードがある場合、ユーザーは次回のログイン時にパスワードの変更を余儀なくされます。サイトにパスワードポリシーがない場合、このオプションは表示されません。
なし
アップロードされたファイル内のユーザは、ユーザの次回のログイン時にパスワードの変更を余儀なくされることはありません。
すべて
アップロードされたファイル内のすべてのユーザーは、ユーザーの次回のログイン時にパスワードの変更を強制されます。

5.6 名前の変更を許可する

アップロードされたファイルに特別なオールドユーザ名フィールドが含まれている場合、オールドユーザ名から新しいユーザ名にユーザー名を変更することができます。デフォルトの設定では、リネームを許可しないようになっています。ユーザー名を変更すると、ログイン時に新しいユーザー名を使用する必要があることに注意してください。

いいえ
は古いユーザ名フィールドを無視し、既存のユーザアカウントのユーザ名フィールドを変更せずに残します。
はい
を使用すると、アップロードされたファイルのユーザー名欄で提供されたデータによって、既存のユーザーアカウントのユーザー名を変更することができます。古いユーザ名が検索され、ユーザ名欄で提供されたデータで更新されます。

5.7 削除を許可する

アップロードされたファイルに削除された特別なフィールドが含まれている場合、アップロードされたファイルを使用して既存のユーザーアカウントを削除することができます。デフォルトの設定では、削除を許可しないようになっています。ユーザー アカウントを削除すると、そのユーザーがログインできなくなることに注意してください。保護として、サイト管理者のユーザー アカウントをこの方法で削除することはできません。

いいえ
はアップロードされたファイルの削除された特別なフィールドを無視し、既存のユーザーアカウントを変更せずに残します。
はい
は、削除されたフィールドの値が1の場合に、既存のユーザーアカウントの削除を許可します。

5.8 アカウントの一時停止と有効化を許可する

アップロードされたファイルにsuspended特別フィールドが含まれている場合、アップロードされたファイルを使用して、既存のユーザーアカウントをサスペンドするかアクティブにする(unsuspend)ことが可能です。デフォルトの設定では、既存のユーザーアカウントのサスペンド/アクティブ化を許可しています。既存のユーザーアカウントを一時停止すると、そのユーザーがログインできなくなることに注意してください。

はい
は、suspendedフィールドの値が1の場合に、既存のユーザーアカウントを一時停止することを許可します。
いいえ
は、アップロードされたファイルのサスペンドされた特別なフィールドを無視し、既存のユーザーアカウントの状態を変更せずに残します。

5.9 メールアドレスの重複を防ぐ

メールアドレスが重複しているユーザーをアップロードすることは可能ですが、お勧めできません。デフォルトでは、重複したメールアドレスを持つユーザーをアップロードすることはできません。重複したメールアドレスを許可するには、Site administration ► Plugins ► Authentication ► Manage authentication. Allow accounts with same email "にチェックを入れます。その後、upload users画面で "Prevent email address duplicates "設定を変更することができます。

ただし、これはファイルアップロードにはお勧めできません。実装する前に、ユーザーのアップロードを十分にテストしてください。

詳細については、認証の管理に関するドキュメントページを参照してください。

はい
は、既存のユーザーアカウントがアップロードされたファイルのメール欄にあるメールアドレスと同じメールアドレスを既に持っている場合に、アップロードされたユーザーアカウントが作成されないようにします。
いいえ
を使用すると、既存のユーザーアカウントがアップロードされたファイルのメール欄に同じメールアドレスを持っている場合に、ユーザーアカウントを作成することができます。

5.10 ユーザ名の標準化

ユーザ名の標準化は、デフォルトではユーザ名をすべて小文字に変換し、不正な文字を取り除くために使用されます。ユーザ名を標準化しないことも可能ですが、そうすることは推奨されません。

はい
既存のユーザアカウントを更新したり、新しいユーザアカウントを作成する前に、アップロードされたファイルに含まれるユーザ名を標準化し、ユーザ名には小文字と数字のみが含まれるようにします。
いいえ
はアップロードされたファイルにあるユーザ名の標準化をスキップし、 新しく作成されたユーザ名や更新されたユーザ名がアップロードされたファイルにあるものと同じになるようにします (推奨しません)。

より技術的な説明をお探しの方のために、ユーザ名を標準化するプロセスは、文字がすべて UTF-8 (fix_utf8) でエンコードされていることを確認し、ユーザ名を小文字に変換してから、(サイト管理 > セキュリティ > サイトポリシー > ユーザ名に拡張文字を許可するがオンに設定されていない限り) アルファベットや数字以外の文字を削除して、次のようなものを使用します。

$username = preg_replace('/[^-.@_a-z0-9]/', '', $username).

5.12 バルクユーザーアクションの選択

アップロードされたファイルの処理が終了した後(すべての新しいアカウントが作成され、以前の設定で指定されたように既存のアカウントが更新されました)、それらのユーザーアカウントの一部を選択して、以下のような追加のバルクユーザーアクションを実行するオプションがあります。

・メールベースの自己登録で作成されたユーザーアカウントのうち、ユーザーがまだ確認していないものを確認する
・メッセージを送信する(メッセージングを有効にするにはメッセージングが必要です
・ユーザーアカウントの削除
・ページにユーザーの一覧を表示する
・ユーザーデータをテキスト、ODS、またはExcelファイル形式でダウンロードできます。
・ユーザーにパスワードを強制的に変更させる
・ユーザーをコホートに追加する

デフォルトでは、バルク ユーザー アクションではユーザーは選択されません。

選択されていない
バルクユーザーアクションのためにユーザーが選択されていない
新規ユーザー
新規に作成されたユーザーのみが、バルクユーザーアクションのために選択されます。
更新されたユーザー
バルクユーザーアクションでは、更新されたユーザーアカウントのみが選択されます。
全ユーザー
アップロードされたファイル内で見つかったすべてのユーザー(既存の更新されたユーザーと新しく作成されたユーザーアカウント)は、バルクユーザーアクションのために選択されます。

5.13 デフォルト値

アップロードされたファイルに含まれていないいくつかのフィールドに対して、デフォルトのユーザー値を提供することができます。いくつかのフィールドには以下のようなものがあります。

・電子メールの表示
・フォーラムの自動配信
・市町村
・アイディーナンバー
・機関
・部署

もっと....リンクをクリックすると、他のデフォルトのユーザープロファイルフィールドが表示されます。ここでは、認証方法、国、言語、タイムゾーンを含む17の異なるフィールドを設定することができます。言語、タイムゾーン、その他の標準的なユーザープロファイルフィールドを含む17のフィールドを設定することができます。

その他のフィールド

ユーザーのためにカスタムプロファイルフィールドを作成した場合は、ここに表示されます。

6 ユーザーの結果をアップロードする

ユーザーをアップロード」をクリックしてプレビュー設定を承諾すると、ユーザーのアップロード結果画面が表示されるはずです。

300px-Upload_users_results_2.0.JPG
結果画面。

この画面では、アップロードの過程で各ユーザーに行われた例外や変更が表示されます。例えば、ユーザー情報を更新していた場合は、更新された情報が表示されます。また、ユーザーが追加されていない場合は、その記録がハイライト表示されます。

画面には、アップロードまたは更新されたユーザーの数、弱いパスワードの数、エラーの数が表示されます。

7 ユーザーアップロードの高度な可能性

7.1 テンプレート

注意: このセクションは、Moodle 2.0のために必要に応じてチェックし、更新する必要があります。更新が完了したら、このノートを削除してください。

デフォルト値は以下のコードが許可されているテンプレートとして処理されます。

・l - 最後の名前に置き換えられます。
・f - は、最初の名前に置き換えられます。
・u - はユーザ名に置き換えられます。
・%% - は %% に置き換えられます。

パーセント記号(%)と任意のコード文字(l、f、u)の間には、以下の修飾子が使用できます。

・(-) マイナス記号 - コードレターで指定された情報は小文字に変換されます。
・(+)プラス記号 - コードレターで指定された情報はUPPERCASEに変換されます。
・(~)チルダ記号 - コードレターで指定された情報はタイトルケースに変換されます。
・10進数 - コードレターで指定された情報は、それだけの文字数に切り捨てられます。

例えば、ファーストネームがJohnでラストネームがDoeの場合、指定されたテンプレートで以下の値が得られます。

・l%f = DoeJohn
・l%1f = DoeJ
・l%+f=doeJOHN
・f_%-l = john_doe
http://www.example.com/~%u/ の結果は http://www.example.com/~jdoe/ (ユーザ名が jdoe または %-1f%-l の場合) です。

テンプレート処理はデフォルト値に対してのみ行われ、CSVファイルから取得された値に対しては行われません。

正しいMoodleユーザ名を作成するために、ユーザ名は常に小文字に変換されます。さらに、サイトポリシーページの「ユーザ名に拡張文字を許可する」オプションがオフの場合、文字、数字、ダッシュ(-)およびドット(.)以外の文字は削除されます。例えば、ファーストネームがJohn Jr.でラストネームがDoeの場合、ユーザー名%-f_%-lは、「ユーザー名の拡張文字を許可する」がオンの場合はjohn jr._doeとなり、オフの場合はjohnjr.doeとなります。

新しいユーザー名の重複処理 "の設定が "Append counter "に設定されている場合、テンプレートによって生成された重複したユーザー名に自動インクリメントカウンタが追加されます。例えば、CSVファイルにJohn Doe、Jane Doe、Jenny Doeという名前のユーザーが明示的なユーザー名なしで含まれている場合、デフォルトのユーザー名は%-1f%-lで、「新しいユーザー名の重複処理」の設定がAppend counterに設定されていると、生成されるユーザー名はjdoe、jdoe2、およびjdoe3になります。

7.2 アカウントの削除

削除されたフィールドが存在する場合、そのフィールドに対して値1を持つユーザは削除されます。この場合、ユーザー名以外のフィールドは省略しても構いません。アップロード後は、必ず「アップロードの種類」を「既存のユーザーのみを更新する」に変更し、「削除を許可する」オプションを「はい」に変更してください。

ヒントです。同様のフィールドに「Suspended」があります。これにより、ユーザーアカウントを完全に削除するのではなく、一時的に無効にすることができます。

アカウントの削除とアップロードは、1つのCSVファイルで行うことができます。例えば、以下のファイルは、Tom Jonesというユーザーを追加し、reznortというユーザーを削除します。

username,firstname,lastname,deleted
jonest,Tom,Jones,0
reznort,,,1

8 エンコードファイル形式

最初のアップロードユーザー画面では、プルダウンリストからファイルのエンコーディング形式を選択することができます。UTF-8(デフォルト)、ASCII、ISO-8859-1~ISO-8859-11、または36種類以上のフォーマットから選択できます。

9 ヒント

9.1 スプレッドシート

Excelなどの表計算プログラムを使用して.csvファイルを作成する場合は、アップロードする前にテキストエディタで出力結果を確認してください。最終ファイルを保存する前に情報の列を追加したり削除したりした場合、空のフィールドから各行の末尾にカンマが表示されることがあります。また、文字エンコーディングも確認してください。csvファイルは、ユーザーアカウントをアップロードするために使用できるシンプルなテキストファイル(ASCIIまたはUnicode)です。

Excel は、- (マイナス) または + (プラス) で始まるパスワードをゼロとして変換します。.csvとして保存して "Yes "とした場合でも、"この形式を維持し、互換性のない機能は省く" ゼロになるとアップロード処理が停止してしまうので、アップロード前に確認しておきましょう。

エクセルで数式を使ってフィールドを作成している場合(例えば、ユーザー名を作成するための連結関数など)は、数式の入ったセルをコピーし、値をチェックして特殊なペーストを使ってcsvファイルとして許容できるデータにすることを忘れないようにしましょう。

また、データフィールドの最後に末尾にスペースがある場合もアップロードに失敗します。多くの場合、これは単純な「" "を検索して、" "で置換するだけでは除去できません。情報がウェブソースからコピーされている場合は、区切りのないスペースが含まれている可能性があり、これがアップロードを正しく完了させない原因となります。これらの見えない空白を見つけるには、Excelの検索と置換機能を使用します。検索フィールドで alt キーを押しながら 0160 と入力します。置換フィールドは空白のままにしておきます。

9.2 フィールドサイズの制限

フィールドによっては、データベースのフィールドで定義されているように、最大文字長が設定されているものもあります。通常、ファイルはプレビューリスト画面にインポートされますが、処理は終了しません。デバッグをオンにすると、長すぎるフィールドが表示されます。エラーは「ユーザーが追加されていません - エラー」となります。

いくつかの一般的なフィールドの文字数でのサイズは、現在(3.

・ユーザー名 - 100
・パスワード - 255
・idnumber - 255
・名字 - 100
・姓 - 100
・最後の名前電話 - 255
ンファーストネームフォネティック - 255
・middlename - 255
・代替名 - 255
・機関 - 255
・部門 - 255
・アドレス - 255
・シティ - 120
・icq -15
・スカイプ - 50
・ヤフー - 50
・狙い目
・msn - 50
・電話1~20
・電話2 - 20

9.3 ここに記載されているすべてのユーザーフィールド

アップロードファイルで有効なユーザーフィールドは以下の通りですが、作成したカスタムフィールドを除いては、以下の通りです。

firstname,lastname,username,email,password,auth,idnumber,institution,department,city,country,timezone,lang,mailformat,maildisplay,maildigest,htmleditor,autosubscribe,skype,msn,aim,yahoo,icq,phone1,phone2,address,url,description,descriptionformat,interests,oldusername,deleted,suspended,alternatename,lastnamephonetic,firstnamephonetic,middlename

コース情報への登録は

course1,type1,role1,group1,enrolperiod1,enrolstatus1

ここで、各登録は番号でグループ化されています。

9.4 ケイパビリティ

一部のユーザーにこの機能へのアクセスを許可するために、限定的なロールを作成することをお勧めします。システム/サイトレベルで以下のケイパビリティを許可するロールを作成してください。

・moodle/site:uploadusers
・moodle/role:assign

そして

・この新しいロールの'ロールの割り当てを許可'タブで、アップロードする必要のあるロール、特に学生、教師、非編集教師、およびユーザを割り当てるためにアップロードで使用されるその他のカスタムロールを割り当てることを許可してください。

特に、moodle/role:assignケイパビリティを忘れないでください(たとえこれらのユーザがユーザを登録するコースにロールを持っていたとしても、機能しません)。

10 関連項目

フラットファイル登録
アップロードユーザーファイルにカスタムユーザープロファイルフィールドに関するデータを含める方法の詳細については、ユーザープロファイルフィールドを参照してください。
コースのアップロード

フォーラムでの議論。

カスタムロールにユーザーをアップロードする
フラットファイルcsvを使用したMatriculacion - スペイン語でのディスカッション

カテゴリ アカウント サイト管理

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む