Completed
Push — master ( 22a3b5...8e2899 )
by Timur
04:46
created

LaravelAchievements::updateCriterias()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 3
1
<?php
2
3
namespace Laravel\Achievements;
4
5
use Zurbaev\Achievements\AchievementsManager;
6
7
class LaravelAchievements
8
{
9
    /**
10
     * @var AchievementsManager
11
     */
12
    protected $manager;
13
14
    /**
15
     * LaravelAchievements constructor.
16
     *
17
     * @param AchievementsManager $manager
18
     */
19
    public function __construct(AchievementsManager $manager)
20
    {
21
        $this->manager = $manager;
22
    }
23
24
    /**
25
     * Returns underlying achievements manager.
26
     *
27
     * @return AchievementsManager
28
     */
29
    public function getManager()
30
    {
31
        return $this->manager;
32
    }
33
34
    /**
35
     * Sends criteria update notification to achievements manager.
36
     * Returns number of updated criterias.
37
     *
38
     * @param mixed  $owner
39
     * @param string $type
40
     * @param mixed  $data  = null
41
     *
42
     * @return int
43
     */
44
    public function updateCriterias($owner, string $type, $data = null)
45
    {
46
        return $this->manager->updateAchievementCriterias($owner, $type, $data);
47
    }
48
49
    /**
50
     * Registers criteria handler classes.
51
     *
52
     * @param array $criterias
53
     */
54
    public function registerCriterias(array $criterias)
55
    {
56
        foreach ($criterias as $criteria) {
57
            if (!is_string($criteria)) {
58
                continue;
59
            }
60
61
            $instance = app($criteria);
62
63
            AchievementsManager::registerHandler($instance->type(), [$instance, 'handle']);
64
        }
65
    }
66
}
67