• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

visavi / rotor / 28340133337

28 Jun 2026 11:47PM UTC coverage: 16.561% (+0.09%) from 16.474%
28340133337

push

github

visavi
Ядро и модули переведены на datetime, удалена константа SITETIME

18 of 95 new or added lines in 31 files covered. (18.95%)

7 existing lines in 6 files now uncovered.

989 of 5972 relevant lines covered (16.56%)

2.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/app/Http/Controllers/MailController.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace App\Http\Controllers;
6

7
use App\Classes\HtmlSanitizer;
8
use App\Classes\Validator;
9
use App\Models\User;
10
use Illuminate\Http\RedirectResponse;
11
use Illuminate\Http\Request;
12
use Illuminate\View\View;
13

14
class MailController extends Controller
15
{
16
    /**
17
     * Главная страница
18
     */
19
    public function index(Request $request, Validator $validator): View|RedirectResponse
×
20
    {
21
        if ($request->isMethod('post')) {
×
22
            $message = $request->input('message');
×
23
            $name = $request->input('name');
×
24
            $email = $request->input('email');
×
25

26
            if ($user = getUser()) {
×
27
                $name = $user->login;
×
28
                $email = $user->email;
×
29
            }
30

31
            $validator->true(captchaVerify(), ['protect' => __('validator.captcha')])
×
32
                ->length($name, 3, 100, ['name' => __('mails.name_short_or_long')])
×
33
                ->length($message, 5, 50000, ['message' => __('validator.text')])
×
34
                ->email($email, ['email' => __('validator.email')]);
×
35

36
            if ($validator->isValid()) {
×
37
                $subject = __('mails.email_from_site', ['sitename' => setting('title')], setting('language'));
×
38

39
                $message = str_replace(
×
40
                    '/uploads/stickers',
×
41
                    config('app.url') . '/uploads/stickers',
×
42
                    HtmlSanitizer::sanitize($message)
×
43
                );
×
44

NEW
45
                $message .= '<br><br>Email: ' . $name . ' &lt;' . $email . '&gt;<br>IP: ' . getIp() . '<br>Browser: ' . getBrowser() . '<br>' . __('main.sent_out', [], setting('language')) . ': ' . dateFixed(now(), 'd.m.y / H:i');
×
46
                $data = [
×
47
                    'to'      => config('app.email'),
×
48
                    'subject' => $subject,
×
49
                    'text'    => $message,
×
50
                    'from'    => [$email, $name],
×
51
                ];
×
52

53
                $send = sendMail('mailer.default', $data);
×
54

55
                if ($send) {
×
56
                    setFlash('success', __('mails.success_sent'));
×
57
                } else {
58
                    setFlash('danger', __('mails.failed_sent'));
×
59
                }
60

61
                return redirect('/mails');
×
62
            }
63

64
            setInput($request->all());
×
65
            setFlash('danger', $validator->getErrors());
×
66
        }
67

68
        return view('mails/index');
×
69
    }
70

71
    /**
72
     * Отписка от рассылки
73
     */
74
    public function unsubscribe(Request $request): RedirectResponse
×
75
    {
76
        $key = $request->input('key');
×
77

78
        if (! $key) {
×
79
            abort(200, __('mails.token_missing'));
×
80
        }
81

82
        $user = User::query()->where('subscribe', $key)->first();
×
83

84
        if (! $user) {
×
85
            abort(200, __('mails.token_expired'));
×
86
        }
87

88
        $user->subscribe = null;
×
89
        $user->save();
×
90

91
        setFlash('success', __('mails.success_unsubscribed'));
×
92

93
        return redirect('/');
×
94
    }
95
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc