カテゴリ | サイト管理・運営 |
---|---|
サマリ | pcommentのコメントの削除防止方法を探しています |
バージョン | 1.51 |
投稿者 | |
状態 | 完了 |
投稿日 | 2017-06-16 (金) 18:53:30 |
質問箱/5082の方と同じくコメントをあたりかまわず削除してしまう人がいます。
質問箱/5082の回答2に従ってpcomment.inc.phpの193行目のcheck_editable関数をコメントアウトしたのですが、これだとコメントした瞬間にコメントページの凍結が解除されてしまい一時的な予防にしかなりませんでした。
pcommentのフォームから投稿するときにだけページの凍結を解除し、コメントページに内容を反映したときに自動で凍結しなおすような仕様にpcommentプラグインを改造できないでしょうか? もしくは、凍結を使用せずに同じような削除・改変防止機能を実現することはできるでしょうか?
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);