Completed
Push — master ( 921d57...18f6a2 )
by Michal
02:03
created

RedisSortedSetMemberForm::submit()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 0
cts 5
cp 0
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 2
crap 6
1
<?php
2
3
namespace UniMan\Drivers\Redis\Forms;
4
5
use UniMan\Core\Forms\ItemForm\ItemFormInterface;
6
use Nette\Application\UI\Form;
7
use Nette\Utils\ArrayHash;
8
use RedisProxy\RedisProxy;
9
10
class RedisSortedSetMemberForm implements ItemFormInterface
11
{
12
    private $connection;
13
14
    private $key;
15
16
    private $member;
17
18
    public function __construct(RedisProxy $connection, $key, $member)
19
    {
20
        $this->connection = $connection;
21
        $this->key = $key;
22
        $this->member = $member;
23
    }
24
25
    public function addFieldsToForm(Form $form)
26
    {
27
        $form->addText('member', 'redis.sorted_set_member_form.member.label')
28
            ->setRequired('redis.sorted_set_member_form.member.required');
29
30
        $form->addText('score', 'redis.sorted_set_member_form.score.label')
31
            ->setRequired('redis.sorted_set_member_form.score.required');
32
33
        if ($this->member !== null) {
34
            $form->setDefaults([
35
                'member' => $this->member,
36
                'score' => $this->connection->zscore($this->key, $this->member),
37
            ]);
38
        }
39
    }
40
41
    public function submit(Form $form, ArrayHash $values)
42
    {
43
        if ($this->member !== $values->member) {
44
            $this->connection->zrem($this->key, $this->member);
45
        }
46
        $this->connection->zadd($this->key, [$values->member => str_replace(',', '.', $values->score)]);
47
    }
48
}
49