File Delete (extras)

Drupal Coreのファイル削除機能を拡張し、即時削除や使用状況チェックの上書きオプションなど、追加の安全機能を提供します。

file_delete
24,519 sites
57
drupal.org

インストール

Drupal 11, 10 v3.0.0
composer require 'drupal/file_delete:^3.0'
Drupal 9, 8 v2.0.0
composer require 'drupal/file_delete:^2.0'

概要

File Deleteモジュールは、より堅牢で柔軟なファイル削除インターフェースを提供することで、Drupalの組み込みファイル削除機能を強化します。Drupal Core 10.1以降には基本的なファイル削除機能が含まれていますが、このモジュールはCoreのルートを乗っ取り、追加機能を備えた独自のフォームを提供します。

このモジュールはデフォルトでファイルのステータスを「Permanent(永続)」から「Temporary(一時)」に変更し、設定された一時ファイル保持期間に従ってDrupalのCronがクリーンアップできるようにします。さらに、即時削除のオプションや、管理目的で使用状況チェックを上書きする機能も提供します。

主要な安全機能として、他のエンティティで現在使用中のファイルの削除を防止する組み込みの保護機能があり、削除がブロックされた場合にはファイルの使用状況を確認するためのリンク付きのエラーメッセージを表示します。

Features

  • 他のエンティティでアクティブに使用されているファイルの削除を防止する組み込みの安全機能
  • DrupalのファイルクリーンアップCronプロセスをバイパスして、ファイルを即時削除するオプション
  • 組み込みの使用状況アクセスチェックを上書きしてファイルを強制削除するオプション(上級ユーザー向け)
  • Filesビューから一括ファイル削除を実行するためのバルクアクションプラグイン
  • Coreのファイル管理ビュー(/admin/content/files)とのシームレスな統合
  • 削除がブロックされた場合に、ファイル使用状況情報へのリンク付きの明確なエラーメッセージを表示
  • 「file」モジュールの使用状況追跡からファイル参照を自動クリーンアップ

Use Cases

コンテンツ移行後の未使用ファイルのクリーンアップ

新しいDrupalサイトにコンテンツを移行した後、どのコンテンツからも参照されていない孤立したファイルが残ることがあります。Filesビュー(/admin/content/files)を使用して使用数がゼロのファイルを特定し、複数のファイルを選択して「ファイルを削除対象としてマーク」バルクアクションを使用し、次回のCron実行時に安全に削除されるようにキューに入れます。

機密ファイルの即時削除

機密情報を含むファイルが誤ってアップロードされた場合、「ファイルを即時削除」権限を持つ管理者はCronを待たずにサーバーから即座に削除できます。ファイルの削除フォームに移動し、「ファイルを即時削除しますか?」オプションを有効にしてください。

高トラフィックサイトでのディスク容量管理

ファイルアップロードの多いサイトでは、一時ファイルが蓄積されることがあります。「即時削除(使用状況チェック付き)」バルクアクションを使用して、アクティブに使用されているファイルの削除を防ぐ安全チェックを維持しながら、即座にディスク容量を解放できます。

Mediaエンティティとのファイル参照問題の解決

Drupal Mediaを使用する場合、ファイルは通常Mediaエンティティから参照されます。ファイルを削除する前に、まず関連するMediaエンティティを削除する必要があります。このモジュールは、どのモジュールがファイルを使用しているかを表示し、使用状況を確認するためのリンクを提供するため、ファイル削除前にMedia参照を特定して削除するのに役立ちます。

サイトメンテナンス中のファイル強制削除

サイトの大規模な再構築中、「使用状況を上書きしてファイルを削除」権限を持つ管理者は、使用状況追跡が使用中と示していてもファイルを強制削除できます。これは、使用状況追跡が正しくないことがわかっている場合や、結果に関係なく意図的にファイルを削除したい場合に便利です。

Tips

  • コンテンツの破損を避けるため、削除前に常にファイルの使用状況を確認してください - このモジュールは使用中のファイルの削除をブロックすることで支援します
  • 通常のクリーンアップタスクには「ファイルを削除対象としてマーク」を使用してください。Drupalの標準的なファイルライフサイクルに従います
  • 「即時削除」は緊急の状況や、ディスク容量をすぐに解放する必要がある場合に使用してください
  • Mediaエンティティを扱う場合は、まずMediaエンティティを削除してから、基になるファイルを削除することを忘れないでください
  • 「使用状況を上書きしてファイルを削除」権限は控えめに付与してください。誤用するとメディアやリンクの破損を引き起こす可能性があります
  • サイトのニーズに基づいて、ファイルシステム設定で適切な一時ファイル保持期間を設定してください

Technical Details

Admin Pages 1
ファイル削除 /file/{file}/delete

特定のファイルを削除するための確認フォーム。ファイル名とURIを表示し、即時削除と強制削除のオプション(ユーザーが適切な権限を持っている場合)を提供し、強制削除が有効でない限り使用中のファイルの削除を防止します。

権限 2
使用状況を上書きしてファイルを削除

他のエンティティで現在使用中であっても、ファイルシステムからファイルを削除することを許可します。警告: これによりリンク切れやメディアコンテンツの欠落が発生する可能性があります。この権限は「アクセス制限」としてマークされており、信頼できる管理者にのみ付与してください。

ファイルを即時削除

Drupalの一時ファイルクリーンアッププロセス(通常Cron実行時に行われる)をバイパスして、ファイルシステムからファイルを即時削除することを許可します。この権限は「アクセス制限」としてマークされており、信頼できるユーザーにのみ付与してください。

Hooks 2
hook_entity_type_build

ファイルエンティティタイプの定義を変更し、デフォルトの削除フォームクラスをFileDeleteFormに置き換えます

hook_help

モジュールのヘルプページ用のヘルプテキストを提供します

Troubleshooting 4
ファイルが「Temporary」に設定されているが、Cron実行後も削除されない

Drupalは一時ファイルを設定可能な期間(デフォルト6時間)保持してから削除します。管理 > 環境設定 > メディア > ファイルシステムで保持設定を確認してください。または、この待機期間をバイパスするために「即時削除」オプションまたはアクションを使用してください。

ファイルが「使用中」と表示されて削除できない

このモジュールは、コンテンツの破損を避けるためにアクティブに使用されているファイルの削除を防止します。提供されたリンクをクリックしてファイルの使用状況を確認し、使用しているエンティティ(例:Mediaエンティティの削除やコンテンツの編集)から参照を削除してから、再度ファイルの削除を試みてください。管理者は「強制削除」を有効にしてこの保護を上書きすることもできます。

「File削除リンク」フィールドがViewsに表示されない

モジュールをインストールした後、Filesビューにフィールドを手動で追加する必要があります。管理 > サイト構築 > Views > Files > 編集に移動し、新しいフィールドを追加して「Link to delete File」を検索してください。

バルクアクションがFilesビューのドロップダウンに表示されない

ビューにバルク操作フィールドが設定されていることを確認してください。モジュールはアクション設定を自動的にインストールしますが、ビューはバルク操作を表示するように設定されている必要があります。system.action.mark_file_for_deletionとsystem.action.immediate_deleteの設定が存在することを確認してください。

Security Notes 5
  • 両方のモジュール固有の権限は「restrict access: true」でマークされており、信頼できる管理者にのみ付与すべきことを示しています
  • 「使用状況を上書きしてファイルを削除」権限は安全チェックのバイパスを許可し、誤用するとコンテンツの破損を引き起こす可能性があります
  • 「ファイルを即時削除」権限はDrupalのCronベースのクリーンアップをバイパスし、回復の猶予期間がありません
  • ImmediateDeleteWithUsageChecksアクションでは直接データベース操作が使用されます - 適切なデータベースバックアップを維持してください
  • ファイルの削除は永続的で元に戻せません - 重要なファイルにはバックアップ戦略の実装を検討してください