#author("2017-06-19T17:17:48+09:00","","")
**[[質問箱5/264]] [#t02cf5fe]
#author("2018-03-11T22:15:20+09:00;2017-06-19T17:17:48+09:00","","")
**[[質問箱/5264]] [#t02cf5fe]
|RIGHT:70|LEFT:410|c
|~カテゴリ|サイト管理・運営|
|~サマリ|pcommentのコメントの削除防止方法を探しています|
|~バージョン|1.51|
|~投稿者||
|~状態|完了|
|~投稿日|&new{2017-06-16 (金) 18:53:30};|
***質問 [#lbf3fcd6]
[[質問箱5/82]]の方と同じくコメントをあたりかまわず削除してしまう人がいます。
~[[質問箱5/82]]の回答2に従ってpcomment.inc.phpの193行目のcheck_editable関数をコメントアウトしたのですが、これだとコメントした瞬間にコメントページの凍結が解除されてしまい一時的な予防にしかなりませんでした。
[[質問箱/5082]]の方と同じくコメントをあたりかまわず削除してしまう人がいます。
~[[質問箱/5082]]の回答2に従ってpcomment.inc.phpの193行目のcheck_editable関数をコメントアウトしたのですが、これだとコメントした瞬間にコメントページの凍結が解除されてしまい一時的な予防にしかなりませんでした。
~pcommentのフォームから投稿するときにだけページの凍結を解除し、コメントページに内容を反映したときに自動で凍結しなおすような仕様にpcommentプラグインを改造できないでしょうか?
もしくは、凍結を使用せずに同じような削除・改変防止機能を実現することはできるでしょうか?

***回答 [#h8621c89]
- 「コメントした瞬間にコメントページの凍結が解除されてしまい」この動作がpukiwikiのバグですね。以下のようにすると修正できます。「-」の行を削除、「+」の行を追加です。 -- [[umorigu]] &new{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);
- ありがとうございます! 教えていただいたとおりに修正したらしっかりと機能しました。 -- [[質問者]] &new{2017-06-19 (月) 10:44:53};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.048 sec.

OSDN