mirror of
https://github.com/Daichimarukana/uwuzu.git
synced 2026-06-05 03:24:41 +00:00
uwuzu v1.3.4 new_planet
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/jrd+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
+6
-1
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
@@ -47,6 +47,11 @@ if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUO
|
||||
"@context" => [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
"https://w3id.org/security/v1",
|
||||
array(
|
||||
"schema" => "http://schema.org#",
|
||||
"PropertyValue" => "schema:PropertyValue",
|
||||
"value" => "schema:value",
|
||||
),
|
||||
],
|
||||
"id" => "https://".$domain."/actor/?actor=@".$userid."",
|
||||
"type" => "Person",
|
||||
|
||||
@@ -185,6 +185,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
|
||||
+9
-5
@@ -122,7 +122,7 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
// アップロードされたファイル情報
|
||||
$uploadedFile = $_FILES['image'];
|
||||
|
||||
if(check_mime_video($uploadedFile['tmp_name'])){
|
||||
if(check_mime($uploadedFile['tmp_name'])){
|
||||
// アップロードされたファイルの拡張子を取得
|
||||
$extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION);
|
||||
|
||||
@@ -136,7 +136,7 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
delete_exif($extension, $uploadedFile['tmp_name']);
|
||||
|
||||
// ファイルを移動
|
||||
$result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath);
|
||||
$result = move_uploaded_file($uploadedFile['tmp_name'], '../'.$uploadedPath);
|
||||
|
||||
if ($result) {
|
||||
$iconName = $uploadedPath; // 保存されたファイルのパスを使用
|
||||
@@ -231,7 +231,7 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$error_message[] = '表示名を入力してください。(USERNAME_INPUT_PLEASE)';
|
||||
} else {
|
||||
// 文字数を確認
|
||||
if( 25 < mb_strlen($username, 'UTF-8') ) {
|
||||
if( 50 < mb_strlen($username, 'UTF-8') ) {
|
||||
$error_message[] = 'ユーザーネームは50文字以内で入力してください。(USERNAME_OVER_MAX_COUNT)';
|
||||
}
|
||||
}
|
||||
@@ -249,6 +249,9 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
if($result > 0){
|
||||
$error_message[] = 'このID('.$userid.')は既に使用されています。他のIDを作成してください。(USERID_SHIYOUZUMI)';
|
||||
}
|
||||
if(!(preg_match("/^[a-zA-Z0-9_]+$/", $userid))){
|
||||
$error_message[] = "IDは半角英数字で入力してください。(「_」は使用可能です。)(USERID_DONT_USE_WORD)";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -337,8 +340,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
}
|
||||
|
||||
// 文字数を確認
|
||||
if( 100 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは100文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
if( 256 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは256文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -431,6 +434,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="../image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
|
||||
+30
-1
@@ -75,6 +75,26 @@ if($result2 > 0){
|
||||
exit;
|
||||
}
|
||||
|
||||
if (in_array("gd", get_loaded_extensions())) {
|
||||
$check_gd = true;
|
||||
} else {
|
||||
$check_gd = false;
|
||||
}
|
||||
if (in_array("fileinfo", get_loaded_extensions())) {
|
||||
$check_fileinfo = true;
|
||||
} else {
|
||||
$check_fileinfo = false;
|
||||
}
|
||||
if (in_array("mbstring", get_loaded_extensions())) {
|
||||
$check_mbstring = true;
|
||||
} else {
|
||||
$check_mbstring = false;
|
||||
}
|
||||
if (in_array("pdo_mysql", get_loaded_extensions())) {
|
||||
$check_pdo_mysql = true;
|
||||
} else {
|
||||
$check_pdo_mysql = false;
|
||||
}
|
||||
// データベースの接続を閉じる
|
||||
$pdo = null;
|
||||
|
||||
@@ -84,6 +104,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="../image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
@@ -115,7 +136,15 @@ $pdo = null;
|
||||
|
||||
<p>おめでとうございます!!!</p>
|
||||
<p>uwuzuの導入が完了しました!</p>
|
||||
<p>これより管理者アカウントの登録を行います。<br>userロールとofficialロールの設定はお済みですか?<br>userロールとofficialロールがないとuwuzuは正しく動作しないので設定をしていない方は一度このページを閉じて設定してください!<br>また、php.iniよりGDの有効化または導入はお済みですか?GDがないとuwuzuは二段階認証が正しく動作しないため絶対に設定してください!</p>
|
||||
<p>これより管理者アカウントの登録を行います。<br>userロールとofficialロール、iceロールの設定はお済みですか?<br>userロールとofficialロール、iceロールがないとuwuzuは正しく動作しないので設定をしていない方は一度このページを閉じて設定してください!<br>また、php.iniよりGDの有効化または導入はお済みですか?GDがないとuwuzuは二段階認証が正しく動作しないため絶対に設定してください!</p>
|
||||
|
||||
<div class="module_chk">
|
||||
<p>GD : <?php if($check_gd == true){echo "OK";}else{echo "NG";}?></p>
|
||||
<p>Fileinfo : <?php if($check_fileinfo == true){echo "OK";}else{echo "NG";}?></p>
|
||||
<p>mbstring : <?php if($check_mbstring == true){echo "OK";}else{echo "NG";}?></p>
|
||||
<p>pdo_mysql : <?php if($check_pdo_mysql == true){echo "OK";}else{echo "NG";}?></p>
|
||||
</div>
|
||||
|
||||
|
||||
<p>uwuzu<br>Version : <?php echo $uwuzuinfo[1]?></p>
|
||||
<div class="btnbox">
|
||||
|
||||
@@ -79,6 +79,7 @@ if(!(empty($_SESSION['backupcode']))){
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
|
||||
+417
-1
@@ -299,7 +299,7 @@ if(isset($_GET['token'])&&isset($_GET['type'])) {
|
||||
}
|
||||
|
||||
if($type === "reply"){
|
||||
if(isset($_GET['ueuse'])) {
|
||||
if(isset($_GET['ueuse']) && isset($_GET['uniqid'])) {
|
||||
$rpuniqid = htmlentities($_GET['uniqid']);
|
||||
$ueuse = nl2br(htmlentities($_GET['ueuse']));
|
||||
|
||||
@@ -679,6 +679,422 @@ if(isset($_GET['token'])&&isset($_GET['type'])) {
|
||||
}
|
||||
}
|
||||
|
||||
if($type === "getuser_from_userid"){
|
||||
|
||||
if(isset($_GET['userid'])) {
|
||||
$userid = htmlentities($_GET['userid']);
|
||||
|
||||
if($token === 'ice'){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($token === ''){
|
||||
$err = "token_input_error";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
} catch(PDOException $e) {
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
// データベース接続の設定
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$userQuery = $dbh->prepare("SELECT username, userid,role FROM account WHERE token = :token");
|
||||
$userQuery->bindValue(':token', $token);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
if(empty($userData["userid"])){
|
||||
$err = "token_invalid";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($userData["role"] === "ice"){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}else{
|
||||
$userQuery = $pdo->prepare("SELECT username,userid,profile,datetime,follow,follower,iconname,headname FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $userid);
|
||||
$userQuery->execute();
|
||||
$userdata = $userQuery->fetch();
|
||||
|
||||
if (empty($userdata)){
|
||||
$response = array(
|
||||
'error_code' => "userid_not_found",
|
||||
);
|
||||
}else{
|
||||
$followcnts = explode(',', $userdata["follow"]);
|
||||
$userdata["follow_cnt"] = count($followcnts)-1;
|
||||
|
||||
$followercnts = explode(',', $userdata["follower"]);
|
||||
$userdata["follower_cnt"] = count($followercnts)-1;
|
||||
|
||||
$response = array(
|
||||
'user_name' => decode_yajirushi(htmlspecialchars_decode($userdata["username"])),
|
||||
'user_id' => decode_yajirushi(htmlspecialchars_decode($userdata["userid"])),
|
||||
'profile' => decode_yajirushi(htmlspecialchars_decode($userdata["profile"])),
|
||||
'user_icon' => decode_yajirushi(htmlspecialchars_decode("https://".$domain."/".$userdata["iconname"])),
|
||||
'user_header' => decode_yajirushi(htmlspecialchars_decode("https://".$domain."/".$userdata["headname"])),
|
||||
'registered_date' => decode_yajirushi(htmlspecialchars_decode($userdata["datetime"])),
|
||||
'follow' => decode_yajirushi(htmlspecialchars_decode($userdata["follow"])),
|
||||
'follow_cnt' => decode_yajirushi(htmlspecialchars_decode($userdata["follow_cnt"])),
|
||||
'follower' => decode_yajirushi(htmlspecialchars_decode($userdata["follower"])),
|
||||
'follower_cnt' => decode_yajirushi(htmlspecialchars_decode($userdata["follower_cnt"])),
|
||||
);
|
||||
}
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
$err = "input_not_found";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if($type === "getltl"){
|
||||
|
||||
if(isset($_GET['limit'])) {
|
||||
|
||||
$itemsPerPage = htmlentities((int)$_GET['limit']); // 1ページあたりの投稿数
|
||||
if(isset($_GET['page'])) {
|
||||
$pageNumber = htmlentities((int)$_GET['page']);
|
||||
if(!(is_int($pageNumber))){
|
||||
$pageNumber = 1;
|
||||
}
|
||||
}else{
|
||||
$pageNumber = 1;
|
||||
}
|
||||
$offset = ($pageNumber - 1) * $itemsPerPage;
|
||||
|
||||
$messages = array();
|
||||
|
||||
if($token === 'ice'){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($token === ''){
|
||||
$err = "token_input_error";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
} catch(PDOException $e) {
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
// データベース接続の設定
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$userQuery = $dbh->prepare("SELECT username, userid,role FROM account WHERE token = :token");
|
||||
$userQuery->bindValue(':token', $token);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
if(empty($userData["userid"])){
|
||||
$err = "token_invalid";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($userData["role"] === "ice"){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}else{
|
||||
|
||||
$sql = "SELECT ueuse.*
|
||||
FROM ueuse
|
||||
LEFT JOIN account ON ueuse.account = account.userid
|
||||
WHERE ueuse.rpuniqid = '' AND account.role != 'ice'
|
||||
ORDER BY ueuse.datetime DESC
|
||||
LIMIT :offset, :itemsPerPage";
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':itemsPerPage', $itemsPerPage, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$message_array = $stmt;
|
||||
|
||||
while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) {
|
||||
|
||||
$messages[] = $row;
|
||||
}
|
||||
|
||||
// ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える
|
||||
foreach ($messages as &$message) {
|
||||
$userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $message["account"]);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
if ($userData) {
|
||||
$message['username'] = $userData['username'];
|
||||
$message['role'] = $userData['role'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($messages)) {
|
||||
$response = array(); // ループ外で $response を初期化
|
||||
|
||||
foreach ($messages as $ueusedata) {
|
||||
$favcnts = explode(',', $ueusedata["favorite"]);
|
||||
$ueusedata["favorite_cnt"] = count($favcnts) - 1;
|
||||
|
||||
$item = [
|
||||
'account' => decode_yajirushi(htmlspecialchars_decode($ueusedata["account"])),
|
||||
'username' => decode_yajirushi(htmlspecialchars_decode($ueusedata["username"])),
|
||||
'uniqid' => decode_yajirushi(htmlspecialchars_decode($ueusedata["uniqid"])),
|
||||
'ueuse' => decode_yajirushi(htmlspecialchars_decode($ueusedata["ueuse"])),
|
||||
'photo1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo1"]))),
|
||||
'photo2' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo2"]))),
|
||||
'photo3' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo3"]))),
|
||||
'photo4' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo4"]))),
|
||||
'video1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["video1"]))),
|
||||
'favorite' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite"])),
|
||||
'favorite_cnt' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite_cnt"])),
|
||||
'datetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["datetime"])),
|
||||
'abi' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abi"])),
|
||||
'abidatetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abidate"])),
|
||||
'nsfw' => decode_yajirushi(htmlspecialchars_decode($ueusedata["nsfw"])),
|
||||
];
|
||||
|
||||
$response[$ueusedata["uniqid"]] = $item; // ループ内で $response にデータを追加
|
||||
}
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
} else {
|
||||
$err = "ueuse_not_found";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
|
||||
$pdo = null;
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
$err = "input_not_found";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if($type === "getueuse"){
|
||||
|
||||
if(isset($_GET['ueuseid'])) {
|
||||
|
||||
$ueuseid = htmlentities($_GET['ueuseid']);
|
||||
|
||||
if($token === 'ice'){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($token === ''){
|
||||
$err = "token_input_error";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
} catch(PDOException $e) {
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
// データベース接続の設定
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$userQuery = $dbh->prepare("SELECT username, userid,role FROM account WHERE token = :token");
|
||||
$userQuery->bindValue(':token', $token);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
if(empty($userData["userid"])){
|
||||
$err = "token_invalid";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}elseif($userData["role"] === "ice"){
|
||||
$err = "this_account_has_been_frozen";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}else{
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$ueuseQuery = $pdo->prepare("SELECT * FROM ueuse WHERE uniqid = :ueuseid");
|
||||
$ueuseQuery->bindValue(':ueuseid', $ueuseid);
|
||||
$ueuseQuery->execute();
|
||||
$ueusedata = $ueuseQuery->fetch();
|
||||
|
||||
if (empty($ueusedata)){
|
||||
$response = array(
|
||||
'error_code' => "ueuseid_not_found",
|
||||
);
|
||||
}else{
|
||||
$userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $ueusedata["account"]);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
if ($userData) {
|
||||
$ueusedata['username'] = $userData['username'];
|
||||
$ueusedata['role'] = $userData['role'];
|
||||
}
|
||||
|
||||
|
||||
$favcnts = explode(',', $ueusedata["favorite"]);
|
||||
$ueusedata["favorite_cnt"] = count($favcnts)-1;
|
||||
|
||||
$response = array(
|
||||
'account' => decode_yajirushi(htmlspecialchars_decode($ueusedata["account"])),
|
||||
'username' => decode_yajirushi(htmlspecialchars_decode($ueusedata["username"])),
|
||||
'uniqid' => decode_yajirushi(htmlspecialchars_decode($ueusedata["uniqid"])),
|
||||
'ueuse' => decode_yajirushi(htmlspecialchars_decode($ueusedata["ueuse"])),
|
||||
'photo1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo1"]))),
|
||||
'photo2' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo2"]))),
|
||||
'photo3' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo3"]))),
|
||||
'photo4' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo4"]))),
|
||||
'video1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', 'https://' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["video1"]))),
|
||||
'favorite' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite"])),
|
||||
'favorite_cnt' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite_cnt"])),
|
||||
'datetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["datetime"])),
|
||||
'abi' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abi"])),
|
||||
'abidatetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abidate"])),
|
||||
'nsfw' => decode_yajirushi(htmlspecialchars_decode($ueusedata["nsfw"])),
|
||||
);
|
||||
}
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
|
||||
|
||||
$pdo = null;
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
$err = "input_not_found";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
|
||||
$err = "input_not_found";
|
||||
|
||||
+1
-105
@@ -2,116 +2,12 @@
|
||||
header("Content-Type: application/json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
function decode_yajirushi($postText){
|
||||
$postText = str_replace('←', '←', $postText);
|
||||
$postText = str_replace('↓', '↓', $postText);
|
||||
$postText = str_replace('↑', '↑', $postText);
|
||||
$postText = str_replace('→', '→', $postText);
|
||||
return $postText;
|
||||
}
|
||||
if(isset($_GET['limit'])) {
|
||||
|
||||
$itemsPerPage = htmlentities((int)$_GET['limit']); // 1ページあたりの投稿数
|
||||
if(isset($_GET['page'])) {
|
||||
$pageNumber = htmlentities((int)$_GET['page']);
|
||||
}else{
|
||||
$pageNumber = 1;
|
||||
}
|
||||
$offset = ($pageNumber - 1) * $itemsPerPage;
|
||||
|
||||
$messages = array();
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
|
||||
} catch(PDOException $e) {
|
||||
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
$sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate, nsfw FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT " . intval($offset) . ", " . intval($itemsPerPage);
|
||||
$message_array = $pdo->query($sql);
|
||||
|
||||
while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) {
|
||||
|
||||
$messages[] = $row;
|
||||
}
|
||||
|
||||
// ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える
|
||||
foreach ($messages as &$message) {
|
||||
$userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $message["account"]);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
if ($userData) {
|
||||
$message['username'] = $userData['username'];
|
||||
$message['role'] = $userData['role'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($messages)) {
|
||||
$response = array(); // ループ外で $response を初期化
|
||||
|
||||
foreach ($messages as $ueusedata) {
|
||||
$favcnts = explode(',', $ueusedata["favorite"]);
|
||||
$ueusedata["favorite_cnt"] = count($favcnts) - 1;
|
||||
|
||||
$item = [
|
||||
'account' => decode_yajirushi(htmlspecialchars_decode($ueusedata["account"])),
|
||||
'username' => decode_yajirushi(htmlspecialchars_decode($ueusedata["username"])),
|
||||
'uniqid' => decode_yajirushi(htmlspecialchars_decode($ueusedata["uniqid"])),
|
||||
'ueuse' => decode_yajirushi(htmlspecialchars_decode($ueusedata["ueuse"])),
|
||||
'photo1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', '' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo1"]))),
|
||||
'photo2' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', '' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["photo2"]))),
|
||||
'video1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', '' . $_SERVER['HTTP_HOST'] . '/', $ueusedata["video1"]))),
|
||||
'favorite' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite"])),
|
||||
'favorite_cnt' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite_cnt"])),
|
||||
'datetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["datetime"])),
|
||||
'abi' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abi"])),
|
||||
'abidatetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abidate"])),
|
||||
'nsfw' => decode_yajirushi(htmlspecialchars_decode($ueusedata["nsfw"])),
|
||||
];
|
||||
|
||||
$response[$ueusedata["uniqid"]] = $item; // ループ内で $response にデータを追加
|
||||
}
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
} else {
|
||||
$err = "ueuse_not_found";
|
||||
$err = "API_has_been_deleted";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
|
||||
$pdo = null;
|
||||
}
|
||||
|
||||
}else{
|
||||
|
||||
$err = "input_not_found";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
?>
|
||||
+2
-86
@@ -2,96 +2,12 @@
|
||||
header("Content-Type: application/json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
function decode_yajirushi($postText){
|
||||
$postText = str_replace('←', '←', $postText);
|
||||
$postText = str_replace('↓', '↓', $postText);
|
||||
$postText = str_replace('↑', '↑', $postText);
|
||||
$postText = str_replace('→', '→', $postText);
|
||||
return $postText;
|
||||
}
|
||||
if(isset($_GET['ueuseid'])) {
|
||||
|
||||
$ueuseid = htmlentities($_GET['ueuseid']);
|
||||
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
|
||||
} catch(PDOException $e) {
|
||||
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$ueuseQuery = $pdo->prepare("SELECT account, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid");
|
||||
$ueuseQuery->bindValue(':ueuseid', $ueuseid);
|
||||
$ueuseQuery->execute();
|
||||
$ueusedata = $ueuseQuery->fetch();
|
||||
}
|
||||
|
||||
if (empty($ueusedata)){
|
||||
$response = array(
|
||||
'error_code' => "ueuseid_not_found",
|
||||
);
|
||||
}else{
|
||||
$userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $ueusedata["account"]);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
if ($userData) {
|
||||
$ueusedata['username'] = $userData['username'];
|
||||
$ueusedata['role'] = $userData['role'];
|
||||
}
|
||||
|
||||
|
||||
$favcnts = explode(',', $ueusedata["favorite"]);
|
||||
$ueusedata["favorite_cnt"] = count($favcnts)-1;
|
||||
|
||||
$response = array(
|
||||
'userid' => decode_yajirushi(htmlspecialchars_decode($ueusedata["account"])),
|
||||
'user_name' => decode_yajirushi(htmlspecialchars_decode($ueusedata["username"])),
|
||||
'uniqid' => decode_yajirushi(htmlspecialchars_decode($ueusedata["uniqid"])),
|
||||
'ueuse' => decode_yajirushi(htmlspecialchars_decode($ueusedata["ueuse"])),
|
||||
'photo1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', ''.$_SERVER['HTTP_HOST'].'/', $ueusedata["photo1"]))),
|
||||
'photo2' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', ''.$_SERVER['HTTP_HOST'].'/', $ueusedata["photo2"]))),
|
||||
'video1' => decode_yajirushi(htmlspecialchars_decode(str_replace('../', ''.$_SERVER['HTTP_HOST'].'/', $ueusedata["video1"]))),
|
||||
'favorite' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite"])),
|
||||
'favorite_cnt' => decode_yajirushi(htmlspecialchars_decode($ueusedata["favorite_cnt"])),
|
||||
'datetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["datetime"])),
|
||||
'abi' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abi"])),
|
||||
'abidatetime' => decode_yajirushi(htmlspecialchars_decode($ueusedata["abidate"])),
|
||||
);
|
||||
}
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);;
|
||||
|
||||
}else{
|
||||
|
||||
$err = "input_not_found";
|
||||
$err = "API_has_been_deleted";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
?>
|
||||
+2
-77
@@ -2,87 +2,12 @@
|
||||
header("Content-Type: application/json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
function decode_yajirushi($postText){
|
||||
$postText = str_replace('←', '←', $postText);
|
||||
$postText = str_replace('↓', '↓', $postText);
|
||||
$postText = str_replace('↑', '↑', $postText);
|
||||
$postText = str_replace('→', '→', $postText);
|
||||
return $postText;
|
||||
}
|
||||
if(isset($_GET['userid'])) {
|
||||
|
||||
$search = htmlentities($_GET['userid']);
|
||||
|
||||
$domain = $_SERVER['HTTP_HOST'];
|
||||
|
||||
require('../db.php');
|
||||
|
||||
$datetime = array();
|
||||
$pdo = null;
|
||||
|
||||
session_start();
|
||||
|
||||
try {
|
||||
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
|
||||
} catch(PDOException $e) {
|
||||
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$userQuery = $pdo->prepare("SELECT username,userid,profile,datetime,follow,follower,iconname,headname FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $search);
|
||||
$userQuery->execute();
|
||||
$userdata = $userQuery->fetch();
|
||||
}
|
||||
if (empty($userdata)){
|
||||
$response = array(
|
||||
'error_code' => "userid_not_found",
|
||||
);
|
||||
}else{
|
||||
$followcnts = explode(',', $userdata["follow"]);
|
||||
$userdata["follow_cnt"] = count($followcnts)-1;
|
||||
|
||||
$followercnts = explode(',', $userdata["follower"]);
|
||||
$userdata["follower_cnt"] = count($followercnts)-1;
|
||||
|
||||
$response = array(
|
||||
'user_name' => decode_yajirushi(htmlspecialchars_decode($userdata["username"])),
|
||||
'user_id' => decode_yajirushi(htmlspecialchars_decode($userdata["userid"])),
|
||||
'profile' => decode_yajirushi(htmlspecialchars_decode($userdata["profile"])),
|
||||
'user_icon' => decode_yajirushi(htmlspecialchars_decode("https://".$domain."/".$userdata["iconname"])),
|
||||
'user_header' => decode_yajirushi(htmlspecialchars_decode("https://".$domain."/".$userdata["headname"])),
|
||||
'registered_date' => decode_yajirushi(htmlspecialchars_decode($userdata["datetime"])),
|
||||
'follow' => decode_yajirushi(htmlspecialchars_decode($userdata["follow"])),
|
||||
'follow_cnt' => decode_yajirushi(htmlspecialchars_decode($userdata["follow_cnt"])),
|
||||
'follower' => decode_yajirushi(htmlspecialchars_decode($userdata["follower"])),
|
||||
'follower_cnt' => decode_yajirushi(htmlspecialchars_decode($userdata["follower_cnt"])),
|
||||
);
|
||||
}
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
|
||||
}else{
|
||||
|
||||
$err = "input_not_found";
|
||||
$err = "API_has_been_deleted";
|
||||
$response = array(
|
||||
'error_code' => $err,
|
||||
);
|
||||
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -130,6 +130,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
|
||||
@@ -289,6 +289,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
|
||||
+8
-1
@@ -200,7 +200,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
@@ -282,10 +282,17 @@ $pdo = null;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
@@ -78,7 +78,7 @@ try {
|
||||
$roleDataArray = array();
|
||||
|
||||
foreach ($roles as $roleId) {
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role");
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor, roleeffect FROM role WHERE roleidname = :role");
|
||||
$rerole->bindValue(':role', $roleId);
|
||||
$rerole->execute();
|
||||
$roleDataArray[$roleId] = $rerole->fetch();
|
||||
@@ -277,6 +277,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
@@ -318,9 +319,20 @@ $pdo = null;
|
||||
<div class="roleboxes">
|
||||
<?php foreach ($roles as $roleId): ?>
|
||||
<?php $roleData = $roleDataArray[$roleId]; ?>
|
||||
<div class="rolebox" style="border: 1px solid <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php
|
||||
if(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == '' || htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'none'){
|
||||
$role_view_effect = "";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'shine'){
|
||||
$role_view_effect = "shine";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'rainbow'){
|
||||
$role_view_effect = "rainbow";
|
||||
}else{
|
||||
$role_view_effect = "";
|
||||
}
|
||||
?>
|
||||
<div class="rolebox <?php echo htmlentities($role_view_effect, ENT_QUOTES, 'UTF-8', false); ?>" style="border: 1px solid <?php echo '#' . htmlentities($roleData["rolecolor"], ENT_QUOTES, 'UTF-8', false); ?>;">
|
||||
<p style="color: <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlentities($roleData["rolename"], ENT_QUOTES, 'UTF-8'); } ?>
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlentities($roleData["rolename"], ENT_QUOTES, 'UTF-8', false); }else{ echo("ロールが正常に設定されていません。");} ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
:root {
|
||||
--main-color: #FFC832;
|
||||
--sub-color: #FFFAE6;
|
||||
--background-color: #f5f5f5;
|
||||
--background-color: #F5F5F5;
|
||||
--tl-color: #F7F7F7;
|
||||
--ueuse-color:#f5f5f5;
|
||||
--text-color: #252525;
|
||||
|
||||
+577
-91
@@ -46,15 +46,12 @@ body{
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
display: block;
|
||||
width:50%;
|
||||
width: fit-content;
|
||||
margin: 32px;
|
||||
padding: 8px 5%;
|
||||
padding: 8px 20%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
|
||||
background-color: var(--main-color);
|
||||
|
||||
text-align: center;
|
||||
@@ -66,31 +63,27 @@ body{
|
||||
text-decoration:none;
|
||||
text-align: center;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-in-out;
|
||||
}
|
||||
.irobutton:hover{
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2);
|
||||
width:55%;
|
||||
padding: 8px 22%;
|
||||
}
|
||||
.irobutton:active{
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05);
|
||||
width:45%;
|
||||
padding: 8px 18%;
|
||||
}
|
||||
|
||||
.sirobutton{
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
display: block;
|
||||
width:40%;
|
||||
width: fit-content;
|
||||
margin: 32px;
|
||||
padding: 8px 10%;
|
||||
padding: 8px 20%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
|
||||
|
||||
text-align: center;
|
||||
background-color: var(--sub-color);
|
||||
@@ -102,16 +95,15 @@ body{
|
||||
font-weight: normal;
|
||||
text-decoration:none;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-in-out;
|
||||
}
|
||||
.sirobutton:hover{
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2);
|
||||
width:45%;
|
||||
padding: 8px 22%;
|
||||
}
|
||||
.sirobutton:active{
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05);
|
||||
width:45%;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2);
|
||||
padding: 8px 18%;
|
||||
}
|
||||
|
||||
.inbox {
|
||||
@@ -243,40 +235,124 @@ textarea{
|
||||
|
||||
|
||||
.rolebox {
|
||||
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
width: 120px;
|
||||
margin: 4px 6px 4px 6px;
|
||||
width: auto;
|
||||
padding-left: auto;
|
||||
padding-right: auto;
|
||||
|
||||
background-color: var(--background-color);
|
||||
border: 1px solid var(--main-color);
|
||||
|
||||
border-radius: 25px;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
|
||||
}
|
||||
|
||||
.rolebox p {
|
||||
|
||||
color:var(--main-color);
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
|
||||
text-align: center;
|
||||
margin: 2px 10px 2px 10px;
|
||||
font-size: 16px;
|
||||
font-family: 'Zen Maru Gothic', sans-serif;
|
||||
font-family: "Zen Maru Gothic", sans-serif;
|
||||
font-weight: normal;
|
||||
|
||||
}
|
||||
|
||||
.roleboxes {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: table;
|
||||
padding: auto;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.shine {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.shine:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -50%;
|
||||
left: -50%;
|
||||
width: 10%;
|
||||
height: 150%;
|
||||
background: #fff;
|
||||
transform: rotate(45deg);
|
||||
animation: reflect 3s ease-in-out infinite;
|
||||
}
|
||||
@keyframes reflect {
|
||||
0%,
|
||||
75% {
|
||||
transform: rotate(45deg) scale(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(45deg) scale(100);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
.cyclingmark {
|
||||
display: flex;
|
||||
}
|
||||
.cyclingmark p::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
vertical-align: middle;
|
||||
margin-right: 5px;
|
||||
background: url("/img/uwuzuicon.png")
|
||||
no-repeat;
|
||||
background-size: contain;
|
||||
animation: cycling 2s infinite;
|
||||
margin: -6px 0px 0px -2px;
|
||||
}
|
||||
@keyframes cycling {
|
||||
from {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(0deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
to {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(360deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
25% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(400deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
40% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(330deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
60% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(360deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.rainbow {
|
||||
animation: rain 5s infinite;
|
||||
}
|
||||
@keyframes rain {
|
||||
0% {
|
||||
border: 1px solid magenta;
|
||||
color: magenta;
|
||||
}
|
||||
33% {
|
||||
border: 1px solid yellow;
|
||||
color: yellow;
|
||||
}
|
||||
66% {
|
||||
border: 1px solid cyan;
|
||||
color: cyan;
|
||||
}
|
||||
100% {
|
||||
border: 1px solid magenta;
|
||||
color: magenta;
|
||||
}
|
||||
}
|
||||
|
||||
.userleftbox{
|
||||
border-radius: 17px;
|
||||
@@ -576,7 +652,7 @@ main h1{
|
||||
color:var(--text-color);
|
||||
text-decoration: none;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: bold;
|
||||
font-weight: normal;
|
||||
}
|
||||
.userheader .profile p img{
|
||||
vertical-align: middle;
|
||||
@@ -606,23 +682,12 @@ main h1{
|
||||
|
||||
|
||||
.userheader .rolebox{
|
||||
|
||||
margin-top: 0px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
margin-left: 0px;
|
||||
margin-right: 12px;
|
||||
|
||||
margin: 4px 6px 4px 6px;
|
||||
width: auto;
|
||||
padding-left: auto;
|
||||
padding-right: auto;
|
||||
|
||||
background-color: var(--background-color);
|
||||
border: 1px solid var(--main-color);
|
||||
|
||||
border-radius: 25px;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1132,6 +1197,7 @@ main h1{
|
||||
padding-right: 6px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
background-color: #F5F5F5;
|
||||
border: solid 1px #CCC;
|
||||
color: #323232;
|
||||
border-radius: 25px;
|
||||
@@ -1319,6 +1385,7 @@ main h1{
|
||||
width: 100%;
|
||||
height: 350px;
|
||||
border: 1px solid var(--border-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ueuse .photo2{
|
||||
@@ -1334,6 +1401,7 @@ main h1{
|
||||
width: 100%;
|
||||
height: 350px;
|
||||
border: 1px solid var(--border-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ueuse .photo3{
|
||||
@@ -1353,6 +1421,7 @@ main h1{
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
border: 1px solid var(--border-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
.ueuse .photo3_btm a img{
|
||||
object-fit: cover;
|
||||
@@ -1363,6 +1432,7 @@ main h1{
|
||||
min-width: 100%;
|
||||
height: 200px;
|
||||
border: 1px solid var(--border-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
.ueuse .photo4{
|
||||
display: flex;
|
||||
@@ -1377,6 +1447,7 @@ main h1{
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
border: 1px solid var(--border-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
.ueuse .video1 video{
|
||||
object-fit: cover;
|
||||
@@ -2079,6 +2150,16 @@ main h1{
|
||||
font-size: 12px;
|
||||
color:var(--main-color);
|
||||
}
|
||||
.ueuse .flebox .user .u_name a img{
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
max-height: 22px;
|
||||
width: auto;
|
||||
vertical-align: text-top;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
|
||||
.tokonone p{
|
||||
@@ -2277,6 +2358,75 @@ main h1{
|
||||
color: #FF4848;
|
||||
}
|
||||
|
||||
.sendbox .emoji_picker{
|
||||
animation: Up_to_down_slideY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 24px;
|
||||
margin-bottom: 0px;
|
||||
border-radius: 10px;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
padding-top: 16px;
|
||||
padding-bottom: 16px;
|
||||
background-color: var(--tl-color);
|
||||
border: 1px solid var(--border-color);
|
||||
width: auto;
|
||||
max-height: 260px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.sendbox .emoji_picker p{
|
||||
margin: 0px;
|
||||
word-wrap: break-word;
|
||||
line-height: 20px;
|
||||
color: var(--subtext-color);
|
||||
font-size: 12px;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji{
|
||||
cursor: pointer;
|
||||
margin: 6px;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
background-color: var(--tl-color);
|
||||
border-radius: 8px;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji img{
|
||||
margin: 8px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
object-fit:contain;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji:hover{
|
||||
background-color: color-mix(in srgb, var(--tl-color) 95%, #000);
|
||||
}
|
||||
.sendbox .emoji_picker .tokonone p{
|
||||
font-size: 16px;
|
||||
color:var(--text-color);
|
||||
text-decoration: none;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
@keyframes Up_to_down_slideY {
|
||||
0% {
|
||||
transform: translateY(-12px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
40%,100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.ueusebtn{
|
||||
cursor: pointer;
|
||||
@@ -2880,6 +3030,48 @@ label>input {
|
||||
}
|
||||
}
|
||||
|
||||
.Image_modal {
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.25);
|
||||
backdrop-filter: blur(5px);
|
||||
z-index: 9999;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
.Image_modal .modal-content {
|
||||
padding: 0px;
|
||||
border-radius: 15px;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
max-width: 90%;
|
||||
max-height: 90dvh;
|
||||
position: absolute;
|
||||
top: 30dvh;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
overflow: hidden;
|
||||
cursor: zoom-out;
|
||||
}
|
||||
.Image_modal .modal-content img{
|
||||
background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%),
|
||||
linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%);
|
||||
background-color: #FFF;
|
||||
background-size: 20px 20px;
|
||||
background-position: 0 0, 10px 10px;
|
||||
width: 100%;
|
||||
height: 80dvh;
|
||||
margin: 0px;
|
||||
vertical-align:top;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.topbox {
|
||||
position: fixed;
|
||||
|
||||
@@ -3378,8 +3570,8 @@ label>input {
|
||||
}
|
||||
|
||||
.emojibox{
|
||||
margin-left: 12px;
|
||||
margin-right: 12px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding: 12px;
|
||||
width: auto;
|
||||
}
|
||||
@@ -3429,54 +3621,85 @@ label>input {
|
||||
margin-bottom: 6px;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
|
||||
.emojizone{
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 12px;
|
||||
.emojibox h1{
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
||||
.emojizone{
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
padding: 12px;
|
||||
padding-top: 0px;
|
||||
}
|
||||
.emojizone .tokonone{
|
||||
width: calc(50% - 32px);
|
||||
height: fit-content;
|
||||
margin-top: 0px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 12px;
|
||||
padding: 12px;
|
||||
}
|
||||
.emojizone .tokonone p{
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.emjtex{
|
||||
width: calc(50% - 32px);
|
||||
background-color: var(--background-color);
|
||||
margin-top: 12px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 0px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 12px;
|
||||
padding: 12px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid var(--border-color);
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
.emjtex:hover{
|
||||
background-color: color-mix(in srgb, var(--background-color) 95%, #000);
|
||||
}
|
||||
|
||||
.emjtex .fx{
|
||||
display: block;
|
||||
display: flex;
|
||||
max-width: 100%;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.emjtex img{
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 6px;
|
||||
margin-right: 6px;
|
||||
max-height: 64px;
|
||||
max-width: calc(100% - 12px);
|
||||
object-fit: initial;
|
||||
}
|
||||
|
||||
.emjtex .btm_zone{
|
||||
margin-top: auto;
|
||||
margin-bottom:auto;
|
||||
margin-left: 6px;
|
||||
margin-right: 4px;
|
||||
max-height: 64px;
|
||||
max-width: 98%;
|
||||
}
|
||||
|
||||
.emjtex h3{
|
||||
overflow-wrap: break-word;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 6px;
|
||||
font-size: 24px;
|
||||
color:var(--text-color);
|
||||
text-decoration: none;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-family: 'BIZ UDGothic', sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.emjtex p{
|
||||
overflow-wrap: break-word;
|
||||
margin-top: 12px;
|
||||
margin-bottom: auto;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 6px;
|
||||
font-size: 16px;
|
||||
color:var(--text-color);
|
||||
@@ -3498,7 +3721,7 @@ label>input {
|
||||
}
|
||||
|
||||
.this{
|
||||
background-color: var(--sub-color)!important;
|
||||
background-color: color-mix(in srgb, var(--sub-color) 30%, var(--background-color))!important;
|
||||
}
|
||||
.notification{
|
||||
animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
|
||||
@@ -3562,6 +3785,12 @@ label>input {
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
.notification .flebox .username img{
|
||||
margin-left: 6px;
|
||||
margin-right: 6px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.notification .flebox .idbox{
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
@@ -4036,7 +4265,7 @@ hr{
|
||||
font-weight: bold;
|
||||
}
|
||||
.hny .textmain{
|
||||
background-color: var(--border-color);
|
||||
background-color: #F5F5F5;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
padding-left: 24px;
|
||||
@@ -4055,7 +4284,7 @@ hr{
|
||||
}
|
||||
.hny .textmain p{
|
||||
text-align: left;
|
||||
color:var(--text-color);
|
||||
color:#252525;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
word-wrap: break-word;
|
||||
font-size: 16px;
|
||||
@@ -4064,7 +4293,7 @@ hr{
|
||||
}
|
||||
.hny .textmain .rp{
|
||||
text-align: right;
|
||||
color:var(--text-color);
|
||||
color:#252525;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
word-wrap: break-word;
|
||||
font-size: 14px;
|
||||
@@ -4279,16 +4508,12 @@ summary {
|
||||
font-weight: normal;
|
||||
text-decoration:none;
|
||||
text-align: center;
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
|
||||
.delbox .delbtn:hover{
|
||||
background-color: #FF4848;
|
||||
color: var(--background-color);;
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
.mini_irobtn{
|
||||
@@ -4311,15 +4536,11 @@ summary {
|
||||
font-weight: normal;
|
||||
text-decoration:none;
|
||||
text-align: center;
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
.mini_irobtn:hover{
|
||||
background-color: var(--main-color);
|
||||
color: var(--background-color);;
|
||||
transition: box-shadow 250ms ease-in-out;
|
||||
transition: width 250ms ease-out;
|
||||
transition: all 250ms ease-out;
|
||||
}
|
||||
|
||||
@@ -4683,6 +4904,13 @@ summary {
|
||||
.serverhead{
|
||||
text-align: center;
|
||||
}
|
||||
.formarea .serverhead img {
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
height: 220px;
|
||||
border-radius: 10px;
|
||||
margin: 0px;
|
||||
}
|
||||
.serverhead img {
|
||||
object-fit: cover;
|
||||
width: 60%;
|
||||
@@ -4833,6 +5061,116 @@ summary {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.graph{
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
background-color: var(--background-color);
|
||||
border-radius: 50px;
|
||||
border: solid 1px var(--border-color);
|
||||
}
|
||||
.graph .per{
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
margin-right: 4px;
|
||||
margin-left: 4px;
|
||||
height: 24px;
|
||||
background-color: var(--main-color);
|
||||
border-radius: 50px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
noscript{
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.25);
|
||||
backdrop-filter: blur(5px);
|
||||
z-index: 9999;
|
||||
transition: all 250ms ease-out;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
noscript .noscript_modal{
|
||||
padding: 0px;
|
||||
border-radius: 15px;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
background-color: var(--background-color);
|
||||
max-width: 50%;
|
||||
max-height: 75dvh;
|
||||
position: absolute;
|
||||
top: 45%;
|
||||
right: 0;
|
||||
bottom: 45%;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
overflow: scroll;
|
||||
cursor: auto;
|
||||
}
|
||||
noscript .noscript_modal .inner{
|
||||
margin: 64px;
|
||||
}
|
||||
noscript .noscript_modal .inner .oops_icon{
|
||||
margin-top: -32px;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-size: 74px;
|
||||
text-align: center;
|
||||
}
|
||||
noscript .noscript_modal .inner h1{
|
||||
line-height: 32px;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-size: 32px;
|
||||
color:var(--text-color);
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
noscript .noscript_modal .inner p{
|
||||
line-height: 20px;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-size: 16px;
|
||||
color:var(--text-color);
|
||||
text-align: center;
|
||||
}
|
||||
noscript .noscript_modal .inner .p2{
|
||||
margin-top: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
noscript .noscript_modal .inner .infobtn{
|
||||
display: block;
|
||||
width: 128px;
|
||||
padding: 6px;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
background-color:#FFC832;
|
||||
color:#ffffff;
|
||||
border-radius: 32px;
|
||||
font-size: 20px;
|
||||
font-family: 'BIZ UDGothic', 'Yu Mincho Regular', 'ヒラギノ角ゴシック', sans-serif;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
noscript .noscript_modal .inner .center_text{
|
||||
margin-top: 12px;
|
||||
display: block;
|
||||
}
|
||||
noscript .noscript_modal .inner .center_text p{
|
||||
line-height: 16px;
|
||||
margin: 0px;
|
||||
text-align: center;
|
||||
color:#777;
|
||||
font-size: 14px;
|
||||
font-family: 'BIZ UDGothic', 'Yu Mincho Regular', 'ヒラギノ角ゴシック', sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------*/
|
||||
/*--------------------------------------------------スマホ向け--------------------------------------------------*/
|
||||
/*--------------------------------------------------ここから--------------------------------------------------*/
|
||||
@@ -4874,8 +5212,8 @@ summary {
|
||||
}
|
||||
|
||||
.userheader .roleboxes{
|
||||
margin-left: 12px;
|
||||
margin-right: 12px;
|
||||
margin-left: 6px;
|
||||
margin-right: 6px;
|
||||
display: flex;
|
||||
padding: 0px;
|
||||
flex-wrap : wrap;
|
||||
@@ -5036,6 +5374,19 @@ summary {
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex{
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji{
|
||||
margin: 6px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji img{
|
||||
margin: 3px;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.ueusebtn{
|
||||
width:30%;
|
||||
@@ -5920,6 +6271,40 @@ summary {
|
||||
transform: translateY(-1%);
|
||||
}
|
||||
}
|
||||
.Image_modal{
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.Image_modal .modal-content {
|
||||
padding: 0px;
|
||||
border-radius: 15px;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
max-width: 90%;
|
||||
max-height: 90dvh;
|
||||
position: absolute;
|
||||
top: 45%;
|
||||
right: 0;
|
||||
bottom: 45%;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
overflow: hidden;
|
||||
}
|
||||
.Image_modal .modal-content img{
|
||||
background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%),
|
||||
linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%);
|
||||
background-color: #FFF;
|
||||
background-size: 20px 20px;
|
||||
background-position: 0 0, 10px 10px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 0px;
|
||||
vertical-align:top;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.tlchange{
|
||||
border-radius: 10px;
|
||||
@@ -6152,6 +6537,52 @@ summary {
|
||||
border-radius: 10px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
noscript .noscript_modal{
|
||||
border-radius: 15px;
|
||||
max-width: 90%;
|
||||
max-height: 90dvh;
|
||||
overflow: scroll;
|
||||
}
|
||||
noscript .noscript_modal .inner{
|
||||
margin: 24px;
|
||||
}
|
||||
noscript .noscript_modal .inner .oops_icon{
|
||||
margin-top: 12px;
|
||||
font-size: 48px;
|
||||
}
|
||||
noscript .noscript_modal .inner h1{
|
||||
line-height: 24px;
|
||||
font-size: 24px;
|
||||
}
|
||||
noscript .noscript_modal .inner p{
|
||||
line-height: 16px;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
}
|
||||
noscript .noscript_modal .inner .center_text{
|
||||
margin-top: 12px;
|
||||
display: block;
|
||||
}
|
||||
noscript .noscript_modal .inner .center_text p{
|
||||
line-height: 14px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
|
||||
.emojizone{
|
||||
display: block;
|
||||
}
|
||||
.emjtex{
|
||||
width: auto;
|
||||
}
|
||||
.emjtex .fx{
|
||||
display: block;
|
||||
}
|
||||
.emojizone .tokonone{
|
||||
width: auto;
|
||||
height: fit-content;
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------------------------------------------*/
|
||||
@@ -6161,6 +6592,11 @@ summary {
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
||||
::selection {
|
||||
color: var(--dark-background-color);
|
||||
background: var(--main-color);
|
||||
}
|
||||
|
||||
body{
|
||||
background-color: var(--dark-background-color);
|
||||
}
|
||||
@@ -6245,6 +6681,11 @@ summary {
|
||||
background-color: var(--dark-ueuse-color);
|
||||
color: var(--dark-text-color);
|
||||
}
|
||||
.ueuse .unixtime{
|
||||
background-color: #323232;
|
||||
border: solid 1px #CCC;
|
||||
color: #F5F5F5;
|
||||
}
|
||||
|
||||
|
||||
.ueuse h1{
|
||||
@@ -6575,11 +7016,31 @@ summary {
|
||||
color:var(--sub-color);
|
||||
}
|
||||
|
||||
.sendbox .emoji_picker{
|
||||
background-color: var(--dark-background-color);
|
||||
border: none;
|
||||
}
|
||||
.sendbox .emoji_picker p{
|
||||
color: var(--dark-subtext-color);
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji{
|
||||
background-color: var(--dark-background-color);
|
||||
}
|
||||
.sendbox .emoji_picker .emoji_picker_flex .one_emoji:hover{
|
||||
background-color: color-mix(in srgb, var(--dark-background-color) 95%, #FFF);
|
||||
}
|
||||
.sendbox .emoji_picker .tokonone p{
|
||||
color:var(--dark-text-color);
|
||||
}
|
||||
|
||||
|
||||
.emjtex{
|
||||
background-color: var(--dark-sub-color);
|
||||
border: none;
|
||||
}
|
||||
.emjtex:hover{
|
||||
background-color: color-mix(in srgb, var(--dark-sub-color) 95%, #FFF);
|
||||
}
|
||||
|
||||
.emjtex h3{
|
||||
color:var(--background-color);
|
||||
@@ -6760,7 +7221,7 @@ summary {
|
||||
}
|
||||
|
||||
.this{
|
||||
background-color: var(--link-color) !important;
|
||||
background-color: color-mix(in srgb, var(--link-color) 30%, var(--dark-background-color))!important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
@@ -7007,4 +7468,29 @@ summary {
|
||||
background-color: #3a3333;
|
||||
color: #ff4848;
|
||||
}
|
||||
.graph{
|
||||
background-color: var(--dark-background-color);
|
||||
border: solid 1px var(--dark-background-color);
|
||||
}
|
||||
.graph .per{
|
||||
background-color: var(--main-color);
|
||||
}
|
||||
noscript .noscript_modal{
|
||||
background-color: var(--dark-background-color);
|
||||
}
|
||||
noscript .noscript_modal .inner h1{
|
||||
color:var(--dark-text-color);
|
||||
}
|
||||
noscript .noscript_modal .inner p{
|
||||
color:var(--dark-text-color);
|
||||
}
|
||||
noscript .noscript_modal .inner .center_text p{
|
||||
line-height: 16px;
|
||||
margin: 0px;
|
||||
text-align: center;
|
||||
color:#CCC;
|
||||
font-size: 14px;
|
||||
font-family: 'BIZ UDGothic', 'Yu Mincho Regular', 'ヒラギノ角ゴシック', sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
+198
-22
@@ -414,8 +414,6 @@ label > input {
|
||||
|
||||
.formarea label{
|
||||
overflow-wrap: break-word;
|
||||
margin-top: 24px;
|
||||
margin-bottom: 24px;
|
||||
font-size: 16px;
|
||||
color:var(--text-color);
|
||||
text-decoration: none;
|
||||
@@ -592,40 +590,127 @@ label > input {
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05);
|
||||
width:45%;
|
||||
}
|
||||
.rolebox{
|
||||
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
.roleboxes {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 70%;
|
||||
display: flex;
|
||||
padding: auto;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
width: 120px;
|
||||
.rolebox {
|
||||
margin: 4px 6px 4px 6px;
|
||||
width: auto;
|
||||
padding-left: auto;
|
||||
padding-right: auto;
|
||||
|
||||
background-color: var(--background-color);
|
||||
border: 1px solid var(--main-color);
|
||||
|
||||
border-radius: 25px;
|
||||
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
|
||||
|
||||
}
|
||||
|
||||
.rolebox p {
|
||||
|
||||
color:var(--main-color);
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
|
||||
margin: 2px 10px 2px 10px;
|
||||
font-size: 16px;
|
||||
font-family: 'Zen Maru Gothic', sans-serif;
|
||||
font-family: "Zen Maru Gothic", sans-serif;
|
||||
font-weight: normal;
|
||||
|
||||
}
|
||||
|
||||
.shine {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.shine:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -50%;
|
||||
left: -50%;
|
||||
width: 10%;
|
||||
height: 150%;
|
||||
background: #fff;
|
||||
transform: rotate(45deg);
|
||||
animation: reflect 3s ease-in-out infinite;
|
||||
}
|
||||
@keyframes reflect {
|
||||
0%,
|
||||
75% {
|
||||
transform: rotate(45deg) scale(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(45deg) scale(100);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
.cyclingmark {
|
||||
display: flex;
|
||||
}
|
||||
.cyclingmark p::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
vertical-align: middle;
|
||||
margin-right: 5px;
|
||||
background: url("/img/uwuzuicon.png")
|
||||
no-repeat;
|
||||
background-size: contain;
|
||||
animation: cycling 2s infinite;
|
||||
margin: -6px 0px 0px -2px;
|
||||
}
|
||||
@keyframes cycling {
|
||||
from {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(0deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
to {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(360deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
25% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(400deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
40% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(330deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
60% {
|
||||
animation-timing-function: ease-in-out;
|
||||
transform: translate(0px, 0px) scale(1, 1) rotate(360deg) skew(0deg, 0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.rainbow {
|
||||
animation: rain 5s infinite;
|
||||
}
|
||||
@keyframes rain {
|
||||
0% {
|
||||
border: 1px solid magenta;
|
||||
color: magenta;
|
||||
}
|
||||
33% {
|
||||
border: 1px solid yellow;
|
||||
color: yellow;
|
||||
}
|
||||
66% {
|
||||
border: 1px solid cyan;
|
||||
color: cyan;
|
||||
}
|
||||
100% {
|
||||
border: 1px solid magenta;
|
||||
color: magenta;
|
||||
}
|
||||
}
|
||||
|
||||
.userleftbox{
|
||||
margin-top: 0px;
|
||||
@@ -810,6 +895,92 @@ p img{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
.switch_input {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 64%;
|
||||
height: 64%;
|
||||
z-index: 5;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.switch_label {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
width: 48px;
|
||||
height: 24px;
|
||||
background: var(--dark-subtext-color);
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-radius: 25px;
|
||||
transition: 0.4s;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.switch_label:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
margin-top: 2px;
|
||||
margin-left: 2px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 2;
|
||||
background: var(--background-color);
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
|
||||
transition: 0.2s;
|
||||
}
|
||||
.switch_input:checked + .switch_label {
|
||||
background-color: var(--main-color);
|
||||
}
|
||||
.switch_input:checked + .switch_label:after {
|
||||
left: 24px;
|
||||
}
|
||||
.switch_button {
|
||||
position: relative;
|
||||
width: 48px;
|
||||
height: 24px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
.switch_flexbox{
|
||||
display: flex;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
height: fit-content;
|
||||
}
|
||||
.switch_flexbox p{
|
||||
margin: 0px;
|
||||
margin-top: 6px;
|
||||
margin-left: 6px;
|
||||
margin-right: 6px;
|
||||
text-align: left;
|
||||
word-wrap: break-word;
|
||||
line-height: 14px;
|
||||
color: var(--subtext-color);
|
||||
font-size: 14px;
|
||||
font-family: 'BIZ UDPGothic', sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
.module_chk{
|
||||
padding-top: 16px;
|
||||
padding-bottom: 16px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
border-radius: 15px;
|
||||
background-color: var(--background-color);
|
||||
border: 1px solid var(--border-color);
|
||||
margin-top: 12px;
|
||||
text-align: left;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.module_chk p{
|
||||
margin: 0px;
|
||||
line-height: 24px;
|
||||
}
|
||||
/*------------------------------------------------------------------------------------------------------------*/
|
||||
/*--------------------------------------------------スマホ向け--------------------------------------------------*/
|
||||
/*--------------------------------------------------ここから--------------------------------------------------*/
|
||||
@@ -1073,6 +1244,7 @@ p img{
|
||||
|
||||
.btnbox{
|
||||
background-color: var(--dark-sub-color);
|
||||
border: none;
|
||||
}
|
||||
.irobutton{
|
||||
background-color: var(--main-color);
|
||||
@@ -1085,6 +1257,7 @@ p img{
|
||||
|
||||
.formarea{
|
||||
background-color: var(--dark-sub-color);
|
||||
border: none;
|
||||
}
|
||||
.formarea label{
|
||||
color:var(--dark-text-color);
|
||||
@@ -1132,4 +1305,7 @@ p img{
|
||||
background-color: var(--main-color);
|
||||
color: var(--dark-sub-color);
|
||||
}
|
||||
.errmsg p{
|
||||
color:#ff4848;
|
||||
}
|
||||
}
|
||||
+114
-19
@@ -190,6 +190,11 @@ if (!empty($pdo)) {
|
||||
|
||||
require('../logout/logout.php');
|
||||
|
||||
if(isset($_GET['q'])){
|
||||
$keyword = htmlentities($_GET['q']);
|
||||
}else{
|
||||
$keyword = "";
|
||||
}
|
||||
|
||||
// データベースの接続を閉じる
|
||||
$pdo = null;
|
||||
@@ -199,7 +204,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -212,7 +217,7 @@ $pdo = null;
|
||||
|
||||
<body>
|
||||
<?php require('../require/leftbox.php');?>
|
||||
<main>
|
||||
<main class="outer">
|
||||
<?php if( !empty($error_message) ): ?>
|
||||
<ul class="errmsg">
|
||||
<?php foreach( $error_message as $value ): ?>
|
||||
@@ -220,35 +225,125 @@ $pdo = null;
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
<div>
|
||||
<div id="clipboard" class="online" style="display:none;">
|
||||
<p>🗒️📎 コピーしました!</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<section class="inner">
|
||||
<div class="emojibox">
|
||||
<h1>絵文字一覧</h1>
|
||||
<div class="emojizone">
|
||||
<?php
|
||||
if(!empty($messages)){
|
||||
foreach ($messages as $value) {
|
||||
echo '<div class="emjtex">';
|
||||
echo '<div class="fx">';
|
||||
echo '<img src="../' . $value["emojifile"] . '">';
|
||||
echo '<h3>:'.$value["emojiname"].':</h3>';
|
||||
echo '</div>';
|
||||
echo '<p>'.$value["emojiinfo"].'</p>';
|
||||
echo '</div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noueuse"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="sendbox">
|
||||
<input class="inbox" placeholder="絵文字検索" id="emoji_searchword" type="text" value="<?php if( !empty($keyword) ){ echo htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<button class="search_btn" id="search_btn">検索</button>
|
||||
</div>
|
||||
<div class="emojizone" id="emojizone">
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="loading" class="loading" style="display: none;">
|
||||
🤔
|
||||
</div>
|
||||
<div id="error" class="error" style="display: none;">
|
||||
<h1>エラー</h1>
|
||||
<p>サーバーの応答がなかったか不完全だったようです。<br>ネットワークの接続が正常かを確認の上再読み込みしてください。<br>(NETWORK_HUKANZEN_STOP)</p>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
$(document).on('click', '.search_btn', function(event) {
|
||||
if ($("#emoji_searchword").val() != ''){
|
||||
$('#emojizone').empty();
|
||||
loadEmojis();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
window.document.onkeydown = function(event){
|
||||
if (event.key === 'Enter') {
|
||||
if ($("#emoji_searchword").val() != ''){
|
||||
$('#emojizone').empty();
|
||||
loadEmojis();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('click','.emjtex',function(){
|
||||
var children = $(this).children("div").children("div").children("h3");
|
||||
|
||||
navigator.clipboard.writeText(children.text());
|
||||
$("#clipboard").show();
|
||||
window.setTimeout(function(){
|
||||
$("#clipboard").hide();
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
loadEmojis();
|
||||
|
||||
var Emoji_pageNumber = 1;
|
||||
var isLoading = false;
|
||||
|
||||
function loadEmojis() {
|
||||
if (isLoading) return;
|
||||
isLoading = true;
|
||||
$("#loading").show();
|
||||
|
||||
var userid = '<?php echo $userid; ?>';
|
||||
var account_id = '<?php echo $loginid; ?>';
|
||||
var search_query = $("#emoji_searchword").val();
|
||||
var viewmode = 'page'
|
||||
$.ajax({
|
||||
url: '../nextpage/emojiview.php', // PHPファイルへのパス
|
||||
method: 'GET',
|
||||
data: { page: Emoji_pageNumber, userid: userid , account_id: account_id , search_query: search_query, view_mode: viewmode},
|
||||
dataType: 'html',
|
||||
timeout: 300000,
|
||||
success: function(response) {
|
||||
$('#emojizone').append(response);
|
||||
Emoji_pageNumber++;
|
||||
isLoading = false;
|
||||
$("#loading").hide();
|
||||
},
|
||||
error: function (xhr, textStatus, errorThrown) { // エラーと判定された場合
|
||||
isLoading = false;
|
||||
$("#loading").hide();
|
||||
$("#error").show();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
$('.outer').on('scroll', function() {
|
||||
var innerHeight = $('.inner').innerHeight(), //内側の要素の高さ
|
||||
outerHeight = $('.outer').innerHeight(), //外側の要素の高さ
|
||||
outerBottom = innerHeight - outerHeight; //内側の要素の高さ - 外側の要素の高さ
|
||||
if (outerBottom <= $('.outer').scrollTop()) {
|
||||
var elem = document.getElementById("noemoji");
|
||||
|
||||
if (elem === null){
|
||||
// 存在しない場合の処理
|
||||
loadEmojis();
|
||||
} else {
|
||||
// 存在する場合の処理
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</html>
|
||||
+1
-1
@@ -17,7 +17,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ $domain = $_SERVER['HTTP_HOST'];
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -19,7 +19,7 @@ if(!empty(file_get_contents($serverstopfile))){
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="/js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -94,4 +94,209 @@ function check_mime_video($tmp_name){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//文字装飾・URL変換など
|
||||
function processMarkdownAndWrapEmptyLines($markdownText){
|
||||
|
||||
//\___________________[注意]__________________\
|
||||
// \____ここの順番を変えるとうまく動かなくなります___\
|
||||
// \______Markdownうまく動くところを探すべし______\
|
||||
|
||||
$markdownText = preg_replace('/\[\[buruburu (.+)\]\]/m', '<span class="buruburu">$1</span>', $markdownText);//ぶるぶる
|
||||
|
||||
$markdownText = preg_replace('/(^|[^`])`([^`\n]+)`($|[^`])/m', '$1<span class="inline">$2</span>$3', $markdownText);//Inline Code
|
||||
|
||||
$markdownText = preg_replace_callback('/^\[\[time (\d+)\]\]/m', function($matches) {
|
||||
$timestamp = $matches[1];
|
||||
return '<span class="unixtime" title="'.date("Y/m/d H:i.s", htmlentities($timestamp, ENT_QUOTES, 'UTF-8', false)).'">' . date("Y/m/d H:i", htmlentities($timestamp, ENT_QUOTES, 'UTF-8', false)) . '</span>';
|
||||
}, $markdownText);
|
||||
|
||||
$markdownText = preg_replace('/\*\*\*(.*?)\*\*\*/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
$markdownText = preg_replace('/\_\_\_(.*?)\_\_\_/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
|
||||
$markdownText = preg_replace('/\*\*(.*?)\*\*/', '<b>$1</b>', $markdownText);//太字
|
||||
$markdownText = preg_replace('/\_\_(.*?)\_\_/', '<b>$1</b>', $markdownText);//太字
|
||||
|
||||
$markdownText = preg_replace('/\*(.*?)\*/', '<i>$1</i>', $markdownText);//斜体
|
||||
$markdownText = preg_replace('/\_(.*?)\_/', '<i>$1</i>', $markdownText);//斜体
|
||||
|
||||
$markdownText = preg_replace('/\~\~(.*?)\~\~/m', '<s>$1</s>', $markdownText);//打ち消し線
|
||||
|
||||
$markdownText = preg_replace('/>>> (.*)/m', '<span class="quote">$1</span>', $markdownText);//>>> 引用
|
||||
|
||||
$markdownText = preg_replace('/\|\|(.*)\|\|/m', '<span class="blur">$1</span>', $markdownText);//黒塗り
|
||||
|
||||
// タイトル(#、##、###)をHTMLのhタグに変換
|
||||
$markdownText = preg_replace('/^# (.+)/m', '<h1>$1</h1>', $markdownText);
|
||||
$markdownText = preg_replace('/^## (.+)/m', '<h2>$1</h2>', $markdownText);
|
||||
$markdownText = preg_replace('/^### (.+)/m', '<h3>$1</h3>', $markdownText);
|
||||
|
||||
// 箇条書き(-)をHTMLのul/liタグに変換
|
||||
$markdownText = preg_replace('/^- (.+)/m', '<p>・ $1</p>', $markdownText);
|
||||
|
||||
// 空行の前に何もない行をHTMLのpタグに変換
|
||||
$markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1<p>$2</p>', $markdownText);
|
||||
|
||||
return $markdownText;
|
||||
}
|
||||
//Profile
|
||||
function replaceProfileEmojiImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
return $postTextWithImages;
|
||||
}
|
||||
// ユーズ内の絵文字やhashtagを画像に置き換える
|
||||
function replaceEmojisWithImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
|
||||
// @username を検出してリンクに置き換える
|
||||
$usernamePattern = '/@(\w+)/';
|
||||
$postTextWithImagesAndUsernames = preg_replace_callback($usernamePattern, function($matches) {
|
||||
$username = $matches[1];
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$mentionsuserQuery = $dbh->prepare("SELECT username, userid FROM account WHERE userid = :userid");
|
||||
$mentionsuserQuery->bindValue(':userid', $username);
|
||||
$mentionsuserQuery->execute();
|
||||
$mentionsuserData = $mentionsuserQuery->fetch();
|
||||
|
||||
if(empty($mentionsuserData)){
|
||||
return "@$username";
|
||||
}else{
|
||||
return "<a class = 'mta' href='/@".htmlentities($mentionsuserData["userid"], ENT_QUOTES, 'UTF-8', false)."'>@".replaceProfileEmojiImages(htmlentities($mentionsuserData["username"], ENT_QUOTES, 'UTF-8', false))."</a>";
|
||||
}
|
||||
}, $postTextWithImages);
|
||||
|
||||
$hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9ー_]+)/u';
|
||||
$postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) {
|
||||
$hashtags = $matches[1];
|
||||
return "<a class='hashtags' href='/search?q=" . urlencode('#') . $hashtags . "'>" . '#' . $hashtags . "</a>";
|
||||
}, $postTextWithImagesAndUsernames);
|
||||
|
||||
return $postTextWithHashtags;
|
||||
}
|
||||
|
||||
function replaceURLsWithLinks($postText, $maxLength = 48) {
|
||||
$pattern = '/(https:\/\/[\w!?\/+\-_~;.,*&@#$%()+|https:\/\/[ぁ-んァ-ヶ一-龠々\w\-\/?=&%.]+)/';
|
||||
$convertedText = preg_replace_callback($pattern, function($matches) use ($maxLength) {
|
||||
$link = $matches[0];
|
||||
$no_https_link = str_replace("https://", "", $link);
|
||||
if (mb_strlen($link) > $maxLength) {
|
||||
$truncatedLink = mb_substr($no_https_link, 0, $maxLength).'...';
|
||||
return '<a href="'.$link.'" target="_blank">'.$truncatedLink.'</a>';
|
||||
} else {
|
||||
return '<a href="'.$link.'" target="_blank">'.$no_https_link.'</a>';
|
||||
}
|
||||
}, $postText);
|
||||
|
||||
return $convertedText;
|
||||
}
|
||||
function YouTube_and_nicovideo_Links($postText) {
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
if(empty($url)){
|
||||
$postText = "";
|
||||
}
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if($parsedUrl['host'] == "youtube.com" || $parsedUrl['host'] == "youtu.be" || $parsedUrl['host'] == "www.youtube.com" || $parsedUrl['host'] == "m.youtube.com"){
|
||||
|
||||
if (isset($parsedUrl['query'])) {
|
||||
if(false !== strpos($parsedUrl['query'], 'v=')) {
|
||||
$video_id = str_replace('v=', '', htmlentities($parsedUrl['query'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = str_replace('/', '', htmlentities($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}
|
||||
$video_id = str_replace('&', '?', $video_id);
|
||||
}elseif(isset($parsedUrl['path'])){
|
||||
$video_id = str_replace('/', '', htmlentities($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = "";
|
||||
$iframe = false;
|
||||
}
|
||||
// 不要な文字を削除してaタグを生成
|
||||
if($iframe == true){
|
||||
$link = '<iframe src="https://www.youtube-nocookie.com/embed/'.$video_id.'" rel="0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
|
||||
}else{
|
||||
$link = "";
|
||||
}
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = $link;
|
||||
}elseif($parsedUrl['host'] == "nicovideo.jp" || $parsedUrl['host'] == "www.nicovideo.jp"){
|
||||
|
||||
if(isset($parsedUrl['path'])){
|
||||
$video_id = str_replace('/watch/', '', htmlentities($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = "";
|
||||
$iframe = false;
|
||||
}
|
||||
// 不要な文字を削除してaタグを生成
|
||||
if($iframe == true){
|
||||
$link = '<iframe src="https://embed.nicovideo.jp/watch/'.$video_id.'"</iframe>';
|
||||
}else{
|
||||
$link = "";
|
||||
}
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = $link;
|
||||
}else{
|
||||
$postText = "";
|
||||
}
|
||||
}
|
||||
|
||||
return $postText;
|
||||
}
|
||||
?>
|
||||
+92
-34
@@ -3,7 +3,7 @@ $serversettings_file = "../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
|
||||
$mojisizefile = "../server/textsize.txt";
|
||||
$mojisize = (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
$mojisize = (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
//投稿及び返信レート制限↓(分):デフォで60件/分まで
|
||||
$max_ueuse_rate_limit = 60;
|
||||
|
||||
@@ -192,6 +192,17 @@ $notificationcount = $notiData['notification_count'];
|
||||
//-----------------URLから取得----------------
|
||||
if(isset($_GET['text'])) {
|
||||
$ueuse = htmlentities($_GET['text']);
|
||||
}elseif(isset($_COOKIE['ueuse'])) {
|
||||
$ueuse = htmlentities($_COOKIE['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
}
|
||||
//-----------------絵文字の取得----------------
|
||||
if (!empty($pdo)) {
|
||||
$custom_emoji_Query = "SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC";
|
||||
$custom_emoji_array = $pdo->query($custom_emoji_Query);
|
||||
|
||||
while ($row = $custom_emoji_array->fetch(PDO::FETCH_ASSOC)) {
|
||||
$custom_emoji[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------
|
||||
@@ -225,10 +236,10 @@ function get_mentions_userid($postText) {
|
||||
|
||||
if( !empty($_POST['btn_submit']) ) {
|
||||
|
||||
$ueuse = htmlspecialchars($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
$ueuse = htmlentities($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
if(isset($_POST['nsfw_chk'])){
|
||||
$nsfw_chk = htmlspecialchars($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false);
|
||||
$nsfw_chk = htmlentities($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false);
|
||||
}else{
|
||||
$nsfw_chk = "false";
|
||||
}
|
||||
@@ -244,8 +255,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$error_message[] = '内容を入力してください。(INPUT_PLEASE)';
|
||||
} else {
|
||||
// 文字数を確認
|
||||
if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
if( (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
}
|
||||
|
||||
// 禁止url確認
|
||||
@@ -478,6 +489,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
}
|
||||
|
||||
if( empty($error_message) ) {
|
||||
//一時保存していたユーズ内容の削除
|
||||
setcookie("ueuse", "", time() - 30);
|
||||
|
||||
// 書き込み日時を取得
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
@@ -492,21 +505,21 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
// SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
|
||||
|
||||
$stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':username', htmlentities($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlentities($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlentities($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':photo1', htmlspecialchars($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlspecialchars($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlspecialchars($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlspecialchars($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlspecialchars($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo1', htmlentities($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlentities($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlentities($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlentities($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlentities($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':nsfw', htmlspecialchars($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':nsfw', htmlentities($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':abi', htmlentities($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
|
||||
@@ -525,21 +538,21 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
$msg = "" . $ueuse . "";
|
||||
$title = "" . $userid . "さんにメンションされました!";
|
||||
$url = "/!" . $uniqid . "~" . $userid . "";
|
||||
$url = "/!" . $uniqid . "";
|
||||
$userchk = 'none';
|
||||
|
||||
// 通知用SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)");
|
||||
|
||||
|
||||
$stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':fromuserid', htmlentities($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -591,7 +604,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="../js/nsfw_event.js"></script>
|
||||
@@ -609,7 +622,7 @@ if ("serviceWorker" in navigator) {
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<title>フォロータイムライン - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>フォロータイムライン - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -646,7 +659,8 @@ if ("serviceWorker" in navigator) {
|
||||
<?php if(!($role ==="ice")){?>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div class="sendbox">
|
||||
<textarea id="ueuse" placeholder="いまどうしてる?" name="ueuse"><?php if( !empty($ueuse) ){ echo htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="ueuse" placeholder="いまどうしてる?" name="ueuse"><?php if( !empty($ueuse) ){ echo htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
|
||||
<div class="fxbox">
|
||||
<label for="upload_images" id="images" title="画像1">
|
||||
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
|
||||
@@ -674,10 +688,33 @@ if ("serviceWorker" in navigator) {
|
||||
<label for="nsfw_chk" class="nsfw_label" title="投稿をNSFW指定にする"><svg><use xlink:href="../img/sysimage/eye_1.svg#eye"></use></svg></label>
|
||||
</div>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo $mojisize; ?></div>
|
||||
|
||||
<label for="emoji_picker_btn" title="カスタム絵文字">
|
||||
<svg><use xlink:href="../img/sysimage/menuicon/emoji.svg#emoji"></use></svg>
|
||||
<input id="emoji_picker_btn" type='checkbox' value="false" style="display:none;"/>
|
||||
</label>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo htmlentities($mojisize, ENT_QUOTES, 'UTF-8', false); ?></div>
|
||||
|
||||
<input type="submit" class="ueusebtn" id='ueusebtn' name="btn_submit" value="ユーズする">
|
||||
</div>
|
||||
|
||||
<div class="emoji_picker" id="emoji_picker" style="display:none;">
|
||||
<p>カスタム絵文字</p>
|
||||
<div class="emoji_picker_flex">
|
||||
<?php
|
||||
if(!empty($custom_emoji)){
|
||||
foreach ($custom_emoji as $value) {
|
||||
echo '<div class="one_emoji">';
|
||||
echo '<img src="../' . htmlentities($value["emojifile"], ENT_QUOTES, 'UTF-8', false) . '" alt=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':" title=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':">';
|
||||
echo '</div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noueuse"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php }?>
|
||||
@@ -740,9 +777,24 @@ if ("serviceWorker" in navigator) {
|
||||
$('#moji_cnt').html(mojicount);
|
||||
$('#ueusebtn').prop('disabled', true);
|
||||
}
|
||||
document.cookie = "ueuse=" + encodeURIComponent($(this).val()) + "; Secure; SameSite=Lax; path=/home;";
|
||||
})
|
||||
$("#emoji_picker_btn").click(function () {
|
||||
if ($("#emoji_picker_btn").prop("checked") == true) {
|
||||
$("#emoji_picker").show();
|
||||
} else {
|
||||
$("#emoji_picker").hide();
|
||||
}
|
||||
});
|
||||
$(".one_emoji").click(function (event) {
|
||||
event.preventDefault();
|
||||
var children = $(this).children("img");
|
||||
var custom_emojiname = children.attr("title");
|
||||
$("#ueuse").val($("#ueuse").val() + custom_emojiname);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<section class="inner">
|
||||
<div id="postContainer">
|
||||
|
||||
@@ -764,8 +816,8 @@ if ("serviceWorker" in navigator) {
|
||||
<div class="modal-content">
|
||||
<p>ユーズを削除しますか?</p>
|
||||
<form class="btn_area" method="post" id="deleteForm">
|
||||
<input type="button" id="deleteButton" class="fbtn_no" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="button" id="deleteButton" class="fbtn" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -776,18 +828,24 @@ if ("serviceWorker" in navigator) {
|
||||
<h1>ユーズに追記しますか?</h1>
|
||||
<p>※追記は削除出来ません。</p>
|
||||
<form method="post" id="AbiForm">
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlspecialchars( $_SESSION['abi'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlentities( $_SESSION['abi'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<div class="btn_area">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn_no" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn_no" value="キャンセル">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
+92
-35
@@ -3,7 +3,7 @@ $serversettings_file = "../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
|
||||
$mojisizefile = "../server/textsize.txt";
|
||||
$mojisize = (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
$mojisize = (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
|
||||
//投稿及び返信レート制限↓(分):デフォで60件/分まで
|
||||
$max_ueuse_rate_limit = 60;
|
||||
@@ -190,7 +190,18 @@ $notificationcount = $notiData['notification_count'];
|
||||
|
||||
//-----------------URLから取得----------------
|
||||
if(isset($_GET['text'])) {
|
||||
$ueuse = htmlspecialchars($_GET['text'], ENT_QUOTES, 'UTF-8', false);
|
||||
$ueuse = htmlentities($_GET['text'], ENT_QUOTES, 'UTF-8', false);
|
||||
}elseif(isset($_COOKIE['ueuse'])) {
|
||||
$ueuse = htmlentities($_COOKIE['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
}
|
||||
//-----------------絵文字の取得----------------
|
||||
if (!empty($pdo)) {
|
||||
$custom_emoji_Query = "SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC";
|
||||
$custom_emoji_array = $pdo->query($custom_emoji_Query);
|
||||
|
||||
while ($row = $custom_emoji_array->fetch(PDO::FETCH_ASSOC)) {
|
||||
$custom_emoji[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------
|
||||
@@ -222,10 +233,10 @@ function get_mentions_userid($postText) {
|
||||
}
|
||||
|
||||
if( !empty($_POST['btn_submit']) ) {
|
||||
$ueuse = htmlspecialchars($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
$ueuse = htmlentities($_POST['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
if(isset($_POST['nsfw_chk'])){
|
||||
$nsfw_chk = htmlspecialchars($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false);
|
||||
$nsfw_chk = htmlentities($_POST['nsfw_chk'], ENT_QUOTES, 'UTF-8', false);
|
||||
}else{
|
||||
$nsfw_chk = "false";
|
||||
}
|
||||
@@ -241,8 +252,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$error_message[] = '内容を入力してください。(INPUT_PLEASE)';
|
||||
} else {
|
||||
// 文字数を確認
|
||||
if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
if( (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false) < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8', false).'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
}
|
||||
|
||||
// 禁止url確認
|
||||
@@ -476,6 +487,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
}
|
||||
|
||||
if( empty($error_message) ) {
|
||||
//一時保存していたユーズ内容の削除
|
||||
setcookie("ueuse", "", time() - 30);
|
||||
|
||||
// 書き込み日時を取得
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
@@ -490,21 +503,21 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
// SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
|
||||
|
||||
$stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':username', htmlentities($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlentities($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlentities($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':photo1', htmlspecialchars($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlspecialchars($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlspecialchars($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlspecialchars($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlspecialchars($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo1', htmlentities($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlentities($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlentities($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlentities($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlentities($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':nsfw', htmlspecialchars($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':nsfw', htmlentities($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':abi', htmlentities($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -524,21 +537,21 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
$msg = "" . $ueuse . "";
|
||||
$title = "" . $userid . "さんにメンションされました!";
|
||||
$url = "/!" . $uniqid . "~" . $userid . "";
|
||||
$url = "/!" . $uniqid . "";
|
||||
$userchk = 'none';
|
||||
|
||||
// 通知用SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)");
|
||||
|
||||
|
||||
$stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':fromuserid', htmlentities($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -590,7 +603,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="../js/nsfw_event.js"></script>
|
||||
@@ -608,7 +621,7 @@ if ("serviceWorker" in navigator) {
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<title>ローカルタイムライン - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>ローカルタイムライン - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8', false);?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -674,7 +687,7 @@ if ("serviceWorker" in navigator) {
|
||||
<?php if(!($role ==="ice")){?>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div class="sendbox">
|
||||
<textarea id="ueuse" placeholder="いまどうしてる?" name="ueuse"><?php if( !empty($ueuse) ){ echo htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="ueuse" placeholder="いまどうしてる?" name="ueuse"><?php if( !empty($ueuse) ){ echo htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
|
||||
<div class="fxbox">
|
||||
<label for="upload_images" id="images" title="画像1">
|
||||
@@ -703,10 +716,33 @@ if ("serviceWorker" in navigator) {
|
||||
<label for="nsfw_chk" class="nsfw_label" title="投稿をNSFW指定にする"><svg><use xlink:href="../img/sysimage/eye_1.svg#eye"></use></svg></label>
|
||||
</div>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo $mojisize; ?></div>
|
||||
|
||||
<label for="emoji_picker_btn" title="カスタム絵文字">
|
||||
<svg><use xlink:href="../img/sysimage/menuicon/emoji.svg#emoji"></use></svg>
|
||||
<input id="emoji_picker_btn" type='checkbox' value="false" style="display:none;"/>
|
||||
</label>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo htmlentities($mojisize, ENT_QUOTES, 'UTF-8', false); ?></div>
|
||||
|
||||
<input type="submit" class="ueusebtn" id='ueusebtn' name="btn_submit" value="ユーズする">
|
||||
</div>
|
||||
|
||||
<div class="emoji_picker" id="emoji_picker" style="display:none;">
|
||||
<p>カスタム絵文字</p>
|
||||
<div class="emoji_picker_flex">
|
||||
<?php
|
||||
if(!empty($custom_emoji)){
|
||||
foreach ($custom_emoji as $value) {
|
||||
echo '<div class="one_emoji">';
|
||||
echo '<img src="../' . htmlentities($value["emojifile"], ENT_QUOTES, 'UTF-8', false) . '" alt=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':" title=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':">';
|
||||
echo '</div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php }?>
|
||||
@@ -769,7 +805,21 @@ if ("serviceWorker" in navigator) {
|
||||
$('#moji_cnt').html(mojicount);
|
||||
$('#ueusebtn').prop('disabled', true);
|
||||
}
|
||||
document.cookie = "ueuse=" + encodeURIComponent($(this).val()) + "; Secure; SameSite=Lax; path=/home;";
|
||||
})
|
||||
$("#emoji_picker_btn").click(function () {
|
||||
if ($("#emoji_picker_btn").prop("checked") == true) {
|
||||
$("#emoji_picker").show();
|
||||
} else {
|
||||
$("#emoji_picker").hide();
|
||||
}
|
||||
});
|
||||
$(".one_emoji").click(function (event) {
|
||||
event.preventDefault();
|
||||
var children = $(this).children("img");
|
||||
var custom_emojiname = children.attr("title");
|
||||
$("#ueuse").val($("#ueuse").val() + custom_emojiname);
|
||||
});
|
||||
</script>
|
||||
|
||||
<section class="inner">
|
||||
@@ -793,8 +843,8 @@ if ("serviceWorker" in navigator) {
|
||||
<div class="modal-content">
|
||||
<p>ユーズを削除しますか?</p>
|
||||
<form class="btn_area" method="post" id="deleteForm">
|
||||
<input type="button" id="deleteButton" class="fbtn_no" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="button" id="deleteButton" class="fbtn" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -805,18 +855,25 @@ if ("serviceWorker" in navigator) {
|
||||
<h1>ユーズに追記しますか?</h1>
|
||||
<p>※追記は削除出来ません。</p>
|
||||
<form method="post" id="AbiForm">
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlspecialchars( $_SESSION['abi'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlentities( $_SESSION['abi'], ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
<div class="btn_area">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn_no" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn_no" value="キャンセル">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -121,6 +121,7 @@ $count2 = $result2->num_rows;
|
||||
<meta name="twitter:description" content="<?php echo htmlentities($serverinfo);?>"/>
|
||||
<!--OGPここまで-->
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
|
||||
Vendored
+2
File diff suppressed because one or more lines are too long
@@ -8,3 +8,26 @@ $(document).on('click', '.mini_irobtn', function(event) {
|
||||
$(mother2).next('.nsfw_main').removeClass('nsfw_main');
|
||||
$(mother2).hide();
|
||||
});
|
||||
|
||||
|
||||
$(document).on('click', '#ueuse_image', function (event) {
|
||||
var imgLink = $(this).attr('src');
|
||||
|
||||
var modal = $('#Big_ImageModal');
|
||||
var modalMain = $('.modal-content');
|
||||
var modalimg_zone = $('#Big_ImageMain');
|
||||
|
||||
$(modalimg_zone).attr('src',imgLink);
|
||||
|
||||
modal.show();
|
||||
modalMain.addClass("slideUp");
|
||||
modalMain.removeClass("slideDown");
|
||||
|
||||
modal.on('click', function() {
|
||||
modalMain.removeClass("slideUp");
|
||||
modalMain.addClass("slideDown");
|
||||
window.setTimeout(function(){
|
||||
modal.hide();
|
||||
}, 150);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"lang_name" : "日本語",
|
||||
|
||||
"uwuzu" : "ゆず",
|
||||
"home" : "ホーム",
|
||||
"search" : "検索",
|
||||
"notification" : "通知",
|
||||
"emoji" : "絵文字",
|
||||
"profile" : "プロフィール",
|
||||
"settings" : "設定",
|
||||
"others" : "その他",
|
||||
"add_emoji" : "絵文字登録",
|
||||
"add_notice" : "お知らせ配信",
|
||||
"server_settings" : "サーバー設定",
|
||||
"logout" : "ログアウト",
|
||||
"notice" : "お知らせ",
|
||||
"editor" : "編集者",
|
||||
"server_about" : "サーバー情報",
|
||||
"server" : "Server",
|
||||
"software" : "software",
|
||||
"terms" : "利用規約",
|
||||
"privacy_policy" : "プライバシーポリシー",
|
||||
"detail" : "詳細",
|
||||
"learn_more" : "もっと詳しく!",
|
||||
"release_note" : "リリースノート",
|
||||
"about" : "概要",
|
||||
"user" : "ユーザー",
|
||||
"user_management" : "ユーザー管理",
|
||||
"invitation" : "招待",
|
||||
"invitation_code" : "招待コード",
|
||||
"role" : "ロール",
|
||||
"ads" : "広告",
|
||||
"moderation" : "モデレーション",
|
||||
"customize" : "カスタマイズ",
|
||||
"ueuse" : "ユーズ",
|
||||
"media" : "メディア",
|
||||
"favorite" : "いいね",
|
||||
"ima_dou_siteru" : "いまどうしてる?",
|
||||
"ueuse_search" : "ユーズ検索",
|
||||
"all_emoji" : "絵文字一覧",
|
||||
"ueuse_count" : "ユーズ数",
|
||||
"follow_count" : "フォロー数",
|
||||
"follower_count" : "フォロワー数",
|
||||
"follow" : "フォロー",
|
||||
"follower" : "フォロワー"
|
||||
}
|
||||
@@ -6,6 +6,8 @@ $serversettings = parse_ini_file($serversettings_file, true);
|
||||
require('db.php');
|
||||
//hCaptcha--------------------------------------------
|
||||
require('settings_admin/hCaptcha_settings/hCaptcha_settings.php');
|
||||
//Cloudflare_Turnstile--------------------------------------------
|
||||
require('settings_admin/CloudflareTurnstile_settings/CloudflareTurnstile_settings.php');
|
||||
//----------------------------------------------------
|
||||
|
||||
|
||||
@@ -96,14 +98,14 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$userid = htmlentities($_POST['userid']);
|
||||
$password = htmlentities($_POST['password']);
|
||||
|
||||
if(!empty(CAPTCHA && CAPTCHA == "true")){
|
||||
if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){
|
||||
if(isset($_POST['h-captcha-response'])){
|
||||
$hcaptcha_token = htmlentities($_POST['h-captcha-response']);
|
||||
if($hcaptcha_token){
|
||||
$captcha_data = [
|
||||
'secret' => htmlentities(SEAC_KEY),
|
||||
'secret' => htmlentities(H_CAPTCHA_SEAC_KEY),
|
||||
'response' => $hcaptcha_token,
|
||||
'sitekey' => htmlentities(SITE_KEY)
|
||||
'sitekey' => htmlentities(H_CAPTCHA_SITE_KEY)
|
||||
];
|
||||
$options = [
|
||||
'http' => [
|
||||
@@ -114,13 +116,39 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
];
|
||||
$hCaptcha_result = json_decode(file_get_contents('https://hcaptcha.com/siteverify', false, stream_context_create($options)),true);
|
||||
if(!($hCaptcha_result["success"] == true)){
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){
|
||||
if(isset($_POST['cf-turnstile-response'])){
|
||||
$CF_Turnstile_token = htmlentities($_POST['cf-turnstile-response']);
|
||||
if($CF_Turnstile_token){
|
||||
$CF_Turnstile_data = [
|
||||
'secret' => htmlentities(CF_TURNSTILE_SEAC_KEY),
|
||||
'response' => $CF_Turnstile_token
|
||||
];
|
||||
$CF_Turnstile_options = [
|
||||
'http' => [
|
||||
'method'=> 'POST',
|
||||
'header'=> 'Content-Type: application/x-www-form-urlencoded',
|
||||
'content' => http_build_query($CF_Turnstile_data, '', '&')
|
||||
]
|
||||
];
|
||||
$CF_Turnstile_result = json_decode(file_get_contents('https://challenges.cloudflare.com/turnstile/v0/siteverify', false, stream_context_create($CF_Turnstile_options)),true);
|
||||
if(!($CF_Turnstile_result["success"] == true)){
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,10 +247,14 @@ $pdo = null;
|
||||
<meta name="twitter:description" content="<?php echo htmlentities($serverinfo);?>"/>
|
||||
<!--OGPここまで-->
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -265,10 +297,24 @@ $pdo = null;
|
||||
<label for="password">パスワード</label>
|
||||
<input id="password" class="inbox" type="password" name="password" maxlength="32" value="<?php if( !empty($_SESSION['password']) ){ echo htmlentities( $_SESSION['password'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<div class="switch_flexbox">
|
||||
<div class="switch_button">
|
||||
<input id="passview" class="switch_input" type='checkbox' name="passview" value=""/>
|
||||
<label for="passview" class="switch_label"></label>
|
||||
</div>
|
||||
<p>パスワードを表示する</p>
|
||||
</div>
|
||||
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="p2">人間だと思いますが一応お伺いします...<br>人間ですか?<br>人間の場合はチェックボックスにチェックしてください!</div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(SITE_KEY);?>"></div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(H_CAPTCHA_SITE_KEY);?>"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="cf-turnstile" data-sitekey="<?php echo htmlentities(CF_TURNSTILE_SITE_KEY);?>" data-callback="javascriptCallback" data-language="ja"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
@@ -292,13 +338,13 @@ function checkForm(inputElement) {
|
||||
}
|
||||
inputElement.value = str;
|
||||
}
|
||||
|
||||
|
||||
window.onload = function(){
|
||||
var ele = document.getElementsByTagName("body")[0];
|
||||
var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合
|
||||
ele.style.backgroundImage = "url(img/titleimg/"+n+".png)";
|
||||
$("#passview").click(function () {
|
||||
if ($("#passview").prop("checked") == true) {
|
||||
$('#password').get(0).type = 'text';
|
||||
} else {
|
||||
$('#password').get(0).type = 'password';
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ $_SESSION = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
|
||||
@@ -20,6 +20,8 @@ require('db.php');
|
||||
require('function/function.php');
|
||||
//hCaptcha--------------------------------------------
|
||||
require('settings_admin/hCaptcha_settings/hCaptcha_settings.php');
|
||||
//Cloudflare_Turnstile--------------------------------------------
|
||||
require('settings_admin/CloudflareTurnstile_settings/CloudflareTurnstile_settings.php');
|
||||
//----------------------------------------------------
|
||||
|
||||
$serversettings_file = "server/serversettings.ini";
|
||||
@@ -117,14 +119,14 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$invitationcode = $_POST['invitationcode'];
|
||||
}
|
||||
|
||||
if(!empty(CAPTCHA && CAPTCHA == "true")){
|
||||
if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){
|
||||
if(isset($_POST['h-captcha-response'])){
|
||||
$hcaptcha_token = htmlentities($_POST['h-captcha-response']);
|
||||
if($hcaptcha_token){
|
||||
$captcha_data = [
|
||||
'secret' => htmlentities(SEAC_KEY),
|
||||
'secret' => htmlentities(H_CAPTCHA_SEAC_KEY),
|
||||
'response' => $hcaptcha_token,
|
||||
'sitekey' => htmlentities(SITE_KEY)
|
||||
'sitekey' => htmlentities(H_CAPTCHA_SITE_KEY)
|
||||
];
|
||||
$options = [
|
||||
'http' => [
|
||||
@@ -135,13 +137,39 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
];
|
||||
$hCaptcha_result = json_decode(file_get_contents('https://hcaptcha.com/siteverify', false, stream_context_create($options)),true);
|
||||
if(!($hCaptcha_result["success"] == true)){
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){
|
||||
if(isset($_POST['cf-turnstile-response'])){
|
||||
$CF_Turnstile_token = htmlentities($_POST['cf-turnstile-response']);
|
||||
if($CF_Turnstile_token){
|
||||
$CF_Turnstile_data = [
|
||||
'secret' => htmlentities(CF_TURNSTILE_SEAC_KEY),
|
||||
'response' => $CF_Turnstile_token
|
||||
];
|
||||
$CF_Turnstile_options = [
|
||||
'http' => [
|
||||
'method'=> 'POST',
|
||||
'header'=> 'Content-Type: application/x-www-form-urlencoded',
|
||||
'content' => http_build_query($CF_Turnstile_data, '', '&')
|
||||
]
|
||||
];
|
||||
$CF_Turnstile_result = json_decode(file_get_contents('https://challenges.cloudflare.com/turnstile/v0/siteverify', false, stream_context_create($CF_Turnstile_options)),true);
|
||||
if(!($CF_Turnstile_result["success"] == true)){
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,8 +428,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
}
|
||||
|
||||
// 文字数を確認
|
||||
if( 100 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは100文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
if( 256 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは256文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,10 +534,14 @@ $pdo = null;
|
||||
<meta name="twitter:description" content="<?php echo htmlentities($serverinfo);?>"/>
|
||||
<!--OGPここまで-->
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -600,10 +632,15 @@ $pdo = null;
|
||||
</div>
|
||||
|
||||
<p>登録を押すと利用規約とプライバシーポリシーに同意したこととなります。<br>未確認の場合は上のボタンよりお読みください。</p>
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="p2">あなたは人間ですか?<br>もし人間であれば下のチェックボックスにチェックしてください!</div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(SITE_KEY);?>"></div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(H_CAPTCHA_SITE_KEY);?>"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="cf-turnstile" data-sitekey="<?php echo htmlentities(CF_TURNSTILE_SITE_KEY);?>" data-callback="javascriptCallback" data-language="ja"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php if(htmlspecialchars($serversettings["serverinfo"]["server_invitation"], ENT_QUOTES, 'UTF-8') === "true"){?>
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
function createUniqId() {
|
||||
list($msec, $sec) = explode(" ", microtime());
|
||||
$hashCreateTime = $sec . floor($msec * 1000000);
|
||||
|
||||
$hashCreateTime = strrev($hashCreateTime);
|
||||
|
||||
return base_convert($hashCreateTime, 10, 36);
|
||||
}
|
||||
|
||||
require('../db.php');
|
||||
|
||||
// データベースに接続
|
||||
try {
|
||||
$option = array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
||||
);
|
||||
$pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option);
|
||||
} catch (PDOException $e) {
|
||||
// 接続エラーのときエラー内容を取得する
|
||||
$error_message[] = $e->getMessage();
|
||||
}
|
||||
|
||||
if (isset($_GET['userid']) && isset($_GET['account_id']) && isset($_GET['search_query']) && isset($_GET['view_mode'])) {
|
||||
$userid = htmlentities($_GET['userid'], ENT_QUOTES, 'UTF-8', false);
|
||||
$loginid = htmlentities($_GET['account_id'], ENT_QUOTES, 'UTF-8', false);
|
||||
$search_word = str_replace(":","",htmlentities($_GET['search_query'], ENT_QUOTES, 'UTF-8', false));
|
||||
$viewmode = htmlentities($_GET['view_mode'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$itemsPerPage = 50;
|
||||
$pageNumber = htmlentities(isset($_GET['page'])) ? htmlentities(intval($_GET['page'])) : 1;
|
||||
$offset = ($pageNumber - 1) * $itemsPerPage;
|
||||
|
||||
// データベース接続の設定
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1');
|
||||
|
||||
$query->execute(array(':userid' => $userid));
|
||||
|
||||
$result2 = $query->fetch();
|
||||
|
||||
if(!(empty($result2["loginid"]))){
|
||||
if($result2["loginid"] === $loginid){
|
||||
$custom_emoji = array();
|
||||
if (!(empty($pdo))) {
|
||||
|
||||
if(!(empty($search_word))){
|
||||
$custom_emoji_Query = $pdo->prepare("SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji WHERE emojiname LIKE :keyword OR emojiinfo LIKE :keyword ORDER BY emojidate DESC");
|
||||
$custom_emoji_Query->bindValue(':keyword', '%' . $search_word . '%', PDO::PARAM_STR);
|
||||
$custom_emoji_Query->execute();
|
||||
}else{
|
||||
$custom_emoji_Query = $pdo->prepare("SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC LIMIT :offset, :itemsPerPage");
|
||||
$custom_emoji_Query->bindValue(':offset', $offset, PDO::PARAM_INT);
|
||||
$custom_emoji_Query->bindValue(':itemsPerPage', $itemsPerPage, PDO::PARAM_INT);
|
||||
$custom_emoji_Query->execute();
|
||||
}
|
||||
|
||||
$custom_array = $custom_emoji_Query->fetchAll();
|
||||
|
||||
$custom_emoji = array();
|
||||
foreach ($custom_array as $row) {
|
||||
$custom_emoji[] = $row;
|
||||
}
|
||||
|
||||
if((!(empty($custom_emoji)))&&(!(empty($viewmode)))){
|
||||
if($viewmode == "page"){
|
||||
foreach ($custom_emoji as $value) {
|
||||
echo '<div class="emjtex">';
|
||||
echo '<div class="fx">';
|
||||
echo '<img src="../' . htmlentities($value["emojifile"], ENT_QUOTES, 'UTF-8', false) . '">';
|
||||
echo '<div class="btm_zone">';
|
||||
echo '<h3>:'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':</h3>';
|
||||
echo '<p>'.htmlentities($value["emojiinfo"], ENT_QUOTES, 'UTF-8', false).'</p>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
}elseif($viewmode == "picker"){
|
||||
foreach ($custom_emoji as $value) {
|
||||
echo '<div class="one_emoji">';
|
||||
echo '<img src="../' . htmlentities($value["emojifile"], ENT_QUOTES, 'UTF-8', false) . '" alt=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':" title=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':">';
|
||||
echo '</div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>取得に失敗しました。</p></div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>取得に失敗しました。</p></div>';
|
||||
}
|
||||
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
|
||||
$pdo = null;
|
||||
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>取得に失敗しました。</p></div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noemoji"><p>取得に失敗しました。</p></div>';
|
||||
}
|
||||
@@ -55,8 +55,10 @@ if (isset($_GET['userid']) && isset($_GET['account_id'])) {
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$messageQuery = $dbh->prepare("SELECT fromuserid,title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage");
|
||||
$messageQuery->bindValue(':userid', $userid);
|
||||
$messageQuery = $dbh->prepare("SELECT fromuserid,title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT :offset, :itemsPerPage");
|
||||
$messageQuery->bindValue(':userid', $userid, PDO::PARAM_STR);
|
||||
$messageQuery->bindValue(':offset', $offset, PDO::PARAM_INT);
|
||||
$messageQuery->bindValue(':itemsPerPage', $itemsPerPage, PDO::PARAM_INT);
|
||||
$messageQuery->execute();
|
||||
$message_array = $messageQuery->fetchAll();
|
||||
|
||||
@@ -73,7 +75,7 @@ if (isset($_GET['userid']) && isset($_GET['account_id'])) {
|
||||
|
||||
if (!empty($message_array)) {
|
||||
foreach ($message_array as $value) {
|
||||
$value["servericon"] = htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8', false);
|
||||
$value["servericon"] = htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8', false);
|
||||
if(!(empty($value['fromuserid']))){
|
||||
if(!($value['fromuserid'] == "uwuzu-fromsys")){
|
||||
$userQuery = $dbh->prepare("SELECT username,iconname FROM account WHERE userid = :userid");
|
||||
@@ -94,6 +96,8 @@ if (isset($_GET['userid']) && isset($_GET['account_id'])) {
|
||||
|
||||
$pdo = null;
|
||||
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noueuse"><p>取得に失敗しました。</p></div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noueuse"><p>取得に失敗しました。</p></div>';
|
||||
|
||||
+12
-128
@@ -1,123 +1,7 @@
|
||||
<?php
|
||||
function processMarkdownAndWrapEmptyLines($markdownText){
|
||||
|
||||
//\___________________[注意]__________________\
|
||||
// \____ここの順番を変えるとうまく動かなくなります___\
|
||||
// \______Markdownうまく動くところを探すべし______\
|
||||
|
||||
$markdownText = preg_replace('/\[\[buruburu (.+)\]\]/m', '<span class="buruburu">$1</span>', $markdownText);//ぶるぶる
|
||||
|
||||
$markdownText = preg_replace('/(^|[^`])`([^`\n]+)`($|[^`])/m', '$1<span class="inline">$2</span>$3', $markdownText);//Inline Code
|
||||
|
||||
$markdownText = preg_replace('/\*\*\*(.*?)\*\*\*/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
$markdownText = preg_replace('/\_\_\_(.*?)\_\_\_/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
|
||||
$markdownText = preg_replace('/\*\*(.*?)\*\*/', '<b>$1</b>', $markdownText);//太字
|
||||
$markdownText = preg_replace('/\_\_(.*?)\_\_/', '<b>$1</b>', $markdownText);//太字
|
||||
|
||||
$markdownText = preg_replace('/\*(.*?)\*/', '<i>$1</i>', $markdownText);//斜体
|
||||
$markdownText = preg_replace('/\_(.*?)\_/', '<i>$1</i>', $markdownText);//斜体
|
||||
|
||||
$markdownText = preg_replace('/\~\~(.*?)\~\~/m', '<s>$1</s>', $markdownText);//打ち消し線
|
||||
|
||||
$markdownText = preg_replace('/>>> (.*)/m', '<span class="quote">$1</span>', $markdownText);//>>> 引用
|
||||
|
||||
$markdownText = preg_replace('/\|\|(.*)\|\|/m', '<span class="blur">$1</span>', $markdownText);//黒塗り
|
||||
|
||||
// タイトル(#、##、###)をHTMLのhタグに変換
|
||||
$markdownText = preg_replace('/^# (.+)/m', '<h1>$1</h1>', $markdownText);
|
||||
$markdownText = preg_replace('/^## (.+)/m', '<h2>$1</h2>', $markdownText);
|
||||
$markdownText = preg_replace('/^### (.+)/m', '<h3>$1</h3>', $markdownText);
|
||||
|
||||
// 箇条書き(-)をHTMLのul/liタグに変換
|
||||
$markdownText = preg_replace('/^- (.+)/m', '<p>・ $1</p>', $markdownText);
|
||||
|
||||
// 空行の前に何もない行をHTMLのpタグに変換
|
||||
$markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1<p>$2</p>', $markdownText);
|
||||
|
||||
return $markdownText;
|
||||
}
|
||||
//Profile
|
||||
function replaceProfileEmojiImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
return $postTextWithImages;
|
||||
}
|
||||
function replaceEmojisWithImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
|
||||
// @username を検出してリンクに置き換える
|
||||
$usernamePattern = '/@(\w+)/';
|
||||
$postTextWithImagesAndUsernames = preg_replace_callback($usernamePattern, function($matches) {
|
||||
$username = $matches[1];
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$mentionsuserQuery = $dbh->prepare("SELECT username, userid FROM account WHERE userid = :userid");
|
||||
$mentionsuserQuery->bindValue(':userid', $username);
|
||||
$mentionsuserQuery->execute();
|
||||
$mentionsuserData = $mentionsuserQuery->fetch();
|
||||
|
||||
if(empty($mentionsuserData)){
|
||||
return "@$username";
|
||||
}else{
|
||||
return "<a class = 'mta' href='/@".htmlspecialchars($mentionsuserData["userid"], ENT_QUOTES, 'UTF-8', false)."'>@".replaceProfileEmojiImages(htmlspecialchars($mentionsuserData["username"], ENT_QUOTES, 'UTF-8', false))."</a>";
|
||||
}
|
||||
}, $postTextWithImages);
|
||||
|
||||
$hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9ー_]+)/u';
|
||||
$postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) {
|
||||
$hashtags = $matches[1];
|
||||
return "<a class='hashtags' href='/search?q=" . urlencode('#') . htmlspecialchars($hashtags, ENT_QUOTES, 'UTF-8', false) . "'>" . '#' . htmlspecialchars($hashtags, ENT_QUOTES, 'UTF-8', false) . "</a>";
|
||||
}, $postTextWithImagesAndUsernames);
|
||||
|
||||
return $postTextWithHashtags;
|
||||
}
|
||||
//関数呼び出し
|
||||
//- 文字装飾・URL変換など
|
||||
require('../function/function.php');
|
||||
|
||||
class MessageDisplay {
|
||||
private $value;
|
||||
@@ -135,11 +19,11 @@ class MessageDisplay {
|
||||
echo ' <div class="flebox">';
|
||||
|
||||
echo ' <div class="time">';
|
||||
$day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
$day = date("Ymd", strtotime(htmlentities($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
if ($day == date("Ymd")) {
|
||||
echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
echo date("今日 H:i", strtotime(htmlentities($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
} else {
|
||||
echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
echo date("Y年m月d日 H:i", strtotime(htmlentities($this->value['datetime'], ENT_QUOTES, 'UTF-8', false)));
|
||||
}
|
||||
echo ' </div>';
|
||||
|
||||
@@ -151,24 +35,24 @@ class MessageDisplay {
|
||||
echo ' <div class="icon">';
|
||||
if(($this->value['fromuserid'] == "uwuzu-fromsys")){
|
||||
if(!(empty($this->value["servericon"]))){
|
||||
echo ' <a href="/rule/serverabout"><img src="'.htmlspecialchars($this->value["servericon"], ENT_QUOTES, 'UTF-8', false).'"></a>';
|
||||
echo ' <a href="/rule/serverabout"><img src="'.htmlentities($this->value["servericon"], ENT_QUOTES, 'UTF-8', false).'"></a>';
|
||||
}else{
|
||||
echo ' <a href="/rule/serverabout"><img src="../img/uwuzuicon.png"></a>';
|
||||
}
|
||||
}else{
|
||||
echo ' <a href="/@'.htmlspecialchars($this->value['fromuserid'], ENT_QUOTES, 'UTF-8', false).'"><img src="' . htmlspecialchars($this->value['fromusericon'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <a href="/@'.htmlentities($this->value['fromuserid'], ENT_QUOTES, 'UTF-8', false).'"><img src="' . htmlentities($this->value['fromusericon'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
}
|
||||
echo ' </div>';
|
||||
if(($this->value['fromuserid'] == "uwuzu-fromsys")){
|
||||
echo ' <div class="username"><a href="/rule/serverabout">uwuzu</a></div>';
|
||||
}else{
|
||||
echo ' <div class="username"><a href="/@'.htmlspecialchars($this->value['fromuserid'], ENT_QUOTES, 'UTF-8', false).'">'.htmlspecialchars($this->value['fromusername'], ENT_QUOTES, 'UTF-8', false).'</a></div>';
|
||||
echo ' <div class="username"><a href="/@'.htmlentities($this->value['fromuserid'], ENT_QUOTES, 'UTF-8', false).'">'.replaceEmojisWithImages(htmlentities($this->value['fromusername'], ENT_QUOTES, 'UTF-8', false)).'</a></div>';
|
||||
}
|
||||
echo ' </div>';
|
||||
}
|
||||
echo ' <h3>' . replaceEmojisWithImages(htmlspecialchars($this->value['title'], ENT_QUOTES, 'UTF-8', false)) . '</h3>';
|
||||
echo ' <p>' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(nl2br(htmlspecialchars($this->value['msg'], ENT_QUOTES, 'UTF-8', false)))) . '</p>';
|
||||
echo ' <a href="' . htmlspecialchars($this->value['url'], ENT_QUOTES, 'UTF-8', false) . '">詳細をみる</a>';
|
||||
echo ' <h3>' . replaceEmojisWithImages(htmlentities($this->value['title'], ENT_QUOTES, 'UTF-8', false)) . '</h3>';
|
||||
echo ' <p>' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(nl2br(htmlentities($this->value['msg'], ENT_QUOTES, 'UTF-8', false)))) . '</p>';
|
||||
echo ' <a href="' . htmlentities($this->value['url'], ENT_QUOTES, 'UTF-8', false) . '">詳細をみる</a>';
|
||||
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
@@ -17,16 +17,16 @@ class UserdataDisplay {
|
||||
echo '<div class="ueuse">';
|
||||
|
||||
echo '<div class="headbox">';
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlspecialchars('../'.$this->value['headname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlentities('../'.$this->value['headname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="flebox">';
|
||||
echo ' <div class="user">';
|
||||
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlspecialchars('../'.$this->value['iconname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '">' . htmlspecialchars($this->value['username'], ENT_QUOTES, 'UTF-8', false) . '</a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlentities('../'.$this->value['iconname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <div class="u_name"><a href="/@' . htmlentities($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '">' . replaceEmojisWithImages(htmlentities($this->value['username'], ENT_QUOTES, 'UTF-8', false)) . '</a></div>';
|
||||
echo ' <div class="idbox">';
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '">@' . htmlspecialchars($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '</a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '">@' . htmlentities($this->value['userid'], ENT_QUOTES, 'UTF-8', false) . '</a>';
|
||||
echo ' </div>';
|
||||
if(!empty($this->value['sacinfo'])){
|
||||
if($this->value['sacinfo'] === "bot"){
|
||||
@@ -43,7 +43,7 @@ class UserdataDisplay {
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="profilebox">';
|
||||
echo ' <p>' .replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['profile'], ENT_QUOTES, 'UTF-8', false)))) . '</h1></h2></h3></font></center></p>';
|
||||
echo ' <p>' .replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlentities($this->value['profile'], ENT_QUOTES, 'UTF-8', false)))) . '</h1></h2></h3></font></center></p>';
|
||||
echo '</div>';
|
||||
|
||||
echo '</div>';
|
||||
|
||||
+32
-250
@@ -1,226 +1,8 @@
|
||||
|
||||
<?php
|
||||
function processMarkdownAndWrapEmptyLines($markdownText){
|
||||
|
||||
//\___________________[注意]__________________\
|
||||
// \____ここの順番を変えるとうまく動かなくなります___\
|
||||
// \______Markdownうまく動くところを探すべし______\
|
||||
|
||||
$markdownText = preg_replace('/\[\[buruburu (.+)\]\]/m', '<span class="buruburu">$1</span>', $markdownText);//ぶるぶる
|
||||
|
||||
$markdownText = preg_replace('/(^|[^`])`([^`\n]+)`($|[^`])/m', '$1<span class="inline">$2</span>$3', $markdownText);//Inline Code
|
||||
|
||||
/*$markdownText = preg_replace_callback('/^\[\[time (\d+)\]\]/m', function($matches) {
|
||||
$timestamp = $matches[1];
|
||||
return '<span class="unixtime">' . date("Y/m/d H:i:s", $timestamp) . '</span>';
|
||||
}, $markdownText);*/
|
||||
|
||||
$markdownText = preg_replace('/\*\*\*(.*?)\*\*\*/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
$markdownText = preg_replace('/\_\_\_(.*?)\_\_\_/', '<b><i>$1</i></b>', $markdownText);//太字&斜体の全部のせセット
|
||||
|
||||
$markdownText = preg_replace('/\*\*(.*?)\*\*/', '<b>$1</b>', $markdownText);//太字
|
||||
$markdownText = preg_replace('/\_\_(.*?)\_\_/', '<b>$1</b>', $markdownText);//太字
|
||||
|
||||
$markdownText = preg_replace('/\*(.*?)\*/', '<i>$1</i>', $markdownText);//斜体
|
||||
$markdownText = preg_replace('/\_(.*?)\_/', '<i>$1</i>', $markdownText);//斜体
|
||||
|
||||
$markdownText = preg_replace('/\~\~(.*?)\~\~/m', '<s>$1</s>', $markdownText);//打ち消し線
|
||||
|
||||
$markdownText = preg_replace('/>>> (.*)/m', '<span class="quote">$1</span>', $markdownText);//>>> 引用
|
||||
|
||||
$markdownText = preg_replace('/\|\|(.*)\|\|/m', '<span class="blur">$1</span>', $markdownText);//黒塗り
|
||||
|
||||
// タイトル(#、##、###)をHTMLのhタグに変換
|
||||
$markdownText = preg_replace('/^# (.+)/m', '<h1>$1</h1>', $markdownText);
|
||||
$markdownText = preg_replace('/^## (.+)/m', '<h2>$1</h2>', $markdownText);
|
||||
$markdownText = preg_replace('/^### (.+)/m', '<h3>$1</h3>', $markdownText);
|
||||
|
||||
// 箇条書き(-)をHTMLのul/liタグに変換
|
||||
$markdownText = preg_replace('/^- (.+)/m', '<p>・ $1</p>', $markdownText);
|
||||
|
||||
// 空行の前に何もない行をHTMLのpタグに変換
|
||||
$markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1<p>$2</p>', $markdownText);
|
||||
|
||||
return $markdownText;
|
||||
}
|
||||
//Profile
|
||||
function replaceProfileEmojiImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
return $postTextWithImages;
|
||||
}
|
||||
// ユーズ内の絵文字やhashtagを画像に置き換える
|
||||
function replaceEmojisWithImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
|
||||
// @username を検出してリンクに置き換える
|
||||
$usernamePattern = '/@(\w+)/';
|
||||
$postTextWithImagesAndUsernames = preg_replace_callback($usernamePattern, function($matches) {
|
||||
$username = $matches[1];
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$mentionsuserQuery = $dbh->prepare("SELECT username, userid FROM account WHERE userid = :userid");
|
||||
$mentionsuserQuery->bindValue(':userid', $username);
|
||||
$mentionsuserQuery->execute();
|
||||
$mentionsuserData = $mentionsuserQuery->fetch();
|
||||
|
||||
if(empty($mentionsuserData)){
|
||||
return "@$username";
|
||||
}else{
|
||||
return "<a class = 'mta' href='/@".htmlspecialchars($mentionsuserData["userid"], ENT_QUOTES, 'UTF-8', false)."'>@".replaceProfileEmojiImages(htmlspecialchars($mentionsuserData["username"], ENT_QUOTES, 'UTF-8', false))."</a>";
|
||||
}
|
||||
}, $postTextWithImages);
|
||||
|
||||
$hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9ー_]+)/u';
|
||||
$postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) {
|
||||
$hashtags = $matches[1];
|
||||
return "<a class='hashtags' href='/search?q=" . urlencode('#') . $hashtags . "'>" . '#' . $hashtags . "</a>";
|
||||
}, $postTextWithImagesAndUsernames);
|
||||
|
||||
return $postTextWithHashtags;
|
||||
}
|
||||
function replaceURLsWithLinks($postText) {
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if (!isset($parsedUrl['path'])) {
|
||||
$parsedUrl['path'] = '';
|
||||
}
|
||||
if (!isset($parsedUrl['query'])) {
|
||||
$parsedUrl['query'] = '';
|
||||
}
|
||||
|
||||
$nochk_domain = $parsedUrl['host'].$parsedUrl['path'].$parsedUrl['query'];
|
||||
|
||||
if(strlen($nochk_domain) > 47){
|
||||
$domain = mb_substr($nochk_domain, 0, 48, "UTF-8")."...";
|
||||
}else{
|
||||
$domain = $nochk_domain;
|
||||
}
|
||||
|
||||
// 不要な文字を削除してaタグを生成
|
||||
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
|
||||
$link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
|
||||
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
|
||||
}
|
||||
|
||||
return $postText;
|
||||
}
|
||||
function YouTube_and_nicovideo_Links($postText) {
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
if(empty($url)){
|
||||
$postText = "";
|
||||
}
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if($parsedUrl['host'] == "youtube.com" || $parsedUrl['host'] == "youtu.be" || $parsedUrl['host'] == "www.youtube.com" || $parsedUrl['host'] == "m.youtube.com"){
|
||||
|
||||
if (isset($parsedUrl['query'])) {
|
||||
if(false !== strpos($parsedUrl['query'], 'v=')) {
|
||||
$video_id = str_replace('v=', '', htmlspecialchars($parsedUrl['query'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = str_replace('/', '', htmlspecialchars($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}
|
||||
}elseif(isset($parsedUrl['path'])){
|
||||
$video_id = str_replace('/', '', htmlspecialchars($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = "";
|
||||
$iframe = false;
|
||||
}
|
||||
// 不要な文字を削除してaタグを生成
|
||||
if($iframe == true){
|
||||
$link = '<iframe src="https://www.youtube-nocookie.com/embed/'.$video_id.'" rel="0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
|
||||
}else{
|
||||
$link = "";
|
||||
}
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = $link;
|
||||
}elseif($parsedUrl['host'] == "nicovideo.jp" || $parsedUrl['host'] == "www.nicovideo.jp"){
|
||||
|
||||
if(isset($parsedUrl['path'])){
|
||||
$video_id = str_replace('/watch/', '', htmlspecialchars($parsedUrl['path'], ENT_QUOTES, 'UTF-8', false));
|
||||
$iframe = true;
|
||||
}else{
|
||||
$video_id = "";
|
||||
$iframe = false;
|
||||
}
|
||||
// 不要な文字を削除してaタグを生成
|
||||
if($iframe == true){
|
||||
$link = '<iframe src="https://embed.nicovideo.jp/watch/'.$video_id.'"</iframe>';
|
||||
}else{
|
||||
$link = "";
|
||||
}
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = $link;
|
||||
}else{
|
||||
$postText = "";
|
||||
}
|
||||
}
|
||||
|
||||
return $postText;
|
||||
}
|
||||
//関数呼び出し
|
||||
//- 文字装飾・URL変換など
|
||||
require('../function/function.php');
|
||||
|
||||
class MessageDisplay {
|
||||
private $value;
|
||||
@@ -242,10 +24,10 @@ class MessageDisplay {
|
||||
}
|
||||
echo ' <div class="flebox">';
|
||||
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlspecialchars('../'.$this->value['iconname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><div class="u_name">' . replaceProfileEmojiImages(htmlspecialchars($this->value['username'], ENT_QUOTES, 'UTF-8', false)) . '</div></a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><img src="'. htmlentities('../'.$this->value['iconname'], ENT_QUOTES, 'UTF-8', false) . '"></a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><div class="u_name">' . replaceProfileEmojiImages(htmlentities($this->value['username'], ENT_QUOTES, 'UTF-8', false)) . '</div></a>';
|
||||
echo ' <div class="idbox">';
|
||||
echo ' <a href="/@' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '">@' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '</a>';
|
||||
echo ' <a href="/@' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '">@' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '</a>';
|
||||
echo ' </div>';
|
||||
if(!empty($this->value['sacinfo'])){
|
||||
if($this->value['sacinfo'] === "bot"){
|
||||
@@ -260,7 +42,7 @@ class MessageDisplay {
|
||||
}
|
||||
|
||||
echo ' <div class="time">';
|
||||
$datetime = strtotime(htmlspecialchars($this->value['datetime'], ENT_QUOTES, 'UTF-8', false));
|
||||
$datetime = strtotime(htmlentities($this->value['datetime'], ENT_QUOTES, 'UTF-8', false));
|
||||
$today = strtotime(date("Y-m-d"));
|
||||
$tomorrow = date('Y-m-d', strtotime('+1 day'));
|
||||
if (date("md", $datetime) == "0101") {
|
||||
@@ -283,45 +65,45 @@ class MessageDisplay {
|
||||
echo ' </div>';
|
||||
|
||||
if($this->value['nsfw'] === "true"){
|
||||
echo ' <div class="nsfw" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '">';
|
||||
echo ' <div class="nsfw" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '">';
|
||||
echo ' <p>NSFW指定がされている投稿です!<br>職場や公共の場での表示には適さない場合があります。<br>表示ボタンを押すと表示されます。</p>';
|
||||
echo ' <div class="btnzone">';
|
||||
echo ' <input type="button" id="nsfw_view" class="mini_irobtn" value="表示">';
|
||||
echo ' </div>';
|
||||
echo ' </div>';
|
||||
echo ' <div class="nsfw_main" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '">';
|
||||
echo ' <div class="nsfw_main" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '">';
|
||||
echo ' <div class="block">';
|
||||
}
|
||||
echo ' <p>' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['ueuse'], ENT_QUOTES, 'UTF-8', false))))) . '</h1></h2></h3></font></center></p>';
|
||||
echo ' <p>' . processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlentities($this->value['ueuse'], ENT_QUOTES, 'UTF-8', false))))) . '</h1></h2></h3></font></center></p>';
|
||||
|
||||
if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') {
|
||||
echo ' <div class="photo4">';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" alt="画像3" title="画像3" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo4'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo4'], ENT_QUOTES, 'UTF-8', false).'" alt="画像4" title="画像4" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" data-id="1" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" data-id="2" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" alt="画像3" title="画像3" data-id="3" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo4'], ENT_QUOTES, 'UTF-8', false).'" alt="画像4" title="画像4" data-id="4" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' </div>';
|
||||
} elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') {
|
||||
echo ' <div class="photo3">';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" data-id="1" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" data-id="2" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <div class="photo3_btm">';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" alt="画像3" title="画像3" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo3'], ENT_QUOTES, 'UTF-8', false).'" alt="画像3" title="画像3" data-id="3" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' </div>';
|
||||
echo ' </div>';
|
||||
} elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') {
|
||||
echo ' <div class="photo2">';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" data-id="1" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo2'], ENT_QUOTES, 'UTF-8', false).'" alt="画像2" title="画像2" data-id="2" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' </div>';
|
||||
} elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') {
|
||||
echo ' <div class="photo1">';
|
||||
echo ' <a href="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" target=”_blank”><img src="'.htmlspecialchars($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' <a><img src="'.htmlentities($this->value['photo1'], ENT_QUOTES, 'UTF-8', false).'" alt="画像1" title="画像1" data-id="1" id="ueuse_image" onerror="this.onerror=null;this.src=\'../img/sysimage/errorimage/image_404.png\'"></a>';
|
||||
echo ' </div>';
|
||||
}
|
||||
if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') {
|
||||
echo ' <div class="video1">';
|
||||
echo ' <video controls src="' . htmlspecialchars($this->value['video1'], ENT_QUOTES, 'UTF-8', false) . '"></video>';
|
||||
echo ' <video controls src="' . htmlentities($this->value['video1'], ENT_QUOTES, 'UTF-8', false) . '"></video>';
|
||||
echo ' </div>';
|
||||
}elseif (!empty(YouTube_and_nicovideo_Links($this->value['ueuse']))) {
|
||||
echo ' <div class="youtube_and_nicovideo_player">';
|
||||
@@ -332,10 +114,10 @@ class MessageDisplay {
|
||||
if(!($this->value['abi'] == "none")){
|
||||
echo '<div class="abi">';
|
||||
echo ' <div class="back">';
|
||||
echo '<h1>' . replaceProfileEmojiImages(htmlspecialchars($this->value['username'], ENT_QUOTES, 'UTF-8', false)) . 'さんが追記しました</h1>';
|
||||
echo '<h1>' . replaceProfileEmojiImages(htmlentities($this->value['username'], ENT_QUOTES, 'UTF-8', false)) . 'さんが追記しました</h1>';
|
||||
echo ' </div>';
|
||||
echo '<p>'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlspecialchars($this->value['abi'], ENT_QUOTES, 'UTF-8', false))))) . '</p>';
|
||||
echo '<div class="h3s">追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate'], ENT_QUOTES, 'UTF-8', false))) . '</div>';
|
||||
echo '<p>'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlentities($this->value['abi'], ENT_QUOTES, 'UTF-8', false))))) . '</p>';
|
||||
echo '<div class="h3s">追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlentities($this->value['abidate'], ENT_QUOTES, 'UTF-8', false))) . '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
if($this->value['nsfw'] === "true"){
|
||||
@@ -347,27 +129,27 @@ class MessageDisplay {
|
||||
echo '<div class="favbox">';
|
||||
$favoriteList = explode(',', $this->value['favorite']);
|
||||
if (in_array($this->userid, $favoriteList)) {
|
||||
echo '<button class="favbtn favbtn_after" id="favbtn" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid2="' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/favorite_2.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
|
||||
echo '<button class="favbtn favbtn_after" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid2="' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/favorite_2.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
|
||||
}else{
|
||||
echo '<button class="favbtn" id="favbtn" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid2="' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/favorite_1.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
|
||||
echo '<button class="favbtn" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid2="' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/favorite_1.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
|
||||
}
|
||||
echo '<a href="/!'.htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false). '~' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '" class="tuduki"><svg><use xlink:href="../img/sysimage/reply_1.svg#reply_1"></use></svg>'.htmlspecialchars($this->value['reply_count'], ENT_QUOTES, 'UTF-8', false).'</a>';
|
||||
echo '<button name="share" id="share" class="share" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/share_1.svg#share_1"></use></svg></button>';
|
||||
echo '<a href="/!'.htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false). '" class="tuduki"><svg><use xlink:href="../img/sysimage/reply_1.svg#reply_1"></use></svg>'.htmlentities($this->value['reply_count'], ENT_QUOTES, 'UTF-8', false).'</a>';
|
||||
echo '<button name="share" id="share" class="share" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/share_1.svg#share_1"></use></svg></button>';
|
||||
|
||||
$bookmarkList = explode(',', $this->value['bookmark']);
|
||||
if (in_array($this->value['uniqid'], $bookmarkList)) {
|
||||
echo '<button name="bookmark" id="bookmark" class="bookmark bookmark_after" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/bookmark_1.svg#bookmark_1"></use></svg></button>';
|
||||
echo '<button name="bookmark" id="bookmark" class="bookmark bookmark_after" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/bookmark_1.svg#bookmark_1"></use></svg></button>';
|
||||
}else{
|
||||
echo '<button name="bookmark" id="bookmark" class="bookmark" data-uniqid="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlspecialchars($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/bookmark_1.svg#bookmark_1"></use></svg></button>';
|
||||
echo '<button name="bookmark" id="bookmark" class="bookmark" data-uniqid="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" data-userid="' . htmlentities($this->value['account'], ENT_QUOTES, 'UTF-8', false) . '"><svg><use xlink:href="../img/sysimage/bookmark_1.svg#bookmark_1"></use></svg></button>';
|
||||
}
|
||||
|
||||
if($this->value['account'] === $this->userid){
|
||||
if(!($this->value['role'] === "ice")){
|
||||
if($this->value['abi'] === "none"){
|
||||
echo '<button name="addabi" id="addabi" data-uniqid2="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" class="addabi"><svg><use xlink:href="../img/sysimage/addabi_1.svg#addabi_1"></use></svg></button>';
|
||||
echo '<button name="addabi" id="addabi" data-uniqid2="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" class="addabi"><svg><use xlink:href="../img/sysimage/addabi_1.svg#addabi_1"></use></svg></button>';
|
||||
}
|
||||
}
|
||||
echo '<input type="submit" name="delueuse" id="uniqid2" data-uniqid2="' . htmlspecialchars($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" class="delbtn" value="削除">';
|
||||
echo '<input type="submit" name="delueuse" id="uniqid2" data-uniqid2="' . htmlentities($this->value['uniqid'], ENT_QUOTES, 'UTF-8', false) . '" class="delbtn" value="削除">';
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
@@ -9,7 +9,7 @@ function decode_yajirushi($postText){
|
||||
return $postText;
|
||||
}
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
+96
-35
@@ -181,41 +181,11 @@ $notiData = $notiQuery->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
$notificationcount = $notiData['notification_count'];
|
||||
|
||||
if( !empty($pdo) ) {
|
||||
|
||||
// データベース接続の設定
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $userid);
|
||||
$userQuery->execute();
|
||||
$userData = $userQuery->fetch();
|
||||
|
||||
$role = $userData["role"];
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
|
||||
$rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, headname, role, datetime FROM account WHERE userid = :userid");
|
||||
|
||||
$rerole->bindValue(':userid', $userid);
|
||||
// SQL実行
|
||||
$rerole->execute();
|
||||
|
||||
$userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( !empty($_POST['btn_submit']) ) {
|
||||
//$level = $_POST['notice_level'];
|
||||
$title = $_POST['title'];
|
||||
$note = $_POST['note'];
|
||||
$title = htmlentities($_POST['title'], ENT_QUOTES, 'UTF-8', false);
|
||||
$note = htmlentities($_POST['note'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
// IDの入力チェック
|
||||
if( empty($title) ) {
|
||||
@@ -245,6 +215,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
|
||||
if( empty($error_message) ) {
|
||||
|
||||
$uniqid = createUniqId();
|
||||
|
||||
// 書き込み日時を取得
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
|
||||
@@ -254,11 +226,12 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
try {
|
||||
|
||||
// SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notice (title,note,account,datetime) VALUES (:title,:note,:account,:datetime)");
|
||||
$stmt = $pdo->prepare("INSERT INTO notice (uniqid,title,note,account,datetime) VALUES (:uniqid,:title,:note,:account,:datetime)");
|
||||
|
||||
|
||||
// 値をセット
|
||||
//$stmt->bindParam( ':level', $notice_level, PDO::PARAM_STR);
|
||||
$stmt->bindParam( ':uniqid', $uniqid, PDO::PARAM_STR);
|
||||
$stmt->bindParam( ':title', $title, PDO::PARAM_STR);
|
||||
$stmt->bindParam( ':note', $note, PDO::PARAM_STR);
|
||||
|
||||
@@ -294,10 +267,58 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
|
||||
}
|
||||
|
||||
if( !empty($_POST['note_del']) ) {
|
||||
$note_id = htmlentities($_POST['note_id']);
|
||||
|
||||
if (!empty($pdo)) {
|
||||
|
||||
$query = $pdo->prepare('SELECT * FROM notice WHERE uniqid = :uniqid limit 1');
|
||||
$query->execute(array(':uniqid' => $note_id));
|
||||
$result = $query->fetch();
|
||||
if($result == 0){
|
||||
$error_message[] = "削除できないお知らせです。";
|
||||
}
|
||||
|
||||
if(empty($error_message)){
|
||||
|
||||
try{
|
||||
// 通知削除クエリを実行
|
||||
$deleteQuery = $pdo->prepare("DELETE FROM notice WHERE uniqid = :uniqid");
|
||||
$deleteQuery->bindValue(':uniqid', $note_id, PDO::PARAM_STR);
|
||||
$res = $deleteQuery->execute();
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
// エラーが発生した時はロールバック
|
||||
$pdo->rollBack();
|
||||
}
|
||||
|
||||
if( $res ) {
|
||||
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
header("Location:".$url."");
|
||||
exit;
|
||||
} else {
|
||||
$error_message[] = "お知らせの削除ができませんでした。(NOTICE_DELETE_DAME)";
|
||||
}
|
||||
|
||||
$stmt = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($pdo)) {
|
||||
$sql = "SELECT * FROM notice ORDER BY datetime DESC";
|
||||
$allnotice = $pdo->query($sql);
|
||||
|
||||
while ($row = $allnotice->fetch(PDO::FETCH_ASSOC)) {
|
||||
|
||||
$Notices[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
require('../logout/logout.php');
|
||||
|
||||
|
||||
// データベースの接続を閉じる
|
||||
$pdo = null;
|
||||
|
||||
@@ -310,7 +331,7 @@ $pdo = null;
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>お知らせ配信 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
@@ -367,7 +388,47 @@ $pdo = null;
|
||||
|
||||
</form>
|
||||
|
||||
<div class="formarea">
|
||||
<?php if(!(empty($Notices))){?>
|
||||
<?php foreach ($Notices as $value) {?>
|
||||
<div class="server_code">
|
||||
<details>
|
||||
<summary><?php echo htmlentities($value["title"]);?></summary>
|
||||
<hr>
|
||||
<div class="p2">本文</div>
|
||||
<p><?php echo htmlentities($value["note"]);?></p>
|
||||
<hr>
|
||||
<div class="p2">配信日時</div>
|
||||
<p><?php echo date("Y年m月d日 H:i", strtotime(htmlentities($value["datetime"])));?></p>
|
||||
<div class="p2">ID</div>
|
||||
<?php if(!(empty($value["uniqid"]))){?>
|
||||
<p><?php echo htmlentities($value["uniqid"]);?></p>
|
||||
<?php }else{?>
|
||||
<p>IDはありません。</p>
|
||||
<?php }?>
|
||||
<hr>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
<?php if(!(empty($value["uniqid"]))){?>
|
||||
<div class="delbox">
|
||||
<p>削除ボタンを押すとこのお知らせは削除されます。</p>
|
||||
<input type="text" name="note_id" id="note_id" value="<?php echo htmlentities($value["uniqid"]);?>" style="display:none;" >
|
||||
<input type="submit" name="note_del" class="delbtn" value="削除">
|
||||
</div>
|
||||
<?php }else{?>
|
||||
<div class="delbox">
|
||||
<p>このお知らせは削除できません。</p>
|
||||
</div>
|
||||
<?php }?>
|
||||
</form>
|
||||
</details>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php }?>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
|
||||
+12
-33
@@ -179,41 +179,19 @@ $notiData = $notiQuery->fetch(PDO::FETCH_ASSOC);
|
||||
$notificationcount = $notiData['notification_count'];
|
||||
|
||||
//------------------通知--------------
|
||||
function replaceURLsWithLinks_forNotice($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if (!isset($parsedUrl['path'])) {
|
||||
$parsedUrl['path'] = '';
|
||||
}
|
||||
if (!isset($parsedUrl['query'])) {
|
||||
$parsedUrl['query'] = '';
|
||||
}
|
||||
|
||||
$nochk_domain = $parsedUrl['host'].$parsedUrl['path'].$parsedUrl['query'];
|
||||
|
||||
if(strlen($nochk_domain) > 47){
|
||||
$domain = mb_substr($nochk_domain, 0, 48, "UTF-8")."...";
|
||||
function replaceURLsWithLinks_forNotice($postText, $maxLength = 48) {
|
||||
$pattern = '/(https:\/\/[\w!?\/+\-_~;.,*&@#$%()+|https:\/\/[ぁ-んァ-ヶ一-龠々\w\-\/?=&%.]+)/';
|
||||
$convertedText = preg_replace_callback($pattern, function($matches) use ($maxLength) {
|
||||
$link = $matches[0];
|
||||
if (mb_strlen($link) > $maxLength) {
|
||||
$truncatedLink = mb_substr($link, 0, $maxLength).'…';
|
||||
return '<a href="'.$link.'">'.$truncatedLink.'</a>';
|
||||
} else {
|
||||
$domain = $nochk_domain;
|
||||
return '<a href="'.$link.'">'.$link.'</a>';
|
||||
}
|
||||
}, $postText);
|
||||
|
||||
// 不要な文字を削除してaタグを生成
|
||||
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
|
||||
$link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
|
||||
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
|
||||
}
|
||||
|
||||
return $postText;
|
||||
return $convertedText;
|
||||
}
|
||||
|
||||
$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC";
|
||||
@@ -237,7 +215,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -284,6 +262,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
@@ -233,6 +233,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
+16
-15
@@ -402,7 +402,7 @@ if( !empty($_POST['session_submit']) ) {
|
||||
// すべての出力を終了
|
||||
exit;
|
||||
} else {
|
||||
$error_message[] = 'セッションの終了に失敗しました。(END_OF_SESSION_DAME)';
|
||||
$error_message[] = 'セッショントークンの再生成に失敗しました。(END_OF_SESSION_DAME)';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -439,7 +439,7 @@ if( !empty($_POST['token_submit']) ) {
|
||||
header('Location: ' . $url, true, 303);
|
||||
exit;
|
||||
} else {
|
||||
$error_message[] = 'トークンの発行に失敗しました。(CREATE_TOKEN_DAME)';
|
||||
$error_message[] = 'アクセストークンの発行に失敗しました。(CREATE_TOKEN_DAME)';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -473,7 +473,7 @@ if( !empty($_POST['token_off_submit']) ) {
|
||||
header("Location:".$url."");
|
||||
exit;
|
||||
} else {
|
||||
$error_message[] = 'トークンの削除に失敗しました。(TOKEN_DELETE_DAME)';
|
||||
$error_message[] = 'アクセストークンの削除に失敗しました。(TOKEN_DELETE_DAME)';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -491,10 +491,10 @@ require('../logout/logout.php');
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>その他の項目 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>その他の項目 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -511,9 +511,9 @@ require('../logout/logout.php');
|
||||
<?php endif; ?>
|
||||
<form class="formarea" method="post">
|
||||
|
||||
<h1>セッション終了</h1>
|
||||
<p>下のセッションを終了ボタンを押すと全てのログイン中のデバイスからログアウトされます。<br>再度uwuzu使用するにはログインが必須になります。</p>
|
||||
<input type="submit" class = "irobutton" name="session_submit" value="セッションを終了">
|
||||
<h1>セッショントークンの再生成</h1>
|
||||
<p>下のセッショントークン再生成ボタンを押すと全てのログイン中のデバイスからログアウトされます。<br>再度uwuzu使用するにはログインが必須になります。</p>
|
||||
<input type="submit" class = "irobutton" name="session_submit" value="セッショントークン再生成">
|
||||
|
||||
<hr>
|
||||
<h1>アカウント削除</h1>
|
||||
@@ -532,29 +532,29 @@ require('../logout/logout.php');
|
||||
<p>APIの簡単な使用法です。</p>
|
||||
<hr>
|
||||
<li>サーバー情報取得API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/serverinfo-api</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/serverinfo-api</div>
|
||||
<p>これによりサーバーの各種情報を取得できます。</p>
|
||||
<hr>
|
||||
<li>ユーザー情報取得API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/userdata-api?userid=[ユーザーID]</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=getuser_from_userid&userid=[ユーザーID]</div>
|
||||
<p>これによりユーザーのユーザーネーム(user_name)、プロフィール(profile)、登録日時(registered_date)、フォローしている人一覧(follow)、フォロワー一覧(follower)、フォロー・フォロワー数(follow_cnt,follower_cnt)が取得できます。</p>
|
||||
<hr>
|
||||
<li>単独投稿取得API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/ueuse-api?ueuseid=[投稿の詳細ページのリンクより投稿のID(!より後、~より手前の文字列)]</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=getueuse&ueuseid=[投稿の詳細ページのリンクより投稿のID(!より後、~より手前の文字列)]</div>
|
||||
<p>これにより投稿内容(ueuse)と、ユーザーネーム(user_name)、ユーザーID(userid)、投稿ID(uniqid)、写真・動画URL(photo1,photo2,video1)、いいねした人一覧(favorite)、いいね数(favorite_cnt)、投稿日時(datetime)、追記内容(abi)、追記日時(abidatetime)が取得できます。</p>
|
||||
<hr>
|
||||
<li>ローカルタイムライン投稿取得API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/ltl-api?limit=[取得件数]&page=[ページ切り替え]</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=getltl&limit=[取得件数]&page=[ページ切り替え]</div>
|
||||
<p>これにより投稿内容(ueuse)と、ユーザーネーム(user_name)、ユーザーID(userid)、投稿ID(uniqid)、写真・動画URL(photo1,photo2,video1)、いいねした人一覧(favorite)、いいね数(favorite_cnt)、投稿日時(datetime)、追記内容(abi)、追記日時(abidatetime)が取得できます。<br>page=は指定しなくても動作します。(https://[ドメイン名(uwuzu.netなど)]/api/ltl-api?limit=[取得件数])</p>
|
||||
<hr>
|
||||
<li>投稿API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=post&ueuse=[投稿の内容]</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=post&ueuse=[投稿の内容]</div>
|
||||
<hr>
|
||||
<li>アクセストークンからユーザー情報取得API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=getuser</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=getuser</div>
|
||||
<hr>
|
||||
<li>返信API</li>
|
||||
<p>https://<?php echo htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=reply&uniqid=[返信先のuniqid]&ueuse=[返信の内容]</p>
|
||||
<div class="p2">https://<?php echo htmlentities($domain, ENT_QUOTES, 'UTF-8');?>/api/bot-api?token=[アクセストークン]&type=reply&uniqid=[返信先のuniqid]&ueuse=[返信の内容]</div>
|
||||
<hr>
|
||||
<?php
|
||||
if(empty($userData['token'])){
|
||||
@@ -591,6 +591,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -181,6 +181,7 @@ require('../logout/logout.php');
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
@@ -225,6 +226,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -10,6 +10,7 @@ $serversettings = parse_ini_file($serversettings_file, true);
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
|
||||
@@ -10,6 +10,7 @@ $serversettings = parse_ini_file($serversettings_file, true);
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
|
||||
+46
-9
@@ -7,6 +7,8 @@ $serversettings = parse_ini_file($serversettings_file, true);
|
||||
require('../db.php');
|
||||
//hCaptcha--------------------------------------------
|
||||
require('../settings_admin/hCaptcha_settings/hCaptcha_settings.php');
|
||||
//Cloudflare_Turnstile--------------------------------------------
|
||||
require('../settings_admin/CloudflareTurnstile_settings/CloudflareTurnstile_settings.php');
|
||||
//----------------------------------------------------
|
||||
|
||||
|
||||
@@ -57,14 +59,14 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$userid = $_POST['userid'];
|
||||
$mailadds = $_POST['mailadds'];
|
||||
|
||||
if(!empty(CAPTCHA && CAPTCHA == "true")){
|
||||
if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){
|
||||
if(isset($_POST['h-captcha-response'])){
|
||||
$hcaptcha_token = htmlentities($_POST['h-captcha-response']);
|
||||
if($hcaptcha_token){
|
||||
$captcha_data = [
|
||||
'secret' => htmlentities(SEAC_KEY),
|
||||
'secret' => htmlentities(H_CAPTCHA_SEAC_KEY),
|
||||
'response' => $hcaptcha_token,
|
||||
'sitekey' => htmlentities(SITE_KEY)
|
||||
'sitekey' => htmlentities(H_CAPTCHA_SITE_KEY)
|
||||
];
|
||||
$options = [
|
||||
'http' => [
|
||||
@@ -75,13 +77,39 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
];
|
||||
$hCaptcha_result = json_decode(file_get_contents('https://hcaptcha.com/siteverify', false, stream_context_create($options)),true);
|
||||
if(!($hCaptcha_result["success"] == true)){
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "あなたが人間である確認ができませんでした。(ERROR)";
|
||||
$error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){
|
||||
if(isset($_POST['cf-turnstile-response'])){
|
||||
$CF_Turnstile_token = htmlentities($_POST['cf-turnstile-response']);
|
||||
if($CF_Turnstile_token){
|
||||
$CF_Turnstile_data = [
|
||||
'secret' => htmlentities(CF_TURNSTILE_SEAC_KEY),
|
||||
'response' => $CF_Turnstile_token
|
||||
];
|
||||
$CF_Turnstile_options = [
|
||||
'http' => [
|
||||
'method'=> 'POST',
|
||||
'header'=> 'Content-Type: application/x-www-form-urlencoded',
|
||||
'content' => http_build_query($CF_Turnstile_data, '', '&')
|
||||
]
|
||||
];
|
||||
$CF_Turnstile_result = json_decode(file_get_contents('https://challenges.cloudflare.com/turnstile/v0/siteverify', false, stream_context_create($CF_Turnstile_options)),true);
|
||||
if(!($CF_Turnstile_result["success"] == true)){
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}else{
|
||||
$error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,9 +200,13 @@ $pdo = null;
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
||||
<?php }?>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -221,10 +253,15 @@ $pdo = null;
|
||||
<input id="mailadds" class="inbox" type="text" name="mailadds" value="<?php if( !empty($_SESSION['mailadds']) ){ echo htmlentities( $_SESSION['mailadds'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="p2">パスワードを復元するためには人間である確認が必要です!<br>下のチェックボックスにチェックしてください。</div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(SITE_KEY);?>"></div>
|
||||
<div class="h-captcha" data-sitekey="<?php echo htmlentities(H_CAPTCHA_SITE_KEY);?>"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<div class="captcha_zone">
|
||||
<div class="cf-turnstile" data-sitekey="<?php echo htmlentities(CF_TURNSTILE_SITE_KEY);?>" data-callback="javascriptCallback" data-language="ja"></div>
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
|
||||
@@ -234,6 +234,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<noscript>
|
||||
<div class="noscript_modal">
|
||||
<div class="inner">
|
||||
<div class="oops_icon">⚠️</div>
|
||||
<h1>JavaScriptを有効にしてください</h1>
|
||||
<p>uwuzuを開いてくださりありがとうございます。<br>
|
||||
申し訳ございませんがuwuzuの動作にはJavaScriptが必要です。<br>
|
||||
JavaScriptを有効にして再読み込みをしてください。</p>
|
||||
<p>JavaScriptを無効にしている状態での使用はできません。</p>
|
||||
<p>詳細は下記のリンクよりご確認ください。</p>
|
||||
|
||||
<a href="https://uwuzu.com/docs/uwuzusupport" class="infobtn">詳細</a>
|
||||
<div class="p2">JS_BLOCKED_ERROR</div>
|
||||
|
||||
<div class="center_text">
|
||||
<p><?php echo htmlentities($serversettings["serverinfo"]["server_name"]);?></p>
|
||||
<p><?php echo $domain;?></p>
|
||||
<p><?php echo htmlentities($uwuzuinfo[0]);?><br>Version <?php echo htmlentities($uwuzuinfo[1]);?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</noscript>
|
||||
+10
-32
@@ -19,41 +19,19 @@
|
||||
for( $i=0;$i<$cnt;$i++ ){
|
||||
$uwuzuinfo[$i] = ($softwaredata[$i]);
|
||||
}
|
||||
function replaceURLsWithLinks_forRightbox($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if (!isset($parsedUrl['path'])) {
|
||||
$parsedUrl['path'] = '';
|
||||
}
|
||||
if (!isset($parsedUrl['query'])) {
|
||||
$parsedUrl['query'] = '';
|
||||
}
|
||||
|
||||
$nochk_domain = $parsedUrl['host'].$parsedUrl['path'].$parsedUrl['query'];
|
||||
|
||||
if(strlen($nochk_domain) > 47){
|
||||
$domain = mb_substr($nochk_domain, 0, 48, "UTF-8")."...";
|
||||
function replaceURLsWithLinks_forRightbox($postText, $maxLength = 48) {
|
||||
$pattern = '/(https:\/\/[\w!?\/+\-_~;.,*&@#$%()+|https:\/\/[ぁ-んァ-ヶ一-龠々\w\-\/?=&%.]+)/';
|
||||
$convertedText = preg_replace_callback($pattern, function($matches) use ($maxLength) {
|
||||
$link = $matches[0];
|
||||
if (mb_strlen($link) > $maxLength) {
|
||||
$truncatedLink = mb_substr($link, 0, $maxLength).'…';
|
||||
return '<a href="'.$link.'">'.$truncatedLink.'</a>';
|
||||
} else {
|
||||
$domain = $nochk_domain;
|
||||
return '<a href="'.$link.'">'.$link.'</a>';
|
||||
}
|
||||
}, $postText);
|
||||
|
||||
// 不要な文字を削除してaタグを生成
|
||||
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
|
||||
$link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
|
||||
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
|
||||
}
|
||||
|
||||
return $postText;
|
||||
return $convertedText;
|
||||
}
|
||||
?>
|
||||
<div class="noticearea">
|
||||
|
||||
@@ -51,6 +51,7 @@ foreach ($sprivacypolicy as $privacypolicy) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -68,6 +68,7 @@ foreach ($srelease as $release) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -69,6 +69,7 @@ $count4 = $result4->num_rows;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -51,6 +51,7 @@ foreach ($sterms as $terms) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
@@ -60,6 +60,7 @@ foreach ($sterms as $terms) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
+11
-2
@@ -199,7 +199,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="../js/nsfw_event.js"></script>
|
||||
@@ -281,8 +281,15 @@ $pdo = null;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -420,6 +427,8 @@ $(document).ready(function() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var modal = document.getElementById('myDelModal');
|
||||
var deleteButton = document.getElementById('deleteButton');
|
||||
var cancelButton = document.getElementById('cancelButton'); // 追加
|
||||
@@ -490,7 +499,6 @@ $(document).ready(function() {
|
||||
abimodal.style.display = 'none';
|
||||
}, 150);
|
||||
});
|
||||
});
|
||||
|
||||
$('#AbiForm').off('submit').on('submit', function (event) {
|
||||
|
||||
@@ -532,6 +540,7 @@ $(document).ready(function() {
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.share', function (event) {
|
||||
|
||||
|
||||
+61
-36
@@ -55,14 +55,24 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
|
||||
- datetime(datetime) アカウント作成日時保存用
|
||||
- follow(mediumtext) アカウントがフォローしている人保存用
|
||||
- follower(mediumtext) アカウントがフォローされている人保存用
|
||||
- blocklist(mediumtext) ブロックしている人保存用
|
||||
- bookmark(mediumtext) ブックマーク保存用
|
||||
- blocklist(mediumtext) ブロックしている人保存用
|
||||
- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。
|
||||
- authcode(varchar(256)) 二段階認証用キー保存用
|
||||
- backupcode(varchar(256)) 二段階認証のバックアップコード保存用
|
||||
- sacinfo(varchar(256)) 特殊アカウント識別用
|
||||
- mail_settings(mediumtext) メールの送信設定保存用
|
||||
|
||||
### ads
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- uniqid(varchar(512)) 広告ID保存用
|
||||
- url(varchar(512)) 広告のクリック先URL保存用
|
||||
- image_url(varchar(512)) 広告に表示する画像URL保存用
|
||||
- memo(mediumtext) 広告にマウスオーバーしたときに表示されるメッセージ保存用
|
||||
- start_date(datetime) 広告配信開始日時保存用
|
||||
- limit_date(datetime) 広告配信終了日時保存用
|
||||
- datetime(datetime) 広告追加日時保存用
|
||||
|
||||
### emoji
|
||||
- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID
|
||||
- emojifile(varchar(512)) 絵文字ファイルパス保存用
|
||||
@@ -70,23 +80,51 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
|
||||
- emojiinfo(mediumtext) 絵文字についての説明保存用
|
||||
- emojidate(datetime) 絵文字登録日時保存用
|
||||
|
||||
### invitation
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- code(varchar(512)) 招待コード
|
||||
- used(varchar(25)) 使用済みかそうでないか
|
||||
- datetime(datetime) 招待コード仕様日時更新用
|
||||
|
||||
### notice
|
||||
- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID
|
||||
- uniqid(varchar(256)) ID保存用
|
||||
- title(varchar(1024)) お知らせのタイトル保存用
|
||||
- note(mediumtext) お知らせの内容保存用
|
||||
- account(varchar(500)) 編集者ID保存用
|
||||
- emojidate(datetime) お知らせ登録日時保存用
|
||||
|
||||
### notification
|
||||
- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID
|
||||
- fromuserid(varchar(512)) 通知元ID保存用
|
||||
- touserid(varchar(512)) 通知先ID保存用
|
||||
- title(varchar(1024)) 通知のタイトル
|
||||
- url(通知のクリック先URL保存用)
|
||||
- msg(mediumtext) 通知の内容
|
||||
- datetime(datetime) 通知日時
|
||||
- userchk(varchar(25)) 通知の既読確認
|
||||
|
||||
### report
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- uniqid(varchar(256)) 通報ID保存用
|
||||
- userid(varchar(500)) 通報先ユーザーID保存用
|
||||
- report_userid(varchar(500)) 通報元ユーザーID保存用
|
||||
- msg(mediumtext) サービス管理者宛メッセージ保存用
|
||||
- datetime(datetime) 通報日時保存用
|
||||
- admin_chk(varchar(25)) 解決済みかどうか確認用
|
||||
|
||||
### role
|
||||
- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID
|
||||
- rolename(varchar(512)) ロール表示名保存用
|
||||
- roleauth(varchar(256)) ロールの権限保存用
|
||||
- rolecolor(varchar(25)) ロールの色保存用
|
||||
- roleidname(varchar(512)) 「user」のようなロール指定用
|
||||
- roleeffect(varchar(256)) アニメーションロール機能のエフェクト指定用
|
||||
|
||||
### ueuse
|
||||
- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID
|
||||
- account(varchar(256)) 投稿者ID保存用
|
||||
- username(varchar(512)) 投稿時点での投稿者名保存用
|
||||
- account(varchar(512)) 投稿者ID保存用
|
||||
- uniqid(varchar(256)) 投稿ID保存用
|
||||
- rpuniqid(varchar(256)) リプライ先ID保存用
|
||||
- ueuse(mediumtext) 投稿内容保存用
|
||||
@@ -101,39 +139,6 @@ PHP 8では事前にGDを有効化しておいてください!(QRコードの
|
||||
- abidate(datetime) 追記日時保存用
|
||||
- nsfw(varchar(25)) NSFW指定有無保存用
|
||||
|
||||
### notification
|
||||
- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID
|
||||
- touserid(varchar(512)) 通知先ID保存用
|
||||
- title(varchar(1024)) 通知のタイトル
|
||||
- msg(mediumtext) 通知の内容
|
||||
- datetime(datetime) 通知日時
|
||||
- userchk(varchar(25)) 通知の既読確認
|
||||
|
||||
### invitation
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- code(varchar(512)) 招待コード
|
||||
- used(varchar(25)) 使用済みかそうでないか
|
||||
- datetime(datetime) 招待コード仕様日時更新用
|
||||
|
||||
### report
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- uniqid(varchar(256)) 通報ID保存用
|
||||
- userid(varchar(500)) 通報先ユーザーID保存用
|
||||
- report_userid(varchar(500)) 通報元ユーザーID保存用
|
||||
- msg(mediumtext) サービス管理者宛メッセージ保存用
|
||||
- datetime(datetime) 通報日時保存用
|
||||
- admin_chk(varchar(25)) 解決済みかどうか確認用
|
||||
|
||||
### ads
|
||||
- sysid(INT)(AUTO_INCREMENT) 追加されるとカウントされるシステム用ID
|
||||
- uniqid(varchar(512)) 広告ID保存用
|
||||
- url(varchar(512)) 広告のクリック先URL保存用
|
||||
- image_url(varchar(512)) 広告に表示する画像URL保存用
|
||||
- memo(mediumtext) 広告にマウスオーバーしたときに表示されるメッセージ保存用
|
||||
- start_date(datetime) 広告配信開始日時保存用
|
||||
- limit_date(datetime) 広告配信終了日時保存用
|
||||
- datetime(datetime) 広告追加日時保存用
|
||||
|
||||
すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、動作ディレクトリ内のdb.phpにDBのログイン情報を書き込んであとはApacheとphpとMy SQLを起動するだけ!
|
||||
起動したらまずDBのroleにphpmyadminから「user」ロールと「official」ロールと「ice」ロールを追加、権限は「user」と「official」と「ice」でOK。ロール名はとりあえず「一般ユーザー」とか適当でOK、ロールの色はHEXコード(#を除く)で000000のように指定。(この3つのロールがないとエラーが発生します。)
|
||||
そしたら普通にuwuzuにアクセスして自分のアカウントを登録。
|
||||
@@ -185,5 +190,25 @@ daichimarukanaと一緒に開発したいよ~って人は私のHPからメー
|
||||
UPULライセンスです!
|
||||
UPULライセンスに関しては同梱されているUPUL_License.txtを確認するか、uwuzu.comより詳細をご確認ください。
|
||||
|
||||
## 10. 利用させていただいているライブラリなどのライセンス
|
||||
|
||||
### Google Authenticator PHP class
|
||||
Copyright (c) 2012, Michael Kliewe All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
1.Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
なお、使わせていただいているコードは改変させていただいでおります。
|
||||
|
||||
### jQuery 3.7.1
|
||||
MITライセンスで提供されているようです。
|
||||
詳細は以下のリンク先をご覧ください。
|
||||
https://jquery.com/license/
|
||||
|
||||
### QRcode image PHP scripts
|
||||
Y.Swetake様よりお借りしています。
|
||||
|
||||
|
||||
## 更新情報
|
||||
編集者 : daichimarukana
|
||||
最終更新日 : 2023/02/24 19:02
|
||||
最終更新日 : 2024/03/26 22:32
|
||||
@@ -1,4 +1,4 @@
|
||||
uwuzu
|
||||
1.3.3
|
||||
2024/03/06
|
||||
1.3.4
|
||||
2024/03/26
|
||||
daichimarukana,putonfps
|
||||
@@ -1,6 +1,50 @@
|
||||
## リリースノートだぜぇぇぇぇぇぇい!!!!!!!
|
||||
ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...)
|
||||
|
||||
## Version 1.3.4 (new_Planet)
|
||||
リリース日:2024/03/26
|
||||
fix: サーバーアイコンが設定されていない状態でサポートされていない端末からアクセスするとアイコンが表示されない問題を修正しました。
|
||||
fix: 脆弱性を修正しました。
|
||||
fix: URLをハイパーリンクに変換する機能のバグを修正しました!
|
||||
fix: ActivityPub機能がオンの場合に他のActivityPub対応サーバーに認識してもらえない問題を修正しました。
|
||||
fix: YouTube埋め込みが再生できなくなるバグを修正しました。
|
||||
chg: 一部APIをbot-apiに統合しました。
|
||||
詳細はOtherタブをご覧ください。
|
||||
chg: 一部UIを変更しました!
|
||||
UIの変更が多いため、キャッシュの削除はお忘れなく!
|
||||
chg: jQueryをローカル環境から呼び出すようにしました。
|
||||
chg: パスワードの最大文字数を100文字から256文字に拡大しました。
|
||||
chg: セッションの終了機能をセッショントークン再生成に名称変更しました。
|
||||
エラーコードに変更はありません。
|
||||
chg: 絵文字ページを結構変えました
|
||||
new: ログイン画面でパスワードを表示できるようにしました!
|
||||
new: 絵文字ピッカーを実装しました!
|
||||
new: 管理用ページよりサーバー概要ページにてディスク空き容量の表示とロードアベレージ(Linux環境のみ)の表示をしました!
|
||||
new: 管理者アカウント登録時に必須モジュールが導入されているかを確認する仕組みを実装しました!
|
||||
デフォルトでインストールされているモジュールは確認されません。
|
||||
new: Markdownを強化し、"[[time (unixtime)]]"を使用できるようにしました!
|
||||
new: ユーズに添付されている画像ファイルを新しいタブで開かずにページ内で表示できるようにしました!
|
||||
画像を開いた状態で開かれた画像をクリックすると画像を閉じます。
|
||||
new: 絵文字の検索機能と無限スクロール機能を実装しました!
|
||||
new: JavaScriptがブロックされている際にエラーを表示するようにしました。
|
||||
new: 絵文字一覧ページよりクリックで絵文字のIDをコピーできるようにしました!
|
||||
new: アニメーションロール機能を実装しました!
|
||||
ロールにいくつかの種類のエフェクトをつけられるようになっています。
|
||||
これによりuwuzuのDB内、roleテーブルの構造に「roleeffect」(varchar(256))を追加する必要があります!
|
||||
アニメーションロールを使用する予定のないサーバーでもDBに追加しないとエラーを引き起こすため必ず追加してください!
|
||||
new: CloudflareTurnstileを設定して、利用できるようにしました!
|
||||
これによりhCaptchaに限らず、不正なアカウント登録を防げるようになります!
|
||||
また、hCaptchaとの二重確認も可能です。
|
||||
new: 管理者ページよりモデレーション、hCapthca、CloudflareTurnstileのところに実際のキャプチャのデモ表示をするようにしました!
|
||||
new: 記入中のユーズをCookieに一時保存し、投稿するまで、またはセッションを終了するまで保持します。
|
||||
Cookieは一字ずつ入力を検知して上書きしているので、コピペやカスタム絵文字を絵文字ピッカーから選択すると保存されない場合があります。
|
||||
多くのブラウザで最大4096バイト文まで保存が可能です。
|
||||
画像や動画の添付などに関しては保存されません。
|
||||
new: 管理者ページよりお知らせ配信ページにて過去お知らせの閲覧と削除を行えるようにしました!
|
||||
これによりuwuzuのDB内、noticeテーブルの構造に「uniqid」(varchar(256))を追加する必要があります!
|
||||
v1.3.4以前に作成されたお知らせに関してはIDの付与ができておりませんのでuwuzuからの削除はできません。
|
||||
uwuzu_database.sqlは更新済みです。
|
||||
|
||||
## Version 1.3.3 (new_Planet)
|
||||
リリース日:2024/03/06
|
||||
fix: 重大な脆弱性を修正しました。
|
||||
|
||||
@@ -266,7 +266,7 @@ $pdo = null;
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>設定 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
@@ -323,6 +323,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+24
-8
@@ -430,8 +430,8 @@ if( !empty($_POST['pass_submit']) ) {
|
||||
|
||||
}
|
||||
// 文字数を確認
|
||||
if( 100 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは100文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
if( 256 < mb_strlen($password, 'UTF-8') ) {
|
||||
$error_message[] = 'パスワードは256文字以内で入力してください。(PASSWORD_OVER_MAX_COUNT)';
|
||||
}
|
||||
|
||||
if( 4 > mb_strlen($password, 'UTF-8') ) {
|
||||
@@ -780,10 +780,10 @@ $pdo = null;
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>設定 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>設定 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -827,16 +827,16 @@ $pdo = null;
|
||||
<!--ユーザーネーム関係-->
|
||||
<div>
|
||||
<p>ユーザーネーム</p>
|
||||
<input id="username" placeholder="" class="inbox" type="text" name="username" value="<?php if( !empty($userdata['username']) ){ echo htmlspecialchars( $userdata['username'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="username" placeholder="" class="inbox" type="text" name="username" value="<?php if( !empty($userdata['username']) ){ echo htmlentities( $userdata['username'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
<div>
|
||||
<p>メールアドレス</p>
|
||||
<input id="mailadds" type="text" placeholder="" class="inbox" name="mailadds" value="<?php if( !empty($userdata['mailadds']) ){ echo htmlspecialchars( $userdata['mailadds'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mailadds" type="text" placeholder="" class="inbox" name="mailadds" value="<?php if( !empty($userdata['mailadds']) ){ echo htmlentities( $userdata['mailadds'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
<!--プロフィール関連-->
|
||||
<div>
|
||||
<p>プロフィール</p>
|
||||
<textarea id="profile" type="text" placeholder="" class="inbox" name="profile" value=""><?php if( !empty($userdata['profile']) ){ echo htmlspecialchars( $userdata['profile'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="profile" type="text" placeholder="" class="inbox" name="profile" value=""><?php if( !empty($userdata['profile']) ){ echo htmlentities( $userdata['profile'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
</div>
|
||||
|
||||
<?php if(!empty($userData['token'])){?>
|
||||
@@ -880,8 +880,14 @@ $pdo = null;
|
||||
</div>
|
||||
<div>
|
||||
<p>新しいパスワード</p>
|
||||
<input id="password" type="text" class="inbox" name="password" oncopy="return false" onpaste="return false" oncontextmenu="return false" style="-webkit-text-security:disc;" value="">
|
||||
<input id="password" type="password" class="inbox" name="password" oncopy="return false" onpaste="return false" oncontextmenu="return false" value="">
|
||||
<p>パスワードを表示する</p>
|
||||
<div class="switch_button">
|
||||
<input id="passview" class="switch_input" type='checkbox' name="passview" value=""/>
|
||||
<label for="passview" class="switch_label"></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<input type="submit" class = "irobutton" name="pass_submit" value="パスワード更新">
|
||||
|
||||
@@ -901,5 +907,15 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
$("#passview").click(function () {
|
||||
if ($("#passview").prop("checked") == true) {
|
||||
$('#password').get(0).type = 'text';
|
||||
} else {
|
||||
$('#password').get(0).type = 'password';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -183,7 +183,7 @@ require('../logout/logout.php');
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>設定 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
@@ -223,6 +223,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
<?php // Captchaの認証情報
|
||||
define( 'CF_TURNSTILE_ONOFF', '');// trueならCloudflareTurnstileが有効
|
||||
|
||||
define( 'CF_TURNSTILE_SITE_KEY', '');
|
||||
define( 'CF_TURNSTILE_SEAC_KEY', '');
|
||||
?>
|
||||
|
||||
@@ -306,13 +306,13 @@ if (!empty($pdo)) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>広告 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>広告 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -406,6 +406,7 @@ if (!empty($pdo)) {
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -360,10 +360,10 @@ $pdo = null;
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>絵文字登録 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>絵文字登録 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -388,6 +388,10 @@ $pdo = null;
|
||||
<h1>絵文字登録</h1>
|
||||
|
||||
<p>絵文字登録です。</p>
|
||||
<div class="p2">
|
||||
注意 : uwuzuで表示されるカスタム絵文字の最大の大きさは縦64pxです。<br>
|
||||
縦64px以上のカスタム絵文字を登録しても縮小されて表示されます。<br>
|
||||
また、縦64px以上の画像をアップロードすると、uwuzuの動作が遅くなる恐れがあるため、絵文字の画像サイズは縦64pxを推奨します。</div>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
@@ -399,12 +403,12 @@ $pdo = null;
|
||||
<!--ユーザーネーム関係-->
|
||||
<div>
|
||||
<p>EmojiID</p>
|
||||
<input id="username" onInput="checkForm(this)" placeholder="kusa" class="inbox" type="text" name="emojiname" value="<?php if( !empty($_SESSION['emojiname']) ){ echo htmlspecialchars( $_SESSION['emojiname'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="username" onInput="checkForm(this)" placeholder="kusa" class="inbox" type="text" name="emojiname" value="<?php if( !empty($_SESSION['emojiname']) ){ echo htmlentities( $_SESSION['emojiname'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>この絵文字について</p>
|
||||
<input id="username" placeholder="くさデス" class="inbox" type="text" name="emojiinfo" value="<?php if( !empty($_SESSION['emojiinfo']) ){ echo htmlspecialchars( $_SESSION['emojiinfo'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="username" placeholder="くさデス" class="inbox" type="text" name="emojiinfo" value="<?php if( !empty($_SESSION['emojiinfo']) ){ echo htmlentities( $_SESSION['emojiinfo'], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -420,6 +424,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
@@ -275,13 +275,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>招待コード発行所 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>招待コード発行所 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -302,7 +302,7 @@ require('../logout/logout.php');
|
||||
<div class="admin_right">
|
||||
<form class="formarea" enctype="multipart/form-data" method="post">
|
||||
<h1>招待コード発行所</h1>
|
||||
<?php if(htmlspecialchars($serversettings["serverinfo"]["server_invitation"], ENT_QUOTES, 'UTF-8') === "true"){?>
|
||||
<?php if(htmlentities($serversettings["serverinfo"]["server_invitation"], ENT_QUOTES, 'UTF-8') === "true"){?>
|
||||
<p>下の発行ボタンで新しくコードを発行できます!<br>なお、コードは一回限り有効です。</p>
|
||||
<div>
|
||||
<p>発行数</p>
|
||||
@@ -338,6 +338,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
@@ -262,13 +262,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>サーバーカスタマイズ - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>サーバーカスタマイズ - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -310,6 +310,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
<?php // Captchaの認証情報
|
||||
define( 'CAPTCHA', '');// trueならhCaptchaが有効
|
||||
define( 'H_CAPTCHA_ONOFF', '');// trueならhCaptchaが有効
|
||||
|
||||
define( 'SITE_KEY', '');
|
||||
define( 'SEAC_KEY', '');
|
||||
define( 'H_CAPTCHA_SITE_KEY', '');
|
||||
define( 'H_CAPTCHA_SEAC_KEY', '');
|
||||
?>
|
||||
|
||||
@@ -8,7 +8,7 @@ $serverstopfile = "../server/serverstop.txt";
|
||||
$htaccessfile = "../.htaccess";
|
||||
|
||||
if(!empty(file_get_contents($serverstopfile))){
|
||||
$serverstop = htmlspecialchars(file_get_contents($serverstopfile), ENT_QUOTES, 'UTF-8');
|
||||
$serverstop = htmlentities(file_get_contents($serverstopfile), ENT_QUOTES, 'UTF-8');
|
||||
}else{
|
||||
$serverstop = "";
|
||||
}
|
||||
@@ -284,13 +284,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>メンテナンス - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>メンテナンス - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -336,6 +336,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ function random_code($length = 8){
|
||||
require('../db.php');
|
||||
//hCaptcha--------------------------------------------
|
||||
require('hCaptcha_settings/hCaptcha_settings.php');
|
||||
//Cloudflare_Turnstile--------------------------------------------
|
||||
require('CloudflareTurnstile_settings/CloudflareTurnstile_settings.php');
|
||||
//----------------------------------------------------
|
||||
|
||||
// 変数の初期化
|
||||
@@ -237,12 +239,17 @@ if (!empty($pdo)) {
|
||||
if( !empty($_POST['btn_submit']) ) {
|
||||
|
||||
// 空白除去
|
||||
$banuserid = $_POST['banuserid'];
|
||||
$banuserid = htmlentities($_POST['banuserid'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$banurldomain = $_POST['banurldomain'];
|
||||
$banurldomain = htmlentities($_POST['banurldomain'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$max_textsize = $_POST['max_textsize'];
|
||||
$max_textsize = htmlentities($_POST['max_textsize'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
if((int)$max_textsize > 16777216){
|
||||
$error_message[] = "投稿の最大文字数の限界値を超えています。";
|
||||
}
|
||||
|
||||
if(empty($error_message)){
|
||||
//banuserid
|
||||
$file = fopen($banuseridfile, 'w');
|
||||
$data = $banuserid;
|
||||
@@ -262,17 +269,17 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
fclose($file);
|
||||
|
||||
|
||||
$Captcha_ONOFF = $_POST['hCaptcha_onoff'];
|
||||
$hCaptcha_ONOFF = htmlentities($_POST['hCaptcha_onoff'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$Captcha_sitekey = $_POST['hCaptcha_sitekey'];
|
||||
$Captcha_seackey = $_POST['hCaptcha_seackey'];
|
||||
$hCaptcha_sitekey = htmlentities($_POST['hCaptcha_sitekey'], ENT_QUOTES, 'UTF-8', false);
|
||||
$hCaptcha_seackey = htmlentities($_POST['hCaptcha_seackey'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$New_hCaptcha_Settings = "
|
||||
<?php // Captchaの認証情報
|
||||
define( 'CAPTCHA', '".htmlentities($Captcha_ONOFF)."');// trueならhCaptchaが有効
|
||||
define( 'H_CAPTCHA_ONOFF', '".htmlentities($hCaptcha_ONOFF, ENT_QUOTES, 'UTF-8', false)."');// trueならhCaptchaが有効
|
||||
|
||||
define( 'SITE_KEY', '".htmlentities($Captcha_sitekey)."');
|
||||
define( 'SEAC_KEY', '".htmlentities($Captcha_seackey)."');
|
||||
define( 'H_CAPTCHA_SITE_KEY', '".htmlentities($hCaptcha_sitekey, ENT_QUOTES, 'UTF-8', false)."');
|
||||
define( 'H_CAPTCHA_SEAC_KEY', '".htmlentities($hCaptcha_seackey, ENT_QUOTES, 'UTF-8', false)."');
|
||||
?>
|
||||
";
|
||||
|
||||
@@ -282,10 +289,33 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
fputs($file, $data);
|
||||
fclose($file);
|
||||
|
||||
//CF_Turnstile
|
||||
|
||||
$CF_Turnstile_ONOFF = htmlentities($_POST['CF_Turnstile_onoff'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$CF_Turnstile_sitekey = htmlentities($_POST['CF_Turnstile_sitekey'], ENT_QUOTES, 'UTF-8', false);
|
||||
$CF_Turnstile_seackey = htmlentities($_POST['CF_Turnstile_seackey'], ENT_QUOTES, 'UTF-8', false);
|
||||
|
||||
$New_CF_Turnstile_Settings = "
|
||||
<?php // Captchaの認証情報
|
||||
define( 'CF_TURNSTILE_ONOFF', '".htmlentities($CF_Turnstile_ONOFF, ENT_QUOTES, 'UTF-8', false)."');// trueならCloudflareTurnstileが有効
|
||||
|
||||
define( 'CF_TURNSTILE_SITE_KEY', '".htmlentities($CF_Turnstile_sitekey, ENT_QUOTES, 'UTF-8', false)."');
|
||||
define( 'CF_TURNSTILE_SEAC_KEY', '".htmlentities($CF_Turnstile_seackey, ENT_QUOTES, 'UTF-8', false)."');
|
||||
?>
|
||||
";
|
||||
|
||||
//設定上書き
|
||||
$file = fopen('CloudflareTurnstile_settings/CloudflareTurnstile_settings.php', 'w');
|
||||
$data = $New_CF_Turnstile_Settings;
|
||||
fputs($file, $data);
|
||||
fclose($file);
|
||||
|
||||
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
header("Location:".$url."");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
require('../logout/logout.php');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@@ -293,13 +323,15 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
|
||||
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>モデレーション - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>モデレーション - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -326,25 +358,25 @@ require('../logout/logout.php');
|
||||
<div class="p2">ここに入力してあるユーザーidは登録できません。<br>改行で禁止するユーザーidを指定できます。<br>すでにあるアカウントは影響を受けません。</div>
|
||||
<textarea id="banuserid" placeholder="uwuzu" class="inbox" type="text" name="banuserid"><?php $sinfo = explode("\r", $banuserid_info); foreach ($sinfo as $info) { echo $info; }?></textarea>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div>
|
||||
<p>投稿禁止URLドメイン</p>
|
||||
<div class="p2">ここに入力してあるドメインが含まれる投稿をしようとすると投稿が拒否されます。<br>なお、この機能はまだ確実な動作が保証されないためベータ版です。<br>位置情報特定サイトなどの対策等にご利用ください。</div>
|
||||
<textarea id="banurldomain" placeholder="" class="inbox" type="text" name="banurldomain"><?php $sinfo = explode("\r", $banurldomain_info); foreach ($sinfo as $info) { echo $info; }?></textarea>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div>
|
||||
<p>投稿の最大文字数</p>
|
||||
<div class="p2">ここで設定した文字数までの投稿が可能です。<br>なお、データベースより最大文字数を設定している場合そちらが優先されて使用されます。<br>1文字から16777216文字の間で設定が可能です。<br>※uwuzu version 1.3.0以前にuwuzuを導入された方はuwuzuのDB内のtext型を全てmediumtext型にしてください。</div>
|
||||
<input id="max_textsize" placeholder="1024" class="inbox" type="number" min="1" max="16777216" name="max_textsize" value="<?php if( !empty(file_get_contents($mojisizefile)) ){ echo htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="max_textsize" placeholder="1024" class="inbox" type="number" min="1" max="16777216" name="max_textsize" value="<?php if( !empty(file_get_contents($mojisizefile)) ){ echo htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div>
|
||||
<p>hCaptcha認証</p>
|
||||
<div class="p2">hCaptchaを使用し、ログイン時とアカウント登録時に認証をすることができます。<br>もし人間でないと判断された場合はアカウント登録やログイン、パスワード変更を受け付けません。</div>
|
||||
<p>hCaptchaのオンオフ</p>
|
||||
<div class="switch_button">
|
||||
<?php if(!empty(CAPTCHA && CAPTCHA == "true")){?>
|
||||
<?php if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){?>
|
||||
<input id="hCaptcha_onoff" class="switch_input" type='checkbox' name="hCaptcha_onoff" value="true" checked/>
|
||||
<label for="hCaptcha_onoff" class="switch_label"></label>
|
||||
<?php }else{?>
|
||||
@@ -355,9 +387,35 @@ require('../logout/logout.php');
|
||||
<div id="hcaptcha">
|
||||
<p>hCaptcha - 認証情報設定</p>
|
||||
<div class="p2">サイトキー</div>
|
||||
<input id="hcaptcha" placeholder="" class="inbox" type="text" name="hCaptcha_sitekey" value="<?php if( !empty(SITE_KEY) ){ echo htmlspecialchars(SITE_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="hcaptcha" placeholder="" class="inbox" type="text" name="hCaptcha_sitekey" value="<?php if( !empty(H_CAPTCHA_SITE_KEY) ){ echo htmlentities(H_CAPTCHA_SITE_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">シークレットキー</div>
|
||||
<input id="hcaptcha" placeholder="" class="inbox" type="text" name="hCaptcha_seackey" value="<?php if( !empty(SEAC_KEY) ){ echo htmlspecialchars(SEAC_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="hcaptcha" placeholder="" class="inbox" type="text" name="hCaptcha_seackey" value="<?php if( !empty(H_CAPTCHA_SEAC_KEY) ){ echo htmlentities(H_CAPTCHA_SEAC_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<p>デモ</p>
|
||||
<div class="h-captcha" data-sitekey="10000000-ffff-ffff-ffff-000000000001"></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
<p>CloudflareTurnstile認証</p>
|
||||
<div class="p2">CloudflareTurnstileを使用し、ログイン時とアカウント登録時に認証をすることができます。<br>もし人間でないと判断された場合はアカウント登録やログイン、パスワード変更を受け付けません。<br>hCaptchaなどと二重に設定することが可能です。</div>
|
||||
<p>CloudflareTurnstileのオンオフ</p>
|
||||
<div class="switch_button">
|
||||
<?php if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){?>
|
||||
<input id="CF_Turnstile_onoff" class="switch_input" type='checkbox' name="CF_Turnstile_onoff" value="true" checked/>
|
||||
<label for="CF_Turnstile_onoff" class="switch_label"></label>
|
||||
<?php }else{?>
|
||||
<input id="CF_Turnstile_onoff" class="switch_input" type='checkbox' name="CF_Turnstile_onoff" value="true" />
|
||||
<label for="CF_Turnstile_onoff" class="switch_label"></label>
|
||||
<?php }?>
|
||||
</div>
|
||||
<div id="CF_Turnstile">
|
||||
<p>CloudflareTurnstile - 認証情報設定</p>
|
||||
<div class="p2">サイトキー</div>
|
||||
<input id="CF_Turnstile" placeholder="" class="inbox" type="text" name="CF_Turnstile_sitekey" value="<?php if( !empty(CF_TURNSTILE_SITE_KEY) ){ echo htmlentities(CF_TURNSTILE_SITE_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">シークレットキー</div>
|
||||
<input id="CF_Turnstile" placeholder="" class="inbox" type="text" name="CF_Turnstile_seackey" value="<?php if( !empty(CF_TURNSTILE_SEAC_KEY) ){ echo htmlentities(CF_TURNSTILE_SEAC_KEY, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<p>デモ<p>
|
||||
<div class="cf-turnstile" data-sitekey="1x00000000000000000000AA" data-callback="javascriptCallback" data-language="ja"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -369,6 +427,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
@@ -391,6 +450,15 @@ $(document).ready(function() {
|
||||
$('#hCaptcha_onoff').change(function(){
|
||||
$('#hcaptcha').toggle();
|
||||
});
|
||||
|
||||
if ($("#CF_Turnstile_onoff").prop("checked")) {
|
||||
$('#CF_Turnstile').show();
|
||||
}else{
|
||||
$('#CF_Turnstile').hide();
|
||||
}
|
||||
$('#CF_Turnstile_onoff').change(function(){
|
||||
$('#CF_Turnstile').toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -22,6 +22,11 @@ function createUniqId(){
|
||||
function random_code($length = 8){
|
||||
return substr(str_shuffle('1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length);
|
||||
}
|
||||
function mb_to_gb($megabyte){
|
||||
$n_mb = $megabyte / 1024;
|
||||
return round($n_mb, 1);
|
||||
}
|
||||
|
||||
|
||||
require('../db.php');
|
||||
|
||||
@@ -208,6 +213,30 @@ $count3 = $result3->num_rows;
|
||||
$result4 = $mysqli->query("SELECT userid FROM account WHERE sacinfo = 'bot'");
|
||||
$count4 = $result4->num_rows;
|
||||
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||
$diskFree = (int) disk_free_space('C:') / 1024 / 1024;
|
||||
$diskTotal = (int) disk_total_space('C:') / 1024 / 1024;
|
||||
$diskUmari = $diskTotal - $diskFree;
|
||||
if ($diskFree / $diskTotal < 0.1) {
|
||||
$disk_over90p = true;
|
||||
}else{
|
||||
$disk_over90p = false;
|
||||
}
|
||||
|
||||
$loadAve = null;
|
||||
} else {
|
||||
$diskFree = (int) disk_free_space('/') / 1024 / 1024;
|
||||
$diskTotal = (int) disk_total_space('/') / 1024 / 1024;
|
||||
$diskUmari = $diskTotal - $diskFree;
|
||||
if ($diskFree / $diskTotal < 0.1) {
|
||||
$disk_over90p = true;
|
||||
}else{
|
||||
$disk_over90p = false;
|
||||
}
|
||||
|
||||
$loadAve = sys_getloadavg()[0];
|
||||
}
|
||||
|
||||
require('../logout/logout.php');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@@ -215,13 +244,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>サーバー概要 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>サーバー概要 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -245,32 +274,32 @@ require('../logout/logout.php');
|
||||
<!--(サーバーアイコン)-->
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ ?>
|
||||
<div class="serverhead">
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_icon"]) ){ ?>
|
||||
<div class="servericon">
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ ?>
|
||||
<div class="up">
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
</div>
|
||||
<?php }else{?>
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
<!--(サーバーアイコンここまで)-->
|
||||
<p>サーバー名</p>
|
||||
<p><?php if( !empty(htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<p><?php if( !empty(htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')) ){ echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<hr>
|
||||
<p>サーバー紹介メッセージ</p>
|
||||
<p><?php $sinfo = explode("\n", $serverinfo); foreach ($sinfo as $info) { echo nl2br(htmlspecialchars($info)); }?></p>
|
||||
<p><?php $sinfo = explode("\n", $serverinfo); foreach ($sinfo as $info) { echo nl2br(htmlentities($info)); }?></p>
|
||||
<hr>
|
||||
<p>サーバー管理者の名前</p>
|
||||
<p><?php if( !empty(htmlspecialchars($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8')) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<p><?php if( !empty(htmlentities($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8')) ){ echo htmlentities($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<hr>
|
||||
<p>サーバーへのお問い合わせ用メールアドレス</p>
|
||||
<p><?php if( !empty(htmlspecialchars($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8')) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<p><?php if( !empty(htmlentities($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8')) ){ echo htmlentities($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8'); } ?></p>
|
||||
<hr>
|
||||
<p>統計情報</p>
|
||||
<div class="overview">
|
||||
@@ -293,6 +322,30 @@ require('../logout/logout.php');
|
||||
<p><?php echo htmlentities($count4);?></p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<p>ディスク空き容量</p>
|
||||
<?php if($disk_over90p == true){?>
|
||||
<p class="errmsg">90%以上が使用済みです。<br>早急に容量拡張などの対応を考えてください!</p>
|
||||
<?php }else{?>
|
||||
<p>ディスク空き容量には余裕があります。</p>
|
||||
<?php };?>
|
||||
<div class="graph">
|
||||
<div class="per" style="width:calc(<?php echo round((int)mb_to_gb($diskUmari) / (int)mb_to_gb($diskTotal) * 100, 1);?>% - 8px);">
|
||||
</div>
|
||||
</div>
|
||||
<p>使用済み : <?php echo mb_to_gb($diskUmari)."GB/".mb_to_gb($diskTotal);?>GB<br>
|
||||
空き容量 : <?php echo mb_to_gb($diskFree);?>GB</p>
|
||||
<hr>
|
||||
<p>ロードアベレージ</p>
|
||||
<div class="p2">ロードアベレージはCPUのコア数と照らし合わせて活用してください。<br>
|
||||
"ロードアベレージ/CPUコア数"で計算をした時に1.0を超えると処理が重くなっています。<br>
|
||||
※Windows環境ではロードアベレージの取得はできません。</div>
|
||||
|
||||
<?php if(empty($loadAve)){?>
|
||||
<p>ロードアベレージの取得ができませんでした。</p>
|
||||
<?php }else{?>
|
||||
<p>過去1分間のロードアベレージ : <?php echo $loadAve?></p>
|
||||
<?php };?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -300,6 +353,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -8,7 +8,7 @@ $serverstopfile = "../server/serverstop.txt";
|
||||
$domain = $_SERVER['HTTP_HOST'];
|
||||
|
||||
if(!empty(file_get_contents($serverstopfile))){
|
||||
$serverstop = htmlspecialchars(file_get_contents($serverstopfile), ENT_QUOTES, 'UTF-8');
|
||||
$serverstop = htmlentities(file_get_contents($serverstopfile), ENT_QUOTES, 'UTF-8');
|
||||
}else{
|
||||
$serverstop = "";
|
||||
}
|
||||
@@ -246,13 +246,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>プラグイン - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>プラグイン - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -291,15 +291,15 @@ require('../logout/logout.php');
|
||||
<div id="mail_plugin">
|
||||
<p>PHPMailer - メールサーバー設定</p>
|
||||
<div class="p2">メールアドレス</div>
|
||||
<input id="mail_plugin" placeholder="user@localhost" class="inbox" type="text" name="N_MAIL_ADDS" value="<?php if( !empty(MAIL_ADDS) ){ echo htmlspecialchars(MAIL_ADDS, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mail_plugin" placeholder="user@localhost" class="inbox" type="text" name="N_MAIL_ADDS" value="<?php if( !empty(MAIL_ADDS) ){ echo htmlentities(MAIL_ADDS, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">ホスト名</div>
|
||||
<input id="mail_plugin" placeholder="smtp.mailserver.com" class="inbox" type="text" name="N_MAIL_HOST" value="<?php if( !empty(MAIL_HOST) ){ echo htmlspecialchars(MAIL_HOST, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mail_plugin" placeholder="smtp.mailserver.com" class="inbox" type="text" name="N_MAIL_HOST" value="<?php if( !empty(MAIL_HOST) ){ echo htmlentities(MAIL_HOST, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">ポート番号</div>
|
||||
<input id="mail_plugin" placeholder="465" class="inbox" type="text" name="N_MAIL_PORT" value="<?php if( !empty(MAIL_PORT) ){ echo htmlspecialchars(MAIL_PORT, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mail_plugin" placeholder="465" class="inbox" type="text" name="N_MAIL_PORT" value="<?php if( !empty(MAIL_PORT) ){ echo htmlentities(MAIL_PORT, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">ユーザー名</div>
|
||||
<input id="mail_plugin" placeholder="from@localhost" class="inbox" type="text" name="N_MAIL_USER" value="<?php if( !empty(MAIL_USER) ){ echo htmlspecialchars(MAIL_USER, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mail_plugin" placeholder="from@localhost" class="inbox" type="text" name="N_MAIL_USER" value="<?php if( !empty(MAIL_USER) ){ echo htmlentities(MAIL_USER, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">パスワード</div>
|
||||
<input id="mail_plugin" placeholder="password" class="inbox" type="text" name="N_MAIL_PASS" style="-webkit-text-security:disc;" value="<?php if( !empty(MAIL_PASS) ){ echo htmlspecialchars(MAIL_PASS, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="mail_plugin" placeholder="password" class="inbox" type="text" name="N_MAIL_PASS" style="-webkit-text-security:disc;" value="<?php if( !empty(MAIL_PASS) ){ echo htmlentities(MAIL_PASS, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
|
||||
<div class="p2">暗号化設定</div>
|
||||
<div class="radio_btn_zone">
|
||||
@@ -334,6 +334,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -188,6 +188,7 @@ if( !empty($_POST['role_btn_submit']) ) {
|
||||
$rolename = htmlentities($_POST['rolename']);
|
||||
$roleid = htmlentities($_POST['roleid']);
|
||||
$rolecolor = htmlentities($_POST['rolecolor']);
|
||||
$roleeffect = htmlentities($_POST['roleeffect']);
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
|
||||
$query = $dbh->prepare('SELECT * FROM role WHERE roleidname = :roleid limit 1');
|
||||
@@ -207,6 +208,20 @@ if( !empty($_POST['role_btn_submit']) ) {
|
||||
$error_message[] = "ロールの色が入力されていません。(INPUT_PLEASE)";
|
||||
}
|
||||
|
||||
if(empty($roleeffect)){
|
||||
$error_message[] = "ロールに適用するエフェクトが選択されていません。(INPUT_PLEASE)";
|
||||
}else{
|
||||
if($roleeffect == "0"){
|
||||
$save_role_effect = "none";
|
||||
}
|
||||
if($roleeffect == "1"){
|
||||
$save_role_effect = "shine";
|
||||
}
|
||||
if($roleeffect == "2"){
|
||||
$save_role_effect = "rainbow";
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($pdo)) {
|
||||
if (empty($error_message)) {
|
||||
// 書き込み日時を取得
|
||||
@@ -219,12 +234,13 @@ if( !empty($_POST['role_btn_submit']) ) {
|
||||
try {
|
||||
|
||||
// SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO role (rolename, roleauth, rolecolor, roleidname) VALUES (:rolename, :roleauth, :rolecolor, :roleidname)");
|
||||
$stmt = $pdo->prepare("INSERT INTO role (rolename, roleauth, rolecolor, roleidname, roleeffect) VALUES (:rolename, :roleauth, :rolecolor, :roleidname, :roleeffect)");
|
||||
|
||||
$stmt->bindParam(':rolename', $rolename, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':roleauth', $roleauth, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':rolecolor', $rolecolor, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':roleidname', $roleid, PDO::PARAM_STR);
|
||||
$stmt->bindParam(':roleeffect', $save_role_effect, PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -420,13 +436,13 @@ if (!empty($pdo)) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>ロール - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>ロール - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8', false);?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -463,6 +479,19 @@ if (!empty($pdo)) {
|
||||
<div class="p2">ロールの色です。<br>HEXコードで入力してください。(#はつけないでください。)</div>
|
||||
<input id="rolecolor" onInput="checkForm(this)" placeholder="256238" class="inbox" type="text" name="rolecolor" maxlength="6" value="">
|
||||
</div>
|
||||
<div>
|
||||
<div class="p2">ロールに付与するエフェクト</div>
|
||||
<div class="radio_btn_zone">
|
||||
<input type="radio" name="roleeffect" value="0" id="0" class="radiobtn_input" checked>
|
||||
<label for="0" class="radiobtn_label">なし</label>
|
||||
|
||||
<input type="radio" name="roleeffect" value="1" id="1" class="radiobtn_input">
|
||||
<label for="1" class="radiobtn_label">輝かせる</label>
|
||||
|
||||
<input type="radio" name="roleeffect" value="2" id="2" class="radiobtn_input">
|
||||
<label for="2" class="radiobtn_label">枠を虹色にする</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="submit" class = "irobutton" name="role_btn_submit" value="作成">
|
||||
</form>
|
||||
@@ -485,6 +514,37 @@ if (!empty($pdo)) {
|
||||
<hr>
|
||||
<p>ロールのid:<?php echo htmlentities($value["roleidname"]);?></p>
|
||||
<p>ロールの色:#<?php echo htmlentities($value["rolecolor"]);?></p>
|
||||
<p>ロールのエフェクト:<?php
|
||||
if(htmlentities($value["roleeffect"]) == '' || htmlentities($value["roleeffect"]) == 'none'){
|
||||
$role_view_effect = "なし";
|
||||
}elseif(htmlentities($value["roleeffect"]) == 'shine'){
|
||||
$role_view_effect = "輝かせる";
|
||||
}elseif(htmlentities($value["roleeffect"]) == 'rainbow'){
|
||||
$role_view_effect = "枠を虹色にする";
|
||||
}else{
|
||||
$role_view_effect = "不明";
|
||||
}
|
||||
echo $role_view_effect;
|
||||
?></p>
|
||||
<hr>
|
||||
<div class="roleboxes">
|
||||
<?php
|
||||
if(htmlentities($value["roleeffect"], ENT_QUOTES, 'UTF-8', false) == '' || htmlentities($value["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'none'){
|
||||
$role_view_effect = "";
|
||||
}elseif(htmlentities($value["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'shine'){
|
||||
$role_view_effect = "shine";
|
||||
}elseif(htmlentities($value["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'rainbow'){
|
||||
$role_view_effect = "rainbow";
|
||||
}else{
|
||||
$role_view_effect = "";
|
||||
}
|
||||
?>
|
||||
<div class="rolebox <?php echo htmlentities($role_view_effect, ENT_QUOTES, 'UTF-8', false); ?>" style="border: 1px solid <?php echo '#' . htmlentities($value["rolecolor"], ENT_QUOTES, 'UTF-8', false); ?>;">
|
||||
<p style="color: <?php echo '#' . $value["rolecolor"]; ?>;">
|
||||
<?php if (!empty($value["rolename"])) { echo htmlentities($value["rolename"], ENT_QUOTES, 'UTF-8', false); }else{ echo("ロールが正常に設定されていません。");} ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
@@ -546,6 +606,7 @@ if (!empty($pdo)) {
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
|
||||
@@ -347,13 +347,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>サーバー設定 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>サーバー設定 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -377,17 +377,17 @@ require('../logout/logout.php');
|
||||
<!--(サーバーアイコン)-->
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ ?>
|
||||
<div class="serverhead_set">
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_icon"]) ){ ?>
|
||||
<div class="servericon">
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ ?>
|
||||
<div class="up">
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
</div>
|
||||
<?php }else{?>
|
||||
<img src="<?php echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<img src="<?php echo htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); ?>">
|
||||
<?php }?>
|
||||
</div>
|
||||
<?php }?>
|
||||
@@ -395,12 +395,12 @@ require('../logout/logout.php');
|
||||
<div>
|
||||
<p>サーバーアイコン</p>
|
||||
<div class="p2">サーバー登録画面などに表示されます。<br>自動的に角が丸くなります。<br>URLより設定してください。(設定しなくても大丈夫です。)</div>
|
||||
<input id="servericon" placeholder="https://~" class="inbox" type="text" name="servericon" value="<?php if( !empty($serversettings["serverinfo"]["server_icon"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="servericon" placeholder="https://~" class="inbox" type="text" name="servericon" value="<?php if( !empty($serversettings["serverinfo"]["server_icon"]) ){ echo htmlentities($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
<div>
|
||||
<p>サーバーヘッダー</p>
|
||||
<div class="p2">サーバー登録画面などに表示されます。<br>自動的に角が丸くなります。<br>URLより設定してください。(設定しなくても大丈夫です。)</div>
|
||||
<input id="serverhead" placeholder="https://~" class="inbox" type="text" name="serverhead" value="<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="serverhead" placeholder="https://~" class="inbox" type="text" name="serverhead" value="<?php if( !empty($serversettings["serverinfo"]["server_head"]) ){ echo htmlentities($serversettings["serverinfo"]["server_head"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -419,9 +419,9 @@ require('../logout/logout.php');
|
||||
<p>サーバーロゴ</p>
|
||||
<div class="p2">サーバーの左上に表示されているuwuzuのロゴを独自のロゴに置き換えるときに使用します。<br>自動的に角が丸くなります。<br>URLより設定してください。<br>背景透過画像を推奨します。</div>
|
||||
<div class="p2">ログイン後のロゴ</div>
|
||||
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_light" value="<?php if( !empty($serversettings["serverinfo"]["server_logo_home"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_logo_home"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_light" value="<?php if( !empty($serversettings["serverinfo"]["server_logo_home"]) ){ echo htmlentities($serversettings["serverinfo"]["server_logo_home"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<div class="p2">ログイン画面と利用規約などドキュメントページのロゴ</div>
|
||||
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_dark" value="<?php if( !empty($serversettings["serverinfo"]["server_logo_login"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_logo_login"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="serverlogo" placeholder="https://~" class="inbox" type="text" name="serverlogo_dark" value="<?php if( !empty($serversettings["serverinfo"]["server_logo_login"]) ){ echo htmlentities($serversettings["serverinfo"]["server_logo_login"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
<script>
|
||||
if ($("#serverlogo_onoff").prop("checked")) {
|
||||
@@ -437,7 +437,7 @@ require('../logout/logout.php');
|
||||
<div>
|
||||
<p>サーバー名</p>
|
||||
<div class="p2">サーバー名です。</div>
|
||||
<input id="servername" placeholder="uwuzuさ~ば~" class="inbox" type="text" name="servername" value="<?php if( !empty($serversettings["serverinfo"]["server_name"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="servername" placeholder="uwuzuさ~ば~" class="inbox" type="text" name="servername" value="<?php if( !empty($serversettings["serverinfo"]["server_name"]) ){ echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -449,13 +449,13 @@ require('../logout/logout.php');
|
||||
<div>
|
||||
<p>サーバー管理者の名前</p>
|
||||
<div class="p2">サーバー管理者名です。</div>
|
||||
<input id="serveradminname" placeholder="わたし" class="inbox" type="text" name="serveradminname" value="<?php if( !empty($serversettings["serverinfo"]["server_admin"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="serveradminname" placeholder="わたし" class="inbox" type="text" name="serveradminname" value="<?php if( !empty($serversettings["serverinfo"]["server_admin"]) ){ echo htmlentities($serversettings["serverinfo"]["server_admin"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>サーバーへのお問い合わせ用メールアドレス</p>
|
||||
<div class="p2">ユーザーからのお問い合わせメアドです。</div>
|
||||
<input id="servermailadds" placeholder="" class="inbox" type="text" name="servermailadds" value="<?php if( !empty($serversettings["serverinfo"]["server_admin_mailadds"]) ){ echo htmlspecialchars($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="servermailadds" placeholder="" class="inbox" type="text" name="servermailadds" value="<?php if( !empty($serversettings["serverinfo"]["server_admin_mailadds"]) ){ echo htmlentities($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -515,6 +515,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -290,13 +290,13 @@ if (!empty($pdo)) {
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>ユーザー管理 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>ユーザー管理 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -319,7 +319,7 @@ if (!empty($pdo)) {
|
||||
<h1>ユーザー管理</h1>
|
||||
<div>
|
||||
<p>ユーザーID</p>
|
||||
<input id="target_userid" placeholder="admin" class="inbox" type="text" name="target_userid" value="<?php if( !empty($keyword) ){ echo htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
<input id="target_userid" placeholder="admin" class="inbox" type="text" name="target_userid" value="<?php if( !empty($keyword) ){ echo htmlentities($keyword, ENT_QUOTES, 'UTF-8'); } ?>">
|
||||
</div>
|
||||
|
||||
<input type="submit" class = "irobutton" name="btn_submit" value="検索">
|
||||
@@ -375,6 +375,7 @@ if (!empty($pdo)) {
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
+27
-15
@@ -201,7 +201,7 @@ if (!empty($pdo)) {
|
||||
$roleDataArray = array();
|
||||
|
||||
foreach ($roles as $roleId) {
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role");
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor, roleeffect FROM role WHERE roleidname = :role");
|
||||
$rerole->bindValue(':role', $roleId);
|
||||
$rerole->execute();
|
||||
$roleDataArray[$roleId] = $rerole->fetch();
|
||||
@@ -264,8 +264,8 @@ if( !empty($_POST['send_ice_submit']) ) {
|
||||
if(!empty(MAIL_CHKS && MAIL_CHKS == "true")){
|
||||
if( !empty($userdata["mailadds"]) ){
|
||||
if(filter_var($userdata["mailadds"], FILTER_VALIDATE_EMAIL)){
|
||||
$mail_title = "お使いの".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは凍結されました";
|
||||
$mail_text = "".$userdata["username"]."(".$userdata["userid"].")さん いつもuwuzuをご利用いただきありがとうございます。 ご利用のアカウント(".$userdata["userid"].")が".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."管理者により凍結されたためお知らせいたします。 サービス管理者からのメッセージは以下のものです。 ". $notice_msg ." 異議申し立てする場合は[".htmlspecialchars($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8')."]まで異議申し立てをする旨を記載し送信をしてください。";
|
||||
$mail_title = "お使いの".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは凍結されました";
|
||||
$mail_text = "".$userdata["username"]."(".$userdata["userid"].")さん いつもuwuzuをご利用いただきありがとうございます。 ご利用のアカウント(".$userdata["userid"].")が".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."管理者により凍結されたためお知らせいたします。 サービス管理者からのメッセージは以下のものです。 ". $notice_msg ." 異議申し立てする場合は[".htmlentities($serversettings["serverinfo"]["server_admin_mailadds"], ENT_QUOTES, 'UTF-8')."]まで異議申し立てをする旨を記載し送信をしてください。";
|
||||
|
||||
send_html_mail($userdata["mailadds"],$mail_title,$mail_text,"../");
|
||||
}
|
||||
@@ -352,7 +352,7 @@ if( !empty($_POST['send_water_submit']) ) {
|
||||
if(!empty(MAIL_CHKS && MAIL_CHKS == "true")){
|
||||
if( !empty($userdata["mailadds"]) ){
|
||||
if(filter_var($userdata["mailadds"], FILTER_VALIDATE_EMAIL)){
|
||||
$mail_title = "お使いの".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは解凍されました!";
|
||||
$mail_title = "お使いの".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは解凍されました!";
|
||||
$mail_text = "".$userdata["username"]."(".$userdata["userid"].")さん いつもuwuzuをご利用いただきありがとうございます。 ご利用のアカウント(".$userdata["userid"].")が解凍されたためお知らせいたします。 今後、ご利用のuwuzuアカウントは今まで通りご利用いただけます。 また、APIを使用している方はAPIのトークンがリセットされているため再度トークンを発行してご利用ください。";
|
||||
|
||||
send_html_mail($userdata["mailadds"],$mail_title,$mail_text,"../");
|
||||
@@ -535,8 +535,8 @@ if( !empty($_POST['send_ban_submit']) ) {
|
||||
if(!empty(MAIL_CHKS && MAIL_CHKS == "true")){
|
||||
if( !empty($userdata["mailadds"]) ){
|
||||
if(filter_var($userdata["mailadds"], FILTER_VALIDATE_EMAIL)){
|
||||
$mail_title = "お使いの".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントはBANされました";
|
||||
$mail_text = "".$userdata["username"]."(".$userdata["userid"].")さん いつもuwuzuをご利用いただきありがとうございます。 この度、ご利用のアカウント(".$userdata["userid"].")が".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."管理者によりBAN(削除)されたためお知らせいたします。 今後は今までご利用いただいた".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは利用できません。 ".htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."サーバー上から今までご利用いただいていたアカウントの情報は削除されたためログインなどもできません。 ご理解とご協力のほどよろしくお願いします。";
|
||||
$mail_title = "お使いの".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントはBANされました";
|
||||
$mail_text = "".$userdata["username"]."(".$userdata["userid"].")さん いつもuwuzuをご利用いただきありがとうございます。 この度、ご利用のアカウント(".$userdata["userid"].")が".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."管理者によりBAN(削除)されたためお知らせいたします。 今後は今までご利用いただいた".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."アカウントは利用できません。 ".htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8')."サーバー上から今までご利用いただいていたアカウントの情報は削除されたためログインなどもできません。 ご理解とご協力のほどよろしくお願いします。";
|
||||
|
||||
send_html_mail($userdata["mailadds"],$mail_title,$mail_text,"../");
|
||||
}
|
||||
@@ -570,13 +570,13 @@ require('../logout/logout.php');
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>ユーザー管理 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>ユーザー管理 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -607,9 +607,20 @@ require('../logout/logout.php');
|
||||
<div class="roleboxes">
|
||||
<?php foreach ($roles as $roleId): ?>
|
||||
<?php $roleData = $roleDataArray[$roleId]; ?>
|
||||
<div class="rolebox" style="border: 1px solid <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php
|
||||
if(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == '' || htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'none'){
|
||||
$role_view_effect = "";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'shine'){
|
||||
$role_view_effect = "shine";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'rainbow'){
|
||||
$role_view_effect = "rainbow";
|
||||
}else{
|
||||
$role_view_effect = "";
|
||||
}
|
||||
?>
|
||||
<div class="rolebox <?php echo htmlentities($role_view_effect, ENT_QUOTES, 'UTF-8', false); ?>" style="border: 1px solid <?php echo '#' . htmlentities($roleData["rolecolor"], ENT_QUOTES, 'UTF-8', false); ?>;">
|
||||
<p style="color: <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlentities($roleData["rolename"], ENT_QUOTES, 'UTF-8'); } ?>
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlentities($roleData["rolename"], ENT_QUOTES, 'UTF-8', false); }else{ echo("ロールが正常に設定されていません。");} ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
@@ -618,12 +629,12 @@ require('../logout/logout.php');
|
||||
|
||||
<div class="profile">
|
||||
<div class="p2">プロフィール</div>
|
||||
<p><?php echo nl2br(htmlspecialchars($userdata["profile"], ENT_QUOTES, 'UTF-8')); ?></p>
|
||||
<p><?php echo nl2br(htmlentities($userdata["profile"], ENT_QUOTES, 'UTF-8')); ?></p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="about">
|
||||
<div class="p2">メールアドレス</div>
|
||||
<p><?php if( !empty($userdata["mailadds"]) ){ echo htmlspecialchars($userdata["mailadds"], ENT_QUOTES, 'UTF-8'); }else{echo "未設定";} ?></p>
|
||||
<p><?php if( !empty($userdata["mailadds"]) ){ echo htmlentities($userdata["mailadds"], ENT_QUOTES, 'UTF-8'); }else{echo "未設定";} ?></p>
|
||||
<hr>
|
||||
<div class="p2">二段階認証</div>
|
||||
<p><?php if( !empty($userdata["authcode"]) ){ echo "設定済み";}else{echo "未設定";} ?></p>
|
||||
@@ -632,15 +643,15 @@ require('../logout/logout.php');
|
||||
<p><?php if( !empty($userdata["admin"] === "yes") ){ echo "あり";}else{echo "なし";} ?></p>
|
||||
<hr>
|
||||
<div class="p2">フォロー数</div>
|
||||
<p><?php if( $followCount > 0 ){ echo htmlspecialchars($followCount, ENT_QUOTES, 'UTF-8');}else{echo "なし";} ?></p>
|
||||
<p><?php if( $followCount > 0 ){ echo htmlentities($followCount, ENT_QUOTES, 'UTF-8');}else{echo "なし";} ?></p>
|
||||
<div class="p2">フォロワー数</div>
|
||||
<p><?php if( $followerCount > 0 ){ echo htmlspecialchars($followerCount, ENT_QUOTES, 'UTF-8');}else{echo "なし";} ?></p>
|
||||
<p><?php if( $followerCount > 0 ){ echo htmlentities($followerCount, ENT_QUOTES, 'UTF-8');}else{echo "なし";} ?></p>
|
||||
<hr>
|
||||
<div class="p2">投稿数</div>
|
||||
<p><?php if( $upload_cnt1 > 0 ){ echo $upload_cnt1;}else{echo "なし";} ?></p>
|
||||
<hr>
|
||||
<div class="p2">アカウント登録日時</div>
|
||||
<p><?php echo htmlspecialchars($userdata["datetime"], ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
<p><?php echo htmlentities($userdata["datetime"], ENT_QUOTES, 'UTF-8'); ?></p>
|
||||
<hr>
|
||||
<div class="p2">アカウント操作</div>
|
||||
<div class="banzone">
|
||||
@@ -698,6 +709,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
@@ -16,6 +16,7 @@ if(!(empty($_SESSION['backupcode']))){
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<script src="js/jquery-min.js"></script>
|
||||
<script src="js/unsupported.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="favicon/icon-192x192.png">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') == "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
+122
-45
@@ -5,7 +5,7 @@ $serversettings = parse_ini_file($serversettings_file, true);
|
||||
$domain = $_SERVER['HTTP_HOST'];
|
||||
|
||||
$mojisizefile = "../server/textsize.txt";
|
||||
$mojisize = (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
$mojisize = (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8');
|
||||
//投稿及び返信レート制限↓(分):デフォで60件/分まで
|
||||
$max_ueuse_rate_limit = 60;
|
||||
|
||||
@@ -185,6 +185,8 @@ if(empty($username)){
|
||||
header("Location: ../login.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!(empty($pdo))) {
|
||||
$notiQuery = $pdo->prepare("SELECT COUNT(*) as notification_count FROM notification WHERE touserid = :userid AND userchk = 'none'");
|
||||
$notiQuery->bindValue(':userid', $userid);
|
||||
$notiQuery->execute();
|
||||
@@ -192,15 +194,42 @@ $notiData = $notiQuery->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
$notificationcount = $notiData['notification_count'];
|
||||
|
||||
if(isset($_GET['ueuseid']) && isset($_GET['touser'])) {
|
||||
if(isset($_GET['ueuseid'])) {
|
||||
$ueuseid = htmlentities(str_replace('!', '', $_GET['ueuseid']));
|
||||
$touserid = htmlentities(str_replace('~', '', $_GET['touser']));
|
||||
}elseif(isset($_GET['ueuseid'])){
|
||||
$ueuseid = htmlentities(str_replace('!', '', $_GET['ueuseid']));
|
||||
$touserid = null;
|
||||
}
|
||||
}
|
||||
|
||||
//返信先id取得
|
||||
if (!(empty($pdo))) {
|
||||
$toUserIdQuery = $pdo->prepare("SELECT account FROM ueuse WHERE uniqid = :ueuseid ORDER BY datetime ASC LIMIT 1");
|
||||
$toUserIdQuery->bindValue(':ueuseid', $ueuseid, PDO::PARAM_STR);
|
||||
$toUserIdQuery->execute();
|
||||
$toUserId_res = $toUserIdQuery->fetch();
|
||||
|
||||
if(!(empty($toUserId_res))){
|
||||
$touserid = $toUserId_res["account"];
|
||||
}else{
|
||||
$touserid = null;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------URLから取得----------------
|
||||
if(isset($_GET['text'])) {
|
||||
$ueuse = htmlentities($_GET['text'], ENT_QUOTES, 'UTF-8', false);
|
||||
}elseif(isset($_COOKIE['ueuse'])) {
|
||||
$ueuse = htmlentities($_COOKIE['ueuse'], ENT_QUOTES, 'UTF-8', false);
|
||||
}
|
||||
//-----------------絵文字の取得----------------
|
||||
if (!empty($pdo)) {
|
||||
$custom_emoji_Query = "SELECT emojifile,emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC";
|
||||
$custom_emoji_array = $pdo->query($custom_emoji_Query);
|
||||
|
||||
while ($row = $custom_emoji_array->fetch(PDO::FETCH_ASSOC)) {
|
||||
$custom_emoji[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------
|
||||
function get_mentions_userid($postText) {
|
||||
// @useridを検出する
|
||||
$usernamePattern = '/@(\w+)/';
|
||||
@@ -251,8 +280,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$error_message[] = '内容を入力してください。(INPUT_PLEASE)';
|
||||
} else {
|
||||
// 文字数を確認
|
||||
if( (int)htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8') < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlspecialchars(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8').'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
if( (int)htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8') < mb_strlen($ueuse, 'UTF-8') ) {
|
||||
$error_message[] = '内容は'.htmlentities(file_get_contents($mojisizefile), ENT_QUOTES, 'UTF-8').'文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
|
||||
}
|
||||
|
||||
// 禁止url確認
|
||||
@@ -486,6 +515,8 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
}
|
||||
|
||||
if( empty($error_message) ) {
|
||||
//一時保存していたユーズ内容の削除
|
||||
setcookie("ueuse", "", time() - 30);
|
||||
|
||||
// 書き込み日時を取得
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
@@ -500,22 +531,22 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
// SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, photo3, photo4, video1, datetime, abi, nsfw) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :photo3, :photo4, :video1, :datetime, :abi, :nsfw)");
|
||||
|
||||
$stmt->bindParam(':username', htmlspecialchars($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlspecialchars($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlspecialchars($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':rpuniqid', htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlspecialchars($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':username', htmlentities($username, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':account', htmlentities($userid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':uniqid', htmlentities($uniqid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':rpuniqid', htmlentities($ueuseid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':ueuse', htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':photo1', htmlspecialchars($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlspecialchars($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlspecialchars($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlspecialchars($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlspecialchars($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo1', htmlentities($photo1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo2', htmlentities($photo2, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo3', htmlentities($photo3, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':photo4', htmlentities($photo4, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':video1', htmlentities($video1, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':nsfw', htmlspecialchars($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':nsfw', htmlentities($save_nsfw, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':abi', htmlspecialchars($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':abi', htmlentities($abi, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -533,14 +564,14 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
// 通知用SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)");
|
||||
|
||||
$stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':fromuserid', htmlentities($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -562,20 +593,20 @@ if( !empty($_POST['btn_submit']) ) {
|
||||
$datetime = date("Y-m-d H:i:s");
|
||||
$msg = "" . $ueuse . "";
|
||||
$title = "" . $userid . "さんにメンションされました!";
|
||||
$url = "/!" . $uniqid . "~" . $userid . "";
|
||||
$url = "/!" . $uniqid . "";
|
||||
$userchk = 'none';
|
||||
|
||||
// 通知用SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)");
|
||||
|
||||
$stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':fromuserid', htmlentities($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -643,7 +674,7 @@ $pdo = null;
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="../js/nsfw_event.js"></script>
|
||||
@@ -651,7 +682,7 @@ $pdo = null;
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title>ID <?php echo htmlentities($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title>ID <?php echo htmlentities($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -678,7 +709,8 @@ $pdo = null;
|
||||
<?php if(!($role ==="ice")){?>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div class="sendbox">
|
||||
<textarea id="ueuse" placeholder="へんし~ん!!!" name="ueuse"><?php if( !empty($_SESSION['ueuse']) ){ echo htmlentities( $_SESSION['ueuse'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<textarea id="ueuse" placeholder="いまどうしてる?" name="ueuse"><?php if( !empty($ueuse) ){ echo htmlentities($ueuse, ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
|
||||
<div class="fxbox">
|
||||
<label for="upload_images" id="images" title="画像1">
|
||||
<svg><use xlink:href="../img/sysimage/image_1.svg#image"></use></svg>
|
||||
@@ -706,9 +738,32 @@ $pdo = null;
|
||||
<label for="nsfw_chk" class="nsfw_label" title="投稿をNSFW指定にする"><svg><use xlink:href="../img/sysimage/eye_1.svg#eye"></use></svg></label>
|
||||
</div>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo $mojisize; ?></div>
|
||||
|
||||
<input type="submit" class="ueusebtn" id='ueusebtn' name="btn_submit" value="返信する">
|
||||
<label for="emoji_picker_btn" title="絵文字">
|
||||
<svg><use xlink:href="../img/sysimage/menuicon/emoji.svg#emoji"></use></svg>
|
||||
<input id="emoji_picker_btn" type='checkbox' value="false" style="display:none;"/>
|
||||
</label>
|
||||
|
||||
<div class="moji_cnt" id="moji_cnt"><?php echo htmlentities($mojisize, ENT_QUOTES, 'UTF-8', false); ?></div>
|
||||
|
||||
<input type="submit" class="ueusebtn" id='ueusebtn' name="btn_submit" value="ユーズする">
|
||||
</div>
|
||||
|
||||
<div class="emoji_picker" id="emoji_picker" style="display:none;">
|
||||
<p>カスタム絵文字</p>
|
||||
<div class="emoji_picker_flex">
|
||||
<?php
|
||||
if(!empty($custom_emoji)){
|
||||
foreach ($custom_emoji as $value) {
|
||||
echo '<div class="one_emoji">';
|
||||
echo '<img src="../' . htmlentities($value["emojifile"], ENT_QUOTES, 'UTF-8', false) . '" alt=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':" title=":'.htmlentities($value["emojiname"], ENT_QUOTES, 'UTF-8', false).':">';
|
||||
echo '</div>';
|
||||
}
|
||||
}else{
|
||||
echo '<div class="tokonone" id="noueuse"><p>カスタム絵文字がありません</p></div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -759,6 +814,7 @@ $pdo = null;
|
||||
});
|
||||
file_reader.readAsText(e.target.files[0]);
|
||||
});
|
||||
|
||||
$('#ueuse').on('input', function () {
|
||||
var mojisize = '<?php echo $mojisize; ?>';
|
||||
var mojicount = Number(mojisize) - $(this).val().length;
|
||||
@@ -771,7 +827,21 @@ $pdo = null;
|
||||
$('#moji_cnt').html(mojicount);
|
||||
$('#ueusebtn').prop('disabled', true);
|
||||
}
|
||||
document.cookie = "ueuse=" + encodeURIComponent($(this).val()) + "; Secure; SameSite=Lax; path=/!<?php echo $ueuseid; ?>;";
|
||||
})
|
||||
$("#emoji_picker_btn").click(function () {
|
||||
if ($("#emoji_picker_btn").prop("checked") == true) {
|
||||
$("#emoji_picker").show();
|
||||
} else {
|
||||
$("#emoji_picker").hide();
|
||||
}
|
||||
});
|
||||
$(".one_emoji").click(function (event) {
|
||||
event.preventDefault();
|
||||
var children = $(this).children("img");
|
||||
var custom_emojiname = children.attr("title");
|
||||
$("#ueuse").val($("#ueuse").val() + custom_emojiname);
|
||||
});
|
||||
</script>
|
||||
<?php }else{?>
|
||||
<h1>ユーズ</h1>
|
||||
@@ -798,8 +868,8 @@ $pdo = null;
|
||||
<div class="modal-content">
|
||||
<p>ユーズを削除しますか?</p>
|
||||
<form class="btn_area" method="post" id="deleteForm">
|
||||
<input type="button" id="deleteButton" class="fbtn_no" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="button" id="deleteButton" class="fbtn" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -811,17 +881,24 @@ $pdo = null;
|
||||
<form method="post" id="AbiForm">
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlentities( $_SESSION['abi'], ENT_QUOTES, 'UTF-8'); } ?></textarea>
|
||||
<div class="btn_area">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn_no" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn_no" value="キャンセル">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
@@ -67,7 +67,11 @@ if($errcode == "UNSUPPORTED_BROWSER"){
|
||||
|
||||
<main>
|
||||
<div class="server_icon_zone">
|
||||
<?php if( !empty($serversettings["serverinfo"]["server_icon"]) ){ ?>
|
||||
<img src=<?php echo htmlspecialchars($serversettings["serverinfo"]["server_icon"], ENT_QUOTES, 'UTF-8');?>>
|
||||
<?php }else{?>
|
||||
<img src="/img/uwuzuicon.png">
|
||||
<?php }?>
|
||||
</div>
|
||||
<h1>お使いの環境での利用はできません</h1>
|
||||
<div class="maintext">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
+75
-172
@@ -16,6 +16,9 @@ function createUniqId(){
|
||||
}
|
||||
|
||||
require('../db.php');
|
||||
//関数呼び出し
|
||||
//- 文字装飾・URL変換など
|
||||
require('../function/function.php');
|
||||
|
||||
// 変数の初期化
|
||||
$datetime = array();
|
||||
@@ -199,124 +202,6 @@ if( !empty($pdo) ) {
|
||||
|
||||
$uwuzuid = htmlentities(str_replace('@'.$domain, '', $uwuzuid2));
|
||||
|
||||
// プロフィールの絵文字対応
|
||||
function replaceProfileEmojiImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// プロフィール名で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
return $postTextWithImages;
|
||||
}
|
||||
// ユーズ内の絵文字を画像に置き換える
|
||||
function replaceEmojisWithImages($postText) {
|
||||
$postText = str_replace(''', '\'', $postText);
|
||||
// ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える
|
||||
$emojiPattern = '/:(\w+):/';
|
||||
$postTextWithImages = preg_replace_callback($emojiPattern, function($matches) {
|
||||
$emojiName = $matches[1];
|
||||
//絵文字path取得
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
$emoji_Query = $dbh->prepare("SELECT emojifile, emojiname FROM emoji WHERE emojiname = :emojiname");
|
||||
$emoji_Query->bindValue(':emojiname', $emojiName);
|
||||
$emoji_Query->execute();
|
||||
$emoji_row = $emoji_Query->fetch();
|
||||
if(empty($emoji_row["emojifile"])){
|
||||
$emoji_path = "img/sysimage/errorimage/emoji_404.png";
|
||||
}else{
|
||||
$emoji_path = $emoji_row["emojifile"];
|
||||
}
|
||||
return "<img src='../".$emoji_path."' alt=':$emojiName:' title=':$emojiName:'>";
|
||||
}, $postText);
|
||||
|
||||
// @username を検出してリンクに置き換える
|
||||
$usernamePattern = '/@(\w+)/';
|
||||
$postTextWithImagesAndUsernames = preg_replace_callback($usernamePattern, function($matches) {
|
||||
$username = $matches[1];
|
||||
|
||||
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array(
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
|
||||
));
|
||||
|
||||
$mentionsuserQuery = $dbh->prepare("SELECT username, userid FROM account WHERE userid = :userid");
|
||||
$mentionsuserQuery->bindValue(':userid', $username);
|
||||
$mentionsuserQuery->execute();
|
||||
$mentionsuserData = $mentionsuserQuery->fetch();
|
||||
|
||||
if(empty($mentionsuserData)){
|
||||
return "@$username";
|
||||
}else{
|
||||
return "<a class = 'mta' href='/@".htmlentities($mentionsuserData["userid"])."'>@".replaceProfileEmojiImages(htmlentities($mentionsuserData["username"]))."</a>";
|
||||
}
|
||||
}, $postTextWithImages);
|
||||
|
||||
$hashtagsPattern = '/#([\p{Han}\p{Hiragana}\p{Katakana}A-Za-z0-9ー_]+)/u';
|
||||
$postTextWithHashtags = preg_replace_callback($hashtagsPattern, function($matches) {
|
||||
$hashtags = $matches[1];
|
||||
return "<a class='hashtags' href='/search?q=" . urlencode('#') . $hashtags . "'>" . '#' . $hashtags . "</a>";
|
||||
}, $postTextWithImagesAndUsernames);
|
||||
|
||||
return $postTextWithHashtags;
|
||||
}
|
||||
|
||||
function replaceURLsWithLinks($postText) {
|
||||
// URLを正規表現を使って検出
|
||||
$pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
|
||||
preg_match_all($pattern, $postText, $matches);
|
||||
|
||||
// 検出したURLごとに処理を行う
|
||||
foreach ($matches[0] as $url) {
|
||||
// ドメイン部分を抽出
|
||||
$parsedUrl = parse_url($url);
|
||||
if (!isset($parsedUrl['path'])) {
|
||||
$parsedUrl['path'] = '';
|
||||
}
|
||||
if (!isset($parsedUrl['query'])) {
|
||||
$parsedUrl['query'] = '';
|
||||
}
|
||||
|
||||
$nochk_domain = $parsedUrl['host'].$parsedUrl['path'].$parsedUrl['query'];
|
||||
|
||||
if(strlen($nochk_domain) > 47){
|
||||
$domain = mb_substr($nochk_domain, 0, 48, "UTF-8")."...";
|
||||
}else{
|
||||
$domain = $nochk_domain;
|
||||
}
|
||||
|
||||
// 不要な文字を削除してaタグを生成
|
||||
$urlWithoutSpaces = preg_replace('/\s+/', '', $url);
|
||||
$link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
|
||||
|
||||
// URLをドメインのみを表示するaタグで置き換え
|
||||
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
|
||||
}
|
||||
|
||||
return $postText;
|
||||
}
|
||||
|
||||
$userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower, blocklist FROM account WHERE userid = :userid");
|
||||
$userQuery->bindValue(':userid', $uwuzuid);
|
||||
$userQuery->execute();
|
||||
@@ -339,7 +224,7 @@ if( !empty($pdo) ) {
|
||||
$roleDataArray = array();
|
||||
|
||||
foreach ($roles as $roleId) {
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role");
|
||||
$rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor, roleeffect FROM role WHERE roleidname = :role");
|
||||
$rerole->bindValue(':role', $roleId);
|
||||
$rerole->execute();
|
||||
$roleDataArray[$roleId] = $rerole->fetch();
|
||||
@@ -466,14 +351,14 @@ if (!empty($_POST['follow'])) {
|
||||
// 通知用SQL作成
|
||||
$stmt = $pdo->prepare("INSERT INTO notification (fromuserid, touserid, msg, url, datetime, userchk, title) VALUES (:fromuserid, :touserid, :msg, :url, :datetime, :userchk, :title)");
|
||||
|
||||
$stmt->bindParam(':fromuserid', htmlspecialchars($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlspecialchars($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlspecialchars($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlspecialchars($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlspecialchars($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlspecialchars($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':fromuserid', htmlentities($fromuserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':touserid', htmlentities($touserid, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':msg', htmlentities($msg, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':url', htmlentities($url, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':userchk', htmlentities($userchk, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':title', htmlentities($title, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
$stmt->bindParam(':datetime', htmlspecialchars($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
$stmt->bindParam(':datetime', htmlentities($datetime, ENT_QUOTES, 'UTF-8', false), PDO::PARAM_STR);
|
||||
|
||||
// SQLクエリの実行
|
||||
$res = $stmt->execute();
|
||||
@@ -615,7 +500,7 @@ $pdo = null;
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/push.js/1.0.12/push.min.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/unsupported.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<script src="../js/nsfw_event.js"></script>
|
||||
@@ -625,7 +510,7 @@ $pdo = null;
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title><?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8', false); ?> さんのプロフィール - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title><?php echo htmlentities($userData['username'], ENT_QUOTES, 'UTF-8', false); ?> さんのプロフィール - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -685,28 +570,39 @@ $pdo = null;
|
||||
<!--ここまで!--->
|
||||
<?php }else{?>
|
||||
<div class="hed">
|
||||
<img src="<?php echo htmlspecialchars('../'.$userdata['headname'], ENT_QUOTES, 'UTF-8', false); ?>">
|
||||
<img src="<?php echo htmlentities('../'.$userdata['headname'], ENT_QUOTES, 'UTF-8', false); ?>">
|
||||
</div>
|
||||
<div class="icon">
|
||||
<img src="<?php echo htmlspecialchars('../'.$userdata['iconname'], ENT_QUOTES, 'UTF-8', false); ?>">
|
||||
<h2><?php echo replaceProfileEmojiImages(htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8', false)); ?></h2>
|
||||
<p>@<?php echo htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false); ?><!--<span>@<?php /*echo htmlentities($domain, ENT_QUOTES, 'UTF-8'); */?></span>--></p>
|
||||
<img src="<?php echo htmlentities('../'.$userdata['iconname'], ENT_QUOTES, 'UTF-8', false); ?>">
|
||||
<h2><?php echo replaceProfileEmojiImages(htmlentities($userData['username'], ENT_QUOTES, 'UTF-8', false)); ?></h2>
|
||||
<p>@<?php echo htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false); ?><!--<span>@<?php /*echo htmlentities($domain, ENT_QUOTES, 'UTF-8'); */?></span>--></p>
|
||||
</div>
|
||||
|
||||
<div class="roleboxes">
|
||||
<?php foreach ($roles as $roleId): ?>
|
||||
<?php $roleData = $roleDataArray[$roleId]; ?>
|
||||
<div class="rolebox" style="border: 1px solid <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php
|
||||
if(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == '' || htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'none'){
|
||||
$role_view_effect = "";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'shine'){
|
||||
$role_view_effect = "shine";
|
||||
}elseif(htmlentities($roleData["roleeffect"], ENT_QUOTES, 'UTF-8', false) == 'rainbow'){
|
||||
$role_view_effect = "rainbow";
|
||||
}else{
|
||||
$role_view_effect = "";
|
||||
}
|
||||
?>
|
||||
<div class="rolebox <?php echo htmlentities($role_view_effect, ENT_QUOTES, 'UTF-8', false); ?>" style="border: 1px solid <?php echo '#' . htmlentities($roleData["rolecolor"], ENT_QUOTES, 'UTF-8', false); ?>;">
|
||||
<p style="color: <?php echo '#' . $roleData["rolecolor"]; ?>;">
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlspecialchars($roleData["rolename"], ENT_QUOTES, 'UTF-8', false); }else{ echo("ロールが正常に設定されていません。");} ?>
|
||||
<?php if (!empty($roleData["rolename"])) { echo htmlentities($roleData["rolename"], ENT_QUOTES, 'UTF-8', false); }else{ echo("ロールが正常に設定されていません。");} ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
<?php if (false === strpos($myblocklist, ','.htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<?php if (false === strpos($myblocklist, ','.htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<div class="profile">
|
||||
<p><?php echo replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlspecialchars($profileText, ENT_QUOTES, 'UTF-8', false)))); ?></p>
|
||||
<p><?php echo replaceEmojisWithImages(replaceURLsWithLinks(nl2br(htmlentities($profileText, ENT_QUOTES, 'UTF-8', false)))); ?></p>
|
||||
</div>
|
||||
<?php }else{?>
|
||||
<div class="profile">
|
||||
@@ -718,7 +614,7 @@ $pdo = null;
|
||||
<div class="fzone">
|
||||
<div class="time">
|
||||
<p><?php echo date('Y年m月d日 H:i:s', strtotime($userdata['datetime'])); ?>からuwuzuを利用しています。</p>
|
||||
<p><?php if(htmlspecialchars($userdata['role'], ENT_QUOTES, 'UTF-8', false) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
|
||||
<p><?php if(htmlentities($userdata['role'], ENT_QUOTES, 'UTF-8', false) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
|
||||
</div>
|
||||
|
||||
<?php if(!empty($follow_yes)){?>
|
||||
@@ -727,8 +623,8 @@ $pdo = null;
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
<?php if ($userid !== htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false)) {?>
|
||||
<?php if (false !== strpos($myblocklist, ','.htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<?php if ($userid !== htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false)) {?>
|
||||
<?php if (false !== strpos($myblocklist, ','.htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<div class="follow">
|
||||
<a id="un_block" href="javascript:void(0);" class="report" title="ブロック解除"><svg><use xlink:href="../img/sysimage/unblock_1.svg#block"></use></svg></a>
|
||||
</div>
|
||||
@@ -740,7 +636,7 @@ $pdo = null;
|
||||
<?php }?>
|
||||
|
||||
<div class="follow">
|
||||
<a href="/user/report?q=<?php echo htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false); ?>" class="report" title="通報"><svg><use xlink:href="../img/sysimage/report_1.svg#report"></use></svg></a>
|
||||
<a href="/user/report?q=<?php echo htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false); ?>" class="report" title="通報"><svg><use xlink:href="../img/sysimage/report_1.svg#report"></use></svg></a>
|
||||
</div>
|
||||
<?php if ($userData['userid'] == $userid) { ?>
|
||||
<div class="follow">
|
||||
@@ -748,7 +644,7 @@ $pdo = null;
|
||||
</div>
|
||||
<?php } else { ?>
|
||||
|
||||
<?php if (false === strpos($myblocklist, ','.htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<?php if (false === strpos($myblocklist, ','.htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<form method="post">
|
||||
<div class="follow">
|
||||
<?php
|
||||
@@ -773,17 +669,17 @@ $pdo = null;
|
||||
<div class="sp_time_area">
|
||||
<div class="time">
|
||||
<p><?php echo date('Y年m月d日 H:i:s', strtotime($userdata['datetime'])); ?>からuwuzuを利用しています。</p>
|
||||
<p><?php if(htmlspecialchars($userdata['role'], ENT_QUOTES, 'UTF-8', false) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
|
||||
<p><?php if(htmlentities($userdata['role'], ENT_QUOTES, 'UTF-8', false) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if(!($role === "ice")){?>
|
||||
<div id="myModal" class="modal">
|
||||
<div class="modal-content">
|
||||
<p><?php echo replaceProfileEmojiImages(htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんをフォロー解除しますか?</p>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlentities($userData['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんをフォロー解除しますか?</p>
|
||||
<form class="btn_area" method="post">
|
||||
<input type="submit" id="openModalButton" class="fbtn_no" name="unfollow" value="フォロー解除">
|
||||
<input type="button" id="closeModal" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="openModalButton" class="fbtn" name="unfollow" value="フォロー解除">
|
||||
<input type="button" id="closeModal" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -811,7 +707,7 @@ $pdo = null;
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<?php if (false === strpos($myblocklist, ','.htmlspecialchars($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<?php if (false === strpos($myblocklist, ','.htmlentities($userData['userid'], ENT_QUOTES, 'UTF-8', false))) {?>
|
||||
<section class="inner">
|
||||
<div id="postContainer">
|
||||
|
||||
@@ -822,7 +718,7 @@ $pdo = null;
|
||||
🤔
|
||||
</div>
|
||||
<?php }else{?>
|
||||
<div class="tokonone" id="noueuse"><p><?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8', false); ?>さんをブロックしているため投稿の閲覧は出来ません。</p></div>
|
||||
<div class="tokonone" id="noueuse"><p><?php echo htmlentities($userData['username'], ENT_QUOTES, 'UTF-8', false); ?>さんをブロックしているため投稿の閲覧は出来ません。</p></div>
|
||||
<?php }?>
|
||||
|
||||
<div id="error" class="error" style="display: none;">
|
||||
@@ -834,8 +730,8 @@ $pdo = null;
|
||||
<div class="modal-content">
|
||||
<p>ユーズを削除しますか?</p>
|
||||
<form class="btn_area" method="post" id="deleteForm">
|
||||
<input type="button" id="deleteButton" class="fbtn_no" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="button" id="deleteButton" class="fbtn" name="delete" value="削除">
|
||||
<input type="button" id="cancelButton" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -845,33 +741,39 @@ $pdo = null;
|
||||
<p>ユーズに追記しますか?</p>
|
||||
<p>※追記は削除出来ません。</p>
|
||||
<form method="post" id="AbiForm">
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlspecialchars( $_SESSION['abi'], ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
<textarea id="abitexts" placeholder="なに追記する~?" name="abi"><?php if( !empty($_SESSION['abi']) ){ echo htmlentities( $_SESSION['abi'], ENT_QUOTES, 'UTF-8', false); } ?></textarea>
|
||||
<div class="btn_area">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn_no" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="AbiAddButton" class="fbtn" name="abi" value="追記">
|
||||
<input type="button" id="AbiCancelButton" class="fbtn_no" value="キャンセル">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Big_ImageModal" class="Image_modal">
|
||||
<div class="modal-content">
|
||||
<img id="Big_ImageMain" href="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="account_BlockModal" class="modal">
|
||||
<div class="modal-content">
|
||||
<h1><?php echo replaceProfileEmojiImages(htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんをブロックしますか?</h1>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのアカウントをブロックしますか?<br>ブロックするとフォローが解除され、検索以外のLTL、FTL等で<?php echo htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false); ?>さんの投稿が表示されなくなります。<br>また、相手からこのアカウントを閲覧することもできなくなります。<br>※ブロックしたことは相手には通知されません。<br><br>ブロックを解除するときはこのアカウントのユーザーページ(このページ)から解除を行ってください。</p>
|
||||
<h1><?php echo replaceProfileEmojiImages(htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんをブロックしますか?</h1>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのアカウントをブロックしますか?<br>ブロックするとフォローが解除され、検索以外のLTL、FTL等で<?php echo htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false); ?>さんの投稿が表示されなくなります。<br>また、相手からこのアカウントを閲覧することもできなくなります。<br>※ブロックしたことは相手には通知されません。<br><br>ブロックを解除するときはこのアカウントのユーザーページ(このページ)から解除を行ってください。</p>
|
||||
<form class="btn_area" method="post">
|
||||
<input type="submit" id="deleteButton2" class="fbtn_no" name="send_block_submit" value="ブロック">
|
||||
<input type="button" id="cancelButton2" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="deleteButton2" class="fbtn" name="send_block_submit" value="ブロック">
|
||||
<input type="button" id="cancelButton2" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="account_un_BlockModal" class="modal">
|
||||
<div class="modal-content">
|
||||
<h1><?php echo replaceProfileEmojiImages(htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのブロックを解除しますか?</h1>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのアカウントをブロック解除しますか?<br>ブロック解除すると<?php echo htmlspecialchars($userdata['username'], ENT_QUOTES, 'UTF-8', false); ?>さんの投稿の閲覧が可能になりフォローすることもできるようになります。</p>
|
||||
<h1><?php echo replaceProfileEmojiImages(htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのブロックを解除しますか?</h1>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false)); ?>さんのアカウントをブロック解除しますか?<br>ブロック解除すると<?php echo htmlentities($userdata['username'], ENT_QUOTES, 'UTF-8', false); ?>さんの投稿の閲覧が可能になりフォローすることもできるようになります。</p>
|
||||
<form class="btn_area" method="post">
|
||||
<input type="submit" id="deleteButton3" class="fbtn_no" name="send_un_block_submit" value="ブロック解除">
|
||||
<input type="button" id="cancelButton3" class="fbtn" value="キャンセル">
|
||||
<input type="submit" id="deleteButton3" class="fbtn" name="send_un_block_submit" value="ブロック解除">
|
||||
<input type="button" id="cancelButton3" class="fbtn_no" value="キャンセル">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -879,22 +781,22 @@ $pdo = null;
|
||||
|
||||
<div id="FollowerUserModal" class="modal">
|
||||
<div class="modal-content">
|
||||
<p><?php echo replaceProfileEmojiImages(htmlspecialchars($userData["username"], ENT_QUOTES, 'UTF-8', false));?>さんをフォローしているユーザー</p>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlentities($userData["username"], ENT_QUOTES, 'UTF-8', false));?>さんをフォローしているユーザー</p>
|
||||
<?php
|
||||
if(!empty($follower_userdata)){
|
||||
foreach ($follower_userdata as $value) {
|
||||
if (false === strpos($myblocklist, ',' . htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false))) {
|
||||
if (false === strpos($myblocklist, ',' . htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false))) {
|
||||
echo "<div class='action_userlist'>";
|
||||
echo "<a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'><img src=".htmlspecialchars($value['iconname'], ENT_QUOTES, 'UTF-8', false)."></a>";
|
||||
echo "<a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'><img src=".htmlentities($value['iconname'], ENT_QUOTES, 'UTF-8', false)."></a>";
|
||||
echo "<div class='userabout'>";
|
||||
echo "<div class='username'><a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>".replaceEmojisWithImages(htmlspecialchars($value['username'], ENT_QUOTES, 'UTF-8', false))."</a></div>";
|
||||
echo "<div class='userid'><a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."</a></div>";
|
||||
echo "<div class='username'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>".replaceEmojisWithImages(htmlentities($value['username'], ENT_QUOTES, 'UTF-8', false))."</a></div>";
|
||||
echo "<div class='userid'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."</a></div>";
|
||||
echo "</div>";
|
||||
echo "</div>";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
echo "<p>".replaceProfileEmojiImages(htmlspecialchars($userData["username"], ENT_QUOTES, 'UTF-8', false))."さんは誰にもフォローされていません。</p>";
|
||||
echo "<p>".replaceProfileEmojiImages(htmlentities($userData["username"], ENT_QUOTES, 'UTF-8', false))."さんは誰にもフォローされていません。</p>";
|
||||
}
|
||||
?>
|
||||
<div class="btn_area">
|
||||
@@ -905,22 +807,22 @@ $pdo = null;
|
||||
|
||||
<div id="FollowUserModal" class="modal">
|
||||
<div class="modal-content">
|
||||
<p><?php echo replaceProfileEmojiImages(htmlspecialchars($userData["username"], ENT_QUOTES, 'UTF-8', false));?>さんがフォローしているユーザー</p>
|
||||
<p><?php echo replaceProfileEmojiImages(htmlentities($userData["username"], ENT_QUOTES, 'UTF-8', false));?>さんがフォローしているユーザー</p>
|
||||
<?php
|
||||
if(!empty($follow_userdata)){
|
||||
foreach ($follow_userdata as $value) {
|
||||
if (false === strpos($myblocklist, ',' . htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false))) {
|
||||
if (false === strpos($myblocklist, ',' . htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false))) {
|
||||
echo "<div class='action_userlist'>";
|
||||
echo "<a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'><img src=".htmlspecialchars($value['iconname'], ENT_QUOTES, 'UTF-8', false)."></a>";
|
||||
echo "<a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'><img src=".htmlentities($value['iconname'], ENT_QUOTES, 'UTF-8', false)."></a>";
|
||||
echo "<div class='userabout'>";
|
||||
echo "<div class='username'><a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>".replaceEmojisWithImages(htmlspecialchars($value['username'], ENT_QUOTES, 'UTF-8', false))."</a></div>";
|
||||
echo "<div class='userid'><a href='/@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>@".htmlspecialchars($value['userid'], ENT_QUOTES, 'UTF-8', false)."</a></div>";
|
||||
echo "<div class='username'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>".replaceEmojisWithImages(htmlentities($value['username'], ENT_QUOTES, 'UTF-8', false))."</a></div>";
|
||||
echo "<div class='userid'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."'>@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8', false)."</a></div>";
|
||||
echo "</div>";
|
||||
echo "</div>";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
echo "<p>".replaceProfileEmojiImages(htmlspecialchars($userData["username"], ENT_QUOTES, 'UTF-8', false))."さんは誰もフォローしていません。</p>";
|
||||
echo "<p>".replaceProfileEmojiImages(htmlentities($userData["username"], ENT_QUOTES, 'UTF-8', false))."さんは誰もフォローしていません。</p>";
|
||||
}
|
||||
?>
|
||||
<div class="btn_area">
|
||||
@@ -935,6 +837,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$serversettings_file = "../../server/serversettings.ini";
|
||||
$serversettings = parse_ini_file($serversettings_file, true);
|
||||
if(htmlspecialchars($serversettings["serverinfo"]["server_activitypub"], ENT_QUOTES, 'UTF-8') === "true"){
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/activity+json");
|
||||
header("charset=utf-8");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
|
||||
|
||||
+3
-2
@@ -424,7 +424,7 @@ $pdo = null;
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
@@ -432,7 +432,7 @@ $pdo = null;
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
<title><?php echo htmlentities($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんを通報 - <?php echo htmlspecialchars($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
<title><?php echo htmlentities($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんを通報 - <?php echo htmlentities($serversettings["serverinfo"]["server_name"], ENT_QUOTES, 'UTF-8');?></title>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -487,6 +487,7 @@ $pdo = null;
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
@@ -177,6 +177,7 @@ require('../logout/logout.php');
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="../css/home.css">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<script src="../js/jquery-min.js"></script>
|
||||
<script src="../js/console_notice.js"></script>
|
||||
<link rel="apple-touch-icon" type="image/png" href="../favicon/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="../favicon/icon-192x192.png">
|
||||
@@ -212,6 +213,7 @@ require('../logout/logout.php');
|
||||
|
||||
<?php require('../require/rightbox.php');?>
|
||||
<?php require('../require/botbox.php');?>
|
||||
<?php require('../require/noscript_modal.php');?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+6
-4
@@ -2,8 +2,8 @@
|
||||
-- version 5.2.1
|
||||
-- https://www.phpmyadmin.net/
|
||||
--
|
||||
-- ホスト: XXX.XXX.XXX.XXX
|
||||
-- 生成日時: 2024-02-24 19:11:00
|
||||
-- ホスト: ひ.み.つ
|
||||
-- 生成日時: 2024-03-26 14:43:05
|
||||
-- サーバのバージョン: 10.4.32-MariaDB
|
||||
-- PHP のバージョン: 8.2.12
|
||||
|
||||
@@ -18,7 +18,7 @@ SET time_zone = "+00:00";
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
|
||||
--
|
||||
-- データベース: `uwuzu_db`
|
||||
-- データベース: `account`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
@@ -103,6 +103,7 @@ CREATE TABLE `invitation` (
|
||||
|
||||
CREATE TABLE `notice` (
|
||||
`sysid` int(11) NOT NULL,
|
||||
`uniqid` varchar(256) NOT NULL,
|
||||
`title` varchar(1024) NOT NULL,
|
||||
`note` mediumtext NOT NULL,
|
||||
`account` varchar(256) NOT NULL,
|
||||
@@ -153,7 +154,8 @@ CREATE TABLE `role` (
|
||||
`rolename` varchar(512) NOT NULL,
|
||||
`roleauth` varchar(256) NOT NULL,
|
||||
`rolecolor` varchar(32) NOT NULL,
|
||||
`roleidname` varchar(512) NOT NULL
|
||||
`roleidname` varchar(512) NOT NULL,
|
||||
`roleeffect` varchar(256) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
@@ -22,6 +22,7 @@ post_not_found - ユーズが存在しない時に表示されます。
|
||||
ueuseid_not_found - ユーズが存在しない時に表示されます。
|
||||
critical_error_userdata_not_found - ユーザーデータがない時に表示されます。
|
||||
userid_not_found - ユーザーデータがない時に表示されます。
|
||||
API_has_been_deleted - APIが削除または統合、変更された場合に表示されます。
|
||||
|
||||
----------(UWUZU ERR CODE)----------
|
||||
FILE_DEKASUGUI_PHP_INI_KAKUNIN - php.iniで設定されているファイルサイズ上限を上回っている時に表示されます。
|
||||
@@ -113,6 +114,10 @@ OVER_RATE_LIMIT - 投稿回数のレート制限を超過している場合に
|
||||
|
||||
BOOKMARK_NOT_DELETED - ブックマークの削除に失敗した場合に表示されます。
|
||||
|
||||
JS_BLOCKED_ERROR - JavaScriptがブラウザにより無効化されている場合に表示されます。
|
||||
|
||||
NOTICE_DELETE_DAME - サーバーからのお知らせの削除に失敗した場合に表示されます。
|
||||
|
||||
ERROR - 想定されていないエラーが発生した際に表示されます。
|
||||
|
||||
----------(OTHERS ERR CODE)----------
|
||||
|
||||
Reference in New Issue
Block a user