添付ファイルを削除後に同名ファイルを再添付すると過去のファイルのダウンロードカウンタが失われる†
- ページ: BugTrack2
- 投稿者: umorigu
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2016-01-26 (火) 03:07:17
- バージョン: 1.5.0
- リリース予定バージョン: 1.5.1
メッセージ†
再現手順:
- 1. 適当なページに a.txt を添付する
- 2. a.txt を3回ダウンロードする
- 3. 「詳細」を表示する→「アクセス数: 3」
- 4. a.txt を削除する
- 5. 添付 - 添付ファイル一覧 - a.txt (backup No.1) - 詳細 表示する→「アクセス数: 3」
- 6. a.txt をもう一度添付する
- 7. 添付 - 添付ファイル一覧 - a.txt (backup No.1) - 詳細 表示する→「アクセス数: 」(空表示) となる
期待値:
- 添付 - 添付ファイル一覧 - a.txt (backup No.1) - 詳細 表示する→「アクセス数: 3」
- 同名ファイルが同一ファイルとは限らないのだから当然の動作では? -- ../
- 同一ファイルとは限らない→新しいファイルとしてカウントする。 -- ../../
- いえ、削除したタイミングでは過去のファイルがそれぞれにカウンタを持っている(過去のファイルをダウンロードするとそれぞれアクセス数が+1される)のですが、それがリセットされるのです -- umorigu
- なら、削除されたタイミングでカウンター類の情報を削除しなければならないってことですね -- -
- attach.inc.php -> AttachFile.getstatus()で、(バックアップファイルがあっても)実ファイルが無い場合にlogファイルを読んでないのが原因でした。修正しました。各ファイルのダウンロードカウンターが維持されるようになります -- umorigu
- 同名で別ファイルとかカウンタをリセットしたい場合はどうするんでしょう。いっそカウンタリセットを実装できませんか -- ./
- もともと、同名でも過去のファイルとは別ファイル扱いです(ダウンロード数は別にカウントされます)。また.log ファイルを物理的に消せばカウンタは0になります(リセット)。ページカウンタ(countプラグイン)も気軽にリセットはできないので機能としては不要と判断しています -- umorigu
- 見返してみるとAttachFile::getstatus() はattach_freeze() やattach_rename() などのエラーメッセージで添付ファイルに対するfile_exists() の代わりに使われているような気がするのですが、返り値の条件をcommit:7556fdb59a9b27ba4eb085492d7bb04ec343bf7b (branch_r1_5)のようにログファイルの存在チェックのみにしてしまっても大丈夫なのでしょうか?(添付ファイル本体に対するfilesize() の結果がエラーになるかや後段の実装しだいかもですが)
単純に
// ログファイル取得
の括りの後へ添付ファイル本体の存在確認を移動させれば、各種statusを得る処理は実行しつつFALSEを返す条件はそのまま~にできそうな気もします() --
- 鋭い指摘ありがとうございます。その通りでした。getstatus() 戻り値のtrue/false条件は変更せずに、statusは読み込むようにしました -- umorigu
Last-modified: 2016-02-07 (日) 09:55:05