From ab467806a51ef4cb5f90dd925da9fa2a31387f45 Mon Sep 17 00:00:00 2001 From: Evg Date: Tue, 17 Aug 2021 16:51:15 +0300 Subject: [PATCH] =?UTF-8?q?ADD:=20=D0=A1=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D0=B0=20=D1=84=D0=BB=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сделаем пока только «пожаловаться» без выбора причин и пояснений к этому. --- app/Controllers/ActionController.php | 1 + app/Controllers/ReportController.php | 51 ++++++++++++++++ app/Language/ru/lang.php | 7 +++ app/Models/NotificationsModel.php | 1 + app/Models/ReportModel.php | 41 +++++++++++++ app/ThirdParty/URLScraper.php | 1 + .../admin/Controllers/ReportsController.php | 48 +++++++++++++++ modules/admin/Models/ReportModel.php | 41 +++++++++++++ modules/admin/templates/_block/admin-menu.php | 8 ++- modules/admin/templates/reports.php | 58 +++++++++++++++++++ public/assets/js/admin.js | 12 ++++ .../views/default/notification/index.php | 9 +++ resources/views/default/post/comment-view.php | 15 ++++- .../views/default/post/questions-view.php | 23 ++++++-- resources/views/default/post/view.php | 12 ++++ routes/admin.php | 4 ++ routes/main.php | 1 + 17 files changed, 326 insertions(+), 7 deletions(-) create mode 100644 app/Controllers/ReportController.php create mode 100644 app/Models/ReportModel.php create mode 100644 modules/admin/Controllers/ReportsController.php create mode 100644 modules/admin/Models/ReportModel.php create mode 100644 modules/admin/templates/reports.php diff --git a/app/Controllers/ActionController.php b/app/Controllers/ActionController.php index 2da8e4bd..05044415 100644 --- a/app/Controllers/ActionController.php +++ b/app/Controllers/ActionController.php @@ -89,4 +89,5 @@ class ActionController extends \MainController return ActionModel::getSearch($search, $type); } + } diff --git a/app/Controllers/ReportController.php b/app/Controllers/ReportController.php new file mode 100644 index 00000000..8356e306 --- /dev/null +++ b/app/Controllers/ReportController.php @@ -0,0 +1,51 @@ + $uid['user_id'], + 'report_type' => $content_type, + 'report_content_id' => $content_id, + 'report_reason' => lang('Breaking the rules'), + 'report_url' => $url_report, + 'report_date' => date("Y-m-d H:i:s"), + 'report_status' => 0, + ]; + + ReportModel::send($data); + } +} diff --git a/app/Language/ru/lang.php b/app/Language/ru/lang.php index cffb8868..117c8394 100644 --- a/app/Language/ru/lang.php +++ b/app/Language/ru/lang.php @@ -10,8 +10,13 @@ return [ 'Create Post' => 'Написать пост', 'Create' => 'Написать', 'Reads' => 'Читают', + 'Saw' => 'Видел', 'The post' => 'Поста', 'Bodies' => 'Тела', + 'Thanks' => 'Спасибо', + 'Report' => 'Флаг', + 'Reports' => 'Флаги', + 'complained about' => 'пожаловался на', 'Freely' => 'Свободно', 'Useful resources' => 'Полезные ресурсы', 'Comment deleted' => 'Комментарий удален', @@ -313,6 +318,8 @@ return [ 'invate-to-replay' => 'Вы уже отсылали приглашение этому пользователю', 'limit-post-day' => 'Вы исчерпали лимит постов на сегодня', 'Registration by invite'=> 'Регистрация по инвайту', + + 'Breaking the rules' => 'Нарушение правил', /* Meta - desc */ 'desc-user-all' => 'Список всех участников сортированных по дате регистрации на сайте', diff --git a/app/Models/NotificationsModel.php b/app/Models/NotificationsModel.php index 990e7561..b4263d39 100644 --- a/app/Models/NotificationsModel.php +++ b/app/Models/NotificationsModel.php @@ -19,6 +19,7 @@ class NotificationsModel extends \MainModel // 11 - в ответах (@login) // 12 - в комментариях (@login) // 15 - аудит + // 20 - флаг система // Лист уведомлений public static function listNotification($user_id) diff --git a/app/Models/ReportModel.php b/app/Models/ReportModel.php new file mode 100644 index 00000000..089eaf60 --- /dev/null +++ b/app/Models/ReportModel.php @@ -0,0 +1,41 @@ + $data['report_user_id'], + 'report_type' => $data['report_type'], + 'report_content_id' => $data['report_content_id'], + 'report_reason' => $data['report_reason'], + 'report_url' => $data['report_url'], + 'report_date' => $data['report_date'], + 'report_status' => $data['report_status'], + ]; + + $sql = "INSERT INTO reports(report_user_id, + report_type, + report_content_id, + report_reason, + report_url, + report_date, + report_status) + + VALUES(:report_user_id, + :report_type, + :report_content_id, + :report_reason, + :report_url, + :report_date, + :report_status)"; + + return DB::run($sql, $params); + } +} diff --git a/app/ThirdParty/URLScraper.php b/app/ThirdParty/URLScraper.php index 5600a82d..7254b4c2 100644 --- a/app/ThirdParty/URLScraper.php +++ b/app/ThirdParty/URLScraper.php @@ -4,6 +4,7 @@ * MIT License * https://github.com/BertMaurau/php-url-scraper * @author Bert Maurau + * См. https://github.com/orcnd/parseMetaTags */ class URLScraper diff --git a/modules/admin/Controllers/ReportsController.php b/modules/admin/Controllers/ReportsController.php new file mode 100644 index 00000000..0a5d7513 --- /dev/null +++ b/modules/admin/Controllers/ReportsController.php @@ -0,0 +1,48 @@ + $row) { + $row['user'] = UserModel::getUser($row['report_user_id'], 'id'); + $row['date'] = lang_date($row['report_date']); + $result[$ind] = $row; + } + + $data = [ + 'pagesCount' => ceil($pagesCount / $limit), + 'pNum' => $page, + 'meta_title' => lang('Reports'), + 'sheet' => 'reports', + ]; + + return view('/templates/reports', ['data' => $data, 'uid' => $uid, 'reports' => $result]); + } + + // Ознакомился + public function status() + { + $report_id = \Request::getPostInt('id'); + + ReportModel::setStatus($report_id); + + return true; + } +} diff --git a/modules/admin/Models/ReportModel.php b/modules/admin/Models/ReportModel.php new file mode 100644 index 00000000..60a49724 --- /dev/null +++ b/modules/admin/Models/ReportModel.php @@ -0,0 +1,41 @@ +fetchAll(PDO::FETCH_ASSOC); + } + + public static function getCount() + { + return DB::run("SELECT report_id FROM reports")->rowCount(); + } + + // Изменим отмеку о занесении в бан-лист + public static function setStatus($report_id) + { + $sql = "UPDATE reports + SET report_status = 1 + WHERE report_id = :report_id"; + + return DB::run($sql, ['report_id' => $report_id]); + } +} diff --git a/modules/admin/templates/_block/admin-menu.php b/modules/admin/templates/_block/admin-menu.php index 7e179ed7..28b9ec34 100644 --- a/modules/admin/templates/_block/admin-menu.php +++ b/modules/admin/templates/_block/admin-menu.php @@ -23,6 +23,12 @@ + - +
------------------------
diff --git a/modules/admin/templates/reports.php b/modules/admin/templates/reports.php new file mode 100644 index 00000000..0da2c972 --- /dev/null +++ b/modules/admin/templates/reports.php @@ -0,0 +1,58 @@ + +
+
+
+
+ + +
+
+ N + + + +
+ + +
+ + + + + + + + + + +
+ + · + +
+
+ +
+
+ + + + + +
+ + + +

+ + ... +

+ +
+ + +
+
+
+
+ \ No newline at end of file diff --git a/public/assets/js/admin.js b/public/assets/js/admin.js index dfb31153..6c5cca3b 100644 --- a/public/assets/js/admin.js +++ b/public/assets/js/admin.js @@ -1,4 +1,16 @@ $(function(){ + // Я читал флаг + $(document).on('click', '.report-status', function() { + let report_id = $(this).data('id'); + fetch("/admin/reports/status", { + method: "POST", + body: "id=" + report_id, + headers:{'Content-Type': 'application/x-www-form-urlencoded'} + }) + .then((response) => { + location.reload(); + }) + }); // Забанить / разбанить участника $(document).on('click', '.user-ban', function() { let user_id = $(this).data('id'); diff --git a/resources/views/default/notification/index.php b/resources/views/default/notification/index.php index b31136a5..288e3d03 100644 --- a/resources/views/default/notification/index.php +++ b/resources/views/default/notification/index.php @@ -47,6 +47,15 @@ + + + + + + + + + diff --git a/resources/views/default/post/comment-view.php b/resources/views/default/post/comment-view.php index dba0b05b..d086e78c 100644 --- a/resources/views/default/post/comment-view.php +++ b/resources/views/default/post/comment-view.php @@ -88,6 +88,13 @@ + 0) { ?> + + + + + +
@@ -184,13 +191,19 @@ - + 0) { ?> + + + + + +
diff --git a/resources/views/default/post/questions-view.php b/resources/views/default/post/questions-view.php index a3376853..890ceb4e 100644 --- a/resources/views/default/post/questions-view.php +++ b/resources/views/default/post/questions-view.php @@ -40,7 +40,7 @@ = Lori\Config::get(Lori\Config::PARAM_TL_ADD_COMM_QA)) { ?> - + @@ -48,7 +48,7 @@ - + @@ -56,7 +56,7 @@ - + @@ -67,12 +67,19 @@ - + + 0) { ?> + + + + + +
@@ -135,7 +142,13 @@
- + 0) { ?> + + + + + +
diff --git a/resources/views/default/post/view.php b/resources/views/default/post/view.php index bd8fcda1..d4cbfb0f 100644 --- a/resources/views/default/post/view.php +++ b/resources/views/default/post/view.php @@ -298,6 +298,18 @@ photos: '#layer-photos', anim: 4 }); + $(document).on('click', '.msg-flag', function() { + let post_id = $(this).data('post_id'); + let content_id = $(this).data('content_id'); + let type = $(this).data('type'); + layer.confirm('Это нарушает правила сайта?', + {icon: 5, title: '', + btn: ['', '']}, function(index) { + $.post('/flag/repost', {type, post_id, content_id}, function(str){ + layer.msg('!'); + }); + }); + }); }); \ No newline at end of file diff --git a/routes/admin.php b/routes/admin.php index 2aeec390..5ff3e61d 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -10,6 +10,7 @@ Route::before('Authorization@admin')->getGroup(); Route::get('/favicon/add')->module('admin', 'Controllers\WebsController@favicon'); Route::get('/word/del')->module('admin', 'Controllers\WordsController@deletes'); Route::get('/audit/status')->module('admin', 'Controllers\AuditsController@status'); + Route::get('/reports/status')->module('admin', 'Controllers\ReportsController@status'); Route::getProtect(); Route::get('/badge/user/add')->module('admin', 'Controllers\BadgesController@addUser'); @@ -67,4 +68,7 @@ Route::before('Authorization@admin')->getGroup(); Route::get('/words/add')->module('admin', 'Controllers\WordsController@addPage'); Route::get('/words')->module('admin', 'Controllers\WordsController', ['all']); + + Route::get('/reports')->module('admin', 'Controllers\ReportsController'); + Route::get('/reports/page/{page?}')->module('admin', 'Controllers\ReportsController')->where(['page' => '[0-9]+']); Route::endGroup(); \ No newline at end of file diff --git a/routes/main.php b/routes/main.php index c832b563..32e92f63 100644 --- a/routes/main.php +++ b/routes/main.php @@ -3,6 +3,7 @@ Route::before('Authorization@noAuth')->getGroup(); Route::getType('post'); + Route::get('/flag/repost')->controller('ReportController'); Route::get('/backend/uploadimage')->controller('Post\EditPostController@uploadimage'); Route::get('/status/action')->controller('ActionController@deletingAndRestoring'); Route::get('/post/grabtitle')->controller('Post\AddPostController@grabMeta');