Posted by redboxhosting on September 4, 2015 at 9:31am
現在、drupal7にてユーザー毎にDiskQuotaをかけ、さらに特定のアクションでQuota上限を変更したいと考えております。
単純なQuotaをかけるだけであれば、以下のUser Disk Quotaモジュールで実装できました。
https://www.drupal.org/project/user_disk_quota
しかし、こちらでは特定のアクションを行った際、値を変更するということが標準機能では難しそうです。
一番ベストなのはRulesモジュールで特定のアクションを判定し、User Quotaの値を変更できればベストなのですが、このようなアクションを実装する手段があるかどうかみなさまからアドバイス頂けると助かります。
宜しくお願い致します。
Comments
考えられるアプローチは次の 2
考えられるアプローチは次の 2 通りかと思います。
1 については私も User Disk Quota の UI とコードを確認してみました。結果として、そのようなインタフェースは提供されていませんでしたので、、 1 での解決はちょっと難しいかと思います。。ご要件を満たすぴったりのモジュールもないようです。ユーザーごとの quota が各ユーザーオブジェクトのプロパティにセットされてさえいれば Rules で扱えるのですが、残念ながらそのようにはなっていないようです(コントリビュートのしどころですね)。。
2 についてですが、 2 の中でまた 3 つほどのアプローチが考えられるかと思います。いずれも User Disk Quota を使い、足りない部分だけを補います。
私なら A で進めたくなる気がしますが最適な方法は詳細の状況にもよるかと思います。
あまり解決にはつながらないコメントで申し訳ありません。。ご参考にしていただけますと幸いです。
いつもアドバイスありがとうございます! 私もモジュールの組
いつもアドバイスありがとうございます!
私もモジュールの組み合わせで可能かどうか色々探しましたが、難しそうでした。
このような利用方法はあまり一般的ではないのかもしれません..
2について私でも実装出来そうなのは Bかなと考えています。
現在User Disk Quotaのたたくべき関数(恐らくDBInsertする部分)をRulesに組み込むことを検討しています。
Aのほうが実装としては簡単そう?ですがやはりまだなれていないせいもあり、イメージがつかめません。
ひとまず少し強引ですが実装ができましたら改めてご報告できればと考えています!
ご丁寧にお返事くださりありがとうございます。 そうですね、
ご丁寧にお返事くださりありがとうございます。
そうですね、まずは A でやられてみて、できたら B に移行するというのがよいかもしれません!
ちょっと的外れなアイデアになるかもしれませんが、コードを触らない別のアプローチとしてロールを使うのもありかもしれないと思いました。具体的には
という形です。 Disk Quota が個人によって変わるのではなく「ライト」「スタンダード」「プレミアム」といった形で固定のパターンがある場合はこのアプローチでもよいかもしれません。
ただ、こちらはロールを Disk Quota のためだけに乱用する形になるので後々メンテナンスがしづらくなるようにも思います。。
「最終的にこう解決した!」などまたご共有いただけますと幸いです。
ありがとうございます。 実はご提案頂きましたロールベースの
ありがとうございます。 実はご提案頂きましたロールベースの設定は既に行っておりました。。
予め複数の決められた容量のロールを作っておき、ルールでイベント毎にロールを変更していくような運用です。
こちらであれば以下のようなモジュールの組み合わせだけで実装可能でした。
※フラグモジュールはリンクをクリックした場合などのアクションと連携させる場合は必要でした。
フラグ
https://www.drupal.org/project/flag
ルール
https://www.drupal.org/project/rules
しかし、仰るとおりあとあとのメンテナンスが大変になることと、設定に制約があることからなんとかユーザーベースでQuotaを変更できないかと模索しておりました。
少しお時間がかかるかとおもいますが、解決した際はご報告させて頂きます!
宜しくお願いします。