AAAHHH IMMM.. IIIIM COOOMMMIIIIIIITIING!!!!!
This commit is contained in:
parent
5787e5c904
commit
cbecf6d734
@ -2,28 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller;
|
||||||
|
|
||||||
use App\Config;
|
use App\Model\ChatModel;
|
||||||
|
|
||||||
ChatController::init();
|
|
||||||
|
|
||||||
abstract class ChatController
|
abstract class ChatController
|
||||||
{
|
{
|
||||||
private static array $messages;
|
|
||||||
|
|
||||||
static function init()
|
|
||||||
{
|
|
||||||
if (!file_exists(Config::get('path_to_chat_json_file'))) {
|
|
||||||
file_put_contents(
|
|
||||||
Config::get('path_to_chat_json_file'),
|
|
||||||
json_encode([])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
self::$messages = json_decode(
|
|
||||||
file_get_contents(Config::get('path_to_chat_json_file')),
|
|
||||||
true
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
static function index()
|
static function index()
|
||||||
{
|
{
|
||||||
if (empty($_POST)) {
|
if (empty($_POST)) {
|
||||||
@ -36,7 +18,7 @@ abstract class ChatController
|
|||||||
|
|
||||||
$nick = filter_input(INPUT_POST, 'nick');
|
$nick = filter_input(INPUT_POST, 'nick');
|
||||||
$text = filter_input(INPUT_POST, 'text');
|
$text = filter_input(INPUT_POST, 'text');
|
||||||
$errmsg = (function() use (&$text, &$nick): string|false {
|
$errmsg = (function() use (&$text, &$nick): string {
|
||||||
if (empty(trim($nick, ' '))) {
|
if (empty(trim($nick, ' '))) {
|
||||||
return 'You must choose a nickname.';
|
return 'You must choose a nickname.';
|
||||||
}
|
}
|
||||||
@ -55,26 +37,16 @@ abstract class ChatController
|
|||||||
return 'Message body cannot be empty.';
|
return 'Message body cannot be empty.';
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return '';
|
||||||
})();
|
})();
|
||||||
|
|
||||||
if (!$errmsg) {
|
if (empty($errmsg)) {
|
||||||
if (count(self::$messages) > 100) {
|
ChatModel::save_message(
|
||||||
array_pop(self::$messages);
|
$nick,
|
||||||
}
|
$text
|
||||||
|
|
||||||
array_unshift(self::$messages, [
|
|
||||||
'nick' => $nick,
|
|
||||||
'date' => time(),
|
|
||||||
'text' => $text
|
|
||||||
]);
|
|
||||||
|
|
||||||
file_put_contents(Config::get('path_to_chat_json_file'),
|
|
||||||
json_encode(
|
|
||||||
self::$messages
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
view('pages/chat/index', [
|
view('pages/chat/index', [
|
||||||
'nick' => $nick,
|
'nick' => $nick,
|
||||||
'just_sent_message' => true,
|
'just_sent_message' => true,
|
||||||
@ -84,11 +56,14 @@ abstract class ChatController
|
|||||||
|
|
||||||
static function messages()
|
static function messages()
|
||||||
{
|
{
|
||||||
view('pages/chat/messages', ['messages' => self::$messages]);
|
view('pages/chat/messages',
|
||||||
|
['messages' => ChatModel::get_messages()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function sync()
|
static function sync()
|
||||||
{
|
{
|
||||||
json_response(hash('crc32', serialize(self::$messages)));
|
json_response(hash('crc32', serialize(
|
||||||
|
ChatModel::get_messages()
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
50
app/App/Model/ChatModel.php
Normal file
50
app/App/Model/ChatModel.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Model;
|
||||||
|
|
||||||
|
use App\Config;
|
||||||
|
|
||||||
|
ChatModel::init();
|
||||||
|
|
||||||
|
abstract class ChatModel
|
||||||
|
{
|
||||||
|
private static array $messages;
|
||||||
|
|
||||||
|
static function init()
|
||||||
|
{
|
||||||
|
if (!file_exists(Config::get('path_to_chat_json_file'))) {
|
||||||
|
file_put_contents(
|
||||||
|
Config::get('path_to_chat_json_file'),
|
||||||
|
json_encode([])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
self::$messages = json_decode(
|
||||||
|
file_get_contents(Config::get('path_to_chat_json_file')),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static function get_messages(): array
|
||||||
|
{
|
||||||
|
return self::$messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function save_message(string $nick, string $text)
|
||||||
|
{
|
||||||
|
if (count(self::$messages) > 100) {
|
||||||
|
array_pop($messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
array_unshift(self::$messages, [
|
||||||
|
'nick' => $nick,
|
||||||
|
'date' => time(),
|
||||||
|
'text' => $text
|
||||||
|
]);
|
||||||
|
|
||||||
|
file_put_contents(Config::get('path_to_chat_json_file'),
|
||||||
|
json_encode(
|
||||||
|
self::$messages
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -35,5 +35,12 @@ App::group('/chat', function() {
|
|||||||
ChatController::sync(...));
|
ChatController::sync(...));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
App::group('/blog', function() {
|
||||||
|
App::get('/',
|
||||||
|
fn() => view('pages/blog/home'));
|
||||||
|
App::get('/test',
|
||||||
|
fn() => view('pages/blog/test'));
|
||||||
|
});
|
||||||
|
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
view('errors/404');
|
view('errors/404');
|
Loading…
Reference in New Issue
Block a user