Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 40 |
|
0.00% |
0 / 9 |
CRAP | |
0.00% |
0 / 1 |
UsersToRenameDatabaseUpdates | |
0.00% |
0 / 40 |
|
0.00% |
0 / 9 |
132 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
updateStatus | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
2 | |||
markNotified | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
markRenamed | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
markRedirectSkipped | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
remove | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
insert | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
2 | |||
batchInsert | |
0.00% |
0 / 14 |
|
0.00% |
0 / 1 |
12 | |||
findUsers | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Extension\CentralAuth\UsersToRename; |
4 | |
5 | use Wikimedia\Rdbms\IDatabase; |
6 | use Wikimedia\Rdbms\IResultWrapper; |
7 | |
8 | class UsersToRenameDatabaseUpdates { |
9 | |
10 | /** |
11 | * Notified via talk page |
12 | */ |
13 | public const NOTIFIED = 4; |
14 | /** |
15 | * A redirect, temporarily skipped |
16 | */ |
17 | private const REDIRECT = 5; |
18 | /** |
19 | * Renamed! |
20 | */ |
21 | private const RENAMED = 8; |
22 | |
23 | /** |
24 | * @var IDatabase |
25 | */ |
26 | private $db; |
27 | |
28 | public function __construct( IDatabase $db ) { |
29 | $this->db = $db; |
30 | } |
31 | |
32 | /** |
33 | * @param string $name |
34 | * @param string $wiki |
35 | * @param int $status |
36 | */ |
37 | protected function updateStatus( $name, $wiki, $status ) { |
38 | $this->db->newUpdateQueryBuilder() |
39 | ->update( 'users_to_rename' ) |
40 | ->set( [ 'utr_status' => $status ] ) |
41 | ->where( [ 'utr_wiki' => $wiki, 'utr_name' => $name ] ) |
42 | ->caller( __METHOD__ ) |
43 | ->execute(); |
44 | } |
45 | |
46 | /** |
47 | * @param string $name |
48 | * @param string $wiki |
49 | */ |
50 | public function markNotified( $name, $wiki ) { |
51 | $this->updateStatus( $name, $wiki, self::NOTIFIED ); |
52 | } |
53 | |
54 | /** |
55 | * @param string $name |
56 | * @param string $wiki |
57 | */ |
58 | public function markRenamed( $name, $wiki ) { |
59 | $this->updateStatus( $name, $wiki, self::RENAMED ); |
60 | } |
61 | |
62 | /** |
63 | * @param string $name |
64 | * @param string $wiki |
65 | */ |
66 | public function markRedirectSkipped( $name, $wiki ) { |
67 | $this->updateStatus( $name, $wiki, self::REDIRECT ); |
68 | } |
69 | |
70 | /** |
71 | * @param string $name |
72 | * @param string $wiki |
73 | */ |
74 | public function remove( $name, $wiki ) { |
75 | $this->db->newDeleteQueryBuilder() |
76 | ->deleteFrom( 'users_to_rename' ) |
77 | ->where( [ 'utr_wiki' => $wiki, 'utr_name' => $name ] ) |
78 | ->caller( __METHOD__ ) |
79 | ->execute(); |
80 | } |
81 | |
82 | /** |
83 | * @param string $name |
84 | * @param string $wiki |
85 | */ |
86 | public function insert( $name, $wiki ) { |
87 | $this->batchInsert( [ [ |
88 | 'name' => $name, |
89 | 'wiki' => $wiki |
90 | ] ] ); |
91 | } |
92 | |
93 | /** |
94 | * Batch insert rows |
95 | * |
96 | * @param array[] $info Array with array members that have 'name' and 'wiki' keys |
97 | */ |
98 | public function batchInsert( array $info ) { |
99 | if ( !$info ) { |
100 | return; |
101 | } |
102 | |
103 | $rows = []; |
104 | foreach ( $info as $row ) { |
105 | $rows[] = [ |
106 | 'utr_name' => $row['name'], |
107 | 'utr_wiki' => $row['wiki'], |
108 | ]; |
109 | } |
110 | |
111 | $this->db->newInsertQueryBuilder() |
112 | ->insertInto( 'users_to_rename' ) |
113 | ->ignore() |
114 | ->rows( $rows ) |
115 | ->caller( __METHOD__ ) |
116 | ->execute(); |
117 | } |
118 | |
119 | /** |
120 | * @param string $wiki |
121 | * @param int $status |
122 | * @param int $limit |
123 | * |
124 | * @return IResultWrapper |
125 | */ |
126 | public function findUsers( $wiki, $status, $limit ) { |
127 | // @todo this shouldn't return prefixed field names |
128 | return $this->db->select( |
129 | 'users_to_rename', |
130 | [ 'utr_name', 'utr_wiki' ], |
131 | [ 'utr_status' => $status, 'utr_wiki' => $wiki ], |
132 | __METHOD__, |
133 | [ 'LIMIT' => $limit ] |
134 | ); |
135 | } |
136 | } |