1
0
mirror of https://github.com/Daichimarukana/uwuzu.git synced 2026-06-05 03:24:41 +00:00

uwuzu version 1.2.25

This commit is contained in:
daichimarukana
2023-10-22 23:45:14 +09:00
parent 0ecf4b9fb1
commit 884f8043a3
33 changed files with 814 additions and 113 deletions
+2
View File
@@ -9,5 +9,7 @@ if(file_get_contents($activitypub_file) === "true"){
echo '<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">'; echo '<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">';
echo '<Link rel="lrdd" type="application/xrd+xml" template="https://'.$domain.'/.well-known/webfinger?resource={uri}"/>'; echo '<Link rel="lrdd" type="application/xrd+xml" template="https://'.$domain.'/.well-known/webfinger?resource={uri}"/>';
echo '</XRD>'; echo '</XRD>';
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+2
View File
@@ -15,5 +15,7 @@ if(file_get_contents($activitypub_file) === "true"){
); );
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+3 -1
View File
@@ -21,7 +21,7 @@ if(file_get_contents($activitypub_file) === "true"){
$user = htmlentities($_GET['resource']); $user = htmlentities($_GET['resource']);
$userid = str_replace('@','', str_replace('@'.$domain.'', '', $user)); $userid = str_replace('acct:','', str_replace('@'.$domain.'', '', $user));
$item = array( $item = array(
"subject" => "acct:".$userid.'@'.$domain.'', "subject" => "acct:".$userid.'@'.$domain.'',
@@ -35,5 +35,7 @@ if(file_get_contents($activitypub_file) === "true"){
); );
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+2
View File
@@ -77,5 +77,7 @@ if(file_get_contents($activitypub_file) === "true"){
); );
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
} }
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+327 -22
View File
@@ -460,6 +460,7 @@ svg {
main{ main{
position: relative;
height: 95dvh; height: 95dvh;
overflow: auto; overflow: auto;
border-radius: 17px; border-radius: 17px;
@@ -467,7 +468,7 @@ main{
margin-left: 12px; margin-left: 12px;
margin-right: 12px; margin-right: 12px;
width: 60%; width: 60%;
background-color: var(--tl-color-color); background-color: var(--tl-color);
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05);
border: 1px solid var(--main-color); border: 1px solid var(--main-color);
} }
@@ -644,6 +645,7 @@ main h1{
width: auto; width: auto;
height: 48px; height: 48px;
display: flex; display: flex;
align-items: stretch;
padding-left: 12px; padding-left: 12px;
padding-right: 12px; padding-right: 12px;
} }
@@ -746,11 +748,11 @@ main h1{
padding-bottom: 6px; padding-bottom: 6px;
background-color: var(--main-color); background-color: var(--sub-color);
border-radius: 50px; border-radius: 50px;
color:var(--link-color); color:var(--main-color);
border: none; border: 1px solid var(--main-color);
font-size: 16px; font-size: 16px;
font-family: 'Zen Maru Gothic', sans-serif; font-family: 'Zen Maru Gothic', sans-serif;
font-weight: normal; font-weight: normal;
@@ -762,7 +764,7 @@ main h1{
} }
.fzone .follow .fbtn_un:hover{ .fzone .follow .fbtn_un:hover{
background-color: var(--sub-color); background-color: var(--sub-color);
color: var(--main-color); color: var(--text-color);
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2);
width:125px; width:125px;
} }
@@ -847,21 +849,34 @@ main h1{
} }
.fzone .follow_yes{ .fzone .follow_yes{
margin-top: auto; border: none;
margin-bottom: 0px; display: block;
width:auto;
height: auto;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: 12px;
margin-top: 12px;
margin-bottom: 0px;
background-color: var(--sub-color); background-color: var(--sub-color);
border-radius: 10px;
padding: 12px; border-radius: 50px;
color:var(--main-color);
} }
.fzone .follow_yes p{ .fzone .follow_yes p{
margin-top: 0px; overflow-wrap: break-word;
margin-bottom: 0px; margin: 0px;
text-align: left; margin-top: auto;
font-size: 12px; margin-bottom: auto;
color:var(--text-color); margin-left: 6px;
font-family: 'BIZ UDPGothic', sans-serif; margin-right: 6px;
font-size: 10px;
font-family: 'BIZUD Gothic', sans-serif;
font-weight: normal;
text-decoration:none;
text-align: center;
} }
.select_utl{ .select_utl{
margin: 0px; margin: 0px;
@@ -1106,7 +1121,6 @@ main h1{
.ueuse a{ .ueuse a{
margin-top: auto; margin-top: auto;
margin-bottom: auto; margin-bottom: auto;
margin-left: 6px;
font-size: 16px; font-size: 16px;
color:var(--link-color); color:var(--link-color);
text-decoration: none; text-decoration: none;
@@ -1236,8 +1250,8 @@ main h1{
.ueuse .abi p{ .ueuse .abi p{
line-height:20px; line-height:20px;
overflow-wrap: break-word; overflow-wrap: break-word;
margin-top: 12px; margin-top: 0px;
margin-bottom: 12px; margin-bottom: 0px;
margin-left: auto; margin-left: auto;
font-size: 14px; font-size: 14px;
color:var(--text-color); color:var(--text-color);
@@ -1251,6 +1265,7 @@ main h1{
padding: 12px; padding: 12px;
border-radius: 7px; border-radius: 7px;
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
margin-bottom: 12px;
} }
.ueuse .abi .back h1{ .ueuse .abi .back h1{
@@ -1264,11 +1279,44 @@ main h1{
font-family: 'BIZ UDPGothic', sans-serif; font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold; font-weight: bold;
} }
.ueuse .abi h1{
overflow-wrap: break-word;
margin-top: auto;
margin-bottom: auto;
margin-left: auto;
font-size: 42px;
color: var(--text-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.ueuse .abi h2{
overflow-wrap: break-word;
margin-top: auto;
margin-bottom: auto;
margin-left: auto;
font-size: 32px;
color: var(--text-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.ueuse .abi h3{ .ueuse .abi h3{
overflow-wrap: break-word; overflow-wrap: break-word;
margin-top: auto; margin-top: auto;
margin-bottom: auto; margin-bottom: auto;
margin-left: auto; margin-left: auto;
font-size: 24px;
color: var(--text-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.ueuse .abi .h3s{
overflow-wrap: break-word;
margin-top: 12px;
margin-bottom: auto;
margin-left: auto;
font-size: 12px; font-size: 12px;
color:var(--subtext-color); color:var(--subtext-color);
text-decoration: none; text-decoration: none;
@@ -2244,12 +2292,14 @@ label>input {
padding: 16px; padding: 16px;
border-radius: 10px; border-radius: 10px;
width: 20%; width: 20%;
max-height: 348px;
position: absolute; position: absolute;
top: 30%; top: 30%;
left: 40%; left: 40%;
right: 40%; right: 40%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
overflow: scroll;
} }
.modal-content textarea{ .modal-content textarea{
@@ -2368,6 +2418,49 @@ label>input {
width:115px; width:115px;
} }
.modal-content .action_userlist{
display: flex;
width: auto;
background-color: var(--ueuse-color);
border-radius: 10px;
border: 1px solid var(--border-color);
padding: 12px;
margin-top: 6px;
margin-bottom: 6px;
}
.modal-content .action_userlist img{
width: 48px;
height: 48px;
object-fit: cover;
border-radius: 50%;
}
.modal-content .action_userlist .userabout{
display: block;
margin-left: 12px;
margin-top: auto;
margin-bottom: auto;
}
.modal-content .action_userlist .userabout .username a{
line-height: 20px;
overflow-wrap: break-word;
font-size: 16px;
color:var(--text-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.modal-content .action_userlist .userabout .userid a{
line-height: 20px;
overflow-wrap: break-word;
font-size: 14px;
color:var(--subtext-color);
text-decoration: none;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.modal-content.slideUp { .modal-content.slideUp {
animation: SlideUp .3s ease-out forwards; animation: SlideUp .3s ease-out forwards;
} }
@@ -2483,9 +2576,11 @@ label>input {
} }
.terms img{ .terms img{
background-color: var(--background-color); width:100%;
background: linear-gradient(45deg, var(--dark-subtext-color) 25%, transparent 25%, transparent 75%, var(--dark-subtext-color) 75%), height:260px;
linear-gradient(45deg, var(--dark-subtext-color) 25%, transparent 25%, transparent 75%, var(--dark-subtext-color) 75%); 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-size: 20px 20px;
background-position: 0 0, 10px 10px; background-position: 0 0, 10px 10px;
object-fit: cover; object-fit: cover;
@@ -2535,6 +2630,28 @@ label>input {
font-weight: bold; font-weight: bold;
} }
.terms .sp2c{
margin-top: 0px;
margin-bottom: 10px;
text-align: center;
word-wrap: break-word;
line-height: 20px;
color: var(--subtext-color);
font-size: 12px;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: normal;
}
.terms .sp3{
margin-top: 24px;
text-align: center;
word-wrap: break-word;
line-height: 24px;
color: var(--text-color);
font-size: 22px;
font-family: 'BIZ UDPGothic', sans-serif;
font-weight: bold;
}
.terms ul{ .terms ul{
margin-top: 6px; margin-top: 6px;
margin-bottom: 6px; margin-bottom: 6px;
@@ -3774,6 +3891,7 @@ summary {
margin-top: 12px; margin-top: 12px;
margin-left: 12px; margin-left: 12px;
margin-right:12px; margin-right:12px;
margin-bottom: 12px;
background-color: var(--sub-color); background-color: var(--sub-color);
padding: 12px; padding: 12px;
@@ -3881,6 +3999,71 @@ summary {
font-weight: normal; font-weight: normal;
text-align: center; text-align: center;
} }
.sp_time_area{
display: none;
}
.offline{
position: absolute;
animation: slideDownOffline 5.0s ease-in-out forwards;
margin-top: 32px;
margin-right: auto;
margin-left: auto;
right: 0;
left: 0;
width: fit-content;
height: 32px;
z-index: 9999;
background-color: #FF4848;
border-radius: 20px;
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
}
.offline p{
margin-top: 4px;
margin-bottom: 4px;
margin-left: 12px;
margin-right: 12px;
line-height: 24px;
font-family: 'BIZ UDPGothic', sans-serif;
font-size: 16px;
color:var(--tl-color);
color: transparent;
text-shadow: 0 0 0 var(--tl-color);
text-align: center;
}
@keyframes slideDownOffline {
0%, 100% { transform: translateY(-40dvh); }
20%, 90% { transform: translateY(0px); }
}
.online{
position: absolute;
animation: slideDownOffline 5.0s ease-in-out forwards;
margin-top: 32px;
margin-right: auto;
margin-left: auto;
right: 0;
left: 0;
width: fit-content;
height: 32px;
z-index: 9999;
background-color: #1d9bf0;
border-radius: 20px;
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15);
}
.online p{
margin-top: 4px;
margin-bottom: 4px;
margin-left: 12px;
margin-right: 12px;
line-height: 24px;
font-family: 'BIZ UDPGothic', sans-serif;
font-size: 16px;
color:var(--tl-color);
color: transparent;
text-shadow: 0 0 0 var(--tl-color);
text-align: center;
}
/*------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------スマホ向け--------------------------------------------------*/ /*--------------------------------------------------スマホ向け--------------------------------------------------*/
@@ -3946,6 +4129,41 @@ summary {
.fzone{ .fzone{
margin-left: 12px; margin-left: 12px;
margin-right: 12px; margin-right: 12px;
justify-content: flex-end
}
.fzone .time{
display: none;
}
.sp_time_area{
display: block;
margin-left: 24px;
margin-right:24px;
}
.sp_time_area .time{
margin-top: auto;
margin-bottom: 24px;
margin-left: 0px;
margin-right: auto;
}
.sp_time_area .time p{
margin-top: 0px;
margin-bottom: 0px;
margin-right: 32px;
text-align: left;
font-size: 12px;
color:var(--subtext-color);
font-family: 'BIZ UDPGothic', sans-serif;
}
.sp_time_area .time a{
margin-top: 0px;
margin-bottom: 0px;
text-align: left;
font-size: 12px;
color:var(--subtext-color);
font-family: 'BIZ UDPGothic', sans-serif;
} }
main{ main{
@@ -3969,6 +4187,13 @@ summary {
font-family: 'Zen Maru Gothic', sans-serif; font-family: 'Zen Maru Gothic', sans-serif;
} }
.fzone .follow_yes p{
margin-top: 10px;
margin-bottom: 10px;
margin-left: 6px;
margin-right: 6px;
}
.sendbox .fx img{ .sendbox .fx img{
object-fit: cover; object-fit: cover;
margin-left: -12px; margin-left: -12px;
@@ -4881,6 +5106,8 @@ summary {
width: calc(100% - 48px); width: calc(100% - 48px);
margin-bottom: 0px; margin-bottom: 0px;
height: 55dvh; height: 55dvh;
max-height: 55dvh;
overflow: scroll;
padding: 24px; padding: 24px;
bottom: 0px; bottom: 0px;
left: 0; left: 0;
@@ -5183,6 +5410,12 @@ summary {
text-align: center; text-align: center;
margin-bottom: 15%; margin-bottom: 15%;
} }
.offline{
margin-top: 12px;
}
.online{
margin-top: 12px;
}
} }
/*------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------------------------*/
@@ -5319,7 +5552,16 @@ summary {
.ueuse .abi .back h1{ .ueuse .abi .back h1{
color:var(--text-color); color:var(--text-color);
} }
.ueuse .abi h1{
color:var(--dark-text-color);
}
.ueuse .abi h2{
color:var(--dark-text-color);
}
.ueuse .abi h3{ .ueuse .abi h3{
color:var(--dark-text-color);
}
.ueuse .abi .h3s{
color:var(--dark-subtext-color); color:var(--dark-subtext-color);
} }
.ueuse .favbox .favbtn{ .ueuse .favbox .favbtn{
@@ -5425,6 +5667,47 @@ summary {
background-color: var(--dark-sub-color); background-color: var(--dark-sub-color);
color: var(--main-color); color: var(--main-color);
} }
.fzone .follow .fbtn_un{
cursor: pointer;
border: none;
display: block;
width:120px;
padding: 8px auto;
margin-left: auto;
margin-right: 0px;
margin-top: 12px;
margin-bottom: 12px;
padding-top: 6px;
padding-bottom: 6px;
background-color: var(--dark-sub-color);
border-radius: 50px;
color:var(--main-color);
border: 1px solid var(--main-color);
font-size: 16px;
font-family: 'Zen Maru Gothic', sans-serif;
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;
}
.fzone .follow .fbtn_un:hover{
background-color: var(--dark-sub-color);
color: var(--dark-text-color);
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2);
width:125px;
}
.fzone .follow .fbtn_un:active{
box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05);
width:115px;
}
.fzone .time p{ .fzone .time p{
color:var(--dark-subtext-color); color:var(--dark-subtext-color);
} }
@@ -5568,6 +5851,17 @@ summary {
color: var(--main-color); color: var(--main-color);
} }
.modal-content .action_userlist{
background-color: var(--dark-background-color);
border:none;
}
.modal-content .action_userlist .userabout .username a{
color:var(--dark-text-color);
}
.modal-content .action_userlist .userabout .userid a{
color:var(--dark-subtext-color);
}
.inbox { .inbox {
background: var(--dark-background-color); background: var(--dark-background-color);
color: var(--background-color); color: var(--background-color);
@@ -5673,6 +5967,13 @@ summary {
.terms .p3{ .terms .p3{
color: var(--background-color); color: var(--background-color);
} }
.terms .sp2c{
color: var(--dark-subtext-color);
}
.terms .sp3{
color: var(--background-color);
}
.terms .err404 h1{ .terms .err404 h1{
color: var(--dark-subtext-color); color: var(--dark-subtext-color);
@@ -5877,4 +6178,8 @@ summary {
.f_c_area .fcnt p{ .f_c_area .fcnt p{
color: var(--dark-text-color); color: var(--dark-text-color);
} }
.userheader .profile p a{
color:var(--main-color);
}
} }
+2 -2
View File
@@ -1,8 +1,8 @@
<?php // データベースの接続情報 <?php // データベースの接続情報
define( 'DB_HOST', 'localhost'); define( 'DB_HOST', 'localhost');
define( 'DB_USER', 'rood'); define( 'DB_USER', 'root');
define( 'DB_PASS', 'root'); define( 'DB_PASS', 'root');
define( 'DB_NAME', 'account'); define( 'DB_NAME', 'uwuzu_db');
// タイムゾーン設定 // タイムゾーン設定
date_default_timezone_set('Asia/Tokyo'); date_default_timezone_set('Asia/Tokyo');
+4
View File
@@ -48,6 +48,10 @@ $termsdata = file_get_contents($termsfile);
<?php }?> <?php }?>
<h1>404 Not found</h1> <h1>404 Not found</h1>
<p>申し訳ございませんがお探しのページは見つかりませんでした!<br>ページの移動や削除が行われた可能性がございます。</p> <p>申し訳ございませんがお探しのページは見つかりませんでした!<br>ページの移動や削除が行われた可能性がございます。</p>
<p><?php if (rand(1, 100) === 1) {
echo "さがすのがんばれよ...(?)";
}
?></p>
</div> </div>
<a href="/home/" class="irobutton">ホームへ行く</a> <a href="/home/" class="irobutton">ホームへ行く</a>
+26
View File
@@ -467,9 +467,19 @@ if ("serviceWorker" in navigator) {
<body> <body>
<div>
<div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p>
</div>
<div id="online" class="online" style="display:none;">
<p>🌐💫 インターネットへの接続が復帰しました!!!</p>
</div>
</div>
<?php require('../require/leftbox.php');?> <?php require('../require/leftbox.php');?>
<main class="outer"> <main class="outer">
<div class="tlchange"> <div class="tlchange">
<a href="index" class="off">LTL</a> <a href="index" class="off">LTL</a>
<a href="ftl" class="on">FTL</a> <a href="ftl" class="on">FTL</a>
@@ -803,6 +813,22 @@ $(document).on('click', '.addabi', function (event) {
}); });
}); });
window.addEventListener('online', function(){
checkOnline();
});
window.addEventListener('offline', function(){
checkOnline();
});
function checkOnline() {
if( navigator.onLine ) {
$("#online").show();
$("#offline").hide();
} else {
$("#online").hide();
$("#offline").show();
}
}
var osho_gats = document.getElementById('osho_gats'); var osho_gats = document.getElementById('osho_gats');
$(document).on('click', '.os_exit_btn', function (event) { $(document).on('click', '.os_exit_btn', function (event) {
document.cookie = "event=done; max-age=86400"; document.cookie = "event=done; max-age=86400";
+26
View File
@@ -467,6 +467,15 @@ if ("serviceWorker" in navigator) {
<body> <body>
<div>
<div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p>
</div>
<div id="online" class="online" style="display:none;">
<p>🌐💫 インターネットへの接続が復帰しました!!!</p>
</div>
</div>
<?php require('../require/leftbox.php');?> <?php require('../require/leftbox.php');?>
<main class="outer"> <main class="outer">
@@ -497,6 +506,7 @@ if ("serviceWorker" in navigator) {
</div> </div>
<?php }?> <?php }?>
<?php }?> <?php }?>
<div class="tlchange"> <div class="tlchange">
<a href="index" class="on">LTL</a> <a href="index" class="on">LTL</a>
<a href="ftl" class="off">FTL</a> <a href="ftl" class="off">FTL</a>
@@ -828,6 +838,22 @@ $(document).ready(function() {
}); });
}); });
window.addEventListener('online', function(){
checkOnline();
});
window.addEventListener('offline', function(){
checkOnline();
});
function checkOnline() {
if( navigator.onLine ) {
$("#online").show();
$("#offline").hide();
} else {
$("#online").hide();
$("#offline").show();
}
}
var osho_gats = document.getElementById('osho_gats'); var osho_gats = document.getElementById('osho_gats');
$(document).on('click', '.os_exit_btn', function (event) { $(document).on('click', '.os_exit_btn', function (event) {
+5
View File
@@ -0,0 +1,5 @@
<svg version="1.1" id="privacypolicy" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 720 720" style="fill-rule:evenodd;stroke:none" xml:space="preserve">
<g>
<path d="M 56.0 209.82521 C 55.517548 217.75914 57.89049 225.07372 60.47588 232.19368 C 76.08677 286.7041 97.62354 339.24997 121.08526 390.72992 C 138.39935 427.65692 157.22063 463.82016 178.45885 498.67892 C 210.64148 551.28595 247.56293 602.475 296.00955 641.4103 C 318.55392 657.84534 350.197 677.6673 384.32495 665.2648 C 413.5022 654.95715 437.4955 634.03033 458.9751 612.5249 C 511.0154 558.7049 549.6463 493.54172 583.8527 427.52426 C 601.7652 393.45636 616.7162 357.83228 631.1495 322.19922 C 638.0402 303.87997 645.6513 285.80273 651.2094 267.02206 C 654.67633 257.41357 657.65234 247.64647 660.8626 237.96286 C 663.6631 228.61429 667.51306 219.32707 666.99994 209.37335 C 667.88165 195.85805 658.4737 182.51212 645.427 178.73329 C 631.53094 174.10582 620.4638 180.50867 608.1544 185.87865 C 562.45135 204.15715 509.80405 201.17116 464.89777 182.10506 C 448.58133 175.2148 432.98572 166.44905 418.98965 155.57947 C 413.18704 150.6526 406.84375 146.3895 401.05103 141.47154 C 391.0025 132.10406 381.29172 116.41859 367.60916 114.5033 C 361.35886 113.450745 353.72272 114.2448 348.26965 116.16561 C 337.45703 121.45666 331.89758 133.419 322.69382 140.59686 C 291.8326 166.86102 255.62418 188.66943 214.8391 194.86433 C 192.95305 198.84413 170.4763 199.06113 148.53581 195.41986 C 138.22421 194.18628 128.3995 190.88791 118.68581 187.37596 C 108.99779 184.00845 98.183044 177.84583 88.62509 177.29932 C 71.130936 176.0377 54.448395 191.88728 56.0 209.82521 Z M 258.03745 403.26102 C 257.42337 415.4746 267.7702 422.13574 274.3226 428.8895 C 284.00125 440.35623 294.83716 450.85806 303.57956 463.1158 C 311.67786 474.6238 322.4061 487.71454 341.13516 483.32217 C 359.27597 477.08615 370.4793 459.87732 381.7953 445.5899 C 392.62036 430.48917 403.03247 415.09616 414.266 400.29144 C 436.64777 370.92172 465.68814 337.50592 494.3251 318.82675 C 505.49506 309.50583 502.75446 288.9813 488.68637 283.91287 C 475.02933 277.8938 462.50406 288.9647 453.21567 295.59787 C 419.42575 323.29645 391.81744 357.5513 366.70212 393.08853 C 360.58417 401.83182 354.4889 410.59875 348.15292 419.16977 C 345.5889 422.41577 343.2463 425.82724 340.68008 429.05984 C 335.24603 437.6099 329.32736 426.59647 325.94775 422.5606 C 318.97867 414.48856 311.73474 406.69077 304.61435 398.7687 C 298.11957 390.51233 288.53857 382.69687 277.44098 383.07755 C 266.9812 383.03296 257.67224 392.60104 258.03745 403.26102 Z M 349.0 61.0 C 350.0157 61.0 350.9843 61.0 352.0 61.0 C 352.0 59.662983 352.0 58.33655 352.0 57.0 C 350.98978 57.0 350.0069 57.0 349.0 57.0 C 349.0 58.3344 349.0 59.666992 349.0 61.0 Z " />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

+5
View File
@@ -0,0 +1,5 @@
<svg version="1.1" id="terms" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 720 720" style="fill-rule:evenodd;stroke:none" xml:space="preserve">
<g>
<path d="M 158.0 339.74612 C 158.0303 377.02374 157.96304 414.02502 158.01996 451.04327 C 158.7533 464.48724 158.0392 477.90436 158.00046 491.39322 C 158.04257 503.366 158.46811 515.3454 158.65565 527.3154 C 158.58463 535.9222 157.3199 547.10455 165.98537 554.45605 C 172.6744 562.02704 181.03258 561.4961 189.6327 561.2806 C 253.08499 562.5999 316.49826 561.6399 380.01968 562.0 C 412.9178 561.90454 445.81158 562.1765 478.70142 561.75696 C 490.981 561.6015 503.27844 561.44586 515.55365 561.29047 C 525.58826 560.8975 538.24445 562.3618 546.6157 557.61926 C 553.853 553.4908 559.4558 546.04987 560.79694 537.78345 C 562.5187 471.845 561.8824 405.84943 562.0 339.8952 C 562.9285 307.89523 561.0723 270.36484 561.9974 241.07622 C 562.1082 228.46233 561.92944 215.85973 561.5695 203.26656 C 560.5699 193.47998 562.5136 179.15991 558.89825 171.57205 C 554.6768 163.97289 546.83563 158.50552 538.0901 158.8858 C 471.87134 157.42963 405.6758 158.2751 339.38126 158.0 C 309.65103 158.14189 279.92047 157.81467 250.20647 158.1303 C 227.96184 158.57419 205.74403 158.49516 183.51668 159.08136 C 165.72977 161.26913 157.65979 177.00948 159.0 192.02724 C 158.46297 241.18492 157.2037 290.2524 158.0 339.74612 Z M 211.15068 463.24765 C 212.29605 475.82675 208.9168 492.2583 221.53131 501.58582 C 226.61633 505.51132 232.77083 508.10895 239.25568 508.05072 C 246.23659 508.59442 253.21309 509.2686 260.2038 508.54388 C 310.18304 506.99533 360.24478 508.82336 410.22733 508.0 C 422.82178 508.00015 435.42166 507.99982 448.01465 508.0001 C 464.45135 507.96838 486.11948 511.47162 499.00037 501.16757 C 506.76776 495.21637 508.74924 487.51428 508.0 478.8674 C 508.0 469.4895 508.0 460.1116 508.0 450.73367 C 508.0 400.03925 508.0 349.38638 508.0 298.69196 C 508.37546 286.08948 507.45395 273.3951 508.51178 260.82693 C 508.60217 251.67905 507.55295 242.48723 507.76013 233.31418 C 506.3202 221.46866 492.5266 212.25273 482.3613 212.02455 C 468.82455 210.66695 455.29105 211.5433 441.7322 212.0 C 401.74448 212.0 361.7567 212.0 321.76898 212.0 C 306.7597 212.0 291.79208 212.0 276.78278 212.0 C 264.11652 211.73784 251.45686 210.7003 238.81503 211.9612 C 228.67693 212.09439 219.3152 218.43915 214.37692 227.02599 C 210.1159 235.0149 213.09178 246.9409 212.0 255.49977 C 212.0 290.41327 212.0 325.36035 212.0 360.25787 C 212.0 377.63162 212.0 394.96384 212.0 412.33762 C 211.6118 428.69702 212.67247 448.04315 211.15068 463.24765 Z M 235.05788 258.77466 C 234.79831 268.21478 242.18158 273.51804 250.15271 273.08295 C 292.6524 274.0582 335.16806 274.24747 377.66284 274.0 C 399.24832 274.13226 420.81802 274.0183 442.39017 273.52597 C 452.99933 272.94373 463.70172 273.70184 474.28204 272.68613 C 485.07 270.40295 488.1768 257.13898 481.66913 249.83498 C 474.2385 242.96632 464.3762 245.45581 455.11014 245.0 C 386.05118 245.27216 316.95468 244.6681 247.90596 245.17923 C 241.74236 245.77782 234.7423 250.81326 235.05788 258.77466 Z M 235.05788 318.77466 C 234.79831 328.21478 242.18158 333.51804 250.15271 333.08295 C 292.6524 334.0582 335.16806 334.24747 377.66284 334.0 C 399.24832 334.13226 420.81802 334.0183 442.39017 333.52597 C 452.99933 332.94373 463.70172 333.70184 474.28204 332.68613 C 485.07 330.40295 488.1768 317.13898 481.66913 309.835 C 474.2385 302.96634 464.3762 305.4558 455.11014 305.0 C 386.05118 305.27216 316.95468 304.6681 247.90596 305.17923 C 241.74236 305.7778 234.7423 310.81326 235.05788 318.77466 Z M 235.05788 378.77466 C 234.79831 388.21478 242.18158 393.51804 250.15271 393.08295 C 292.6524 394.0582 335.16806 394.24747 377.66284 394.0 C 399.24832 394.13226 420.81802 394.0183 442.39017 393.52597 C 452.99933 392.94373 463.70172 393.70184 474.28204 392.68613 C 485.07 390.40295 488.1768 377.13898 481.66913 369.835 C 474.2385 362.96634 464.3762 365.4558 455.11014 365.0 C 386.05118 365.27216 316.95468 364.6681 247.90596 365.17923 C 241.74236 365.7778 234.7423 370.81326 235.05788 378.77466 Z " />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

+2 -2
View File
@@ -8,7 +8,7 @@ session_start();
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true && isset($_COOKIE['loginid']) && isset($_SESSION['userid'])) { if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true && isset($_COOKIE['loginid']) && isset($_SESSION['userid'])) {
$options = array( $option = array(
// SQL実行失敗時に例外をスルー // SQL実行失敗時に例外をスルー
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// デフォルトフェッチモードを連想配列形式に設定 // デフォルトフェッチモードを連想配列形式に設定
@@ -29,7 +29,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true && isset
} }
} }
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true && isset($_COOKIE['loginid']) && isset($_COOKIE['userid'])) { } elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true && isset($_COOKIE['loginid']) && isset($_COOKIE['userid'])) {
$options = array( $option = array(
// SQL実行失敗時に例外をスルー // SQL実行失敗時に例外をスルー
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// デフォルトフェッチモードを連想配列形式に設定 // デフォルトフェッチモードを連想配列形式に設定
+1
View File
@@ -25,4 +25,5 @@ console.log(
"", "",
"color:#000;", "color:#000;",
"", "",
"uwuzuサーバー運営者及びuwuzu開発者がCookie情報等を要求することはありません。",
); );
+1 -1
View File
@@ -542,7 +542,7 @@ $pdo = null;
<div class="btn_area"> <div class="btn_area">
<a href="rule/terms.php" class="fbtn">利用規約</a> <a href="rule/terms.php" class="fbtn">利用規約</a>
<a href="rule/terms.php" class="fbtn">プライバシーポリシー</a> <a href="rule/privacypolicy.php" class="fbtn">プライバシーポリシー</a>
</div> </div>
<p>登録を押すと利用規約とプライバシーポリシーに同意したこととなります。<br>未確認の場合は上のボタンよりお読みください。</p> <p>登録を押すと利用規約とプライバシーポリシーに同意したこととなります。<br>未確認の場合は上のボタンよりお読みください。</p>
+9 -5
View File
@@ -72,11 +72,14 @@ function replaceURLsWithLinks($postText) {
foreach ($matches[0] as $url) { foreach ($matches[0] as $url) {
// ドメイン部分を抽出 // ドメイン部分を抽出
$parsedUrl = parse_url($url); $parsedUrl = parse_url($url);
$domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; if (!isset($parsedUrl['path'])) {
$parsedUrl['path'] = '';
}
$domain = $parsedUrl['host'].(strlen($parsedUrl['path']) > 24 ? substr($parsedUrl['path'], 0, 24) . '...' : $parsedUrl['path']);
// 不要な文字を削除してaタグを生成 // 不要な文字を削除してaタグを生成
$urlWithoutSpaces = preg_replace('/\s+/', '', $url); $urlWithoutSpaces = preg_replace('/\s+/', '', $url);
$link = "<a href='$urlWithoutSpaces' target='_blank'>$domain</a>"; $link = "<a href='$urlWithoutSpaces' target='_blank' title='$urlWithoutSpaces'>$domain</a>";
// URLをドメインのみを表示するaタグで置き換え // URLをドメインのみを表示するaタグで置き換え
$postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText); $postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
@@ -175,8 +178,8 @@ class MessageDisplay {
echo ' <div class="back">'; echo ' <div class="back">';
echo '<h1>' . htmlentities($this->value['username']) . 'さんが追記しました</h1>'; echo '<h1>' . htmlentities($this->value['username']) . 'さんが追記しました</h1>';
echo ' </div>'; echo ' </div>';
echo '<p>'.replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['abi']))) . '</p>'; echo '<p>'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br($this->value['abi'])))) . '</p>';
echo '<h3>追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlentities($this->value['abidate']))) . '</h3>'; echo '<div class="h3s">追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlentities($this->value['abidate']))) . '</div>';
echo '</div>'; echo '</div>';
} }
if($this->value['nsfw'] === "true"){ if($this->value['nsfw'] === "true"){
@@ -186,7 +189,8 @@ class MessageDisplay {
echo '<hr>'; echo '<hr>';
echo '<div class="favbox">'; echo '<div class="favbox">';
if (false !== strstr($this->value['favorite'], $this->userid)) { $favoriteList = explode(',', $this->value['favorite']);
if (in_array($this->userid, $favoriteList)) {
echo '<button class="favbtn favbtn_after" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><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']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><svg><use xlink:href="../img/sysimage/favorite_2.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
}else{ }else{
echo '<button class="favbtn" id="favbtn" data-uniqid="' . htmlentities($this->value['uniqid']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><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']) . '" data-userid2="' . htmlentities($this->value['account']) . '"><svg><use xlink:href="../img/sysimage/favorite_1.svg#favorite" alt="いいね"></use></svg> <span class="like-count">' . htmlentities($this->value['favcnt']) . '</span></button>';
+2
View File
@@ -101,5 +101,7 @@ if(file_get_contents($activitypub_file) === "true"){
$item; // ループ内で $response にデータを追加 $item; // ループ内で $response にデータを追加
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+50 -12
View File
@@ -59,7 +59,7 @@ try {
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin,role,sacinfo FROM account WHERE userid = :userid"); $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', htmlentities($_SESSION['userid'])); $passQuery->bindValue(':userid', htmlentities($_SESSION['userid']));
$passQuery->execute(); $passQuery->execute();
$res = $passQuery->fetch(); $res = $passQuery->fetch();
@@ -105,7 +105,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { } elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin,role,sacinfo FROM account WHERE userid = :userid"); $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', htmlentities($_COOKIE['userid'])); $passQuery->bindValue(':userid', htmlentities($_COOKIE['userid']));
$passQuery->execute(); $passQuery->execute();
$res = $passQuery->fetch(); $res = $passQuery->fetch();
@@ -261,23 +261,61 @@ if( !empty($_POST['btn_submit']) ) {
$deleteQuery->bindValue(':touserid', $userid, PDO::PARAM_STR); $deleteQuery->bindValue(':touserid', $userid, PDO::PARAM_STR);
$res = $deleteQuery->execute(); $res = $deleteQuery->execute();
// ユーザーIDを削除したい全てのアカウントを取得
$query = $pdo->prepare("SELECT * FROM account WHERE follow LIKE :pattern1 OR follow LIKE :pattern2 OR follow LIKE :pattern3 OR follower LIKE :pattern1 OR follower LIKE :pattern2 OR follower LIKE :pattern3");
$query->bindValue(':pattern1', "%,$userid,%", PDO::PARAM_STR);
$query->bindValue(':pattern2', "%,$userid", PDO::PARAM_STR);
$query->bindValue(':pattern3', "$userid,%", PDO::PARAM_STR);
$query->execute();
$accounts = $query->fetchAll();
foreach ($accounts as $account) {
// フォローの更新 // フォローの更新
$updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); if (strpos($account['follow'], ",$userid,") !== false || strpos($account['follow'], ",$userid") !== false || strpos($account['follow'], "$userid,") !== false) {
$updateFollowQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); $followList = explode(',', $account['follow']);
$updateFollowQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); $followList = array_diff($followList, array($userid));
$newFollowList = implode(',', $followList);
$updateFollowQuery = $pdo->prepare("UPDATE account SET follow = :follow WHERE userid = :userid");
$updateFollowQuery->bindValue(':follow', $newFollowList, PDO::PARAM_STR);
$updateFollowQuery->bindValue(':userid', $account['userid'], PDO::PARAM_STR);
$updateFollowQuery->execute(); $updateFollowQuery->execute();
}
// フォロワーの更新 // フォロワーの更新
$updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); if (strpos($account['follower'], ",$userid,") !== false || strpos($account['follower'], ",$userid") !== false || strpos($account['follower'], "$userid,") !== false) {
$updateFollowerQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); $followerList = explode(',', $account['follower']);
$updateFollowerQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); $followerList = array_diff($followerList, array($userid));
$updateFollowerQuery->execute(); $newFollowerList = implode(',', $followerList);
$updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid");
$updateFollowerQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR);
$updateFollowerQuery->bindValue(':userid', $account['userid'], PDO::PARAM_STR);
$updateFollowerQuery->execute();
}
}
$query = $pdo->prepare("SELECT * FROM ueuse WHERE favorite LIKE :pattern1 OR favorite LIKE :pattern2 OR favorite LIKE :pattern3");
$query->bindValue(':pattern1', "%,$userid,%", PDO::PARAM_STR);
$query->bindValue(':pattern2', "%,$userid", PDO::PARAM_STR);
$query->bindValue(':pattern3', "$userid,%", PDO::PARAM_STR);
$query->execute();
$accounts = $query->fetchAll();
foreach ($accounts as $account) {
// いいねの更新 // いいねの更新
$updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); if (strpos($account['favorite'], ",$userid,") !== false || strpos($account['favorite'], ",$userid") !== false || strpos($account['favorite'], "$userid,") !== false) {
$updateFavoriteQuery->bindValue(':favorite', ",$userid", PDO::PARAM_STR); $favoriteList = explode(',', $account['favorite']);
$updateFavoriteQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); $favoriteList = array_diff($favoriteList, array($userid));
$newFavoriteList = implode(',', $favoriteList);
$updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid");
$updateFavoriteQuery->bindValue(':favorite', $newFavoriteList, PDO::PARAM_STR);
$updateFavoriteQuery->bindValue(':uniqid', $account['uniqid'], PDO::PARAM_STR);
$updateFavoriteQuery->execute(); $updateFavoriteQuery->execute();
}
}
} catch (Exception $e) { } catch (Exception $e) {
+2
View File
@@ -20,6 +20,8 @@
<a href="/@<?php echo $userid; ?>" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/profile.svg#profile"></use></svg><div>プロフィール</div></a> <a href="/@<?php echo $userid; ?>" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/profile.svg#profile"></use></svg><div>プロフィール</div></a>
<a href="/settings" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/settings.svg#settings"></use></svg><div>設定</div></a> <a href="/settings" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/settings.svg#settings"></use></svg><div>設定</div></a>
<a href="/others" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/others.svg#others"></use></svg><div>その他</div></a> <a href="/others" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/others.svg#others"></use></svg><div>その他</div></a>
<a href="/rule/terms" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/terms.svg#terms"></use></svg><div>利用規約</div></a>
<a href="/rule/privacypolicy" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/privacypolicy.svg#privacypolicy"></use></svg><div>プライバシー<br>ポリシー</div></a>
<?php if($res["admin"] === "yes"){?> <?php if($res["admin"] === "yes"){?>
<a href="/emoji/addemoji" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/addemoji.svg#addemoji"></use></svg><div>絵文字登録</div></a> <a href="/emoji/addemoji" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/addemoji.svg#addemoji"></use></svg><div>絵文字登録</div></a>
+3 -1
View File
@@ -60,7 +60,7 @@ foreach ($sprivacypolicy as $privacypolicy) {
<div class="topbox"> <div class="topbox">
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
</div> </div>
@@ -72,6 +72,8 @@ foreach ($sprivacypolicy as $privacypolicy) {
<p><?php echo $htmltext;?></p> <p><?php echo $htmltext;?></p>
<a href = "javascript:history.back();" class="irobutton">戻る</a>
</div> </div>
+3 -1
View File
@@ -70,7 +70,7 @@ foreach ($srelease as $release) {
<div class="topbox"> <div class="topbox">
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
</div> </div>
@@ -85,6 +85,8 @@ foreach ($srelease as $release) {
<p><?php echo $htmltext;?></p> <p><?php echo $htmltext;?></p>
<a href = "javascript:history.back();" class="irobutton">戻る</a>
</div> </div>
+16 -7
View File
@@ -7,7 +7,12 @@ require('../db.php');
session_name('uwuzu_s_id'); session_name('uwuzu_s_id');
session_start(); session_start();
$servericonfile = "../server/servericon.txt"; $servericonfile = file_get_contents("../server/servericon.txt");
$servericondata = explode( "\n", $servericonfile );
$cnt = count($servericondata);
for( $i=0;$i<$cnt;$i++ ){
$uwuzuicon[$i] = ($servericondata[$i]);
}
//------------------------- //-------------------------
@@ -87,7 +92,7 @@ $count2 = $result2->num_rows;
<div class="topbox"> <div class="topbox">
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
</div> </div>
@@ -96,11 +101,11 @@ $count2 = $result2->num_rows;
<h1>サーバー情報</h1> <h1>サーバー情報</h1>
<?php if( !empty(file_get_contents($servericonfile)) ){ ?> <?php if( !empty(file_get_contents($servericonfile)) ){ ?>
<div class="servericon"> <div class="servericon">
<img src="<?php echo htmlspecialchars(file_get_contents($servericonfile), ENT_QUOTES, 'UTF-8'); ?>"> <img src="<?php echo htmlspecialchars($uwuzuicon[0], ENT_QUOTES, 'UTF-8'); ?>">
</div> </div>
<?php }?> <?php }?>
<div class="p3"><?php echo file_get_contents($servernamefile);?></div> <div class="sp3"><?php echo file_get_contents($servernamefile);?></div>
<div class="p2c"><?php echo $domain;?></div> <div class="sp2c"><?php echo $domain;?></div>
<hr> <hr>
<h4>説明</h4> <h4>説明</h4>
<p><?php <p><?php
@@ -115,11 +120,13 @@ $count2 = $result2->num_rows;
<p>連絡用メールアドレス : <?php echo htmlspecialchars(file_get_contents($contactfile), ENT_QUOTES, 'UTF-8');?></p> <p>連絡用メールアドレス : <?php echo htmlspecialchars(file_get_contents($contactfile), ENT_QUOTES, 'UTF-8');?></p>
<hr> <hr>
<?php if(!($onlyuser =="true")){?>
<h4>統計情報</h4> <h4>統計情報</h4>
<p>ユーザー数 : <?php echo $count1."<br>"?></p> <p>ユーザー数 : <?php echo $count1."<br>"?></p>
<p>投稿数 : <?php echo $count2."<br>"?></p> <p>投稿数 : <?php echo $count2."<br>"?></p>
<?php }else{?>
<?php if($onlyuser =="true"){?>
<hr>
<h4>注意</h4> <h4>注意</h4>
<p>このサーバーにアカウント登録するには招待コードが必要です。</p> <p>このサーバーにアカウント登録するには招待コードが必要です。</p>
<?php }?> <?php }?>
@@ -128,6 +135,8 @@ $count2 = $result2->num_rows;
<div class="p3"><?php echo $uwuzuinfo[0];?></div> <div class="p3"><?php echo $uwuzuinfo[0];?></div>
<div class="p2c">Version : <?php echo $uwuzuinfo[1];?><br>Developer : <?php echo $uwuzuinfo[3];?><br>Last Update : <?php echo $uwuzuinfo[2];?></div> <div class="p2c">Version : <?php echo $uwuzuinfo[1];?><br>Developer : <?php echo $uwuzuinfo[3];?><br>Last Update : <?php echo $uwuzuinfo[2];?></div>
<a href = "javascript:history.back();" class="irobutton">戻る</a>
</div> </div>
+3 -1
View File
@@ -60,7 +60,7 @@ foreach ($sterms as $terms) {
<div class="topbox"> <div class="topbox">
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
</div> </div>
@@ -72,6 +72,8 @@ foreach ($sterms as $terms) {
<p><?php echo $htmltext;?></p> <p><?php echo $htmltext;?></p>
<a href = "javascript:history.back();" class="irobutton">戻る</a>
</div> </div>
+3 -1
View File
@@ -70,7 +70,7 @@ foreach ($sterms as $terms) {
<div class="topbox"> <div class="topbox">
<div class="logo"> <div class="logo">
<img src="../img/uwuzulogo.svg"> <a href="../index.php"><img src="../img/uwuzulogo.svg"></a>
</div> </div>
</div> </div>
@@ -85,6 +85,8 @@ foreach ($sterms as $terms) {
<p><?php echo $htmltext;?></p> <p><?php echo $htmltext;?></p>
<a href = "javascript:history.back();" class="irobutton">戻る</a>
</div> </div>
+2 -2
View File
@@ -1,4 +1,4 @@
uwuzu uwuzu
1.2.24 1.2.25
2023/10/04 2023/10/22
daichimarukana,putonfps daichimarukana,putonfps
+18
View File
@@ -1,6 +1,24 @@
## リリースノートだぜぇぇぇぇぇぇい!!!!!!! ## リリースノートだぜぇぇぇぇぇぇい!!!!!!!
ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...)
## Version 1.2.25
リリース日:2023/10/22
ActivityPubに認識されない問題を修正しました。
ActivityPubがオフの場合に410 Goneを返すようにしました。
フォロー解除ボタンのUIを変更しました。
プロフィール画面でURLが正常に変換されない問題を修正しました。
アカウント新規登録画面でプライバシーポリシーボタンを押したときに利用規約が表示されてしまう問題を修正しました。
プロフィールのスマホ向けUIを変更しました。
似たアカウントidでフォロー・フォロー解除した際にデータが破損する問題を修正しました。
フォローされていないのにもかかわらず「フォローされています」と表示される問題を修正しました。
LTL、FTL、ユーザープロフィールページにて端末がオフラインになったときに通知する機能を追加しました。
サーバーカスタマイズからPWAのmanifest.json項目を変更できるようにしました。
プロフィール画面でフォローしている人、されている人を確認できるようにしました。
アカウント削除時にデータが破損する問題を修正しました。
追記時にMarkdownが適用されるようにしました。
投稿のURLの表示を若干変更しました。
スマホ向けメニューの項目に「利用規約」と「プライバシーポリシー」を追加しました。
## Version 1.2.24 ## Version 1.2.24
リリース日:2023/10/04 リリース日:2023/10/04
画像選択ボタンのUIを変更しました。 画像選択ボタンのUIを変更しました。
+17 -1
View File
@@ -13,6 +13,9 @@ $mojisizefile = "../server/textsize.txt";
$colorfile = "../css/color.css"; $colorfile = "../css/color.css";
$color_info = file_get_contents($colorfile); $color_info = file_get_contents($colorfile);
$manifestfile = "../manifest/manifest.json";
$manifest_info = file_get_contents($manifestfile);
$err404imagefile = "../server/404imagepath.txt"; $err404imagefile = "../server/404imagepath.txt";
$robots = "../robots.txt"; $robots = "../robots.txt";
@@ -220,6 +223,7 @@ if( !empty($_POST['btn_submit']) ) {
// 空白除去 // 空白除去
$colordata = $_POST['colordata']; $colordata = $_POST['colordata'];
$manifestdata = $_POST['manifestdata'];
//鯖名 //鯖名
$file = fopen($colorfile, 'w'); $file = fopen($colorfile, 'w');
@@ -227,6 +231,12 @@ if( !empty($_POST['btn_submit']) ) {
fputs($file, $data); fputs($file, $data);
fclose($file); fclose($file);
//manifest
$file = fopen($manifestfile, 'w');
$data = $manifestdata;
fputs($file, $data);
fclose($file);
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header("Location:".$url.""); header("Location:".$url."");
exit; exit;
@@ -268,7 +278,13 @@ require('../logout/logout.php');
<div> <div>
<p>CSS</p> <p>CSS</p>
<div class="p2">ここで指定されている色が適用されます。<br>もし適用されなかった場合はキャッシュを削除し再読み込みしてください。<br>表示がおかしくなってしまった場合はカラーコードを再度確認してください。</div> <div class="p2">ここで指定されている色が適用されます。<br>もし適用されなかった場合はキャッシュを削除し再読み込みしてください。<br>表示がおかしくなってしまった場合はカラーコードを再度確認してください。</div>
<textarea id="colordata" placeholder="uwuzu" class="inbox" type="text" name="colordata"><?php $sinfo = explode("\r", $color_info); foreach ($sinfo as $info) { echo $info; }?></textarea> <textarea id="colordata" placeholder="CSS" class="inbox" type="text" name="colordata"><?php $sinfo = explode("\r", $color_info); foreach ($sinfo as $info) { echo $info; }?></textarea>
</div>
<div>
<p>PWA(manifest)</p>
<div class="p2">ここでPWAの設定を変更できます。<br>"short_name""name"が表示されるアプリ名、"theme_color""background_color"がテーマカラーとPWA起動時のスプラッシュ画面の背景色です。<br>いま記載したもの以外の設定は変更しないことをお勧めします。</div>
<textarea id="manifestdata" placeholder="manifest.json" class="inbox" type="text" name="manifestdata"><?php $sinfo = explode("\r", $manifest_info); foreach ($sinfo as $info) { echo $info; }?></textarea>
</div> </div>
<input type="submit" class = "irobutton" name="btn_submit" value="保存&更新"> <input type="submit" class = "irobutton" name="btn_submit" value="保存&更新">
+1 -1
View File
@@ -437,7 +437,7 @@ require('../logout/logout.php');
<div> <div>
<p>ActivityPubサーバーとして認識されるようにするか</p> <p>ActivityPubサーバーとして認識されるようにするか</p>
<div class="p2">ActivityPubの仮実装をオンにするかです。inboxに入ってきた内容には今現在これといったレスポンスを返しません。<br>また、publicKeyも返却しません。<br>現状ActivityPubサーバーと連合を組むことは出来ません。(リモートユーザーの確認程度なら出来ます。)</div> <div class="p2">ActivityPubの仮実装をオンにするかです。inboxに入ってきた内容には今現在これといったレスポンスを返しません。<br>また、publicKeyも返却しません。<br>現状ActivityPubサーバーと連合を組むことは出来ません。(リモートユーザーの確認程度なら出来ます。)<br>オフの状態だと410 Goneを返します。</div>
<div class="switch_button"> <div class="switch_button">
<?php if(file_get_contents($activitypub_file) === "true"){?> <?php if(file_get_contents($activitypub_file) === "true"){?>
<input id="activitypub" class="switch_input" type='checkbox' name="activitypub" value="true" checked/> <input id="activitypub" class="switch_input" type='checkbox' name="activitypub" value="true" checked/>
+47 -10
View File
@@ -440,23 +440,60 @@ if( !empty($_POST['send_ban_submit']) ) {
$deleteQuery->bindValue(':touserid', $userId2, PDO::PARAM_STR); $deleteQuery->bindValue(':touserid', $userId2, PDO::PARAM_STR);
$res = $deleteQuery->execute(); $res = $deleteQuery->execute();
// ユーザーIDを削除したい全てのアカウントを取得
$query = $pdo->prepare("SELECT * FROM account WHERE follow LIKE :pattern1 OR follow LIKE :pattern2 OR follow LIKE :pattern3 OR follower LIKE :pattern1 OR follower LIKE :pattern2 OR follower LIKE :pattern3");
$query->bindValue(':pattern1', "%,$userid,%", PDO::PARAM_STR);
$query->bindValue(':pattern2', "%,$userid", PDO::PARAM_STR);
$query->bindValue(':pattern3', "$userid,%", PDO::PARAM_STR);
$query->execute();
$accounts = $query->fetchAll();
foreach ($accounts as $account) {
// フォローの更新 // フォローの更新
$updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); if (strpos($account['follow'], ",$userid,") !== false || strpos($account['follow'], ",$userid") !== false || strpos($account['follow'], "$userid,") !== false) {
$updateFollowQuery->bindValue(':userid', ",$userId2", PDO::PARAM_STR); $followList = explode(',', $account['follow']);
$updateFollowQuery->bindValue(':pattern', "%,$userId2%", PDO::PARAM_STR); $followList = array_diff($followList, array($userid));
$newFollowList = implode(',', $followList);
$updateFollowQuery = $pdo->prepare("UPDATE account SET follow = :follow WHERE userid = :userid");
$updateFollowQuery->bindValue(':follow', $newFollowList, PDO::PARAM_STR);
$updateFollowQuery->bindValue(':userid', $account['userid'], PDO::PARAM_STR);
$updateFollowQuery->execute(); $updateFollowQuery->execute();
}
// フォロワーの更新 // フォロワーの更新
$updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); if (strpos($account['follower'], ",$userid,") !== false || strpos($account['follower'], ",$userid") !== false || strpos($account['follower'], "$userid,") !== false) {
$updateFollowerQuery->bindValue(':userid', ",$userId2", PDO::PARAM_STR); $followerList = explode(',', $account['follower']);
$updateFollowerQuery->bindValue(':pattern', "%,$userId2%", PDO::PARAM_STR); $followerList = array_diff($followerList, array($userid));
$updateFollowerQuery->execute(); $newFollowerList = implode(',', $followerList);
$updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid");
$updateFollowerQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR);
$updateFollowerQuery->bindValue(':userid', $account['userid'], PDO::PARAM_STR);
$updateFollowerQuery->execute();
}
}
$query = $pdo->prepare("SELECT * FROM ueuse WHERE favorite LIKE :pattern1 OR favorite LIKE :pattern2 OR favorite LIKE :pattern3");
$query->bindValue(':pattern1', "%,$userid,%", PDO::PARAM_STR);
$query->bindValue(':pattern2', "%,$userid", PDO::PARAM_STR);
$query->bindValue(':pattern3', "$userid,%", PDO::PARAM_STR);
$query->execute();
$accounts = $query->fetchAll();
foreach ($accounts as $account) {
// いいねの更新 // いいねの更新
$updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); if (strpos($account['favorite'], ",$userid,") !== false || strpos($account['favorite'], ",$userid") !== false || strpos($account['favorite'], "$userid,") !== false) {
$updateFavoriteQuery->bindValue(':favorite', ",$userId2", PDO::PARAM_STR); $favoriteList = explode(',', $account['favorite']);
$updateFavoriteQuery->bindValue(':pattern', "%,$userId2%", PDO::PARAM_STR); $favoriteList = array_diff($favoriteList, array($userid));
$newFavoriteList = implode(',', $favoriteList);
$updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid");
$updateFavoriteQuery->bindValue(':favorite', $newFavoriteList, PDO::PARAM_STR);
$updateFavoriteQuery->bindValue(':uniqid', $account['uniqid'], PDO::PARAM_STR);
$updateFavoriteQuery->execute(); $updateFavoriteQuery->execute();
}
}
} catch (Exception $e) { } catch (Exception $e) {
+2
View File
@@ -90,5 +90,7 @@ if(file_get_contents($activitypub_file) === "true"){
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
} }
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+2
View File
@@ -18,5 +18,7 @@ if(file_get_contents($activitypub_file) === "true"){
); );
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>
+199 -18
View File
@@ -49,7 +49,7 @@ try {
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid"); $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', htmlentities($_SESSION['userid'])); $passQuery->bindValue(':userid', htmlentities($_SESSION['userid']));
$passQuery->execute(); $passQuery->execute();
$res = $passQuery->fetch(); $res = $passQuery->fetch();
@@ -64,6 +64,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$role = htmlentities($res["role"]); $role = htmlentities($res["role"]);
$sacinfo = htmlentities($res["sacinfo"]); $sacinfo = htmlentities($res["sacinfo"]);
$myblocklist = htmlentities($res["blocklist"]); $myblocklist = htmlentities($res["blocklist"]);
$myfollowlist = htmlentities($res["follow"]);
$_SESSION['admin_login'] = true; $_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid; $_SESSION['userid'] = $userid;
$_SESSION['username'] = $username; $_SESSION['username'] = $username;
@@ -96,7 +97,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { } elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid"); $passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', htmlentities($_COOKIE['userid'])); $passQuery->bindValue(':userid', htmlentities($_COOKIE['userid']));
$passQuery->execute(); $passQuery->execute();
$res = $passQuery->fetch(); $res = $passQuery->fetch();
@@ -111,6 +112,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$role = htmlentities($res["role"]); $role = htmlentities($res["role"]);
$sacinfo = htmlentities($res["sacinfo"]); $sacinfo = htmlentities($res["sacinfo"]);
$myblocklist = htmlentities($res["blocklist"]); $myblocklist = htmlentities($res["blocklist"]);
$myfollowlist = htmlentities($res["follow"]);
$_SESSION['admin_login'] = true; $_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid; $_SESSION['userid'] = $userid;
$_SESSION['username'] = $username; $_SESSION['username'] = $username;
@@ -224,7 +226,7 @@ if( !empty($pdo) ) {
function replaceURLsWithLinks($postText) { function replaceURLsWithLinks($postText) {
// URLを正規表現を使って検出 // URLを正規表現を使って検出
$pattern = '/(https?:\/\/[^\s]+)/'; $pattern = '/(https:\/\/[^\s<>\[\]\'"]+)/'; // 改良された正規表現
preg_match_all($pattern, $postText, $matches); preg_match_all($pattern, $postText, $matches);
// 検出したURLごとに処理を行う // 検出したURLごとに処理を行う
@@ -233,11 +235,12 @@ if( !empty($pdo) ) {
$parsedUrl = parse_url($url); $parsedUrl = parse_url($url);
$domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : '';
// ドメインのみを表示するaタグを生成 // 不要な文字を削除してaタグを生成
$link = "<a href='$url'>$domain</a>"; $urlWithoutSpaces = preg_replace('/\s+/', '', $url);
$link = "<a href='$urlWithoutSpaces' target='_blank'>$domain</a>";
// URLをドメインのみを表示するaタグで置き換え // URLをドメインのみを表示するaタグで置き換え
$postText = str_replace($url, $link, $postText); $postText = preg_replace('/' . preg_quote($url, '/') . '/', $link, $postText);
} }
return $postText; return $postText;
@@ -279,7 +282,8 @@ if( !empty($pdo) ) {
$followIds = explode(',', $follow); $followIds = explode(',', $follow);
$followCount = count($followIds)-1; $followCount = count($followIds)-1;
$follow_on_me = strpos($follow, $userid); $follow_on_me = array_search($userid, $followIds);
if ($follow_on_me !== false) { if ($follow_on_me !== false) {
$follow_yes = "フォローされています"; // worldを含む:6 $follow_yes = "フォローされています"; // worldを含む:6
}else{ }else{
@@ -301,6 +305,47 @@ if( !empty($pdo) ) {
$allueuse->execute(); $allueuse->execute();
$ueuse_cnt = $allueuse->rowCount(); $ueuse_cnt = $allueuse->rowCount();
//-------フォロワー取得---------
// フォロワーのユーザーIDを $follower_userids 配列に追加
foreach ($followerIds as $follower_userid) {
$follower_userids[] = $follower_userid;
}
// フォロワーのユーザー情報を取得
$follower_userdata = array();
foreach ($follower_userids as $follower_userid) {
$follower_userQuery = $pdo->prepare("SELECT username, userid, iconname, headname, sacinfo FROM account WHERE userid = :userid");
$follower_userQuery->bindValue(':userid', $follower_userid);
$follower_userQuery->execute();
$follower_userinfo = $follower_userQuery->fetch();
if ($follower_userinfo) {
// フォロワーのユーザー情報を $follower_userdata 配列に追加
$follower_userdata[] = $follower_userinfo;
}
}
//-------フォロー取得---------
foreach ($followIds as $follow_userid) {
$follow_userids[] = $follow_userid;
}
$follow_userdata = array();
foreach ($follow_userids as $follow_userid) {
$follow_userQuery = $pdo->prepare("SELECT username, userid, iconname, headname, sacinfo FROM account WHERE userid = :userid");
$follow_userQuery->bindValue(':userid', $follow_userid);
$follow_userQuery->execute();
$follow_userinfo = $follow_userQuery->fetch();
if ($follow_userinfo) {
// フォロワーのユーザー情報を $follower_userdata 配列に追加
$follow_userdata[] = $follow_userinfo;
}
}
}else{ }else{
@@ -393,9 +438,12 @@ if (!empty($_POST['follow'])) {
$updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR);
$res = $updateQuery->execute(); $res = $updateQuery->execute();
$deluserid = ",".$userdata["userid"]; $myflwlist = explode(',', $myfollowlist);
$delfollowList = array_diff($myflwlist, array($userData['userid']));
$deluserid = implode(',', $delfollowList);
// 自分のfollowカラムから相手のユーザーIDを削除 // 自分のfollowカラムから相手のユーザーIDを削除
$updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); $updateQuery = $pdo->prepare("UPDATE account SET follow = :follow WHERE userid = :userid");
$updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR);
$updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR);
$res_follow = $updateQuery->execute(); $res_follow = $updateQuery->execute();
@@ -433,9 +481,11 @@ if (!empty($_POST['send_block_submit'])) {
$updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR);
$res = $updateQuery->execute(); $res = $updateQuery->execute();
$deluserid = ",".$userdata["userid"]; $myflwlist = explode(',', $myfollowlist);
$delfollowList = array_diff($myflwlist, array($userData['userid']));
$deluserid = implode(',', $delfollowList);
// 自分のfollowカラムから相手のユーザーIDを削除 // 自分のfollowカラムから相手のユーザーIDを削除
$updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); $updateQuery = $pdo->prepare("UPDATE account SET follow = :follow WHERE userid = :userid");
$updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR);
$updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR);
$res_follow = $updateQuery->execute(); $res_follow = $updateQuery->execute();
@@ -461,9 +511,11 @@ if (!empty($_POST['send_block_submit'])) {
} elseif (!empty($_POST['send_un_block_submit'])) { } elseif (!empty($_POST['send_un_block_submit'])) {
$deluserid = ",".$userdata["userid"]; $myblklist = explode(',', $myBlocklist);
$delblkList = array_diff($myblklist, array($userData['userid']));
$deluserid = implode(',', $delblkList);
// 自分のfollowカラムから相手のユーザーIDを削除 // 自分のfollowカラムから相手のユーザーIDを削除
$updateQuery = $pdo->prepare("UPDATE account SET blocklist = REPLACE(blocklist, :blocklist, '') WHERE userid = :userid"); $updateQuery = $pdo->prepare("UPDATE account SET blocklist = :blocklist WHERE userid = :userid");
$updateQuery->bindValue(':blocklist', $deluserid, PDO::PARAM_STR); $updateQuery->bindValue(':blocklist', $deluserid, PDO::PARAM_STR);
$updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR);
$res_block = $updateQuery->execute(); $res_block = $updateQuery->execute();
@@ -490,6 +542,7 @@ $pdo = null;
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ja"> <html lang="ja">
<head> <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="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
<script src="../js/console_notice.js"></script> <script src="../js/console_notice.js"></script>
<script src="../js/nsfw_event.js"></script> <script src="../js/nsfw_event.js"></script>
@@ -504,6 +557,16 @@ $pdo = null;
</head> </head>
<body> <body>
<div>
<div id="offline" class="offline" style="display:none;">
<p>🦖💨 インターネットへの接続が切断されました...</p>
</div>
<div id="online" class="online" style="display:none;">
<p>🌐💫 インターネットへの接続が復帰しました!!!</p>
</div>
</div>
<?php require('../require/leftbox.php');?> <?php require('../require/leftbox.php');?>
<main class="outer"> <main class="outer">
@@ -516,7 +579,8 @@ $pdo = null;
<?php endif; ?> <?php endif; ?>
<div class="userheader"> <div class="userheader">
<?php if($userData["userid"] == "none"){?> <?php if($userData["userid"] == "none"){
header("HTTP/1.1 404 Not Found");?>
<!--いないひと---> <!--いないひと--->
<div class="hed"> <div class="hed">
<img src="../img/defhead/head.png"> <img src="../img/defhead/head.png">
@@ -558,7 +622,7 @@ $pdo = null;
<?php $roleData = $roleDataArray[$roleId]; ?> <?php $roleData = $roleDataArray[$roleId]; ?>
<div class="rolebox" style="border: 1px solid <?php echo '#' . $roleData["rolecolor"]; ?>;"> <div class="rolebox" style="border: 1px solid <?php echo '#' . $roleData["rolecolor"]; ?>;">
<p style="color: <?php echo '#' . $roleData["rolecolor"]; ?>;"> <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'); }else{ echo("ロールが正常に設定されていません。");} ?>
</p> </p>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
@@ -580,6 +644,7 @@ $pdo = null;
<p><?php echo date('Y年m月d日 H:i:s', strtotime($userdata['datetime'])); ?>からuwuzuを利用しています。</p> <p><?php echo date('Y年m月d日 H:i:s', strtotime($userdata['datetime'])); ?>からuwuzuを利用しています。</p>
<p><?php if(htmlentities($userdata['role']) === "ice"){echo"このアカウントは凍結されています。";}; ?></p> <p><?php if(htmlentities($userdata['role']) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
</div> </div>
<?php if(!empty($follow_yes)){?> <?php if(!empty($follow_yes)){?>
<div class="follow_yes"> <div class="follow_yes">
<p><?php echo $follow_yes;?></p> <p><?php echo $follow_yes;?></p>
@@ -629,6 +694,13 @@ $pdo = null;
<?php } ?> <?php } ?>
</div> </div>
<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(htmlentities($userdata['role']) === "ice"){echo"このアカウントは凍結されています。";}; ?></p>
</div>
</div>
<?php if(!($role === "ice")){?> <?php if(!($role === "ice")){?>
<div id="myModal" class="modal"> <div id="myModal" class="modal">
<div class="modal-content"> <div class="modal-content">
@@ -646,11 +718,11 @@ $pdo = null;
<div class="p2">ユーズ数</div> <div class="p2">ユーズ数</div>
<p><?php echo $ueuse_cnt;?></p> <p><?php echo $ueuse_cnt;?></p>
</div> </div>
<div class="fcnt"> <div class="fcnt" id="follow_cnt" style="cursor:pointer;">
<div class="p2">フォロー数</div> <div class="p2">フォロー数</div>
<p><?php echo $followCount;?></p> <p><?php echo $followCount;?></p>
</div> </div>
<div class="fcnt"> <div class="fcnt" id="follower_cnt" style="cursor:pointer;">
<div class="p2">フォロワー数</div> <div class="p2">フォロワー数</div>
<p><?php echo $followerCount;?></p> <p><?php echo $followerCount;?></p>
</div> </div>
@@ -728,6 +800,59 @@ $pdo = null;
</div> </div>
</div> </div>
<div id="FollowerUserModal" class="modal">
<div class="modal-content">
<p><?php echo htmlentities($userData["username"], ENT_QUOTES, 'UTF-8');?>さんをフォローしているユーザー</p>
<?php
if(!empty($follower_userdata)){
foreach ($follower_userdata as $value) {
if (false === strpos($myblocklist, ',' . htmlentities($value['userid'], ENT_QUOTES, 'UTF-8'))) {
echo "<div class='action_userlist'>";
echo "<a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'><img src=".htmlentities($value['iconname'], ENT_QUOTES, 'UTF-8')."></a>";
echo "<div class='userabout'>";
echo "<div class='username'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'>".htmlentities($value['username'], ENT_QUOTES, 'UTF-8')."</a></div>";
echo "<div class='userid'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'>@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."</a></div>";
echo "</div>";
echo "</div>";
}
}
}else{
echo "<p>".htmlentities($userData["username"], ENT_QUOTES, 'UTF-8')."さんは誰にもフォローされていません。</p>";
}
?>
<div class="btn_area">
<input type="button" id="CloseButton4" class="fbtn" value="閉じる">
</div>
</div>
</div>
<div id="FollowUserModal" class="modal">
<div class="modal-content">
<p><?php echo htmlentities($userData["username"], ENT_QUOTES, 'UTF-8');?>さんがフォローしているユーザー</p>
<?php
if(!empty($follow_userdata)){
foreach ($follow_userdata as $value) {
if (false === strpos($myblocklist, ',' . htmlentities($value['userid'], ENT_QUOTES, 'UTF-8'))) {
echo "<div class='action_userlist'>";
echo "<a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'><img src=".htmlentities($value['iconname'], ENT_QUOTES, 'UTF-8')."></a>";
echo "<div class='userabout'>";
echo "<div class='username'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'>".htmlentities($value['username'], ENT_QUOTES, 'UTF-8')."</a></div>";
echo "<div class='userid'><a href='/@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."'>@".htmlentities($value['userid'], ENT_QUOTES, 'UTF-8')."</a></div>";
echo "</div>";
echo "</div>";
}
}
}else{
echo "<p>".htmlentities($userData["username"], ENT_QUOTES, 'UTF-8')."さんは誰もフォローしていません。</p>";
}
?>
<div class="btn_area">
<input type="button" id="CloseButton5" class="fbtn" value="閉じる">
</div>
</div>
</div>
</main> </main>
@@ -880,7 +1005,10 @@ $(document).ready(function() {
if (outerBottom <= $('.outer').scrollTop()) { if (outerBottom <= $('.outer').scrollTop()) {
var elem = document.getElementById("noueuse"); var elem = document.getElementById("noueuse");
if (elem === null){ if($("#error").css('display') == 'block') {
// えらー処理
return;
}else if (elem === null){
// 存在しない場合の処理 // 存在しない場合の処理
loadPosts(); loadPosts();
}else{ }else{
@@ -1121,6 +1249,59 @@ $(document).ready(function() {
}, 150); }, 150);
}); });
}); });
var modal4 = document.getElementById('FollowerUserModal');
var CloseButton4 = document.getElementById('CloseButton4'); // 追加
var modalMain = $('.modal-content');
$('#follower_cnt').click(function() {
modal4.style.display = 'block';
modalMain.addClass("slideUp");
modalMain.removeClass("slideDown");
CloseButton4.addEventListener('click', () => {
modalMain.removeClass("slideUp");
modalMain.addClass("slideDown");
window.setTimeout(function(){
modal4.style.display = 'none';
}, 150);
});
});
var modal5 = document.getElementById('FollowUserModal');
var CloseButton5 = document.getElementById('CloseButton5'); // 追加
var modalMain = $('.modal-content');
$('#follow_cnt').click(function() {
modal5.style.display = 'block';
modalMain.addClass("slideUp");
modalMain.removeClass("slideDown");
CloseButton5.addEventListener('click', () => {
modalMain.removeClass("slideUp");
modalMain.addClass("slideDown");
window.setTimeout(function(){
modal5.style.display = 'none';
}, 150);
});
});
window.addEventListener('online', function(){
checkOnline();
});
window.addEventListener('offline', function(){
checkOnline();
});
function checkOnline() {
if( navigator.onLine ) {
$("#online").show();
$("#offline").hide();
} else {
$("#online").hide();
$("#offline").show();
}
}
}); });
</script> </script>
+2
View File
@@ -127,5 +127,7 @@ if(file_get_contents($activitypub_file) === "true"){
echo json_encode($item, JSON_UNESCAPED_UNICODE); echo json_encode($item, JSON_UNESCAPED_UNICODE);
} }
} }
}else{
header("HTTP/1.1 410 Gone");
} }
?> ?>