LongMessageMiddleware   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 51
rs 10
wmc 6
lcom 1
cbo 2

1 Method

Rating   Name   Duplication   Size   Complexity  
B handle() 0 40 6
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Domains\Message;
5
use Domains\Middleware\MiddlewareInterface;
6
7
/**
8
 * Class LongMessageMiddleware
9
 */
10
class LongMessageMiddleware implements MiddlewareInterface
11
{
12
    const MAX_CHARS = 1000;
13
    const MAX_LINES = 20;
14
    const MAX_CODE_LINES = 20;
15
16
    /**
17
     * @param Message $message
18
     * @return mixed
19
     */
20
    public function handle(Message $message)
21
    {
22
        $text = $message->text;
23
        $lines = count(explode("\n", $text));
24
        $chars = mb_strlen($text);
25
26
        if (preg_match_all('/^((`{3}\s*)(\w+)?(\s*([\w\W]+?)\n*)\2)\n*(?:[^\S\w\s]|$)/m', $text, $matches)) {
27
28
            $codeLines = 0;
29
30
            foreach ($matches[5] as $code) {
31
32
                $codeLines += count(explode("\n", $code));
33
34
            }
35
36
            if ($codeLines > self::MAX_CODE_LINES) {
37
38
                $answer = trans('long.code_personal', [
39
                    'user'  => $message->user->login,
40
                ]);
41
42
                $message->answer($answer);
43
44
                return null;
45
            }
46
47
        } elseif ($lines > self::MAX_LINES || $chars > self::MAX_CHARS) {
48
49
            $answer = trans('long.text_personal', [
50
                'user'  => $message->user->login,
51
            ]);
52
53
            $message->italic($answer);
54
55
            return null;
56
        }
57
58
        return $message;
59
    }
60
}
61