diff --git a/blog/subscriberonly-post.md b/blog/subscriberonly-post.md new file mode 100644 index 0000000..c02ffd6 --- /dev/null +++ b/blog/subscriberonly-post.md @@ -0,0 +1,9 @@ +title: 【新機能】支援者♡限定 +uuid: 6e7d1725-c9d3-4279-967c-39bfc37fea8e +author: 諏訪子 +date: 2025-12-29 08:43:27 +thumbnail: +thumborient: center +category: feature,subscriberonly +---- +これを見れば、モネロちゃんは貴方の事が大好き!!♡ \ No newline at end of file diff --git a/src/Site/Controller/BlogPost.php b/src/Site/Controller/BlogPost.php index 1a072c1..6bdfc36 100644 --- a/src/Site/Controller/BlogPost.php +++ b/src/Site/Controller/BlogPost.php @@ -11,6 +11,7 @@ class BlogPost { $path = ROOT.$section; $posts = []; $isMember = $user !== NULL && $user->role !== \Roles::BANNED; + $isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER; $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF); if (!is_dir($path)) return $posts; @@ -46,6 +47,9 @@ class BlogPost { $preview = mb_substr(strip_tags($articleBody), 0, 50).'...'; $slug = basename($file, '.md'); if (isset($metadata['draft']) && !$isStaff) continue; + $cannotPreview = (!$isMember && in_array('memberonly', $metadata['category'])) + || ((!$isPaywall && !$isStaff) && in_array('subscriberonly', $metadata['category'])) + || (!$isStaff && in_array('staffonly', $metadata['category'])); $posts[] = [ 'title' => $metadata['title'] ?? '', @@ -54,7 +58,7 @@ class BlogPost { 'thumborient' => $metadata['thumborient'] ?? '', 'category' => $metadata['category'] ?? [], 'uuid' => $metadata['uuid'] ?? '', - 'preview' => ((!$isMember && in_array('memberonly', $metadata['category'])) || (!$isStaff && in_array('staffonly', $metadata['category'])) ? '未許可' : $preview), + 'preview' => ($cannotPreview ? '未許可' : $preview), 'slug' => $slug, ]; } diff --git a/src/Site/Controller/Home.php b/src/Site/Controller/Home.php index fe09f4d..b2a0301 100644 --- a/src/Site/Controller/Home.php +++ b/src/Site/Controller/Home.php @@ -114,6 +114,7 @@ class Home extends BlogPost { $auth = new Auth(); $user = $auth->getLoggedInUser(); $isMember = $user !== NULL && $user->role !== \Roles::BANNED; + $isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER; $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF); $tmpl->assign('user', $user); @@ -133,6 +134,7 @@ class Home extends BlogPost { } if (!$isMember && in_array('memberonly', $meta->category)) goto denyaccess; + if ((!$isPaywall && !$isStaff) && in_array('subscriberonly', $meta->category)) goto denyaccess; if (!$isStaff && in_array('staffonly', $meta->category)) goto denyaccess; if (isset($meta->draft) && !$isStaff) goto denyaccess; diff --git a/src/Site/Controller/Notfound.php b/src/Site/Controller/Notfound.php index ade65db..c0bd9bf 100644 --- a/src/Site/Controller/Notfound.php +++ b/src/Site/Controller/Notfound.php @@ -1,8 +1,9 @@ getLoggedInUser(); + $tmpl->assign('user', $user); + $tmpl->assign('pagetit', $pagetit); $tmpl->assign('curPage', '404'); $tmpl->assign('menu', $this->getMenu()); diff --git a/src/Site/Lib/Auth.php b/src/Site/Lib/Auth.php index 549c69b..02dcb60 100644 --- a/src/Site/Lib/Auth.php +++ b/src/Site/Lib/Auth.php @@ -39,13 +39,29 @@ class Auth { unset($user->password); unset($user->tokens); $myself = $this->getUserData(); - if ($myself->role & (\Roles::PLAYSTATIONNDA | \Roles::NINTENDONDA | \Roles::MEMBER | \Roles::BANNED)) { - unset($user->email); - } + if ($myself->id != $user->id && $myself->role < \Roles::STAFF) $user->email = '(秘密)'; $user->name = namecolor($user); $user->regDate = date('Y年m月d日', $user->regDate); $user->gender = $user->gender === \Gender::MALE ? '男' : ($user->gender === \Gender::FEMALE ? '女' : '不明'); - $user->role = $user->role & (\Roles::ADMIN | \Roles::STAFF) ? '管理者' : ($user->role === \Roles::BANNED ? 'BANされた' : 'ユーザー'); + + switch (true) { + case ($user->role & \Roles::ADMIN): + $user->role = '管理者'; + break; + case ($user->role & \Roles::STAFF): + $user->role = '076スタジオの会社員'; + break; + case ($user->role & (\Roles::FSUBSCRIBER | \Roles::PSUBSCRIBER | \Roles::NSUBSCRIBER | \Roles::SUBSCRIBER)): + $user->role = '支援者♡'; + break; + case ($user->role & \Roles::BANNED): + $user->role = 'BANされた'; + break; + default: + $user->role = 'ユーザー'; + break; + } + $user->avatar = '/static/user/'.($user->avatar === '' ? 'noicon.png' : $user->username.'/'.$user->avatar); $user->altName = $user->displayname ?: $user->username; unset($user->username); diff --git a/view/profile.maron b/view/profile.maron index 9772e13..cff644a 100644 --- a/view/profile.maron +++ b/view/profile.maron @@ -4,7 +4,7 @@
| 登録日:{{ $u->regDate }} | ||
| 性別:{{ $u->gender }} | ||
| メールアドレス:{{ $u->email }} | +