支援者♡限定記事対応

諏訪子 <suwako@076.moe>、2025-12-29 18:05
コミット 6a4ff9d9e5f5815b9da565061fcd46943492bedb ・親 c458eec ・ファイルを見る

6個のファイル、+47 -7

@@ -0,0 +1,9 @@
1+title: 【新機能】支援者♡限定
2+uuid: 6e7d1725-c9d3-4279-967c-39bfc37fea8e
3+author: 諏訪子
4+date: 2025-12-29 08:43:27
5+thumbnail:
6+thumborient: center
7+category: feature,subscriberonly
8+----
9+これを見れば、モネロちゃんは貴方の事が大好き!!♡
@@ -11,6 +11,7 @@
1111 $path = ROOT.$section;
1212 $posts = [];
1313 $isMember = $user !== NULL && $user->role !== \Roles::BANNED;
14+ $isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER;
1415 $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
1516
1617 if (!is_dir($path)) return $posts;
@@ -46,6 +47,9 @@
4647 $preview = mb_substr(strip_tags($articleBody), 0, 50).'...';
4748 $slug = basename($file, '.md');
4849 if (isset($metadata['draft']) && !$isStaff) continue;
50+ $cannotPreview = (!$isMember && in_array('memberonly', $metadata['category']))
51+ || ((!$isPaywall && !$isStaff) && in_array('subscriberonly', $metadata['category']))
52+ || (!$isStaff && in_array('staffonly', $metadata['category']));
4953
5054 $posts[] = [
5155 'title' => $metadata['title'] ?? '',
@@ -54,7 +58,7 @@
5458 'thumborient' => $metadata['thumborient'] ?? '',
5559 'category' => $metadata['category'] ?? [],
5660 'uuid' => $metadata['uuid'] ?? '',
57- 'preview' => ((!$isMember && in_array('memberonly', $metadata['category'])) || (!$isStaff && in_array('staffonly', $metadata['category'])) ? '未許可' : $preview),
61+ 'preview' => ($cannotPreview ? '未許可' : $preview),
5862 'slug' => $slug,
5963 ];
6064 }
@@ -114,6 +114,7 @@
114114 $auth = new Auth();
115115 $user = $auth->getLoggedInUser();
116116 $isMember = $user !== NULL && $user->role !== \Roles::BANNED;
117+ $isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER;
117118 $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
118119 $tmpl->assign('user', $user);
119120
@@ -133,6 +134,7 @@
133134 }
134135
135136 if (!$isMember && in_array('memberonly', $meta->category)) goto denyaccess;
137+ if ((!$isPaywall && !$isStaff) && in_array('subscriberonly', $meta->category)) goto denyaccess;
136138 if (!$isStaff && in_array('staffonly', $meta->category)) goto denyaccess;
137139 if (isset($meta->draft) && !$isStaff) goto denyaccess;
138140
@@ -1,8 +1,9 @@
11 <?php
22 namespace Site\Controller;
33
4-use Site\Lib\Template;
54 use Site\Controller\Mods;
5+use Site\Lib\Auth;
6+use Site\Lib\Template;
67
78 class Notfound {
89 use Mods;
@@ -11,6 +12,11 @@
1112 try {
1213 $tmpl = new Template('/');
1314 $pagetit = 'Not found';
15+
16+ // ユーザー
17+ $auth = new Auth();
18+ $user = $auth->getLoggedInUser();
19+ $tmpl->assign('user', $user);
1420
1521 $tmpl->assign('pagetit', $pagetit);
1622 $tmpl->assign('curPage', '404');
@@ -39,13 +39,29 @@
3939 unset($user->password);
4040 unset($user->tokens);
4141 $myself = $this->getUserData();
42- if ($myself->role & (\Roles::PLAYSTATIONNDA | \Roles::NINTENDONDA | \Roles::MEMBER | \Roles::BANNED)) {
43- unset($user->email);
44- }
42+ if ($myself->id != $user->id && $myself->role < \Roles::STAFF) $user->email = '(秘密)';
4543 $user->name = namecolor($user);
4644 $user->regDate = date('Y年m月d日', $user->regDate);
4745 $user->gender = $user->gender === \Gender::MALE ? '男' : ($user->gender === \Gender::FEMALE ? '女' : '不明');
48- $user->role = $user->role & (\Roles::ADMIN | \Roles::STAFF) ? '管理者' : ($user->role === \Roles::BANNED ? 'BANされた' : 'ユーザー');
46+
47+ switch (true) {
48+ case ($user->role & \Roles::ADMIN):
49+ $user->role = '管理者';
50+ break;
51+ case ($user->role & \Roles::STAFF):
52+ $user->role = '076スタジオの会社員';
53+ break;
54+ case ($user->role & (\Roles::FSUBSCRIBER | \Roles::PSUBSCRIBER | \Roles::NSUBSCRIBER | \Roles::SUBSCRIBER)):
55+ $user->role = '支援者♡';
56+ break;
57+ case ($user->role & \Roles::BANNED):
58+ $user->role = 'BANされた';
59+ break;
60+ default:
61+ $user->role = 'ユーザー';
62+ break;
63+ }
64+
4965 $user->avatar = '/static/user/'.($user->avatar === '' ? 'noicon.png' : $user->username.'/'.$user->avatar);
5066 $user->altName = $user->displayname ?: $user->username;
5167 unset($user->username);
@@ -4,7 +4,7 @@
44 <table>
55 <tbody>
66 <tr>
7- <td rowspan="3"><img src="{{ $u->avatar }}" alt="{{ $u->altName }}" style="max-width: 100px; max-height: 100px; width: 100%; height: 100%;" /></td>
7+ <td rowspan="4"><img src="{{ $u->avatar }}" alt="{{ $u->altName }}" style="max-width: 100px; max-height: 100px; width: 100%; height: 100%;" /></td>
88 <td>登録日:{{ $u->regDate }}</td>
99 </tr>
1010 <tr>
@@ -12,6 +12,9 @@
1212 </tr>
1313 <tr>
1414 <td>性別:{{ $u->gender }}</td>
15+ </tr>
16+ <tr>
17+ <td>メールアドレス:{{ $u->email }}</td>
1518 </tr>
1619 </tbody>
1720 </table>