MediawikiArticleProvider::parseResult()   B
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 29
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 22
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 29
ccs 22
cts 22
cp 1
rs 8.5806
c 0
b 0
f 0
cc 4
eloc 18
nc 4
nop 3
crap 4
1
<?php
2
3
namespace PPP\Wikidata\Wikipedia;
4
5
use Wikibase\DataModel\SiteLink;
6
7
/**
8
 * @licence AGPLv3+
9
 * @author Thomas Pellissier Tanon
10
 */
11
class MediawikiArticleProvider extends PerSiteLinkProvider {
12
13
	/**
14
	 * @param SiteLink $siteLink
15
	 * @return MediawikiArticle
16
	 */
17 5
	public function getArticleForSiteLink(SiteLink $siteLink) {
18 5
		return $this->getForSiteLink($siteLink);
19
	}
20
21 4
	protected function buildRequest($titles) {
22
		return array(
23 4
			'action' => 'query',
24 4
			'titles' => implode('|', $titles),
25 4
			'prop' => 'extracts|info|pageimages',
26 4
			'inprop' => 'url',
27 4
			'redirects' => true,
28 4
			'exintro' => true,
29 4
			'exsectionformat' => 'plain',
30 4
			'explaintext' => true,
31 4
			'exsentences' => 3,
32 4
			'exlimit' => 20,
33 4
			'piprop' => 'thumbnail|name',
34 4
			'pithumbsize' => 300,
35
			'pilimit' => 20
36 4
		);
37
	}
38
39 4
	protected function parseResult($wikiId, $titles, $result) {
40 4
		$articleHeaders = array();
41
42 4
		foreach($result['query']['pages'] as $pageResult) {
43 3
			if(array_key_exists('extract', $pageResult)) {
44 3
				$image = null;
45
46 3
				if(array_key_exists('thumbnail', $pageResult)) {
47 1
					$image = new MediawikiArticleImage(
48 1
						$pageResult['thumbnail']['source'],
49 1
						$pageResult['thumbnail']['width'],
50 1
						$pageResult['thumbnail']['height'],
51 1
						str_replace('_', ' ', $pageResult['pageimage'])
52 1
					);
53 1
				}
54
55 3
				$articleHeaders[] = new MediawikiArticle(
56 3
					new SiteLink($wikiId, $pageResult['title']),
57 3
					$pageResult['extract'],
58 3
					$pageResult['pagelanguage'],
59 3
					$pageResult['canonicalurl'],
60
					$image
61 3
				);
62
63 3
			}
64 4
		}
65
66 4
		return $articleHeaders;
67
	}
68
}
69