Completed
Push — master ( a1f3ed...74c577 )
by Kirill
02:49
created

KarmaRenderMiddleware::handle()   B

Complexity

Conditions 4
Paths 5

Size

Total Lines 33
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 33
rs 8.5806
cc 4
eloc 17
nc 5
nop 1
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Domains\Message;
5
use Interfaces\Gitter\Middleware\MiddlewareInterface;
6
7
/**
8
 * Проверяет слово "карма" и выводит статус
9
 *
10
 * Class KarmaRenderMiddleware
11
 */
12
class KarmaRenderMiddleware implements MiddlewareInterface
13
{
14
    /**
15
     * @param Message $message
16
     * @return mixed
17
     */
18
    public function handle(Message $message)
19
    {
20
        if (trim(mb_strtolower($message->text)) === 'карма') {
21
            $args = [
22
                'user'   => $message->user->login,
23
                'karma'  => $message->user->karma_text,
24
                'thanks' => $message->user->thanks_text,
25
            ];
26
27
28
            $karmaMessage = [];
29
30
            // Karma info
31
            $karmaMessage[] = $args['karma']
32
                ? \Lang::get('karma.count.message', $args)
33
                : \Lang::get('karma.count.empty', $args);
34
35
            // If has achievements
36
            $achievements = $this->getAchievements($message);
37
            if ($achievements) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $achievements of type null|string is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
38
                $karmaMessage[] = $achievements;
39
            }
40
41
            // Profile link
42
            $karmaMessage[] = \Lang::get('karma.account', $args);
43
44
            $message->italic(implode("\n", $karmaMessage));
45
46
            return null;
47
        }
48
49
        return $message;
50
    }
51
52
    /**
53
     * @param Message $message
54
     * @return null|string
55
     */
56
    protected function getAchievements(Message $message)
57
    {
58
        $achievements = [];
59
        foreach ($message->user->achievements as $achieve) {
60
            $achievements[] = '"' . $achieve->title . '"';
61
        }
62
63
        if (count($achievements)) {
64
            return \Lang::get('karma.achievements', [
65
                'achievements' => implode(', ', $achievements),
66
            ]);
67
        }
68
69
        return null;
70
    }
71
}
72