Autolink対象ページの.refファイルが消える場合がある†
- ページ: BugTrack2
- 投稿者: Cue
- 優先順位: 普通
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2006-03-30 (木) 21:25:38
- バージョン:
メッセージ†
Autolink対象ページが別の複数のページからAutolinkされていて且つAutolink以外の被リンクが存在しない場合、いずれか1つのリンク元ページからのリンクが切れると別のページからのAutolinkが残っていても.refファイルが消されます。
- 再現方法
- プラグインなどよく有る言葉で、dangling linkになっていないページを作成する(中身に#relatedを入れると現象が見やすい)
- 上のページ作成でAutolinkが発生したページのいずれか1つで全てのプラグインという言葉をpluginなどに置換してリンク関係を解消する
link.phpのlinks_delete()で$all_autoがFALSEにならないまま.refを作成するかの判定に入る事が原因です。
- teananさん、気付いたらこの件の様子を見ていただけませんか。原因の原因の原因が良くわからないのですが、何かツボを付いている気がします :) お手数ですがよろしくお願いします。 -- henoheno
- 了解です。すみません、フォロー遅れました。上記チェックしておきます*1。 -- teanan
- 現象確認しました。対策検討中。 -- teanan
- リポジトリを遡っても答えは見つからなかったのですが、どうやら $all_autoの判定自体が要らないようです。一番最初のlink.phpから存在しているコードですね (^^; -- teanan
- links_addも一緒に片付けないとまずそう・・・。 -- teanan
- 参照しているページが全てAutoLinkによるものであった場合、refファイルを削除していたのを修正しました。 -- teanan
- cvs:lib/link.php (1.10)
- 今度はis_page=FALSEで書かなくなりますけど、dangling linkが作る.refは存在して良いのでは? -- Cue
- その辺が気になっています。ただ、links_init/links_add/links_deleteでrefの生成条件が異なっているように見えますので、何が正しいのか精査しています。 -- teanan
- 結局は問題はなさそうです*2。失礼いたしました m(__)m -- teanan
- ご指摘のとおりdangling linkの.refは存在するのが正しそうです。追って再修正します。 -- teanan
- 結局もとの形に戻って、条件式の修正のみとなりました orz ご指摘ありがとうございました。 -- teanan
- $ref!=''だけで十分(でなければ既に依存関係のどこかが破綻している?)ような気もするのですが、具体的なケースはというと$nowikinameや$autolinkの設定を変えてそのまま運用しているくらいしか今のところ思いあたらないので…。対応ありがとうございました。 -- Cue
- ここでのdangling linkへの対応がyetlistの出力にも影響します。$all_autoは、まさにdangling linkの判定でした。よって今の形が妥当だという結論です。 -- teanan