Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
23 / 23 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
1 / 1 |
MediaInfoChangeOpDeserializer | |
100.00% |
23 / 23 |
|
100.00% |
2 / 2 |
7 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
3 / 3 |
|
100.00% |
1 / 1 |
1 | |||
createEntityChangeOp | |
100.00% |
20 / 20 |
|
100.00% |
1 / 1 |
6 |
1 | <?php |
2 | |
3 | namespace Wikibase\MediaInfo\ChangeOp\Deserialization; |
4 | |
5 | use Wikibase\Repo\ChangeOp\ChangeOp; |
6 | use Wikibase\Repo\ChangeOp\ChangeOpDeserializer; |
7 | use Wikibase\Repo\ChangeOp\ChangeOps; |
8 | use Wikibase\Repo\ChangeOp\Deserialization\ChangeOpDeserializationException; |
9 | use Wikibase\Repo\ChangeOp\Deserialization\ClaimsChangeOpDeserializer; |
10 | use Wikibase\Repo\ChangeOp\Deserialization\DescriptionsChangeOpDeserializer; |
11 | use Wikibase\Repo\ChangeOp\Deserialization\LabelsChangeOpDeserializer; |
12 | |
13 | /** |
14 | * Constructs ChangeOp objects for MediaInfo change requests |
15 | * |
16 | * @license GPL-2.0-or-later |
17 | */ |
18 | class MediaInfoChangeOpDeserializer implements ChangeOpDeserializer { |
19 | |
20 | private $labelsChangeOpDeserializer; |
21 | |
22 | private $descriptionsChangeOpDeserializer; |
23 | |
24 | private $claimsChangeOpDeserializer; |
25 | |
26 | public function __construct( |
27 | LabelsChangeOpDeserializer $labelsChangeOpDeserializer, |
28 | DescriptionsChangeOpDeserializer $descriptionsChangeOpDeserializer, |
29 | ClaimsChangeOpDeserializer $claimsChangeOpDeserializer |
30 | ) { |
31 | $this->labelsChangeOpDeserializer = $labelsChangeOpDeserializer; |
32 | $this->descriptionsChangeOpDeserializer = $descriptionsChangeOpDeserializer; |
33 | $this->claimsChangeOpDeserializer = $claimsChangeOpDeserializer; |
34 | } |
35 | |
36 | /** |
37 | * @see ChangeOpDeserializer::createEntityChangeOp |
38 | * |
39 | * @param array[] $changeRequest |
40 | * |
41 | * @return ChangeOp |
42 | * @throws ChangeOpDeserializationException |
43 | */ |
44 | public function createEntityChangeOp( array $changeRequest ) { |
45 | if ( array_key_exists( 'aliases', $changeRequest ) |
46 | || array_key_exists( 'sitelinks', $changeRequest ) |
47 | ) { |
48 | throw new ChangeOpDeserializationException( |
49 | 'MediaInfo cannot have aliases or sitelinks', |
50 | 'not-supported' |
51 | ); |
52 | } |
53 | |
54 | $changeOps = new ChangeOps(); |
55 | |
56 | if ( array_key_exists( 'labels', $changeRequest ) ) { |
57 | $changeOps->add( |
58 | $this->labelsChangeOpDeserializer->createEntityChangeOp( $changeRequest ) |
59 | ); |
60 | } |
61 | |
62 | if ( array_key_exists( 'descriptions', $changeRequest ) ) { |
63 | $changeOps->add( |
64 | $this->descriptionsChangeOpDeserializer->createEntityChangeOp( $changeRequest ) |
65 | ); |
66 | } |
67 | |
68 | if ( array_key_exists( 'claims', $changeRequest ) ) { |
69 | $changeOps->add( |
70 | $this->claimsChangeOpDeserializer->createEntityChangeOp( $changeRequest ) |
71 | ); |
72 | } |
73 | |
74 | return $changeOps; |
75 | } |
76 | |
77 | } |