カテゴリ | 動作環境 |
サマリ | ページが削除できない |
バージョン | PHP7.1.0+pukiwiki1.5.1 |
投稿者 | kmi |
状態 | 完了 |
投稿日 | |
ページを作成して、全ページを削除し、「ページを更新」ボタンを押すと、"xxxを削除しました"が表示されますが、左メニューの「最新のnn件」からページが削除されず、また"RecentDeleted"も左メニューに表示されません。
PHP5.5.21+pukiwiki1.5.0では、ちゃんと削除されます。
- PHP5.5.21+pukiwiki1.5.1でも試してみましたが、削除されませんでした。 -- kmi
- 編集フォームからの返信で本文にゴミ(タブや改行コード1文字分など)が残っていた場合は、ページ削除ではなく更新として扱われます。この動作自体はわざと白紙ページを作るといった1つの手法として載っていたような気がするのでバグではないと思いますが、まれに他の機能と干渉する場合があります。例えば現在のwikiソースをtrim() してから比較するという場合、現在の状態が削除済みと同一となって意図した動作にならない可能性があります。 --
- "xxxを削除しました"と表示されるので、本文にゴミが残っていることはないと思います。その後の実際のページの削除の処理が正しく行われていない、と推測されます。 -- kmi
- Windows 10; Apache 2.4; PHP 7.1; PukiWiki 1.5.1 の組み合わせで、ページ作成→そのページを削除、を試してみましたが再現しませんでした。なにか他に条件がないでしょうか?PukiWiki 1.5.1の初期状態でも発生しますか?なにかカスタマイズを入れていないでしょうか? -- umorigu
- 「ページを作成して、全ページを削除し」の『全ページを削除』とはどういう操作でしょうか?wiki/フォルダのファイルを直接削除していますか? -- umorigu
- 『全ページを削除』はまちがいで、「ページの全内容を削除」でした。 先ほど再度1.5.1を再インストールして試してみました。 ページを作成後、再度編集し、「プレビューボタン」を押して、「(ページの内容は空です。更新するとこのページは削除されます。)」と表示されて、「更新ボタン」を押しても、削除されない場合があります。 再度何らかの入力を行い、更新してから、もう一度、全削除したら、ページ削除ができました。 全削除してもページ削除されない条件がわからないです。 -- kmi
- 本文が改行だけになってしまうと、「空だけど消せないページ」になってしまうようです。これとは別に、『ページを削除した後に、左メニューの「最新のnn件」からページが削除されず』という問題は発生しますか? -- umorigu
- はい、というか、"xxxを削除しました"と表示されるにもかかわらず、左メニューの「最新のnn件」に残ってしまう、というのが質問の大本です。本文が改行だけになってしまうと、再入力をしないと削除できない、という問題と関連しているのでは? と思います。 -- kmi
- 質問者ではありませんが、ここでの不正投稿を削除しようとしてもこの状態(ページ内容を全部削除して対象ページが削除されたというのが出ても真っ白なページが残ってしまう)というのは時々ありますね。ブラウザ(Firefox)の方の問題の可能性もあるのかもしれません。ここのサイトが1.5.0だった時にも起きていたと思います。 --
- 本文が改行だけになって残ってしまうケースがあるようですね。これは改善したいです。 -- umorigu
- 改善の目途がつきましたら、この質問はクローズしたいと思います。 -- kmi
- やっと再現しました。編集で「スペース1個 」だけを入力して「ページの更新」、再度編集を開始して、空の状態で「ページの更新」すると、「削除しました。」と表示されますが実際にはページが残っていて、最新のxx件のリストにも載ったままです -- umorigu
- 以下のパッチとコメントは、匿名希望の方 (kintokさん)によるものです。-- henoheno
- page_write
-if ($text_without_author === $oldtext_without_author) {
+if (strlen($text_without_author) && ($text_without_author === $oldtext_without_author)) {
- (注)pukiwiki1.5で仕様変更されたため empty関数が空と判断する本文の場合ページが削除されます。
-$is_delete = empty($text_without_author);
+$is_delete = !strlen($text_without_author);
- dev:BugTrack/2418でバグとして扱い、修正します -- umorigu