blob: d9fbcfdbae4e3d636d1e1b9639a4399dc51212d5 (
plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<?php
namespace SMW\SQLStore;
use SMW\MediaWiki\Collator;
/**
* @license GNU GPL v2+
* @since 3.0
*
* @author mwjames
*/
class TableFieldUpdater {
/**
* @var SQLStore
*/
private $store;
/**
* @var Collator
*/
private $collator;
/**
* @since 3.0
*
* @param SQLStore $store
* @param Collator|null $collator
*/
public function __construct( SQLStore $store, Collator $collator = null ) {
$this->store = $store;
$this->collator = $collator;
}
/**
* @since 3.0
*
* @param integer $id
* @param string $searchKey
*/
public function updateSortField( $id, $searchKey ) {
if ( $this->collator === null ) {
$this->collator = Collator::singleton();
}
$connection = $this->store->getConnection( 'mw.db' );
$connection->beginAtomicTransaction( __METHOD__ );
// #2089 (MySQL 5.7 complained with "Data too long for column")
$searchKey = mb_substr( $searchKey, 0, 254 );
$connection->update(
SQLStore::ID_TABLE,
[
'smw_sortkey' => $searchKey,
'smw_sort' => $this->collator->getSortKey( $searchKey )
],
[ 'smw_id' => $id ],
__METHOD__
);
$connection->endAtomicTransaction( __METHOD__ );
}
/**
* @since 3.0
*
* @param integer $id
* @param intege $rev_id
*/
public function updateRevField( $sid, $rev_id ) {
$connection = $this->store->getConnection( 'mw.db' );
$connection->update(
SQLStore::ID_TABLE,
[
'smw_rev' => $rev_id
],
[
'smw_id' => $sid
],
__METHOD__
);
}
}
|