Wikidata::getPropertyDependencies()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 5
ccs 0
cts 3
cp 0
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
crap 2
1
<?php
2
3
namespace Wikibase\DataFixtures\Items;
4
5
use Wikibase\DataFixtures\Properties\InstanceOfProperty;
6
use Wikibase\DataModel\Entity\EntityIdValue;
7
use Wikibase\DataModel\Entity\Item;
8
use Wikibase\DataModel\Entity\ItemId;
9
use Wikibase\DataModel\Entity\Property;
10
use Wikibase\DataModel\SiteLinkList;
11
use Wikibase\DataModel\Snak\PropertyValueSnak;
12
use Wikibase\DataModel\Statement\StatementList;
13
use Wikibase\DataModel\Term\Fingerprint;
14
15
/**
16
 * @since 1.1.0
17
 * @licence GNU GPL v2+
18
 * @author Jeroen De Dauw < [email protected] >
19
 */
20
class Wikidata {
21
22
	/**
23
	 * @var InstanceOfProperty
24
	 */
25
	private $instanceOf;
26
27
	/**
28
	 * @var WikimediaProject
29
	 */
30
	private $wmfProject;
31
32
	/**
33
	 * @var KnowledgeBase
34
	 */
35
	private $knowledgeBase;
36
37
	/**
38
	 * @var OnlineDatabase
39
	 */
40
	private $onlineDatabase;
41
42 1
	public function __construct() {
43 1
		$this->instanceOf = new InstanceOfProperty();
44
45 1
		$this->wmfProject = new WikimediaProject();
46 1
		$this->knowledgeBase = new KnowledgeBase();
47 1
		$this->onlineDatabase = new OnlineDatabase();
48 1
	}
49
50 1
	public function newItem() {
51 1
		$item = new Item( $this->newItemId() );
52
53 1
		$item->setFingerprint( $this->newFingerprint() );
54 1
		$item->setStatements( $this->newStatements() );
55 1
		$item->setSiteLinkList( $this->newSiteLinkList() );
56
57 1
		return $item;
58
	}
59
60 1
	public function newFingerprint() {
61 1
		$fingerprint = new Fingerprint();
62
63 1
		$fingerprint->setLabel( 'en', 'Wikidata' );
64 1
		$fingerprint->setLabel( 'de', 'Wikidata' );
65 1
		$fingerprint->setLabel( 'nl', 'Wikidata' );
66
67 1
		$fingerprint->setDescription( 'en', 'free knowledge database project hosted by Wikimedia and edited by volunteers' );
68 1
		$fingerprint->setDescription( 'de', 'freie Datenbank, die von der Wikimedia Foundation gehostet und von Freiwilligen bearbeitet wird' );
69
70 1
		return $fingerprint;
71
	}
72
73 1
	public function newSiteLinkList() {
74 1
		$links = new SiteLinkList();
75
76 1
		$links->addNewSiteLink( 'enwiki', 'Wikidata' );
77 1
		$links->addNewSiteLink( 'nlwiki', 'Wikidata' );
78
79 1
		return $links;
80
	}
81
82 1
	public function newStatements() {
83 1
		$statements = new StatementList();
84
85 1
		$statements->addNewStatement(
86 1
			new PropertyValueSnak(
87 1
				$this->instanceOf->newPropertyId(),
88 1
				new EntityIdValue( $this->wmfProject->newItemId() )
89 1
			),
90 1
			null,
91 1
			null,
92
			'first guid'
93 1
		);
94
95 1
		$statements->addNewStatement(
96 1
			new PropertyValueSnak(
97 1
				$this->instanceOf->newPropertyId(),
98 1
				new EntityIdValue( $this->knowledgeBase->newItemId() )
99 1
			),
100 1
			null,
101 1
			null,
102
			'second guid'
103 1
		);
104
105 1
		$statements->addNewStatement(
106 1
			new PropertyValueSnak(
107 1
				$this->instanceOf->newPropertyId(),
108 1
				new EntityIdValue( $this->onlineDatabase->newItemId() )
109 1
			),
110 1
			null,
111 1
			null,
112
			'third guid'
113 1
		);
114
115 1
		return $statements;
116
	}
117
118
	/**
119
	 * @return Item[]
120
	 */
121
	public function getItemDependencies() {
122
		return [
123
			$this->wmfProject->newItem(),
124
			$this->knowledgeBase->newItem(),
125
			$this->onlineDatabase->newItem(),
126
		];
127
	}
128
129
	/**
130
	 * @return Property[]
131
	 */
132
	public function getPropertyDependencies() {
133
		return [
134
			$this->instanceOf->newProperty()
135
		];
136
	}
137
138 1
	public function newItemId() {
139 1
		return new ItemId( 'Q2013' );
140
	}
141
142
}
143