-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPageEntityMaintenance.php
More file actions
76 lines (66 loc) · 1.83 KB
/
PageEntityMaintenance.php
File metadata and controls
76 lines (66 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
use Wikibase\DataModel\Entity;
require_once __DIR__ . '/PageMaintenance.php';
class PageEntityMaintenance extends PageMaintenance {
public function __construct() {
parent::__construct();
}
public function executeTitle( $title ) {
try {
$page = WikiPage::factory( $title );
} catch ( MWException $e ) {
return;
}
$rev = $page->getRevision();
if ( !$rev ) {
return;
}
$content = $rev->getContent();
if ( !( $content instanceof Wikibase\EntityContent ) ) {
return;
}
$entity = $content->getEntity();
$this->output( "{$entity->getId()->getSerialization()}\n" );
$this->executeEntity( $entity, $title, $page );
}
public function executeEntity( $entity, $title, $page ) {
}
public function entitySmartAddClaim( $entity, $claim, $params = array() ) {
$hasOne = false;
$touched = false;
foreach ( $entity->getClaims() as $existingClaim ) {
if ( !$claim->getMainSnak()->equals( $existingClaim->getMainSnak() ) ) {
if ( $claim->getMainSnak()->getPropertyId()->equals(
$existingClaim->getMainSnak()->getPropertyId() )
) {
$hasOne = true;
}
continue;
}
foreach ( $claim->getQualifiers() as $snak ) {
if ( $existingClaim->getQualifiers()->hasSnak( $snak ) ) {
continue;
}
$existingClaim->getQualifiers()->addSnak( $snak );
$touched = true;
}
if ( $existingClaim instanceof Wikibase\Statement
&& $claim instanceof Wikibase\Statement
) {
foreach ( $claim->getReferences() as $reference ) {
if ( $existingClaim->getReferences()->hasReference( $reference ) ) {
continue;
}
$existingClaim->getReferences()->addReference( $reference );
$touched = true;
}
}
return $touched;
}
if ( $hasOne && isset( $params['unique'] ) && $params['unique'] ) {
return null;
}
$entity->addClaim( $claim );
return true;
}
}