pukiwiki plus! のdumpプラグインでリストアが動作しない!

なぜか、pukiwiki plus! のdumpプラグインでリストアが機能しない現象にあたりました。
そもそもpukiwikiに詳しくないため、dumpプラグインのソースを解析することになったのでその顛末を書きとめておきます。

そもそもリストアのプラグインが呼ばれないじゃないか!

dumpプラグインではリストアするファイルをPOSTしたフォームにMenuというパラメータが無ければリストアのアクションが起動しないようでした。

このように$vars[‘menu’]が要求され、なければ74行目のreturnでプラグインが終了してしまいます。
にもかかわらず、これをPOSTするフォームはというと…

となっており、menuの値など一切渡されません。

そこで、フォームを変更してmenuに’1’をセットして渡すようにしました。

これでひとまず、リストア処理が呼び出されるところまで行きましたが…
なぜか「解凍するファイルが無い!」というエラーが発生します。

よくよく調べていくと、アップロードするtar.gzからファイルを取り出す処理でなにやらフィルターが…

この752行目のpreg_matchのパターンが怪しい…

どうやらこのパターン、復元先を保証するために設定されているようで、
ダンプファイルを取得したディレクトリ構造と同じ位置に復元する
という仕様のようでした。

私が今回試していたのは、実は別のWikiサービスからとってきたDumpを自分のサーバに上げようとしていたため、取得したダンプファイルのディレクトリ構造とリストア先のサーバのディレクトリ構造が異なっていたため、このフィルタに引っ掛かって上手くリストアされていなかったようです。

うーん、Dumpプラグインを改造しなくちゃです。