S2OJ/web/app/controllers/subdomain/blog/slide_write.php

108 lines
2.9 KiB
PHP
Raw Permalink Normal View History

2016-07-18 16:39:37 +00:00
<?php
2022-11-06 02:26:21 +00:00
requirePHPLib('form');
2022-03-17 04:00:03 +00:00
2022-11-06 02:26:21 +00:00
Auth::check() || redirectToLogin();
UOJUserBlog::userCanManage(Auth::user()) || UOJResponse::page403();
2022-10-08 06:10:14 +00:00
2022-11-06 02:26:21 +00:00
if (isset($_GET['id'])) {
UOJBlog::init(UOJRequest::get('id')) || UOJResponse::page404();
UOJBlog::cur()->belongsToUserBlog() || UOJResponse::page404();
UOJBlog::info('type') == 'S' || UOJResponse::page404();
$blog = UOJBlog::info();
$blog['content'] = UOJBlog::cur()->queryContent()['content'];
$blog['content_md'] = UOJBlog::cur()->queryContent()['content_md'];
2022-11-11 23:10:34 +00:00
} else {
UOJUser::checkPermission(Auth::user(), 'blogs.create') || UOJResponse::page403();
isSuperUser(Auth::user()) || UOJUserBlog::userIsOwner(Auth::user()) || UOJResponse::page403();
2022-11-06 02:26:21 +00:00
}
$blog_editor = new UOJBlogEditor();
$blog_editor->type = 'slide';
$blog_editor->name = 'blog';
if ($blog) {
$blog_editor->cur_data = array(
'title' => $blog['title'],
'content_md' => $blog['content_md'],
'content' => $blog['content'],
'tags' => UOJBlog::cur()->queryTags(),
'is_hidden' => $blog['is_hidden']
);
} else {
$blog_editor->cur_data = array(
'title' => '新幻灯片',
'content_md' => '',
'content' => '',
'tags' => [],
'is_hidden' => true
);
}
if ($blog) {
$blog_editor->blog_url = HTML::blog_url(UOJUserBlog::id(), "/post/{$blog['id']}");
} else {
$blog_editor->blog_url = null;
}
2023-02-18 03:27:21 +00:00
function updateBlog($id, $data) {
DB::update([
"update blogs",
"set", [
"title" => $data['title'],
"content" => $data['content'],
"content_md" => $data['content_md'],
"is_hidden" => $data['is_hidden'],
],
"where", ["id" => $id]
]);
}
2023-02-17 10:34:16 +00:00
function insertSlide($data) {
2022-11-06 02:26:21 +00:00
DB::insert([
"insert into blogs",
2023-02-17 10:34:16 +00:00
"(type, title, content, content_md, poster, is_hidden, post_time, active_time)",
2022-11-06 02:26:21 +00:00
"values", DB::tuple([
2023-02-17 10:34:16 +00:00
"S", $data['title'], $data['content'], $data['content_md'],
2022-11-06 02:26:21 +00:00
UOJUserBlog::id(), $data['is_hidden'], DB::now(), DB::now()
])
]);
}
$blog_editor->save = function ($data) {
global $blog;
$ret = [];
2022-03-17 08:38:39 +00:00
if ($blog) {
2022-11-06 02:26:21 +00:00
updateBlog($blog['id'], $data);
2016-07-18 16:39:37 +00:00
} else {
2022-11-06 02:26:21 +00:00
insertSlide($data);
$blog_id = DB::insert_id();
2022-11-06 22:30:50 +00:00
UOJBlog::query(strval($blog_id))->setAsCur();
2022-11-06 02:26:21 +00:00
$ret['blog_id'] = $blog_id;
$ret['blog_write_url'] = UOJBlog::cur()->getUriForWrite();
$ret['blog_url'] = UOJBlog::cur()->getBlogUri();
2016-07-18 16:39:37 +00:00
}
2022-11-06 02:26:21 +00:00
UOJBlog::cur()->updateTags($data['tags']);
return $ret;
};
$blog_editor->runAtServer();
?>
2016-07-18 16:39:37 +00:00
<?php echoUOJPageHeader('写幻灯片') ?>
2022-10-22 13:12:13 +00:00
<div class="text-end">
2022-11-06 02:26:21 +00:00
<a class="text-decoration-none" href="http://uoj.ac/blog/75">这玩意儿怎么用?</a>
</div>
<div class="card">
<div class="card-header bg-transparent d-flex justify-content-between">
<div class="fw-bold">写幻灯片</div>
<div id="div-blog-id" <?php if (!$blog) : ?> style="display: none" <?php endif ?>>
<?php if ($blog) : ?>
<small>博客 ID<b><?= $blog['id'] ?></b></small>
<?php endif ?>
</div>
</div>
<div class="card-body">
<?php $blog_editor->printHTML() ?>
</div>
2016-07-18 16:39:37 +00:00
</div>
2022-11-06 02:26:21 +00:00
2016-07-18 16:39:37 +00:00
<?php echoUOJPageFooter() ?>