ForRo/app/Http/Controllers/ExportController.php
Ro a15db82697
Added Exports by Heat Rating
Reactivated CSV exports based on Heat Rating, which is the percentage of
Current Sources the have taken action, a suspend or a silence, against
an instanct. The higher the Heat Rating, the more Sources that have
taken actions agaisnt it, so they should be viewed with caution
2023-09-28 14:02:35 -07:00

58 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Location;
use App\Models\Source;
class ExportController extends Controller
{
public function exportIndex()
{
return view('front.exports', [
'title' => "Exports"
]);
}
//
public function exportCSV($type, $percent)
{
$columns = [];
$list = [];
$locations = Location::where("active", true)->get();
$sources = Source::where("active", true)->get();
if ($type == 'mastodon') {
$columns = [
'domain',
'severity',
'public_comment',
'reject_media',
'reject_reports',
'obfuscate',
];
};
foreach ($locations as $location) {
$total = $location->block_count + $location->silence_count;
if ($total >= 2) {
$rate = $total / count($sources);
if ($rate * 100 >= $percent) {
if ($type == 'mastodon') {
$comments = str_replace(",", ";", $location->description);
array_push($list, [$location->url, $location->rating, $comments, "FALSE", "FALSE", "FALSE"]);
}
}
}
}
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=' . $type . "-" . $percent);
echo implode(',', $columns) . PHP_EOL;
foreach ($list as $item) {
echo implode(',', $item) . PHP_EOL;
}
}
}