質問箱/5264

カテゴリサイト管理・運営
サマリpcommentのコメントの削除防止方法を探しています
バージョン1.51
投稿者
状態完了
投稿日2017-06-16 (金) 18:53:30

質問

質問箱/5082の方と同じくコメントをあたりかまわず削除してしまう人がいます。

質問箱/5082の回答2に従ってpcomment.inc.phpの193行目のcheck_editable関数をコメントアウトしたのですが、これだとコメントした瞬間にコメントページの凍結が解除されてしまい一時的な予防にしかなりませんでした。

pcommentのフォームから投稿するときにだけページの凍結を解除し、コメントページに内容を反映したときに自動で凍結しなおすような仕様にpcommentプラグインを改造できないでしょうか? もしくは、凍結を使用せずに同じような削除・改変防止機能を実現することはできるでしょうか?

回答

  • 「コメントした瞬間にコメントページの凍結が解除されてしまい」この動作がpukiwikiのバグですね。以下のようにすると修正できます。「-」の行を削除、「+」の行を追加です。 -- umorigu 2017-06-18 (日) 19:14:01

lib/func.php 118行目

diff --git a/lib/func.php b/lib/func.php
index c1e38bc..4d929ab 100644
--- a/lib/func.php
+++ b/lib/func.php
@@ -118,11 +118,10 @@ function is_freeze($page, $clearcache = FALSE)
                        die('is_freeze(): fopen() failed: ' . htmlsc($page));
                flock($fp, LOCK_SH) or die('is_freeze(): flock() failed');
                rewind($fp);
-               $buffer = fgets($fp, 9);
+               $buffer = fread($fp, 1000);
                flock($fp, LOCK_UN) or die('is_freeze(): flock() failed');
                fclose($fp) or die('is_freeze(): fclose() failed: ' . htmlsc($page));

-               $is_freeze[$page] = ($buffer != FALSE && rtrim($buffer, "\r\n") == '#freeze');
+               $is_freeze[$page] = (bool) preg_match('/^#freeze$/m', $buffer);
                return $is_freeze[$page];
        }
 }

plugin/unfreeze.inc.php 32行目

--- a/plugin/unfreeze.inc.php
+++ b/plugin/unfreeze.inc.php
@@ -30,7 +30,11 @@ function plugin_unfreeze_action()
        } else if ($pass !== NULL && pkwk_login($pass)) {
                // Unfreeze
                $postdata = get_source($page);
-               array_shift($postdata);
+               for ($i = count($postdata) - 1; $i >= 0; $i--) {
+                       if ("#freeze\n" === $postdata[$i]) {
+                               $postdata[$i] = '';
+                       }
+               }
                $postdata = join('', $postdata);
  • ありがとうございます! 教えていただいたとおりに修正したらしっかりと機能しました。 -- 質問者? 2017-06-19 (月) 10:44:53


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-06-19 (月) 17:17:48
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.223 sec.

OSDN