- 追加された行はこの色です。
- 削除された行はこの色です。
*rename.inc.phpでキャッシュが更新されないため、変更前のページへのリンクが残る [#ue0a4951]
-ページ: BugTrack
-投稿者: [[reimy]]
-優先順位: 重要
-状態: 提案
-カテゴリー: プラグイン
-投稿日: 2003-05-07 (水) 11:18:17
-バージョン:
**メッセージ [#rbbf2c02]
rename.inc.phpでページ名を変更した場合、キャッシュが更新されないため、変更前のページへのリンクがそのまま残る(hogehoge&color(crimson){?};にならず、&color(orange){hogehoge};のまま)。そして、変更前のページへのリンクの更新時間が(12180d)と表示される。
手動でキャッシュを更新すれば正常になる。
----
-修正しました。 [[cvs:plugin/rename.inc.php]](v1.4:r1.5) -- [[ぱんだ]] &new{2003-05-07 (水) 13:22:49};
- 直っていないと思ったので、自分で直してみました。 &ref(http://in3c.org/pukiwiki/index.php?plugin=attach&pcmd=open&file=rename_links_update.diff&refer=PukiWiki%2Ftag%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2F%C0%DF%B7%D7,rename_links_update.diff ); -- [[志田]] &new{2006-04-23 (日) 09:43:04};
- こんにちは。パッチをありがとうございます。実際にどんな事があって、原因が何だったかという苦労話を語って戴く事はできますか? -- [[henoheno]] &new{2006-04-27 (木) 23:56:42};
- 説明不足ですみません。症状としては、ページ「A」からページ「B」にリンクを張ると、「B」の「cache/B.ref」の中に、「A」からリンクされた、という情報が記録されますが、&br;その後、「A」のページ名を「C」に変更しても、cache/B.refの中は、「A」からリンクされた、と書いてあるままです。&br;このため、「B」のページの内容として
#related
を書いておくと、「A」を「C」にrenameした後なので、「A」というページは存在しないのに、関連ページとして、「A」が表示されていました。&br;
パッチの内容はこんな感じです。
*** rename.inc.php~ 2004-12-07 10:24:44.000000000 +0900
--- rename.inc.php 2006-04-23 09:35:05.000000000 +0900
***************
*** 426,433 ****
rename($old, $new);
// linkデータベースを更新する BugTrack/327 arino
! links_update($old);
! links_update($new);
}
}
--- 426,438 ----
rename($old, $new);
// linkデータベースを更新する BugTrack/327 arino
! if (preg_match("@^". DATA_DIR . "(.*)\.txt@", $old, $old_match) &&
! preg_match("@^". DATA_DIR . "(.*)\.txt@", $new, $new_match)) {
! $d_old = decode($old_match[1]);
! $d_new = decode($new_match[1]);
! links_update($d_old);
! links_update($d_new);
! }
}
}
$old,と$newは、wiki/A.txtのように、既にエンコードされて、実際のファイルのパスになっていましたが、links_updateが要求している引数はページ名のようだったので、正規表現でページ名の部分のみとりだして、decodeしてlinks_updateにページ名を渡すように修正しました。 -- [[志田]] &new{2006-04-28 (金) 21:31:15};
#comment