HasLicenses::licensesUsed()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Tylercd100\License;
4
5
use Tylercd100\License\License;
6
7
trait HasLicenses
8
{
9
    /**
10
     * Attempt to allocate unused licenses.
11
     *
12
     * @param string $class The License class you want to work with
13
     * @param int $quantity The amount of licenses you want to attempt to use
14
     * @param boolean $add If true then it will increase the maximum available licenses
15
     * @return self
16
     */
17
    public function licensesAllocate($class, $quantity, $add = false)
18
    {
19
        $license = $this->getLicenseInstance($class);        
20
        $license->allocate($quantity, $add);
21
        return $this;
22
    }
23
24
    /**
25
     * Attempt to Deallocate used licenses.
26
     *
27
     * @param string $class The License class you want to work with
28
     * @param int $quantity The amount of licenses you want to attempt to use
29
     * @param boolean $add If true then it will increase the maximum available licenses
0 ignored issues
show
Bug introduced by
There is no parameter named $add. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
30
     * @return self
31
     */
32
    public function licensesDeallocate($class, $quantity, $sub = false)
33
    {
34
        $license = $this->getLicenseInstance($class);        
35
        $license->deallocate($quantity, $sub);
36
        return $this;
37
    }
38
39
    /**
40
     * Returns the amount of unused licenses.
41
     *
42
     * @param string $class The License class you want to work with
43
     * @return int
44
     */
45
    public function licensesRemaining($class)
46
    {
47
        $license = $this->getLicenseInstance($class);        
48
        return $license->remaining();
49
    }
50
51
    /**
52
     * Returns the amount of used licenses
53
     *
54
     * @param string $class The License class you want to work with
55
     * @return int
56
     */
57
    public function licensesUsed($class)
58
    {
59
        $license = $this->getLicenseInstance($class);        
60
        return $license->used();
61
    }
62
63
    /**
64
     * Increase the maximum amount of licenses
65
     *
66
     * @param string $class The License class you want to work with
67
     * @param integer $quantity
68
     * @return self
69
     */
70
    public function licensesAdd($class, $quantity = 1)
71
    {
72
        // Add quantity of licenses
73
        $license = $this->getLicenseInstance($class);
74
        $license->add($quantity);
75
        return $this;
76
    }
77
78
    /**
79
     * Decreases the maximum amount of licenses available
80
     *
81
     * @param string $class The License class you want to work with
82
     * @param integer $quantity
83
     * @return self
84
     */
85
    public function licensesSub($class, $quantity = 1)
86
    {
87
        // Subtract quantity of licenses
88
        $license = $this->getLicenseInstance($class);
89
        $license->sub($quantity);
90
        return $this;
91
    }
92
93
    /**
94
     * Sets the maximum amount of licenses to a specific value
95
     *
96
     * @param string $class The License class you want to work with
97
     * @param integer $quantity
98
     * @return self
99
     */
100
    public function licensesSet($class, $quantity)
101
    {
102
        // Set the quantity of licenses
103
        $license = $this->getLicenseInstance($class);
104
        $license->set($quantity);
105
        return $this;
106
    }
107
108
    /**
109
     * Creates an instance of License from the supplied classname string
110
     *
111
     * @param string $class The License class you want to work with
112
     * @return License
113
     */
114
    private function getLicenseInstance($class)
115
    {
116
        $license = new $class($this);
117
        if (!($license instanceof License)) {
118
            throw LicenseException("Expected ".get_class($license)." to be an instanceof ".License::class);
119
        }
120
        return $license;
121
    }
122
}
123