** plugin_comment.patch [#AboutPlugin]
|RIGHT:100|LEFT:360|c
|~サマリ|comment.inc.phpの機能を拡張する|
|~リビジョン|2.0|
|~対応バージョン|1.5 (branch_r1_5)|
|~投稿者|[[NoName]]|
|~投稿日|&new{2016-01-16 (土) 14:06:49};|
標準のcomment.inc.phpの機能を拡張します
diff形式なのでpatchコマンドもしくは手動で書き換えてください。
commentプラグインに名前の入力を強制する forcename オプションを追加します
ついでにコメント無しで投稿した場合にもエラー文を出すようにしました
従来の noname オプションと併用した場合は noname の方を優先して名前は必要ありません
--- ./plugin.org/comment.inc.php 2016-01-11 01:22:46.000000000 +0900
+++ ./plugin/comment.inc.php 2016-01-20 16:35:39.744467900 +0900
@@ -25,20 +25,37 @@ function plugin_comment_action()
if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
- if (! isset($vars['msg'])) return array('msg'=>'', 'body'=>''); // Do nothing
+ $vars['page'] = $vars['refer'];
+ $_num = '#'.$vars['comment_no'];
+ $vars['_error'][$_num] = 'コメントがありません';
+ $vars['_name'][$_num] = $vars['name'];
+ $vars['_msg'][$_num] = $vars['msg'];
+
- $vars['msg'] = str_replace("\n", '', $vars['msg']); // Cut LFs
+ if (! isset($vars['_msg'][$_num])) return array('msg'=>'', 'body'=>''); // Do nothing
+
+ $vars['_msg'][$_num] = str_replace("\n", '', $vars['_msg'][$_num]); // Cut LFs
$head = '';
$match = array();
- if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['msg'], $match)) {
+ if (preg_match('/^(-{1,2})-*\s*(.*)/', $vars['_msg'][$_num], $match)) {
$head = & $match[1];
- $vars['msg'] = & $match[2];
+ $vars['_msg'][$_num] = & $match[2];
}
- if ($vars['msg'] == '') return array('msg'=>'', 'body'=>''); // Do nothing
+ if ($vars['_msg'][$_num] == '') return array('msg'=>'', 'body'=>''); // Do nothing
+
+ $vars['_error'][$_num] = '「お名前」の入力をおねがいします';
- $comment = str_replace('$msg', $vars['msg'], PLUGIN_COMMENT_FORMAT_MSG);
- if(isset($vars['name']) || ($vars['nodate'] != '1')) {
- $_name = (! isset($vars['name']) || $vars['name'] == '') ? $_no_name : $vars['name'];
+ $comment = str_replace('$msg', $vars['_msg'][$_num], PLUGIN_COMMENT_FORMAT_MSG);
+ if(isset($vars['_name'][$_num]) || ($vars['nodate'] != '1')) {
+ $_name = (! isset($vars['_name'][$_num]) || $vars['_name'][$_num] == '') ? $_no_name : $vars['name'];
+ if ($vars['forcename'] && $_name == $_no_name) {
+ $vars['_msg'][$_num] = htmlsc($vars['_msg'][$_num]);
+ return array('msg'=>'', 'body'=>'');
+ } else {
+ $vars['_error'][$_num] = '';
+ $vars['_msg'][$_num] = '';
+ $vars['_name'][$_num] = $vars['forcename'] ? $_name : '';
+ }
$_name = ($_name == '') ? '' : str_replace('$name', $_name, PLUGIN_COMMENT_FORMAT_NAME);
$_now = ($vars['nodate'] == '1') ? '' :
str_replace('$now', $now, PLUGIN_COMMENT_FORMAT_NOW);
@@ -78,8 +95,6 @@ function plugin_comment_action()
$retvars['msg'] = $title;
$retvars['body'] = $body;
- $vars['page'] = $vars['refer'];
-
return $retvars;
}
@@ -94,6 +109,10 @@ function plugin_comment_convert()
if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
$comment_no = $numbers[$vars['page']]++;
+ $_name = $vars['_name']['#'.$comment_no];
+ $_msg = $vars['_msg']['#'.$comment_no];
+ $_error = $vars['_error']['#'.$comment_no];
+
$options = func_num_args() ? func_get_args() : array();
if (in_array('noname', $options)) {
$nametags = '<label for="_p_comment_comment_' . $comment_no . '">' .
@@ -103,31 +122,39 @@ function plugin_comment_convert()
$_btn_name . '</label>' .
'<input type="text" name="name" id="_p_comment_name_' .
$comment_no . '" size="' . PLUGIN_COMMENT_SIZE_NAME .
+ '" value="'.htmlsc($_name).
'" />' . "\n";
}
+ $forcename = (in_array('forcename', $options) && !in_array('noname', $options))? '1' : '0';
$nodate = in_array('nodate', $options) ? '1' : '0';
$above = in_array('above', $options) ? '1' :
(in_array('below', $options) ? '0' : PLUGIN_COMMENT_DIRECTION_DEFAULT);
$script = get_script_uri();
$s_page = htmlsc($vars['page']);
+ $_error = $_error ? "<p> ERROR: ".htmlsc($_error)."</p>" : "";
$string = <<<EOD
<br />
-<form action="$script" method="post">
+<form action="$script?cmd=comment&refer=$s_page" method="post">
<div>
+ <!--
<input type="hidden" name="plugin" value="comment" />
<input type="hidden" name="refer" value="$s_page" />
+ -->
<input type="hidden" name="comment_no" value="$comment_no" />
+ <input type="hidden" name="forcename" value="$forcename" />
<input type="hidden" name="nodate" value="$nodate" />
<input type="hidden" name="above" value="$above" />
<input type="hidden" name="digest" value="$digest" />
+ $_error
$nametags
- <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" />
+ <input type="text" name="msg" id="_p_comment_comment_{$comment_no}" size="$comment_cols" value="{$_msg}" />
<input type="submit" name="comment" value="$_btn_comment" />
</div>
</form>
EOD;
+ $_name = $_msg = $_error = '';
return $string;
}
?>
** バグなど [#BugReport]
- 複数実行したときにエラー文がおかしくなる問題を修正 -- &new{2016-01-20 (水) 16:40:21};
#comment(noname,above)