レス削除時に一部専ブラでデータが破損扱いになる問題とレス管理画面で余分にタイトルが表示されるバグの修正

This commit is contained in:
土曜日よりの使者 2023-10-16 03:06:02 +09:00
parent 134f86a9d4
commit 9d59b7d2bf
1 changed files with 19 additions and 4 deletions

View File

@ -55,7 +55,7 @@ $subjectfile = "../".$_REQUEST['bbs']."/subject.json";
// スレッドが存在しない場合
if (!is_file($THREADFILE)) Finish('<b>該当するスレッドがありません</b>');
// スレッド取得
$LOG = file($THREADFILE);
$LOG = file($THREADFILE, FILE_IGNORE_NEW_LINES);
if ($_POST['del']) {
if (!$_POST['kakunin']) {
// スレッド削除
@ -89,11 +89,26 @@ if ($_POST['del']) {
// 更新
file_put_contents($subjectfile, json_encode($PAGEFILE, JSON_UNESCAPED_UNICODE), LOCK_EX);
}
for ($i = 0; $i < count($LOG); $i++) {
if ($_POST[$i] == "checked" || ($i + 1 >= $_POST['from'] && $i + 1 <= $_POST['to']) || ($_POST['itti'] && strpos($LOG[$i],$_POST['itti']) !== false)) $LOG[$i] = "<><><>".$SETTING['DELETED_TEXT']."<>\n";
// >>1保存
$AUTHOR = $LOG[0];
// 削除後の文字列
$REPLACE_TEXT = '</b>'.$SETTING['DELETED_TEXT'].'<b><>'.str_repeat($SETTING['DELETED_TEXT'].'<>', 3);
for ($i = 0, $LOG_COUNT = count($LOG); $i < $LOG_COUNT; ++$i) {
if ($_POST[$i] === 'checked' // レス個別
|| ($i + 1 >= $_POST['from'] && $i + 1 <= $_POST['to']) // レス範囲
|| ($_POST['itti'] && strpos($LOG[$i],$_POST['itti']) !== false)) { // レス条件一致
$LOG[$i] = $REPLACE_TEXT;
}
}
// >>1が削除対象だった場合、末尾にスレタイ付与
if ($LOG[0] === $REPLACE_TEXT) {
$LOG[0] .= explode("<>", $AUTHOR)[4];
}
$fp = '';
foreach($LOG as $tmp) $fp .= $tmp;
foreach($LOG as $tmp) $fp .= $tmp."\n";
file_put_contents($THREADFILE, $fp, LOCK_EX);
if (is_file($DATFILE)) file_put_contents($DATFILE, mb_convert_encoding($fp, "SJIS-win", "UTF-8"), LOCK_EX);
$result = "実行しました";