1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/* |
4
|
|
|
* This file is part of the xAPI package. |
5
|
|
|
* |
6
|
|
|
* (c) Christian Flothmann <[email protected]> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
namespace Xabbuh\XApi\Model; |
13
|
|
|
|
14
|
|
|
/** |
15
|
|
|
* The verb in a {@link Statement}. |
16
|
|
|
* |
17
|
|
|
* @author Christian Flothmann <[email protected]> |
18
|
|
|
*/ |
19
|
|
|
final class Verb |
20
|
|
|
{ |
21
|
|
|
/** |
22
|
|
|
* Reference to the verb definition |
23
|
|
|
* @var string |
24
|
|
|
*/ |
25
|
|
|
private $id; |
26
|
|
|
|
27
|
|
|
/** |
28
|
|
|
* Human readable representation of the verb in one or more languages |
29
|
|
|
* @var array |
30
|
|
|
*/ |
31
|
|
|
private $display; |
32
|
|
|
|
33
|
|
|
/** |
34
|
|
|
* @param string $id |
35
|
|
|
* @param array $display |
36
|
|
|
*/ |
37
|
|
|
public function __construct($id, array $display = array()) |
38
|
|
|
{ |
39
|
|
|
$this->id = $id; |
40
|
|
|
$this->display = $display; |
41
|
|
|
} |
42
|
|
|
|
43
|
|
|
/** |
44
|
|
|
* Returns the verb definition reference. |
45
|
|
|
* |
46
|
|
|
* @return string The reference |
47
|
|
|
*/ |
48
|
|
|
public function getId() |
49
|
|
|
{ |
50
|
|
|
return $this->id; |
51
|
|
|
} |
52
|
|
|
|
53
|
|
|
/** |
54
|
|
|
* Returns the human readable representation of the Verb in one or more languages. |
55
|
|
|
* |
56
|
|
|
* @return array The language map |
57
|
|
|
*/ |
58
|
|
|
public function getDisplay() |
59
|
|
|
{ |
60
|
|
|
return $this->display; |
61
|
|
|
} |
62
|
|
|
|
63
|
|
|
/** |
64
|
|
|
* Checks if another verb is equal. |
65
|
|
|
* |
66
|
|
|
* Two verbs are equal if and only if all of their properties are equal. |
67
|
|
|
* |
68
|
|
|
* @param Verb $verb The verb to compare with |
69
|
|
|
* |
70
|
|
|
* @return bool True if the verbs are equal, false otherwise |
71
|
|
|
*/ |
72
|
|
|
public function equals(Verb $verb) |
73
|
|
|
{ |
74
|
|
|
if ($this->id !== $verb->getId()) { |
75
|
|
|
return false; |
76
|
|
|
} |
77
|
|
|
|
78
|
|
|
if (count($this->display) !== count($verb->getDisplay())) { |
79
|
|
|
return false; |
80
|
|
|
} |
81
|
|
|
|
82
|
|
View Code Duplication |
foreach ($this->display as $language => $value) { |
|
|
|
|
83
|
|
|
if (!isset($verb->display[$language])) { |
84
|
|
|
return false; |
85
|
|
|
} |
86
|
|
|
|
87
|
|
|
if ($value !== $verb->display[$language]) { |
88
|
|
|
return false; |
89
|
|
|
} |
90
|
|
|
} |
91
|
|
|
|
92
|
|
|
return true; |
93
|
|
|
} |
94
|
|
|
|
95
|
|
|
/** |
96
|
|
|
* Tests if the Verb can be used to void a Statement. |
97
|
|
|
* |
98
|
|
|
* @return bool True, if the Verb is a void Verb, false otherwise |
99
|
|
|
*/ |
100
|
|
|
public function isVoidVerb() |
101
|
|
|
{ |
102
|
|
|
return 'http://adlnet.gov/expapi/verbs/voided' === $this->id; |
103
|
|
|
} |
104
|
|
|
|
105
|
|
|
/** |
106
|
|
|
* Creates a Verb that can be used to void a {@link Statement}. |
107
|
|
|
* |
108
|
|
|
* @return Verb |
109
|
|
|
*/ |
110
|
|
|
public static function createVoidVerb() |
111
|
|
|
{ |
112
|
|
|
$verb = new Verb('http://adlnet.gov/expapi/verbs/voided'); |
113
|
|
|
|
114
|
|
|
return $verb; |
115
|
|
|
} |
116
|
|
|
} |
117
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.