You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pixelfed/app/Mail/AdminNewReport.php

101 lines
2.9 KiB
PHP

<?php
namespace App\Mail;
use App\Services\AccountService;
use App\Services\StatusService;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class AdminNewReport extends Mailable
{
use Queueable, SerializesModels;
public $report;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($report)
{
$this->report = $report;
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope()
{
$type = $this->report->type;
$id = $this->report->id;
$object_type = last(explode('\\', $this->report->object_type));
return new Envelope(
subject: '['.config('pixelfed.domain.app').'] '.$object_type.' Report (Ref: report-'.$id.'-'.$type.')',
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content()
{
$report = $this->report;
$object_type = last(explode('\\', $this->report->object_type));
$reporter = AccountService::get($report->profile_id, true);
$reported = AccountService::get($report->reported_profile_id, true);
$title = 'New '.$object_type.' Report (#'.$report->id.')';
$reportUrl = url('/i/admin/reports/show/'.$report->id.'?ref=email');
$data = [
'report' => $report,
'object_type' => $object_type,
'title' => $title,
'reporter' => $reporter,
'reported' => $reported,
'url' => $reportUrl,
'message' => 'You have a new moderation report.',
];
if ($object_type === 'Status') {
$data['reported_status'] = StatusService::get($report['object_id'], false);
if ($reporter && $reported) {
$data['message'] = '<a href="'.url('/i/web/profile/'.$reporter['id']).'">@'.
$reporter['acct'].'</a> reported a post by <a href="'.url('/i/web/profile/'.$reported['id']).
'">@'.$reported['acct'].'</a> as '.$report->type.'.';
}
}
if ($object_type === 'Profile') {
if ($reporter && $reported) {
$data['message'] = '<a href="'.url('/i/web/profile/'.$reporter['id']).'">@'.
$reporter['acct'].'</a> reported <a href="'.url('/i/web/profile/'.$reported['id']).
'">@'.$reported['acct'].'</a>\'s profile as '.$report->type.'.';
}
}
return new Content(
markdown: 'emails.admin.new_report',
with: $data
);
}
/**
* Get the attachments for the message.
*
* @return array
*/
public function attachments()
{
return [];
}
}