汎用関数addSystemMessageの実装

This commit is contained in:
konkon-fox 2023-10-30 01:48:11 +09:00
parent 68a8259812
commit fa913951ea
4 changed files with 34 additions and 19 deletions

View File

@ -329,6 +329,8 @@ if (!$newthread && !$tlonly) {
if ($SETTING['BBS_FORCE_SAGE'] && $_POST['thread'] + $SETTING['BBS_FORCE_SAGE'] < $NOWTIME) $sage = true;
}
// システムメッセージ用関数
@include './extend/extra-commands/utilities/add-system-message.php';
// !chttコマンド
@include './extend/extra-commands/chtt.php';
// !xDy(dice)コマンド

View File

@ -38,23 +38,20 @@ function applyChttCommand(
if(strpos($_POST['comment'], '!chtt:') === false) {
return;
}
if(!preg_match('/\!chtt:(.*?)((?=\<br\>)|$)/', $_POST['comment'], $commandMatches)) {
$commentParts = explode('<hr>', $_POST['comment']);
if(!preg_match('/\!chtt:(.*?)((?=\<br\>)|$)/', $commentParts[0], $commandMatches)) {
return;
}
// コマンド文字列から新スレタイを抽出
$newThreadTitle = trim($commandMatches[1]);
// 本文にシステムメッセージ用ラインを追加
if(strpos($_POST['comment'], '<hr>') === false) {
$_POST['comment'] .= '<hr>';
}
// 空欄エラー
if($newThreadTitle === '') {
$_POST['comment'] .= '★新スレタイが空欄です。<br>';
addSystemMessage('★新スレタイが空欄です。<br>');
return;
}
// スレタイ長すぎエラー
if(mb_strlen($newThreadTitle, 'UTF-8') > $SETTING['BBS_SUBJECT_COUNT']) {
$_POST['comment'] .= '★新スレタイが長すぎます。<br>';
addSystemMessage('★新スレタイが長すぎます。<br>');
return;
}
// スレタイにIDが存在するかを判定
@ -63,12 +60,14 @@ function applyChttCommand(
// 成功メッセージ出力(本文)
$oldThreadTitle = $titleHasId ? preg_replace('/\s\[[^\[]+?★\]$/', '', $subject) : $subject;
$changeMessage = "★スレタイ変更【{$oldThreadTitle}】→【{$newThreadTitle}】<br>";
$_POST['comment'] .= $changeMessage;
addSystemMessage($changeMessage);
// 成功メッセージ出力(>>1) datへの反映はbbs-main.phpで行われる
if(strpos($message, '<hr>') === false) {
$message .= '<hr>';
$messageParts = explode('<hr>', $message);
if(count($messageParts) < 2) {
array_push($messageParts, '');
}
$message .= preg_replace('/\!(?=[a-zA-Z0-9])/', '', $changeMessage);
$messageParts[1] .= preg_replace('/\!(?=[a-zA-Z0-9])/', '&#33;', $changeMessage);
$message = implode('<hr>', $messageParts);
// 新スレタイに>>1のIDを追加
if($titleHasId) {
$newThreadTitle .= " [{$IDMatches[1]}★]";

View File

@ -58,21 +58,19 @@ function applyDiceCommand($SETTING)
$commentParts[0],
$DICE_LIMIT
);
$newComment = implode('<hr>', $commentParts);
// 本文変更
$_POST['comment'] = implode('<hr>', $commentParts);
// 例外メッセージ
if($xIsOver || $yIsOver) {
if(strpos($newComment, '<hr>') === false) {
$newComment .= '<hr>';
}
$systemMessage = '';
if($xIsOver) {
$newComment .= "★x(ダイスの個数)の最大値は{$MAX_NUM_OF_DICE}です。<br>";
$systemMessage .= "★x(ダイスの個数)の最大値は{$MAX_NUM_OF_DICE}です。<br>";
}
if($yIsOver) {
$newComment .= "★y(ダイスの出目)の最大値は{$MAX_DICE_VALUE}です。<br>";
$systemMessage .= "★y(ダイスの出目)の最大値は{$MAX_DICE_VALUE}です。<br>";
}
addSystemMessage($systemMessage);
}
// 本文変更
$_POST['comment'] = $newComment;
}
applyDiceCommand($SETTING);

View File

@ -0,0 +1,16 @@
<?php
/**
* コマンド処理でのシステムメッセージを本文に追加する関数定義
*
* @param string $text 追加したいシステムメッセージ
* @return void
*/
function addSystemMessage($text)
{
$commentParts = explode('<hr>', $_POST['comment']);
if(count($commentParts) < 2) {
array_push($commentParts, '');
}
$commentParts[1] .= $text;
$_POST['comment'] = implode('<hr>', $commentParts);
}