Group Actions
Groupモジュール用の設定可能なアクションを提供し、グループメンバーシップとグループコンテンツに対する一括操作を可能にします。
group_action
インストール
composer require 'drupal/group_action:^1.2'
composer require 'drupal/group_action:^1.1'
概要
Group ActionsはGroupモジュールを拡張するDrupalモジュールで、設定可能なアクションプラグインのセットを提供します。これらのアクションにより、サイト管理者や開発者は、ユーザーをグループメンバーとして追加・削除したり、グループへのコンテンツの追加・更新・削除など、グループ関連エンティティに対する一括操作を実行できます。
このモジュールは、Drupalのアクションシステムを活用する他のモジュールと組み合わせて使用するように設計されています。例えば、Views一覧でバッチ操作を実行するためのViews Bulk Operations(VBO)や、イベントによってトリガーされる自動ワークフローを作成するためのECA(Event - Condition - Action)などがあります。アクションは動的な設定のためのToken置換をサポートしており、複雑な自動化シナリオに対して高い柔軟性を提供します。
Group ActionsはGroupモジュールのバージョン1.x、2.x、3.xと完全に互換性があり、インストールされているバージョンのAPI差異を自動的に検出して適応します。
Features
- 設定可能なグループロールを持つメンバーとしてユーザーをグループに追加
- グループメンバーシップからユーザーを削除
- 新しいフィールド値またはロールで既存のグループメンバーシップを更新
- コンテンツエンティティ(Nodeなど)をグループコンテンツとしてグループに追加
- グループからコンテンツを削除
- グループコンテンツのフィールド値を更新
- グループID、エンティティID、フィールド値の動的設定のためのTokenサポート
- 設定可能な追加方法:既に追加済みの場合はスキップ、常に追加、または既存を更新
- 設定フォームでのグループ選択用エンティティオートコンプリート
- Groupモジュールバージョン1.x、2.x、3.xとの完全な互換性
- 特別な再帰しきい値処理を含むECAモジュールとの互換性
Use Cases
Viewsを使用したユーザーのグループへの一括追加
ユーザーのViewsを作成し、Views Bulk Operationsを使用して「Group: ユーザーをメンバーとして追加」アクションを追加します。Viewsから複数のユーザーを選択し、1回の操作でロールを割り当てながら全員を特定のグループに追加します。
ECAによる自動メンバーシップ管理
ユーザーが作成または更新されたときにトリガーされるECAモデルを設定します。条件(ユーザーロールやプロフィールフィールドの値など)に基づいて、Tokenベースの設定を使用した「Group: ユーザーをメンバーとして追加」アクションで、ユーザーを適切なグループに自動的に追加します。
コンテンツ整理ワークフロー
コンテンツが公開または更新されたとき、タクソノミータームや他のフィールド値に基づいて関連するグループに自動的に追加します。ECAと「Group: コンテンツを追加」アクション、およびTokenを使用して、対象グループを動的に決定します。
グループからのコンテンツ一括削除
VBOと「Group: コンテンツを削除」アクションを使用して、グループコンテンツリレーションシップをクリーンアップします。グループ間でコンテンツを再編成したり、グループ一覧から古いコンテンツを削除したりする場合に便利です。
グループロールの一括更新
既にグループメンバーであるユーザーを選択し、VBOで「Group: ユーザーメンバーシップを更新」アクションを使用して、グループロールを一括操作で変更します(例:メンバーを管理者に昇格)。
Tokenに基づく動的グループ割り当て
[node:field_department:entity:id]のようなToken値でアクションを設定し、エンティティフィールド値に基づいてコンテンツをグループに動的に追加します。これにより、手動設定なしで適切なグループへのコンテンツの自動ルーティングが可能になります。
Tips
- 「skip_existing」追加方法(デフォルト)を使用して、既にグループメンバーである可能性のあるエンティティの混合セットに対してアクションを実行する際に、重複するグループリレーションシップを防止します。
- Tokenベースのグループ IDを設定して、対象グループがハードコードではなくエンティティフィールド値によって決定される動的ワークフローを作成します。
- 「values」フィールドでグループロールを設定する場合、ロールIDにグループタイプのプレフィックスを含む「group_roles: grouptype-roleid」形式を使用します。
- グループ選択用のエンティティオートコンプリートは設定時にグループを選択するユーザーフレンドリーな方法を提供しますが、数値IDやUUIDを直接入力することもできます。
- ECAモデルでは、値を置換する際に任意のエンティティタイプのTokenを使用できるため、関連エンティティを検索してそのプロパティを設定で使用することが可能です。
Technical Details
Troubleshooting 5
Groupモジュールが適切にインストールされ、少なくとも1つのグループタイプで設定されていることを確認してください。アクションプラグインはGroupモジュールのプラグインマネージャーが利用可能である必要があります。
アクションはグループの権限システムに対して権限をチェックします。アクションを実行するユーザーが、対象グループタイプに対する適切なグループ権限(例:「create group_membership content」、「delete group_membership content」)を持っていることを確認してください。
コンテンツプラグイン(グループリレーションタイプ)がグループタイプにインストールされている必要があります。管理 > 構造 > グループタイプでグループタイプを設定し、目的のコンテンツプラグインが有効になっていることを確認してください。
Token構文が正しいことを確認してください(例:[user:uid]、[node:nid])。高度なTokenを使用する場合は、Tokenモジュールがインストールされていることを確認してください。処理されるエンティティが期待されるTokenコンテキストを提供していることを確認してください。
これは、グループ操作が追加のエンティティ保存をトリガーしたときにECAの再帰検出によって発生する可能性があります。モジュールにはこれに対する自動処理が含まれていますが、問題が続く場合はECAの再帰しきい値設定を確認してください。
Security Notes 3
- アクションはDrupalのグループ権限システムを尊重します。ユーザーは特定のグループでアクションを実行するために適切なグループレベルの権限を持っている必要があります。
- 管理者ユーザー(ユーザー1と管理者ロールを持つユーザー)は、これらのアクションのグループ権限チェックをバイパスします。
- Token置換は適切なサニタイズを施してサーバーサイドで実行されますが、ログやエラーメッセージでToken値を通じて機密データが露出しないよう注意してください。