支援者♡限定記事対応
This commit is contained in:
9
blog/subscriberonly-post.md
Normal file
9
blog/subscriberonly-post.md
Normal 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
|
||||||
|
----
|
||||||
|
これを見れば、モネロちゃんは貴方の事が大好き!!♡
|
||||||
@@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user