20201024のPHPに関する記事は13件です。

Moodle 3.9 マニュアル - コホートをアップロードする

原文

コホートをアップロードする

管理者は、管理 > サイト管理 > ユーザー > アカウント > コホート > コホート > コホートのアップロードで、CSV(カンマで区切られた値)形式のテキストファイルから複数のコホートをアップロードすることができます。コホートは、システム(サイト全体)コンテキストまたはコースカテゴリコンテキストの両方で作成することができます。

コホートが作成されると、適切にフォーマットされた.CSVファイルを使用して、ユーザーのアップロードページから新しいユーザーを追加することができます。

内容は以下の通りです。

1 コホートプロセスのアップロード
1.1 設定
1.1.1.1 ファイル
1.1.2 CSVの区切り文字
1.1.3 エンコーディング
1.1.4 デフォルトのコンテキスト
2 アップロードコホートファイルのファイル形式
2.1 テスト用の有効なアップロードファイル
2.2 含めることができるフィールド
3 関連項目

1 コホートプロセスのアップロード

手順の概要は以下の通りです。

  1. アップロード用のコホートファイルを作成する(「名前」欄に新しいコホートの名前を改行したCSVテキストファイル
  2. 管理 > サイト管理 > ユーザー > アカウント > コホート > コホートのアップロードに移動
  3. アップロードするファイルを追加
  4. コホートプレビューのアップロード - 設定を確認し、エラーがないか確認してください。ファイルでエラーが報告された場合は、必要に応じて修正してください。
  5. コホートのアップロード - "コホートのアップロード "をクリックします。
  6. コホート結果のアップロード - 作成されたコホートの数を表示します。
  7. コホートの結果をアップロードする - "Continue "をクリックしてください。
  8. ユーザーのアップロード画面に戻る

1.1 設定

1.1.1.1 ファイル

アップロードするコホートデータを含むCSV形式のテキストファイルです。コホートアップロードファイルの詳細については、「アップロードするコホートファイルのファイル形式」のセクションを参照してください。

1.1.2 CSVの区切り文字

コホートアップロードファイルのフィールド間の区切り文字として使用される文字。区切り文字は、様々なフィールドを1行で区切ることができます。デフォルトでは、カンマ (',') が区切り文字として使用されますが、他のオプションを使用することもできます。

,- はカンマ文字をフィールドの区切り文字として使用します。

;- はセミコロン文字をフィールドの区切り文字として使用します。

:- コロン文字をフィールドの区切り文字として使用します。

\t- は、フィールドの区切り文字として

1.1.3 エンコーディング

アップロードするコホートファイルの文字コードを指定することができます。デフォルトの文字エンコーディングはUTF-8です。

1.1.4 デフォルトのコンテキスト

利用可能なコンテキストのリストから、使用するデフォルトのコンテキストを指定できます。デフォルトのコンテキストは、システムコンテキスト(つまりサイト全体)です。コースカテゴリのリストが表示され、アップロードされたコホートファイルにコースカテゴリが指定されていない場合は、それらのコースカテゴリの1つをデフォルトコンテキストとして選択することができます。もしcontextid(または、利用可能なフィールドのいずれかでcontextid) が提供されていれば、その値が使用されます。 しかし、特定のコホートに対してコンテキストが提供されていない場合は、デフォルトのコンテキストが使用されます。

2 アップロードコホートファイルのファイル形式

アップロードされたコホートCSVファイルは、カンマ(または他の区切り文字)で区切られたフィールドを持っています。最初の行には、有効なフィールド名が含まれています(できれば小文字で)。残りの行(レコード)には、それぞれの新しいコホートに関する情報が含まれます。

ヒント。フィールド情報には、引用符やカンマなどの特殊文字を使用しないようにしてください。大規模なアップロードを行う前に、1つのレコードだけでファイルをテストしてください。 ヒント:表計算プログラムを使用して、必要な列とフィールドを持つファイルを作成することができます。そして、そのファイルを「CSV(カンマ区切り)」として保存します。これらのファイルは、検証のために簡単なテキストエディタで開くことができます。

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

ここでは、単純な有効なアップロードコホートファイルの例を示します: (ファイルの最初の行のカラムヘッダは、データ/ユーザの詳細の残りの部分と区別するために、この例では太字で強調表示されています)

name,idnumber,description
Class of 2019,2019,Members of the Class of 2019
Class of 2020,2020,Members of the Class of 2020

2.2 含めることができるフィールド

必須項目:
name- 作成されるコホート名

オプションのフィールド: デフォルト以外の値を指定するには、以下のオプションフィールドを1つ以上含めます。
contexid- を使用して、アップロードするコホートのコンテキスト ID 番号を指定します。例えば、特定のコースカテゴリのコンテキストID番号です。
idnumber- アップロードするコホートの ID 番号を指定するために使用します。
description- アップロードするコホートの説明に使用します。
descriptionformat- 説明のテキスト形式を指定するために使用します。デフォルトでは、descriptionformatは推奨値の1 (FORMAT_HTML)に設定されていますが、0 (FORMAT_MOODLE)と2 (FORMAT_PLAIN)の値も利用可能です。これらのフォーマットの値は lib/weblib.php で定義されています。
visible- を使用して、アップロードするコホートを表示するか(1)、しないか(0)を指定します。

追加フィールド : 必要に応じて、通常は使用されないが利用できる追加フィールドがいくつかあります。追加フィールドは通常、他のテーブル(コースカテゴリやコンテキストテーブルなど)で情報を検索する必要があります。追加フィールドはコースカテゴリのコンテキストIDを見つける別の方法を提供します。これらの追加フィールドを使用する際には、少し注意することをお勧めします。追加フィールドのリストには以下が含まれます。

context - を使用して、アップロードするコホートごとのコンテキスト名を指定します。
category- を使用して、アップロードするコホートごとのカテゴリ名を指定します。例えば、特定のコースカテゴリのカテゴリ名などです。
category_id- を使用して、アップロードするコホートの各コホートのカテゴリのコースカテゴリID(idnumberではありません)を指定します。例えば、特定のコースカテゴリのコースカテゴリIDです。
category_idnumber- を使用して、アップロードするコホートの各コホートのカテゴリのコースカテゴリID番号(IDではありません)を指定します。例えば、特定のコースカテゴリのコースカテゴリID番号です。
category_path- を使用して、アップロードする各コホートのカテゴリのコースカテゴリパスを指定します。例えば、特定のコースカテゴリのコースカテゴリパスなどです。

3 関連項目

コホート
一括でコホートを作成する:(翻訳準備中)

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

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

Moodle 3.9 マニュアル - アカウント管理

原文

アカウント管理

管理者は、管理 > サイト管理 > ユーザー > アカウントでユーザーアカウントに関する様々なタスクを実行することができます。以下のリンクは、より詳細な情報を提供しています。

ユーザーの一覧を見る - ユーザーアカウントの検索、検索、編集方法
バルクユーザーアクション - 大規模なユーザーグループに対してグローバルにメッセージ、確認、ダウンロード、その他のアクションを実行する方法
新しいユーザーを追加する - 1つの個々のユーザーアカウントを作成する方法
・ユーザーのデフォルト設定 - メールの表示、フォーマット、ダイジェストタイプ、フォーラムの自動購読とフォーラムのトラッキングの設定
ユーザープロフィールのフィールド - カスタマイズされたプロファイルフィールドを作成する方法
コホート - ユーザーのコホートを作成する方法
ユーザーをアップロードする - 新規ユーザーアカウントを一括作成する方法
ユーザーの写真をアップロードする:(翻訳準備中) - ユーザーのプロフィール写真を一括でアップロードする方法
追加の名前フィールド

関連項目

アカウントFAQ

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

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

PHP: ユーザー権限でapacheなDIRを削除

ユーザー権限しかなくて、Laravelのフォルダを単純に削除しようとすると、
storage以下所有者apacheのフォルダが消せないんですよねー

PHPPermission変更かけてやると消せるんですが、ハマリポイントがあったんで備忘録です。

chmod.php
<?php
function chmod_r($path) {
    $dir = new DirectoryIterator($path);
    foreach ($dir as $item) {
        if ($item->isDir() && !$item->isDot()) {
            //chomd()だとエラーがでたので。
            system('chmod 0777 ' . $item->getPathname());
            echo 'Dir : ' . $item->getPathname() . '<br>';
            //再帰的に変更
            chmod_r($item->getPathname());
        }
    }
}
//パーミッション変更したいフォルダをフルパス指定してください。
chmod_r('/var/www/html/laravel');
?>

こいつを実行できる場所(www以下等)においてブラウザから実行してください。
再帰的全フォルダのパーミッションが変更されていますので、rm -rf {フォルダ名} ですべてのapache所収者ディレクトリを消せるはずです!

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

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

Laravel composer ライブラリインストール時のメモリエラー

目的

  • Laravelで使うライブラリインストール時にメモリ系のエラーを解決した話をまとめる。

問題までの経緯

  1. 下記コマンドを実行してライブラリをインストールしようとした。

    $ sudo composer require league/flysystem-aws-s3-v3 ~1.0
    

問題

  • 下記のエラーが発生しライブラリをインストールすることができない。

    PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
    
    Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
    
    Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
    

問題解決までの経緯

  1. エラーに「このリンク見て!」って書いてあったから当該リングにアクセスしてみる。
  2. リンク先の指示に従い現在の割り当てられている設定のメモリを出力するコマンドを実行してみる。

    $ php -r "echo ini_get('memory_limit').PHP_EOL;"
    
  3. 「128M」と出力された確かにこれだと足りていない。

  4. php.iniファイルで割当メモリ設定を設定できるらしいので下記コマンドを実行してphp.iniファイルを開く。※php.iniファイルの場所は筆者の環境と異なる可能性があるので下記コマンドをただ実行してもphp.iniファイルを開けないかもしれない。(php.iniファイルの場所はこちらの方法で確認可能である→php.iniファイルの場所をターミナルで確認する

    $ sudo vi /etc/php.ini
    
  5. メモリ割り当て設定を無制限である-1に設定し保存して閉じた。

    /etc/php.ini
    ; 省略
    
    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit = -1
    
    ; 省略
    
  6. ライブラリインストールのコマンドを再度実行する。

    $ sudo composer require league/flysystem-aws-s3-v3 ~1.0
    
  7. 問題なくインストールする事ができた。

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

foreachで複数作ったbuttonタグでdivタグ全体をリンクにしてpostしたい!

こんにちは。クリスピーパンダです。
今回が初めての投稿ですが、早速行ってみましょう〜。

この記事で実現できること

foreach等のループ文で複数作ったform、divタグ、buttonタグで、buttonタグをdivタグ全体に広げて、リンク(button)を作成するものです。
イメージは、記事投稿サイトなどで記事表示する際に、たくさんできたカードの全体をボタンにして、postしようよって感じです。通常postはしないですが、ユーザーIDを送信したいよ!とかあるんで、そういう時に役立つ思います!

開発環境

OS:macOS Catalina
テキストエディタ:VSCode
フレームワーク:Laravel6
使用言語:HTML, CSS, JavaScript

実装

HTML

今回はLaravelなのでBladeですがHTMLと同じです。@foreachやroute('post.show')などはBladeでPHPを記述していますが、他のフレームワークでもループ文やaction先など指定すれば実装できます。

index.blade.php
@foreach($posts as $post)
  <form action="{{ route('post.show') }}" method="POST" name="post_show">
    <div class="linkbox">
      <p>{{ $post->title }}</p>
      <p>{{ $post->body }}</p>
      <input name="user_id" type="hidden" value="ここに送りたい値を記述">
      <button type="submit"></button>
    </div>
  </form>
@endforeach

これでpostのタイトルや内容が表示され、それを囲んでるdivタグ部分が次のCSSでリンク(ボタン)になります。
formタグ→divタグ→buttonタグの順番でコーディングしてください。

CSS

今回のHTML部分では、CSSの読み込みは省略していますが、CSSの読み込みも忘れずに行ってくださいね!

style.css
.linkbox {
    position: relative;
}
.linkbox button {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    /* buttonのスタイル削除 */
    background-color: transparent;
    border: none;
    cursor: pointer;
    outline: none;
    padding: 0;
    appearance: none;
}

まずはポジションを使用して、buttonタグを浮き上がらせて、buttonタグのスタイルをすべて削除することで、スケスケのbuttonタグが出来上がるというイメージです。

最後に

aタグで実装すればいいじゃん!と最初に思ったのですが、どうやらループ文で複数作成したaタグでpostすると、JavaScript等をかませないとだめみたいだったので、今回は簡単にbuttonタグで実装してみました。
aタグでもこんな感じで実装できるよ!やもっと簡単な方法あるよって方はぜひ教えて下さい!

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

Laravel-Excelのインストールにおけるエラーを解消する

なにがあったか

公式の手順通りにインストールしているはずが、いくつかのエラー(主に関連するライブラリ)に見舞われた。

インストール

開発環境が Laravel ver5.5.49 であるため、公式を参考にバージョン3.0を導入(phpのメモリ制限に引っかかるためリミットをなんとかしている)

$ COMPOSER_MEMORY_LIMIT=-1 composer require maatwebsite/excel:3.0

インストールが

killed

で終わっているのに気づかず次の手順に進んだりするとハマる(自分)。
――で、これはどうもDockerのメモリが足りないらしいので、自分はDocker DesktopのPerformanceからメモリを4GBまで増やした。

エラー

Excelファイルをダウンロードする実装自体は上記の手順でできてしまうが(スミマセン、うろ覚え)、このあとなんらかの事情で composer install を打った際に

  Problem 1
    - phpoffice/phpspreadsheet 1.15.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.15.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - Installation request for phpoffice/phpspreadsheet 1.15.0 -> satisfiable by phpoffice/

こういった『関連するライブラリがない』というエラーが次々に出てくる。ゴチャゴチャと関連するライブラリを順番にインストールしていったが、最終的に『Laravelのバージョンが合わん』と言われてしまった。すでにスタートしている開発環境でそれをやるのはわりとめんどくさいので困った。

解決

$ COMPOSER_MEMORY_LIMIT=-1 composer require maatwebsite/excel:3.*

バージョンの指定をやや緩くしたら解決した。
関連するライブラリをインストールしなければいけない点は同じだが、少なくとも「Laravelのバージョンが」と言われることはなくなって解決した(開発環境によっては違うポイントでエラーにハマる可能性はある)。

雑感

3.0 はダメなのに 3.* だとOKなのはなんでだろう?
バージョンアップでLaravelのバージョン依存が緩和されたのかな。。

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

Laravel-Excelでbladeのテンプレートを使って複数シートで作成する

概要

いろんな事務所に所属するバンドのデータを取得。bladeにテンプレートを作り、事務所ごとのデータをExcelファイルでダウンロードするというパターンを想定して実装する。テーブルはbladeにてテンプレートを作る。

Laravel-Excelのインストールの手順などは省く。
bladeでテンプレートを作って出力する方法は下記を参考。

Laravel-excel で帳票を出力する
https://qiita.com/ShibuyaKosuke/items/7e5e99c51546a578d97b

複数ファイルは出せないのか

最初はダウンロードする処理を foreach で回して事務所ごとにファイルをダウンロードする処理をすればいいだろうと安易に考えていたが、どうもそれはできないようで(ダウンロードする処理で return しなければならないため)、ファイルはひとつだが事務所ごとに複数シートで分けるということにした。
Laravel-Excel を使って複数シートでダウンロードする方法は公式サイトも含めて探せばいくつか見つかるが、bladeでテンプレートを作って出力するパターンのものは工夫して作らなければならなかった。

必要なファイル

以下4点のファイルを用意すれば作ることができる。
ディレクトリやファイル名は任意。
テンプレートとなるbladeは割愛する。

bandController.php
public function export()
{
// 中略

// 複数シートでのダウンロード
$view = \view('band_information.export')
    ->with('offices', $offices);
return (new MultiBookExport($view))->download("band_info.xlsx");
}
BandInfosExport.php
<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\Exportable;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;

class BandInfosExport implements WithMultipleSheets
{
    use Exportable;

    private $view;

    public function __construct(View $view)
    {
        $this->view = $view;
    }

    public function sheets(): array
    {
        $sheets = [];
        $i = 1;

        // 事務所数
        $count = count($this->view->offices);

        // 事務所の数だけシートを作る
        foreach ($this->view->offices as $office) {

            $sheets[] = new BandInfosSheet($office);

            if ($i === $count) {
                return $sheets;
            }
            $i++;
        }
    }
}
<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\WithTitle;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;

class BandInfosSheet implements FromView, WithTitle
{
    private $office;

    public function __construct($office)
    {
        $this->office = $office; 
    }

    public function view(): View
    {
        // 事務所に所属するバンドのデータをbladeのテンプレートに渡す
        return \view('band_information.export')
            ->with('informations', $this->office['band_informations']);        
    }

    public function title(): string
    {
        // シート名となる事務所名を取得
        return $this->office->name;
    }
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Moodle 3.9 マニュアル - コホート

原文

内容

1 コホートについて
2 コホートの作成
3 一括でコホートを作成する
4 まとめてコホートにユーザーを追加する
5 ユーザーをコホートにアップロードする
6 コホートの検索
7 カテゴリーコホートの管理
8 コホートのケイパビリティ
9 コホートをコースに登録する
9.1 コホートの手動登録
10 すべてのコホートメンバーにユーザーコンテキストロールを割り当てる
11 関連項目

1 コホートについて

コホートは、サイト全体またはコースカテゴリー全体のグループです。コホートの目的は、コホートのすべてのメンバーがコースに簡単に登録できるようにすることです。これはコホートシンク:(翻訳準備中)を使用して行うことができます。コホートシンクはその名の通り、コホートのメンバーとコース登録を同期させます。また、コホートを手動でコースに登録することもできます。
video
コホートの作成・追加方法

2 コホートの作成

コホートは、サイト管理者や他のユーザーが適切な権限を持って作成することができます。

  1. アクセス管理 > サイト管理 > ユーザー > アカウント > コホート

400px-Createcohort1.png
Createcohort1.png

  1. 追加ボタンをクリックします。ドロップダウンでは、あなたのコホートをサイトの「システム」全体で利用できるようにするか、名前のついたコースカテゴリで利用できるようにするかを選択することができます。

  2. コホートはデフォルトで教師に表示されますが、「表示」リンクのチェックを外すと、教師がコースで使用することはできません。

  3. 詳細を入力し、変更を保存します。

  4. 利用可能なコホートのリストのコホート名の反対側にある「割り当て」リンクをたどってください。

600px-cohortscreen.png
コホートスクリーン.png

  1. リストから潜在的なユーザーを選択し、追加ボタンをクリックします。

3 一括でコホートを作成する

  1. コホートは、サイト管理 > ユーザー > アカウント > コホート > コホート > コホートのアップロードから、システムへのcsvファイルのアップロード、または名前付きカテゴリへのアップロードで作成することができます。詳細については、コホートのアップロード:翻訳準備中ページを参照してください。
  2. カテゴリ管理者は、カテゴリの管理ブロックにあるCohortsリンクからコホートを作成するためのcsvファイルをアップロードすることができます。
  3. ファイルの例は以下の通りです。'Students 2014-15' コホートはシステム内に作成され、'History' コホートは(既に存在する)Humanitiesカテゴリ内に作成されます。

600px-cohortupload.png
cohortupload.png

4 まとめてコホートにユーザーを追加する

  1. アクセス管理 > サイト管理 > ユーザー > アカウント > 一括ユーザーアクション
  2. 適切なフィルタを設定してユーザーを検索
  3. 利用可能なリストから選択したリストにユーザーを追加する
  4. 選択したユーザーで「コホートに追加」を選択します。

5 ユーザーをコホートにアップロードする

管理者は、以下の手順で既存のコホートにCSVファイルを使ってユーザーをアップロードすることができます。

  1. アクセス管理 > サイト管理 > ユーザー > アカウント > ユーザーのアップロード
  2. 以下のフォーマットでテキストファイルをアップロードしてください。
username,password,firstname,lastname,email,cohort1
tomjones,Pass1234*,Tom,Jones,tomjones@example.com,year3
marysmith,Pass1234*,Mary,Smith,marysmith@example.com,year4

ここで year3 と year4 は既存のコホートのコホート ID です (名前ではありません)。

注意: ユーザが既にシステム上に存在する場合、ユーザ名と選択したコホートのユーザ名がcsvファイルにあればよいだけです。

ユーザがシステムにアップロードされると同時にコホートを作成することも可能です。

username,password, firstname,lastname,email,cohort1
jackbrown,Pass5678,Jack,Brown,jbrown@example.com,London Contingent

上記の例では、csv ファイルをアップロードすると、London Contingent という名前のコホートが作成されます。

6 コホートの検索

サイトに多数のコホートがある場合、利用可能なコホートを検索またはフィルタリングするために、コホートの検索ボックスにキーワードを入力することができます。

サイト管理] > [ユーザー] > [アカウント] > [コホート] からアクセスできる [すべてのコホート] 画面では、管理者がシステムおよびカテゴリのコホートを表示および検索することができます。

600px-AllCohortsscreen.png
AllCohortsscreen.png

7 カテゴリーコホートの管理

システムではなくカテゴリに対して作成されたコホートは、適切なカテゴリを選択し、管理 > カテゴリ(名前) > コホートの中のコホートリンクをクリックすることで見つけることができます。

8 コホートのケイパビリティ

コホートメンバーの追加と削除:(翻訳準備中)
コホートの作成、削除、移動:(翻訳準備中)
コホートインスタンスの設定:(翻訳準備中)
サイト全体のコホートを見る:(翻訳準備中)

9 コホートをコースに登録する

コホートをコースに登録するには2つの方法があります。

  1. コホート同期
  2. コホートの手動登録

コホート同期を使用すると、後でコホートに追加または削除されたユーザーは、自動的にコースに登録されたり、コースから削除されたりします。詳細については、コホート同期を参照してください。

ただし、コホートの手動登録は1回限りの操作です。後でコホートからユーザーを追加したり削除したりしても、コース登録には影響しません。

9.1 コホートの手動登録

コースのコホートのすべてのメンバーを手動で登録するには、次の手順に従います。

  1. コース管理 > 登録ユーザー
  2. Enrol users」ボタンをクリックし、「Browse cohorts」をクリックします。
  3. コホートを選択し、「登録完了」ボタンをクリックします。

400px-newcohortenrol.png
newcohortenrol.png

コホートメンバーを手動で登録するために必要な機能は以下の通りです。

・enrol/manual:コースコンテキストでの登録
・moodle/course:enrolreview in course context

デフォルトの "Teacher" (editingteacher) ロールは、これらの機能をすべて持っています。

10 すべてのコホートメンバーにユーザーコンテキストロールを割り当てる

ユーザーコンテキストロールは、サイト管理 > ユーザー > 権限 > コホートへのユーザーロールの割り当て で、コホートの全メンバーに割り当てることができます。

これは、コンピテンシー:(翻訳準備中)を使用しているときにメンター(またはチームマネージャー)がユーザーの学習計画を確認できるようにするのに便利です。
注: スケジュールされたタスク「コホートのロール割り当ての同期」を実行した後にロールが割り当てられているため、変更がすぐに表示されない場合があります。

11 関連項目

コホート同期:(翻訳準備中)登録法
コホートの一括ファイルアップロード:(翻訳準備中)

カテゴリ | グループ | サイト管理

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

【Laravel】Array to string conversion〜の解決方法

はじめに

今回はLaravelでRequestを受け取ってfillしてsaveしようとした時にArray to string conversion〜のエラー出てきたのでその解決方法の一つをまとめたいと思います。

Array to string conversion〜の解決方法

<?php

namespace App\Http\Controllers;

use Request;
use DB;

//-----(省略)-----
public function postEdit(Request $request)
    {
        $inputs = $request->validatedValues();
        $user = User::findOrFail($inputs['id']);
        $user = fill($inputs->toArray())->save();

        return redirect("/users/{$user->id}/edit");
    }

fillしてsaveしようと思った時にredirectの直前の実装でArray to string conversion〜とエラーが出てきてしまいました。

あくまで1つの可能性ですが$requestの中身を確認した時にあるひとつの項目に対して複数選択が可能なjson型の項目があるとこのようなエラーになります。
そんな時はキャストを定義する必要があります。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ネイティブなタイプへキャストする属性
     *
     * @var array
     */
    protected $casts = [
        'options' => 'array',
    ];
}

引用:Eloquent:ミューテタ 8.x Laravel

キャストを実装するとfillしてsaveできるようになるので参考にしてみてください。

最後に

いかがでしたでしょうか。
またエラーが出てきて詰まった際にはこのようにまとめていきたいと思います。

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

Moodle 3.9 マニュアル - プロフィールの編集

原文

プロフィールの編集

内容

1 プロフィールを編集する
1.1 一般
1.2 ユーザー画像
1.3 その他の名前
2 興味のあること
2.1 オプション
2.2 カスタムプロフィールのカテゴリー
3 ユーザープロフィールの更新
4 アカウントの無効化
5 関連項目

1 プロフィールを編集する

個々のユーザーは、ユーザーメニュー(右上)の [プロフィール] ページからアクセスする [プロフィールの編集] リンクをクリックしてプロフィールを編集することができます。

管理者は、管理 > ユーザー > アカウント > 新しいユーザーの追加またはユーザーのリストを参照から、またはユーザーのプロファイルをクリックして、ユーザーの詳細セクションでプロファイルの編集リンクをクリックして、ユーザーのプロファイルを更新することができます。

フィールドは6つのセクションに分かれています-一般、環境設定、ユーザー画像、追加名、オプション-以下で説明します。

完了したら、「プロフィールの更新」をクリックすることを忘れないでください。

1.1 一般

・このセクションはデフォルトで展開されます。名字、苗字、メールアドレスは必須項目です。管理者の設定(関連する認証プラグインの設定)によっては、これらを編集できる場合とできない場合があります。
・その他の設定 - 都市/町、国、タイムゾーン、および説明はオプションです。アカウントが作成されたときに、管理者はすでにあなたの都市と国を入力している可能性があります。
・タイムゾーンフィールドはシステム上の時間関連のメッセージ(課題の締め切りなど)をローカルタイムゾーン(ロンドンの時間)から選択したゾーンの正しい時間に変換するために使用されます。

1.2 ユーザー画像

このセクションは任意で、自分のプロフィール写真を選択することができます。すでに選択している場合は、現在の写真が表示されます。

注意: 管理者が管理 > サイト管理 > ユーザー > 許可 > ユーザーポリシーでこの機能を有効にしている場合、メールアカウントに添付されている可能性のあるグラバターは、別のものをアップロードしないとプロフィール画像として表示されます。

新しい画像

Choose a file" ボタンをクリックすると、プロフィール用の新しい写真を選択することができます。画像はJPGまたはPNG形式でなければなりません(名前の末尾は通常.jpgまたは.pngになります)。

画像をアップロードするには、File_picker:(翻訳準備中)のリストから "Upload a file "ボタンをクリックし、ハードディスクから画像を選択します。

注意:ファイルのサイズが最大サイズを超えていないことを確認してください。

画像ファイルが正方形に切り取られ、100x100ピクセルにリサイズされます。

プロフィールページに戻ると、画像が変更されていないように見えるかもしれません。その場合は、ブラウザの「再読み込み」ボタンを使用してください。

1.3 その他の名前

管理者がこの機能を有効にしている場合、ここで代替の名前や追加の名前を設定することができます。詳細については、追加の名前フィールドを参照してください。

2 興味のあること

ここでタグを使用して、あなたのプロフィールページにあなたの興味を表示します。

2.1 オプション

いくつかのオプションフィールドがあり、連絡先やウェブサイトなどの詳細をプロフィールに追加することができます。

2.2 カスタムプロフィールのカテゴリー

あなたのMoodleサイトにカスタムユーザプロファイルカテゴリとフィールドが作成されている場合、管理者 > アカウント > ユーザプロフィールのフィールドの下部に表示されます。

3 ユーザープロフィールの更新

moodle/user:updateケイパビリティ:(翻訳準備中)を持つユーザは、他のユーザのプロファイルを更新することができます。すなわち、プロファイルを編集することができるだけでなく、パスワード、認証方法、および新しいパスワードを強制的に変更することができます。ユーザ名がLDAP:(翻訳準備中)などの認証プラグインによって設定されている場合、ユーザ名を変更することはできません。

アカウントの無効化

認証方法を「ログインしない」:(翻訳準備中)に設定することで、アカウントを無効にすることができます。アカウントメールを使って他のアカウントを作成することはできません。

5 関連項目

ユーザープロフィール:(日本語翻訳中)

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

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

Laravelのenvメソッドがスレッドセーフ版のPHPでは正常に機能しない

環境

Windows 10 Pro
Apache 2.4
PHP 7.3 スレッドセーフ版
Laravel 6.18

現象について

Laravelでの開発中に
envメソッドで時々値が読み込めない場合や
Apacheの公開ディレクトリに配置している他プロジェクトの環境変数を取得してしまう?現象が発生した。
(他プロジェクトの環境変数を取得しているかは確証はないがそれっぽい値を取得してしまう)

調査した結果
PHPのgetenvがスレッドセーフ版のPHPでは正常に機能しないことを発見した。

対応策について

設定ファイルをキャッシュすればいいらしい。

php artisan config:cache

設定ファイルをキャッシュすると
envメソッドが実行されなくなるので注意が必要である。

環境変数を変更した場合はその都度上記コマンドを実行し
キャッシュを更新する必要がある。

まとめ

Windows+Apache環境でLaravelの開発をする場合、
この現象に遭遇する確率が高いので注意が必要。

ちなみにLaravelの公式ドキュメントには
この問題への注意喚起はないと思われる。
(あったらすみません)

ノンスレッドセーフ版なら上記の問題は発生しないので
dockerでノンスレッドセーフ版の環境を作って開発したほうがいい気がしてきた...

参考URL

laravelやphpdotenvのissueで既に議論されていたのでご参考に
https://github.com/laravel/framework/issues/8191
https://github.com/vlucas/phpdotenv/issues/76

  • このエントリーをはてなブックマークに追加
  • 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_users_v3.0.4_1.jpg
役割別ユーザーのダウンロードページ
600px-download_users_v3.0.4_2.jpg
役割別ユーザーのダウンロードページの拡大

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 ファイルのダウンロード

ファイルを正常にダウンロードするためには、保存するユーザーフィールドとユーザーが持つべき役割を選択する必要があります。あなたはページの'ロール'セクションからロールを選択し、'フィールド'セクションからフィールドを選択することができます。

注意: デフォルトで選択されたフィールドは、admin/tool/downloaddata/config.phpにあります。

同様に、オーバーライドを使用することを選択した場合、同様にページのオーバーライドセクションでフィールド=オーバーライドのペアをカンマで区切ったリストとして提供する必要があります。

4.1 ユーザフィールド

フィールドセクションでダウンロードしたファイルに存在するフィールドを選択することができます。有効なフィールドは以下の通りです。

id, username, firstname, lastname, email, institution, department, city, country, lang, auth, timezone, idnumber, icq, phone1, phone2, address, url, description, descriptionformat, mailformat, maildisplay, autosubscribe

やカスタムプロファイルフィールドを使用することができます。フィールドが何を表しているかについての詳細は、ユーザーのアップロードページを参照してください。

バージョン3.0.7では、ユーザープロファイルフィールドのリストから選択することもできます(定義されている場合)。

注意: 指定されたフィールドに関係なく、各ユーザーは指定されたロールで登録されているすべてのコースのコースと対応するロールフィールドを持ちます。

4.2 ユーザーによるオーバーライド

オーバーライドの使用を有効にしている場合は、オーバーライドのセクションでフィールド=オーバーライドのペアをカンマで区切ったリストとしてオーバーライドを指定する必要があります。フィールド名や値に制限はありません。

注意: オーバーライドを使用オプションが選択されていない場合、ここで指定された値は何の効果もありません。

カテゴリ | プラグイン | アカウント

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

Moodle 3.9 マニュアル - ユーザーの一覧を見る

原文

ユーザーの一覧を見る

内容

1 概要
1.1 テーブルの並べ替え
1.2 フィルタ
1.2.1 ワイルドカードの使用
2 アカウントの削除
3 アカウントの一時停止
4 参照

1 概要

管理者は、サイト管理 > ユーザー > アカウント > ユーザーの一覧を参照で、すべてのユーザーアカウントの一覧を参照したり検索したりすることができます。

300px-browse_list_of_users.png
ユーザーの一覧を参照

管理者は、名前やメールアドレスを検索語として特定のユーザーを検索し、そのユーザーのプロファイルを編集:日本語翻訳中することができます。ユーザーのプロファイルを編集することで、ログインできなくなったユーザーのパスワードをリセットすることができます。ユーザーのプロファイルを編集する必要があるもう一つの理由は、サイトが未着メールを大量に受信している場合に、そのユーザーのメールアドレスを無効にすることです。

メールベースの自己登録:日本語翻訳中を使用していて、ユーザーがアカウントの確認に問題がある場合は、ユーザー名の反対側にある確認リンクをクリックすることで、ユーザーのアカウントを確認することができます。

管理者は、編集欄の南京錠アイコンをクリックすることで、失敗したログイン試行が多すぎるアカウントのロックを解除することもできます。

1.1 テーブルの並べ替え

閲覧リストのすべての列は、列の見出しをクリックすることで、アルファベット順(または数値順)で昇順または降順に並べ替えることができます。最初のカラムをクリックするとユーザデータがA-Zに、2回目のクリックでZ-Aに並び替えられます。

1.2 フィルタ

特定の基準またはフィルタを使用して、ユーザーを検索することができます。これらの条件は、以下の制限に従ってデータを表示するように設定することができます。

・が含まれる
・を含まない
・に等しい
・で始まる
・で終わる
・が空

例えば、姓または名にJohnが含まれているすべてのユーザーを検索したい場合、フルネームフィルターに「John」と入力し、「含む」制限を選択します。

詳細を表示」リンクをクリックすると、追加の検索フィルタとデータ制限が表示されます。詳細エリアのフィルタには、あなたのMoodleインストール内で作成されたカスタムユーザプロファイルフィールドも含まれます。

メールアドレスなどの頻繁に使用されるフィルタは、「ユーザの参照リスト」ページおよび「一括ユーザアクション」ページに表示されるように、「デフォルトユーザフィルタ」(userfiltersdefault) (サイト管理/ユーザ/アカウント/ユーザ管理)で選択することができ、「詳細を表示」で非表示にすることはできません。
カスタムユーザープロファイルフィールドを使った高度な検索

ユーザー検索にフィルタを適用した後、フィルタの追加ボタンをクリックしてユーザー検索を実行します。検索に適用されたすべてのフィルタが検索結果の上に表示されます。必要に応じて、(対応するチェックボックスを使用して)フィルタを検索条件に追加または削除することができます。これらのフィルタは1つのMoodleセッション内に保存されます。

1.2.1 ワイルドカードの使用

ワイルドカードは、1 つ以上の文字を表すために検索するときに使用できます。ワイルドカードは 2 つあります。

・パーセント記号は、0、1、または複数の文字を表します。
・注: MS Access では、アンダースコア '_' の代わりにクエスチョンマーク '?' を使用します。

これらのワイルドカードは、必要に応じてエスケープすることができ、バックスラッシュ「\」を使用して、ワイルドカードを含むユーザーを検索することができます。

・A_Bは、Aで始まる全てのユーザを検索し、任意の文字の後にBが続く(AxBかA2B、ただしAxxBではない)。
・A_B_Bは、'A_B_B'で正確に始まるユーザーを見つけます。

2 アカウントの削除

アカウントは、ユーザー名の反対側にある削除アイコンをクリックすることで削除することができます。

アカウントが削除されると、ユーザー名のMD5ハッシュがメールアドレスとして保存されます。ユーザー名には、メールアドレスとアカウントが削除された時刻のタイムスタンプが格納されます。
警告。アカウントを削除すると、ユーザーデータは永久に削除されます。データを保持したい場合は、そのユーザーのアカウントを一時停止してください。

アカウントが誤って削除された場合は、データベース内の削除フラグをゼロにリセットし、ユーザー名と電子メール アドレスをリセットすることで、部分的に復元することができます。ユーザープロファイルの詳細、ユーザー設定、登録、グループおよびコホートのメンバーシップデータは復元できません。成績は、ユーザーをコースに再登録し、登録オプションの「可能であればユーザーの古い成績を回復する」チェックボックスにチェックを入れることで回復することができます。フォーラムの投稿は削除されません。

手動での削除とユーザーからのデータ削除依頼との違いや、今後の展開についての情報は、フォーラムでのディスカッションユーザーのデータを含めて完全に削除する方法はありますか?

3 アカウントの一時停止

アカウントは以下のようにして一時停止することができます。

  1. ユーザー名の反対側にある編集アイコンをクリックします。
  2. ユーザープロファイルの編集ページで、「停止されたアカウント」のチェックボックスにチェックを入れます。
  3. ページの一番下までスクロールして、「プロフィールの更新」ボタンをクリックします。

停止されたユーザーアカウントではログインやウェブサービスの利用ができず、送信されたメッセージはすべて破棄されます。

4 関連情報

プロフィールの更新:日本語訳準備中

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

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