名前を変更/削除したときのrelatedの日付差分が変な値になる†
- ページ: BugTrack
- 投稿者: みこ
- 優先順位: 普通
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2004-10-21 (木) 19:00:23
- バージョン:
メッセージ†
Board/discussionでも話題になっていましたが、何らかのアクションで画面下のrelatedに表示されるn日前表示が 1970/1/1 からの表示になってしまいます。
現在はタイムスタンプが 0 のときはそのファイルは削除されたものとみなす Dirty なパッチをあてて凌いでいますが、見せ掛けに過ぎないので (^^; 報告すると共に、根治する方法(もしくは残してある理由*1)があればおねがいします。
- lib/link.php
@@ -25,7 +25,13 @@
if (file_exists($ref_name)) {
foreach (file($ref_name) as $line) {
list($_page) = explode("\t", rtrim($line));
- $links[$_page] = get_filetime($_page);
+// $links[$_page] = get_filetime($_page);
+//miko for DirtyPatch
+ $pagetime = get_filetime($_page);
+ if ($pagetime > 0) {
+ $links[$_page] = $pagetime;
+ }
+//miko for DirtyPatch
}
}
return $links;
- lib/link.php (r1.2) みたいな形で、リビジョンも足しておいていただけると、うっかり忘れ去られた時でも追跡がすぐできるので助かります (^^; -- henoheno
- ちょっと中を見ています。 -- henoheno
- 「ここからリンクされている」という情報のキャッシュと、それらのページが今現在存在しているかどうかのズレをこの部分で吸収できていないだけではないでしょうか。get_filetime() は内部でそのページの有無をきちんとチェックしていて、存在しない場合は 0 を返しますが、これは意図通りの時間計算がされていない値ですから、ここでは異常値として取り扱った方が良さそうです。ということで、その場所におけるみこさんの対処は正解のように思います。get_filetime() が異常時に値0を返すのではなく、FALSEでも返してくれるのであればもう少しわかりやすいのですが、それは置いておきます。 -- henoheno
- 時間の値が0だったらその項目を表示しない(cvs:lib/html.php r1.9 261行目にチェックを追加する)、という方法もあるかとは思うのですが・・・うーむ何が一番無駄が少ないかな? -- henoheno
- (補足: 現在使われているUnixシステムの時刻は 1970/1/1 00:00:00 からカウントが始まります。さて0秒目が指す時刻は・・・) -- henoheno
- get_filetime() に、異常時にはFALSE を返すようにさせたくなってきました (^^; これについてはちょっとゆっくり考えます -- henoheno