mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-22 19:28:41 +00:00
feat(web): add image_hosting
This commit is contained in:
parent
0d0b8b0ba7
commit
ec80c669d1
@ -815,6 +815,7 @@ CREATE TABLE `user_info` (
|
|||||||
`motto` varchar(200) NOT NULL,
|
`motto` varchar(200) NOT NULL,
|
||||||
`last_login` timestamp NOT NULL DEFAULT 0,
|
`last_login` timestamp NOT NULL DEFAULT 0,
|
||||||
`last_visited` timestamp NOT NULL DEFAULT 0,
|
`last_visited` timestamp NOT NULL DEFAULT 0,
|
||||||
|
`images_size_limit` int(11) UNSIGNED NOT NULL DEFAULT 104857600, /* 100 MiB */
|
||||||
PRIMARY KEY (`username`),
|
PRIMARY KEY (`username`),
|
||||||
KEY `ac_num` (`ac_num`,`username`)
|
KEY `ac_num` (`ac_num`,`username`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
||||||
@ -829,6 +830,35 @@ LOCK TABLES `user_info` WRITE;
|
|||||||
/*!40000 ALTER TABLE `user_info` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `user_info` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users_images`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `users_images` (
|
||||||
|
`id` varchar(30) NOT NULL,
|
||||||
|
`username` varchar(20) NOT NULL,
|
||||||
|
`width` int(11) NOT NULL,
|
||||||
|
`height` int(11) NOT NULL,
|
||||||
|
`upload_time` datetime NOT NULL,
|
||||||
|
`size` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `username` (`username`),
|
||||||
|
KEY `upload_time` (`upload_time`),
|
||||||
|
KEY `size` (`size`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `users_images`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `users_images` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `users_images` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `users_images` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `user_msg`
|
-- Table structure for table `user_msg`
|
||||||
--
|
--
|
||||||
|
6
web/app/controllers/image_hosting/get_image.php
Normal file
6
web/app/controllers/image_hosting/get_image.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
requirePHPLib('form');
|
||||||
|
|
||||||
|
if (!Auth::check() && UOJConfig::$data['switch']['force-login']) {
|
||||||
|
redirectToLogin();
|
||||||
|
}
|
21
web/app/controllers/image_hosting/index.php
Normal file
21
web/app/controllers/image_hosting/index.php
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
requirePHPLib('form');
|
||||||
|
|
||||||
|
if (!Auth::check() && UOJConfig::$data['switch']['force-login']) {
|
||||||
|
redirectToLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isNormalUser($myUser) && UOJConfig::$data['switch']['force-login']) {
|
||||||
|
become403Page();
|
||||||
|
}
|
||||||
|
|
||||||
|
$REQUIRE_LIB['bootstrap5'] = '';
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php echoUOJPageHeader(UOJLocale::get('image hosting')) ?>
|
||||||
|
|
||||||
|
<h1 class="h2">
|
||||||
|
<?= UOJLocale::get('image hosting') ?>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<?php echoUOJPageFooter() ?>
|
@ -100,4 +100,6 @@ return [
|
|||||||
'last active at' => 'Last active at',
|
'last active at' => 'Last active at',
|
||||||
'online' => 'Online',
|
'online' => 'Online',
|
||||||
'offline' => 'Offline',
|
'offline' => 'Offline',
|
||||||
|
'apps' => 'Apps',
|
||||||
|
'image hosting' => 'Image Hosting',
|
||||||
];
|
];
|
||||||
|
@ -100,4 +100,6 @@ return [
|
|||||||
'online' => '在线',
|
'online' => '在线',
|
||||||
'offline' => '离线',
|
'offline' => '离线',
|
||||||
'last active at' => '最后活动于',
|
'last active at' => '最后活动于',
|
||||||
|
'apps' => '应用',
|
||||||
|
'image hosting' => '图床',
|
||||||
];
|
];
|
||||||
|
@ -5,6 +5,7 @@ Route::pattern('id', '[1-9][0-9]{0,9}');
|
|||||||
Route::pattern('contest_id', '[1-9][0-9]{0,9}');
|
Route::pattern('contest_id', '[1-9][0-9]{0,9}');
|
||||||
Route::pattern('tab', '\S{1,20}');
|
Route::pattern('tab', '\S{1,20}');
|
||||||
Route::pattern('rand_str_id', '[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{20}');
|
Route::pattern('rand_str_id', '[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{20}');
|
||||||
|
Route::pattern('image_name', '[0123456789abcdefghijklmnopqrstuvwxyz]{7}');
|
||||||
Route::pattern('upgrade_name', '[a-zA-Z0-9_]{1,50}');
|
Route::pattern('upgrade_name', '[a-zA-Z0-9_]{1,50}');
|
||||||
|
|
||||||
Route::group([
|
Route::group([
|
||||||
@ -78,6 +79,10 @@ Route::group([
|
|||||||
Route::any('/download.php', '/download.php');
|
Route::any('/download.php', '/download.php');
|
||||||
|
|
||||||
Route::any('/click-zan', '/click_zan.php');
|
Route::any('/click-zan', '/click_zan.php');
|
||||||
|
|
||||||
|
// Image Hosting
|
||||||
|
Route::any('/image-hosting', '/image_hosting/index.php');
|
||||||
|
Route::get('/image-hosting/{image_name}.png', '/image_hosting/get_image.php');
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
0
web/app/storage/image_hosting/.gitkeep
Normal file
0
web/app/storage/image_hosting/.gitkeep
Normal file
1
web/app/upgrade/4_image_hosting/README.md
Normal file
1
web/app/upgrade/4_image_hosting/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
ref: https://github.com/renbaoshuo/S2OJ/issues/4
|
2
web/app/upgrade/4_image_hosting/down.sql
Normal file
2
web/app/upgrade/4_image_hosting/down.sql
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE `user_info` DROP COLUMN IF EXISTS `images_size_limit`;
|
||||||
|
DROP TABLE IF EXISTS `users_images`;
|
21
web/app/upgrade/4_image_hosting/up.sql
Normal file
21
web/app/upgrade/4_image_hosting/up.sql
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
ALTER TABLE `user_info` ADD COLUMN `images_size_limit` int(11) UNSIGNED NOT NULL DEFAULT 104857600 /* 100 MiB */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users_images`
|
||||||
|
--
|
||||||
|
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE IF NOT EXISTS `users_images` (
|
||||||
|
`id` varchar(30) NOT NULL,
|
||||||
|
`username` varchar(20) NOT NULL,
|
||||||
|
`width` int(11) NOT NULL,
|
||||||
|
`height` int(11) NOT NULL,
|
||||||
|
`upload_time` datetime NOT NULL,
|
||||||
|
`size` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `username` (`username`),
|
||||||
|
KEY `upload_time` (`upload_time`),
|
||||||
|
KEY `size` (`size`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
@ -103,6 +103,22 @@ mb-4" role="navigation">
|
|||||||
<?= UOJLocale::get('blogs') ?>
|
<?= UOJLocale::get('blogs') ?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<i class="bi bi-grid-3x3-gap"></i>
|
||||||
|
<?= UOJLocale::get('apps') ?>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li>
|
||||||
|
<a class="dropdown-item" href="<?= HTML::url('/image-hosting') ?>">
|
||||||
|
<i class="bi bi-images"></i>
|
||||||
|
<?= UOJLocale::get('image hosting') ?>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<?php endif ?>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="<?= HTML::url('/faq') ?>">
|
<a class="nav-link" href="<?= HTML::url('/faq') ?>">
|
||||||
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
|
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
|
||||||
|
@ -89,6 +89,7 @@ initProgress(){
|
|||||||
service apache2 restart
|
service apache2 restart
|
||||||
mkdir -p /opt/uoj/web/app/storage/submission
|
mkdir -p /opt/uoj/web/app/storage/submission
|
||||||
mkdir -p /opt/uoj/web/app/storage/tmp
|
mkdir -p /opt/uoj/web/app/storage/tmp
|
||||||
|
mkdir -p /opt/uoj/web/app/storage/image_hosting
|
||||||
chmod -R 777 /opt/uoj/web/app/storage
|
chmod -R 777 /opt/uoj/web/app/storage
|
||||||
#Using cli upgrade to latest
|
#Using cli upgrade to latest
|
||||||
php7.4 /var/www/uoj/app/cli.php upgrade:latest
|
php7.4 /var/www/uoj/app/cli.php upgrade:latest
|
||||||
|
Loading…
Reference in New Issue
Block a user