支援者♡限定記事対応

This commit is contained in:
2025-12-29 18:05:59 +09:00
parent c458eecd53
commit 6a4ff9d9e5
6 changed files with 47 additions and 7 deletions

View File

@@ -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
----
これを見れば、モネロちゃんは貴方の事が大好き!!♡

View File

@@ -11,6 +11,7 @@ class BlogPost {
$path = ROOT.$section; $path = ROOT.$section;
$posts = []; $posts = [];
$isMember = $user !== NULL && $user->role !== \Roles::BANNED; $isMember = $user !== NULL && $user->role !== \Roles::BANNED;
$isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER;
$isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF); $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
if (!is_dir($path)) return $posts; if (!is_dir($path)) return $posts;
@@ -46,6 +47,9 @@ class BlogPost {
$preview = mb_substr(strip_tags($articleBody), 0, 50).'...'; $preview = mb_substr(strip_tags($articleBody), 0, 50).'...';
$slug = basename($file, '.md'); $slug = basename($file, '.md');
if (isset($metadata['draft']) && !$isStaff) continue; 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[] = [ $posts[] = [
'title' => $metadata['title'] ?? '', 'title' => $metadata['title'] ?? '',
@@ -54,7 +58,7 @@ class BlogPost {
'thumborient' => $metadata['thumborient'] ?? '', 'thumborient' => $metadata['thumborient'] ?? '',
'category' => $metadata['category'] ?? [], 'category' => $metadata['category'] ?? [],
'uuid' => $metadata['uuid'] ?? '', 'uuid' => $metadata['uuid'] ?? '',
'preview' => ((!$isMember && in_array('memberonly', $metadata['category'])) || (!$isStaff && in_array('staffonly', $metadata['category'])) ? '未許可' : $preview), 'preview' => ($cannotPreview ? '未許可' : $preview),
'slug' => $slug, 'slug' => $slug,
]; ];
} }

View File

@@ -114,6 +114,7 @@ class Home extends BlogPost {
$auth = new Auth(); $auth = new Auth();
$user = $auth->getLoggedInUser(); $user = $auth->getLoggedInUser();
$isMember = $user !== NULL && $user->role !== \Roles::BANNED; $isMember = $user !== NULL && $user->role !== \Roles::BANNED;
$isPaywall = $user !== NULL && $user->role >= \Roles::SUBSCRIBER;
$isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF); $isStaff = $user !== NULL && $user->role & (\Roles::ADMIN | \Roles::STAFF);
$tmpl->assign('user', $user); $tmpl->assign('user', $user);
@@ -133,6 +134,7 @@ class Home extends BlogPost {
} }
if (!$isMember && in_array('memberonly', $meta->category)) goto denyaccess; 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 (!$isStaff && in_array('staffonly', $meta->category)) goto denyaccess;
if (isset($meta->draft) && !$isStaff) goto denyaccess; if (isset($meta->draft) && !$isStaff) goto denyaccess;

View File

@@ -1,8 +1,9 @@
<?php <?php
namespace Site\Controller; namespace Site\Controller;
use Site\Lib\Template;
use Site\Controller\Mods; use Site\Controller\Mods;
use Site\Lib\Auth;
use Site\Lib\Template;
class Notfound { class Notfound {
use Mods; use Mods;
@@ -12,6 +13,11 @@ class Notfound {
$tmpl = new Template('/'); $tmpl = new Template('/');
$pagetit = 'Not found'; $pagetit = 'Not found';
// ユーザー
$auth = new Auth();
$user = $auth->getLoggedInUser();
$tmpl->assign('user', $user);
$tmpl->assign('pagetit', $pagetit); $tmpl->assign('pagetit', $pagetit);
$tmpl->assign('curPage', '404'); $tmpl->assign('curPage', '404');
$tmpl->assign('menu', $this->getMenu()); $tmpl->assign('menu', $this->getMenu());

View File

@@ -39,13 +39,29 @@ class Auth {
unset($user->password); unset($user->password);
unset($user->tokens); unset($user->tokens);
$myself = $this->getUserData(); $myself = $this->getUserData();
if ($myself->role & (\Roles::PLAYSTATIONNDA | \Roles::NINTENDONDA | \Roles::MEMBER | \Roles::BANNED)) { if ($myself->id != $user->id && $myself->role < \Roles::STAFF) $user->email = '(秘密)';
unset($user->email);
}
$user->name = namecolor($user); $user->name = namecolor($user);
$user->regDate = date('Y年m月d日', $user->regDate); $user->regDate = date('Y年m月d日', $user->regDate);
$user->gender = $user->gender === \Gender::MALE ? '男' : ($user->gender === \Gender::FEMALE ? '女' : '不明'); $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->avatar = '/static/user/'.($user->avatar === '' ? 'noicon.png' : $user->username.'/'.$user->avatar);
$user->altName = $user->displayname ?: $user->username; $user->altName = $user->displayname ?: $user->username;
unset($user->username); unset($user->username);

View File

@@ -4,7 +4,7 @@
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td rowspan="3"><img src="{{ $u->avatar }}" alt="{{ $u->altName }}" style="max-width: 100px; max-height: 100px; width: 100%; height: 100%;" /></td> <td rowspan="4"><img src="{{ $u->avatar }}" alt="{{ $u->altName }}" style="max-width: 100px; max-height: 100px; width: 100%; height: 100%;" /></td>
<td>登録日:{{ $u->regDate }}</td> <td>登録日:{{ $u->regDate }}</td>
</tr> </tr>
<tr> <tr>
@@ -13,6 +13,9 @@
<tr> <tr>
<td>性別:{{ $u->gender }}</td> <td>性別:{{ $u->gender }}</td>
</tr> </tr>
<tr>
<td>メールアドレス:{{ $u->email }}</td>
</tr>
</tbody> </tbody>
</table> </table>
</p> </p>