From 251a189aebe4c2e519980003b3cca14baab788a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:17:47 +0900 Subject: [PATCH] uwuzu v1.6.3 Hapuego --- api/me/notification/index.php | 9 ++- function/function.php | 116 ++++++++++++++++++++++++++++----- login.php | 1 + nextpage/bookmarktimeline.php | 39 +---------- nextpage/followtimeline.php | 39 +---------- nextpage/foryoutimeline.php | 39 +---------- nextpage/localtimeline.php | 37 +---------- nextpage/searchtimeline.php | 39 +---------- nextpage/ueusetimeline.php | 39 +---------- nextpage/userliketimeline.php | 39 +---------- nextpage/usermediatimeline.php | 39 +---------- nextpage/usertimeline.php | 41 +----------- server/uwuzuinfo.txt | 4 +- server/uwuzurelease.txt | 12 ++++ settings/index.php | 2 +- update.json | 24 +++++-- uwuzu_database.sql | 5 +- 17 files changed, 154 insertions(+), 370 deletions(-) diff --git a/api/me/notification/index.php b/api/me/notification/index.php index 5ba1ee3..8c3fc9b 100644 --- a/api/me/notification/index.php +++ b/api/me/notification/index.php @@ -79,7 +79,7 @@ if(isset($_GET['token']) || (!(empty($Get_Post_Json)))) { if($AuthData[0] === true){ $userData = $AuthData[2]; - $messageQuery = $pdo->prepare("SELECT fromuserid,title,msg,url,datetime,userchk,category FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT :offset, :itemsPerPage"); + $messageQuery = $pdo->prepare("SELECT fromuserid,title,msg,url,datetime,userchk,category,valueid FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT :offset, :itemsPerPage"); $messageQuery->bindValue(':userid', $userData["userid"], PDO::PARAM_STR); $messageQuery->bindValue(':offset', $offset, PDO::PARAM_INT); $messageQuery->bindValue(':itemsPerPage', $limit, PDO::PARAM_INT); @@ -126,6 +126,12 @@ if(isset($_GET['token']) || (!(empty($Get_Post_Json)))) { }else{ $userchk = false; } + + if(!(empty($notificationdata["valueid"]))){ + $valueid = decode_yajirushi(htmlspecialchars_decode($notificationdata["valueid"])); + }else{ + $valueid = null; + } $item = [ 'from' => $now_userdata, @@ -133,6 +139,7 @@ if(isset($_GET['token']) || (!(empty($Get_Post_Json)))) { 'title' => decode_yajirushi(htmlspecialchars_decode($notificationdata["title"])), 'text' => decode_yajirushi(htmlspecialchars_decode($notificationdata["msg"])), 'datetime' => decode_yajirushi(htmlspecialchars_decode($notificationdata["datetime"])), + 'valueid' => $valueid, 'is_checked' => $userchk, ]; diff --git a/function/function.php b/function/function.php index 7888ce2..2c03290 100644 --- a/function/function.php +++ b/function/function.php @@ -1148,7 +1148,7 @@ function GenNotificationId($to, $from, $title, $message, $url, $category) { return hash('sha3-512', $data); } -function send_notification($to,$from,$title,$message,$url,$category){ +function send_notification($to,$from,$title,$message,$url,$category,$valueid = null){ // データベースに接続 try { $option = array( @@ -1169,6 +1169,15 @@ function send_notification($to,$from,$title,$message,$url,$category){ if(in_array($category, explode(',', $to_result["notification_settings"])) || empty($to_result["notification_settings"]) || $category === "system" || $category === "other"){ //ブロックされてたら送らない if(!(in_array($from, explode(',', $to_result["blocklist"])))){ + if(!(empty($valueid))){ + if(mb_strlen($valueid) > 256){ + $save_valueid = ""; + }else{ + $save_valueid = $valueid; + } + }else{ + $save_valueid = ""; + } if(!(empty($pdo))){ $pdo->beginTransaction(); try { @@ -1183,7 +1192,7 @@ function send_notification($to,$from,$title,$message,$url,$category){ $notification_id = GenNotificationId($touserid, $fromuserid, $title, $msg, $url, $notification_category); // 通知用SQL作成 - $stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title, category, notificationid) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title, :category, :notificationid)"); + $stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title, category, notificationid, valueid) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title, :category, :notificationid, :valueid)"); $stmt->bindParam(':fromuserid', $fromuserid, PDO::PARAM_STR); $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); @@ -1193,6 +1202,8 @@ function send_notification($to,$from,$title,$message,$url,$category){ $stmt->bindParam(':title', $title, PDO::PARAM_STR); $stmt->bindParam(':category', $notification_category, PDO::PARAM_STR); $stmt->bindParam(':notificationid', $notification_id, PDO::PARAM_STR); + + $stmt->bindParam(':valueid', $save_valueid, PDO::PARAM_STR); $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); @@ -1367,7 +1378,8 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ }else{ $save_nsfw = "false"; } - if(empty($ueuse) && empty($ruUniqid)) { + + if (($ueuse === '' || $ueuse === null) && empty($ruUniqid)) { $error_message[] = '内容を入力してください。(INPUT_PLEASE)'; } else { // 文字数を確認 @@ -1387,11 +1399,11 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ } // 改行ユーズ確認 - if(preg_match('/^[\n\r]+$/', $ueuse) === 1){ + if(preg_match('/^\s+$/u', $ueuse) === 1){ $error_message[] = '内容を入力してください。(INPUT_PLEASE)'; } } - + $old_datetime = date("Y-m-d H:i:00"); $now_datetime = date("Y-m-d H:i:00",strtotime("+1 minute")); $rate_Query = $pdo->prepare("SELECT * FROM ueuse WHERE account = :userid AND TIME(datetime) BETWEEN :old_datetime AND :now_datetime"); @@ -1711,7 +1723,7 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ $res = $pdo->commit(); foreach ($mentionedUsers as $mentionedUser) { - send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention"); + send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention", $uniqid); } } catch(Exception $e) { @@ -1766,10 +1778,10 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ $res = $pdo->commit(); foreach ($mentionedUsers as $mentionedUser) { - send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention"); + send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention", $uniqid); } - send_notification($touserid,$userid,"".$userid."さんが返信しました!",$ueuse,"/!".$uniqid."", "reply"); + send_notification($touserid,$userid,"".$userid."さんが返信しました!",$ueuse,"/!".$uniqid."", "reply", $uniqid); } catch(Exception $e) { // エラーが発生した時はロールバック $pdo->rollBack(); @@ -1824,10 +1836,10 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ $res = $pdo->commit(); foreach ($mentionedUsers as $mentionedUser) { - send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention"); + send_notification($mentionedUser,$userid,"".$userid."さんにメンションされました!",$ueuse,"/!".$uniqid."", "mention", $uniqid); } - send_notification($touserid,$userid,"".$userid."さんがリユーズしました!",$ueuse,"/!".$uniqid."", "reuse"); + send_notification($touserid,$userid,"".$userid."さんがリユーズしました!",$ueuse,"/!".$uniqid."", "reuse", $uniqid); } catch(Exception $e) { // エラーが発生した時はロールバック @@ -2111,7 +2123,7 @@ function follow_user($pdo, $to_userid, $userid){ $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); $res_follow = $updateQuery->execute(); - send_notification($userData["userid"], $userid, "🎉" . $userid . "さんにフォローされました!🎉", "" . $userid . "さんにフォローされました。", "/@" . $userid . "", "follow"); + send_notification($userData["userid"], $userid, "🎉" . $userid . "さんにフォローされました!🎉", "" . $userid . "さんにフォローされました。", "/@" . $userid . "", "follow", $userid); if ($res && $res_follow) { $pdo->commit(); @@ -2348,7 +2360,7 @@ function deleteUser($pdo, $userid, $step, $job_uniqid){ if ($res) { $pdo->commit(); - send_notification($userid, "uwuzu-fromsys", "🗑️アカウントの削除が開始されました🗑️", "アカウントの削除が開始されました!\n今後、アカウントのデータは順次削除されます。\n削除には時間がかかります。\n\nログアウトしてお待ち下さい。\n\nアカウントの復旧はできません。", "/others", "system"); + send_notification($userid, "uwuzu-fromsys", "🗑️アカウントの削除が開始されました🗑️", "アカウントの削除が開始されました!\n今後、アカウントのデータは順次削除されます。\n削除には時間がかかります。\n\nログアウトしてお待ち下さい。\n\nアカウントの復旧はできません。", "/others", "system", $userid); if(changeJob($pdo, $userid, $job_uniqid, "delete_ueuse", "waiting")){ return true; }else{ @@ -2649,7 +2661,7 @@ function addFavorite($pdo, $uniqid, $userid){ // ユーザーIDを追加 $favoriteList[] = $userid; - send_notification(safetext($post['account']),$userid,"".$userid."さんがいいねしました!",safetext($post['ueuse']),"/!".$uniqid."","favorite"); + send_notification(safetext($post['account']),$userid,"".$userid."さんがいいねしました!",safetext($post['ueuse']),"/!".$uniqid."","favorite", $uniqid); //1いいねでスコアが1増加 changePopularity($pdo, $uniqid, $userid, 1); @@ -2755,7 +2767,7 @@ function getUeuseData($pdo, $uniqid) { $fav = $ueuseDatas['favorite']; $favIds = explode(',', $fav); - $ueuseDatas["favorite_conut"] = count($favIds)-1; + $ueuseDatas["favorite_count"] = count($favIds)-1; return $ueuseDatas; } @@ -3336,7 +3348,7 @@ function FormatUeuseItem(array $value, string $myblocklist, string $mybookmark, "rpuniqid" => $reused["rpuniqid"], "ruuniqid" => $reused["ruuniqid"], "nsfw" => filter_var($reused["nsfw"], FILTER_VALIDATE_BOOLEAN), - "favoritecount" => $reused["favorite_conut"], + "favoritecount" => $reused["favorite_count"], "replycount" => $reused["reply_count"], "reusecount" => $reused["reuse_count"], "is_favorite" => in_array($userId, explode(',', $reused['favorite'])), @@ -3375,7 +3387,7 @@ function FormatUeuseItem(array $value, string $myblocklist, string $mybookmark, "rpuniqid" => $value["rpuniqid"], "ruuniqid" => $value["ruuniqid"], "nsfw" => filter_var($value["nsfw"], FILTER_VALIDATE_BOOLEAN), - "favoritecount" => $value["favorite_conut"], + "favoritecount" => $value["favorite_count"], "replycount" => $value["reply_count"], "reusecount" => $value["reuse_count"], "is_favorite" => in_array($userId, explode(',', $value['favorite'])), @@ -3581,4 +3593,76 @@ function APIAuth($pdo, $token, $scope){ } } +function getDatasUeuse(PDO $pdo, array $messages): array { + if (empty($messages)) return []; + + // --- userId / uniqid を安全に抽出 --- + $userIds = array_values(array_unique(array_filter(array_column($messages, 'account'), fn($v) => $v !== null && $v !== ''))); + $uniqids = array_values(array_unique(array_filter(array_column($messages, 'uniqid'), fn($v) => $v !== null && $v !== ''))); + + $users = []; + if (!empty($userIds)) { + $placeholders = implode(',', array_fill(0, count($userIds), '?')); + $stmt = $pdo->prepare("SELECT userid, username, profile, role, iconname, headname, sacinfo FROM account WHERE userid IN ($placeholders)"); + $stmt->execute($userIds); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $users[$row['userid']] = $row; + } + } + + $replyCounts = []; + $reuseCounts = []; + if (!empty($uniqids)) { + $placeholders = implode(',', array_fill(0, count($uniqids), '?')); + + $stmt = $pdo->prepare("SELECT rpuniqid, COUNT(*) AS reply_count FROM ueuse WHERE rpuniqid IN ($placeholders) GROUP BY rpuniqid"); + $stmt->execute($uniqids); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $replyCounts[$row['rpuniqid']] = (int)$row['reply_count']; + } + + $stmt = $pdo->prepare("SELECT ruuniqid, COUNT(*) AS reuse_count FROM ueuse WHERE ruuniqid IN ($placeholders) GROUP BY ruuniqid"); + $stmt->execute($uniqids); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $reuseCounts[$row['ruuniqid']] = (int)$row['reuse_count']; + } + } + + // --- messages に反映(ループ内でDBを叩かない)--- + foreach ($messages as &$message) { + // account のユーザー情報をマージ(存在すれば上書き) + $acc = $message['account'] ?? null; + if ($acc !== null && isset($users[$acc])) { + $userRow = $users[$acc]; + $message['username'] = $userRow['username'] ?? ($message['username'] ?? null); + $message['profile'] = $userRow['profile'] ?? ($message['profile'] ?? null); + $message['role'] = $userRow['role'] ?? ($message['role'] ?? null); + $message['iconname'] = $userRow['iconname'] ?? ($message['iconname'] ?? null); + $message['headname'] = $userRow['headname'] ?? ($message['headname'] ?? null); + $message['sacinfo'] = $userRow['sacinfo'] ?? ($message['sacinfo'] ?? null); + } + + // reply / reuse + $uniq = $message['uniqid'] ?? ''; + $message['reply_count'] = $replyCounts[$uniq] ?? 0; + $message['reuse_count'] = $reuseCounts[$uniq] ?? 0; + + // --- favorite_count を安全に計算 --- + // 1) 値を文字列として扱い、2) explode して trim、3) 空文字を除去、4) count + $favStr = isset($message['favorite']) ? (string)$message['favorite'] : ''; + if ($favStr === '') { + $favCount = 0; + } else { + $parts = array_map('trim', explode(',', $favStr)); + $parts = array_filter($parts, fn($v) => $v !== ''); + $favCount = count($parts); + } + + $message['favorite_count'] = $favCount; + } + unset($message); + + return $messages; +} + ?> \ No newline at end of file diff --git a/login.php b/login.php index 0ae9eda..59d2381 100644 --- a/login.php +++ b/login.php @@ -314,6 +314,7 @@ $pdo = null;

パスワードを表示する

+
パスワードに絵文字や日本語を使用している場合はパスワードの表示をオンにして入力してください。
diff --git a/nextpage/bookmarktimeline.php b/nextpage/bookmarktimeline.php index 5b77b56..9ecfe24 100644 --- a/nextpage/bookmarktimeline.php +++ b/nextpage/bookmarktimeline.php @@ -81,44 +81,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/followtimeline.php b/nextpage/followtimeline.php index 739e579..a1423db 100644 --- a/nextpage/followtimeline.php +++ b/nextpage/followtimeline.php @@ -78,44 +78,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/foryoutimeline.php b/nextpage/foryoutimeline.php index 9ac4f6f..e63bd6f 100644 --- a/nextpage/foryoutimeline.php +++ b/nextpage/foryoutimeline.php @@ -196,44 +196,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe shuffle($messages); // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/localtimeline.php b/nextpage/localtimeline.php index 5eedaec..f880603 100644 --- a/nextpage/localtimeline.php +++ b/nextpage/localtimeline.php @@ -60,44 +60,9 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } + $messages = getDatasUeuse($pdo, $messages); - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/searchtimeline.php b/nextpage/searchtimeline.php index 8d8b86b..633858a 100644 --- a/nextpage/searchtimeline.php +++ b/nextpage/searchtimeline.php @@ -91,44 +91,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/ueusetimeline.php b/nextpage/ueusetimeline.php index 9fabc8f..e3091b6 100644 --- a/nextpage/ueusetimeline.php +++ b/nextpage/ueusetimeline.php @@ -74,44 +74,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/userliketimeline.php b/nextpage/userliketimeline.php index 4ac781e..041375b 100644 --- a/nextpage/userliketimeline.php +++ b/nextpage/userliketimeline.php @@ -104,44 +104,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/usermediatimeline.php b/nextpage/usermediatimeline.php index c12fd5c..c58714d 100644 --- a/nextpage/usermediatimeline.php +++ b/nextpage/usermediatimeline.php @@ -101,44 +101,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData){ - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData){ - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds)-1; - } + $messages = getDatasUeuse($pdo, $messages); //adsystem------------------ $message['ads'] = "false"; diff --git a/nextpage/usertimeline.php b/nextpage/usertimeline.php index 8d9da4c..6def194 100644 --- a/nextpage/usertimeline.php +++ b/nextpage/usertimeline.php @@ -87,44 +87,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える - foreach ($messages as &$message) { - $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); - $userQuery->bindValue(':userid', $message["account"]); - $userQuery->execute(); - $userData = $userQuery->fetch(); - - if ($userData) { - $message['iconname'] = $userData['iconname']; - $message['headname'] = $userData['headname']; - $message['username'] = $userData['username']; - $message['sacinfo'] = $userData['sacinfo']; - $message['role'] = $userData['role']; - } - - //リプライ数取得 - $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); - $rpQuery->bindValue(':rpuniqid', $message['uniqid']); - $rpQuery->execute(); - $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); - - if ($rpData) { - $message['reply_count'] = $rpData['reply_count']; - } - - //リユーズ数取得 - $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); - $ruQuery->bindValue(':ruuniqid', $message['uniqid']); - $ruQuery->execute(); - $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); - - if ($ruData) { - $message['reuse_count'] = $ruData['reuse_count']; - } - - $fav = $message['favorite']; - $favIds = explode(',', $fav); - $message["favorite_conut"] = count($favIds) - 1; - } + $messages = getDatasUeuse($pdo, $messages); } elseif($userData != null) { $activity_base = GetActivityPubJson($userData['outbox']); $pageUrl = $activity_base['first'] ?? null; @@ -210,7 +173,7 @@ if (safetext(isset($_POST['page'])) && safetext(isset($_POST['userid'])) && safe "video1" => $video, "nsfw" => $object["sensitive"] ?? false, "favorite" => "", - "favorite_conut" => 0, + "favorite_count" => 0, "reply_count" => 0, "reuse_count" => 0, "abi" => "", diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt index 4a08ade..708cb8b 100644 --- a/server/uwuzuinfo.txt +++ b/server/uwuzuinfo.txt @@ -1,4 +1,4 @@ uwuzu -1.6.2 -2025/08/08 +1.6.3 +2025/08/10 daichimarukana,putonfps \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt index 231b60d..812aac7 100644 --- a/server/uwuzurelease.txt +++ b/server/uwuzurelease.txt @@ -1,6 +1,18 @@ ## リリースノートだぜぇぇぇぇぇぇい!!!!!!! ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) +## Version 1.6.3 +2025/08/10 +fix: 「0」のみのユーズが行えない問題を修正しました! +fix: banuserid.txt(登録禁止ユーザーID)内のinfomationという誤った綴りををinformationに修正しました! +chg: すべてのタイムラインの大幅高速化を行いました! +chg: 設定画面にて、新しいパスワードの入力フィールドにカーソルを合わせた際に新しいパスワードの自動生成が促されるように変更しました! +chg: ログインフォームに「パスワードに絵文字や日本語を使用している場合はパスワードの表示をオンにして入力してください。」と記載しました! +new: 通知APIにvalueidという値を追加しました! + valueidでは、ユーズのメンションや返信では、メンション・返信してきたユーズのID、フォローなどではフォローしてきたユーザーのIDなどが入ります。 + すべての通知にvalueidの値が含まれるわけではありませんので、ご注意ください。 + これにより、uwuzuのDB内のnotificationテーブルの構造に「valueid」(varchar(256))を追加する必要があります。 + ## Version 1.6.2 (Hapuego) 2025/08/08 fix: 引用リユーズにおいて、公式・Botアカウントのユーズをリユーズした際に公式・Botではないアカウントのユーズに公式マーク・Bot表示が付いてしまう問題を修正しました! diff --git a/settings/index.php b/settings/index.php index 345b9d7..2306ada 100644 --- a/settings/index.php +++ b/settings/index.php @@ -626,7 +626,7 @@ $pdo = null;

新しいパスワード

- +

パスワードを表示する

diff --git a/update.json b/update.json index 51dca0d..726af08 100644 --- a/update.json +++ b/update.json @@ -1,14 +1,24 @@ { "software": "uwuzu", - "version": "1.6.2", - "release_date": "2025/08/08", - "release_notes": "このアップデートでは、リプライ取得APIが正常に動作しない問題やユーズの表示に関する問題を修正しました!\n詳細はリリースノートをご確認ください。", - "notices": "アップデート前にデータのバックアップを行うことをおすすめします!\nアップデート後はキャッシュクリアをお忘れなく!", + "version": "1.6.3", + "release_date": "2025/08/10", + "release_notes": "このアップデートでは、「0」のみのユーズが行えない問題の修正や、タイムラインの大幅高速化などの改善が含まれています!\nアップデートの前にDBの構造の更新が必要です。リリースノートに従って更新をしてください!\n詳細はリリースノートをご確認ください。", + "notices": "アップデート前にデータのバックアップを行うことをおすすめします!", "files": { "overwrite": [ - "/js/view_function.js", - "/css/home.css", - "/api/ueuse/replies.php", + "/api/me/notification/index.php", + "/function/function.php", + "/nextpage/bookmarktimeline.php", + "/nextpage/followtimeline.php", + "/nextpage/foryoutimeline.php", + "/nextpage/localtimeline.php", + "/nextpage/searchtimeline.php", + "/nextpage/ueusetimeline.php", + "/nextpage/userliketimeline.php", + "/nextpage/usermediatimeline.php", + "/nextpage/usertimeline.php", + "/settings/index.php", + "/login.php", "/server/uwuzuabout.txt", "/server/uwuzuinfo.txt", "/server/uwuzurelease.txt" diff --git a/uwuzu_database.sql b/uwuzu_database.sql index c4a762b..fca513d 100644 --- a/uwuzu_database.sql +++ b/uwuzu_database.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- ホスト: 127.0.0.1 --- 生成日時: 2025-08-05 05:53:23 +-- 生成日時: 2025-08-10 11:10:28 -- サーバのバージョン: 10.4.32-MariaDB -- PHP のバージョン: 8.2.12 @@ -211,7 +211,8 @@ CREATE TABLE `notification` ( `userchk` varchar(32) NOT NULL, `title` varchar(1024) NOT NULL, `category` varchar(256) NOT NULL, - `notificationid` varchar(512) NOT NULL + `notificationid` varchar(512) NOT NULL, + `valueid` varchar(256) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- --------------------------------------------------------