feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
97
f_core/f_classes/class.moderation.php
Normal file
97
f_core/f_classes/class.moderation.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/*******************************************************************************************************************
|
||||
| Content Moderation Class
|
||||
| Handles user reports and content moderation
|
||||
|*******************************************************************************************************************/
|
||||
|
||||
defined('_ISVALID') or header('Location: /error');
|
||||
|
||||
class VModeration
|
||||
{
|
||||
public static function submitReport($reporter_id, $reported_type, $reported_id, $reason, $details = null)
|
||||
{
|
||||
global $class_database;
|
||||
|
||||
$sql = "INSERT INTO `db_reports` (`reporter_id`, `reported_type`, `reported_id`, `report_reason`, `report_details`)
|
||||
VALUES (%d, '%s', '%s', '%s', %s)";
|
||||
|
||||
$class_database->doQuery($sql,
|
||||
$reporter_id,
|
||||
$reported_type,
|
||||
$reported_id,
|
||||
$reason,
|
||||
$details ? "'" . $class_database->safe_input($details) . "'" : 'NULL'
|
||||
);
|
||||
|
||||
return ['success' => true, 'report_id' => $class_database->insert_id()];
|
||||
}
|
||||
|
||||
public static function getReports($status = 'pending', $limit = 50, $offset = 0)
|
||||
{
|
||||
global $class_database;
|
||||
|
||||
$where = $status ? "WHERE r.status = '$status'" : "";
|
||||
|
||||
$sql = "SELECT r.*, u.usr_user as reporter_name, u.usr_dname as reporter_display
|
||||
FROM `db_reports` r
|
||||
JOIN `db_accountuser` u ON r.reporter_id = u.usr_id
|
||||
{$where}
|
||||
ORDER BY r.created_at DESC
|
||||
LIMIT %d OFFSET %d";
|
||||
|
||||
$result = $class_database->doQuery($sql, $limit, $offset);
|
||||
|
||||
$reports = [];
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$reports[] = $row;
|
||||
}
|
||||
|
||||
return $reports;
|
||||
}
|
||||
|
||||
public static function updateReportStatus($report_id, $status, $reviewed_by, $resolution = null)
|
||||
{
|
||||
global $class_database;
|
||||
|
||||
$resolved_at = in_array($status, ['resolved', 'dismissed']) ? date('Y-m-d H:i:s') : null;
|
||||
|
||||
$sql = "UPDATE `db_reports`
|
||||
SET `status` = '%s', `reviewed_by` = %d, `resolution` = %s, `resolved_at` = %s
|
||||
WHERE `report_id` = %d";
|
||||
|
||||
$class_database->doQuery($sql,
|
||||
$status,
|
||||
$reviewed_by,
|
||||
$resolution ? "'" . $class_database->safe_input($resolution) . "'" : 'NULL',
|
||||
$resolved_at ? "'$resolved_at'" : 'NULL',
|
||||
$report_id
|
||||
);
|
||||
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
public static function getReportedContent($reported_type, $reported_id)
|
||||
{
|
||||
global $class_database;
|
||||
|
||||
$tables = [
|
||||
'video' => 'db_videofiles',
|
||||
'short' => 'db_shortfiles',
|
||||
'user' => 'db_accountuser',
|
||||
'comment' => 'db_comments',
|
||||
'post' => 'db_community_posts'
|
||||
];
|
||||
|
||||
if (!isset($tables[$reported_type])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$table = $tables[$reported_type];
|
||||
$id_field = $reported_type === 'user' ? 'usr_id' : ($reported_type === 'post' ? 'post_id' : 'file_key');
|
||||
|
||||
$sql = "SELECT * FROM `{$table}` WHERE `{$id_field}` = '%s' LIMIT 1";
|
||||
$result = $class_database->doQuery($sql, $reported_id);
|
||||
|
||||
return $result->fetch_assoc();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user