@@ -27,27 +27,27 @@ discard block |
||
27 | 27 | /** |
28 | 28 | * @param DatabaseUpdater $updater |
29 | 29 | */ |
30 | - public static function onCreateSchema( DatabaseUpdater $updater ) { |
|
31 | - $dir = dirname( __DIR__ ) . '/sql/'; |
|
30 | + public static function onCreateSchema(DatabaseUpdater $updater) { |
|
31 | + $dir = dirname(__DIR__).'/sql/'; |
|
32 | 32 | |
33 | 33 | $updater->addExtensionTable( |
34 | 34 | 'wbqc_constraints', |
35 | - $dir . "/{$updater->getDB()->getType()}/tables-generated.sql" |
|
35 | + $dir."/{$updater->getDB()->getType()}/tables-generated.sql" |
|
36 | 36 | ); |
37 | 37 | $updater->addExtensionField( |
38 | 38 | 'wbqc_constraints', |
39 | 39 | 'constraint_id', |
40 | - $dir . '/patch-wbqc_constraints-constraint_id.sql' |
|
40 | + $dir.'/patch-wbqc_constraints-constraint_id.sql' |
|
41 | 41 | ); |
42 | 42 | $updater->addExtensionIndex( |
43 | 43 | 'wbqc_constraints', |
44 | 44 | 'wbqc_constraints_guid_uniq', |
45 | - $dir . '/patch-wbqc_constraints-wbqc_constraints_guid_uniq.sql' |
|
45 | + $dir.'/patch-wbqc_constraints-wbqc_constraints_guid_uniq.sql' |
|
46 | 46 | ); |
47 | 47 | } |
48 | 48 | |
49 | - public static function onWikibaseChange( Change $change ) { |
|
50 | - if ( !( $change instanceof EntityChange ) ) { |
|
49 | + public static function onWikibaseChange(Change $change) { |
|
50 | + if (!($change instanceof EntityChange)) { |
|
51 | 51 | return; |
52 | 52 | } |
53 | 53 | /** @var EntityChange $change */ |
@@ -58,48 +58,48 @@ discard block |
||
58 | 58 | |
59 | 59 | // If jobs are enabled and the results would be stored in some way run a job. |
60 | 60 | if ( |
61 | - $config->get( 'WBQualityConstraintsEnableConstraintsCheckJobs' ) && |
|
62 | - $config->get( 'WBQualityConstraintsCacheCheckConstraintsResults' ) && |
|
61 | + $config->get('WBQualityConstraintsEnableConstraintsCheckJobs') && |
|
62 | + $config->get('WBQualityConstraintsCacheCheckConstraintsResults') && |
|
63 | 63 | self::isSelectedForJobRunBasedOnPercentage() |
64 | 64 | ) { |
65 | - $params = [ 'entityId' => $change->getEntityId()->getSerialization() ]; |
|
65 | + $params = ['entityId' => $change->getEntityId()->getSerialization()]; |
|
66 | 66 | $jobQueueGroup->lazyPush( |
67 | - new JobSpecification( CheckConstraintsJob::COMMAND, $params ) |
|
67 | + new JobSpecification(CheckConstraintsJob::COMMAND, $params) |
|
68 | 68 | ); |
69 | 69 | } |
70 | 70 | |
71 | - if ( $config->get( 'WBQualityConstraintsEnableConstraintsImportFromStatements' ) && |
|
72 | - self::isConstraintStatementsChange( $config, $change ) |
|
71 | + if ($config->get('WBQualityConstraintsEnableConstraintsImportFromStatements') && |
|
72 | + self::isConstraintStatementsChange($config, $change) |
|
73 | 73 | ) { |
74 | - $params = [ 'propertyId' => $change->getEntityId()->getSerialization() ]; |
|
74 | + $params = ['propertyId' => $change->getEntityId()->getSerialization()]; |
|
75 | 75 | $metadata = $change->getMetadata(); |
76 | - if ( array_key_exists( 'rev_id', $metadata ) ) { |
|
76 | + if (array_key_exists('rev_id', $metadata)) { |
|
77 | 77 | $params['revisionId'] = $metadata['rev_id']; |
78 | 78 | } |
79 | 79 | $jobQueueGroup->push( |
80 | - new JobSpecification( 'constraintsTableUpdate', $params ) |
|
80 | + new JobSpecification('constraintsTableUpdate', $params) |
|
81 | 81 | ); |
82 | 82 | } |
83 | 83 | } |
84 | 84 | |
85 | 85 | private static function isSelectedForJobRunBasedOnPercentage() { |
86 | 86 | $config = MediaWikiServices::getInstance()->getMainConfig(); |
87 | - $percentage = $config->get( 'WBQualityConstraintsEnableConstraintsCheckJobsRatio' ); |
|
87 | + $percentage = $config->get('WBQualityConstraintsEnableConstraintsCheckJobsRatio'); |
|
88 | 88 | |
89 | - return mt_rand( 1, 100 ) <= $percentage; |
|
89 | + return mt_rand(1, 100) <= $percentage; |
|
90 | 90 | } |
91 | 91 | |
92 | - public static function isConstraintStatementsChange( Config $config, Change $change ) { |
|
93 | - if ( !( $change instanceof EntityChange ) || |
|
92 | + public static function isConstraintStatementsChange(Config $config, Change $change) { |
|
93 | + if (!($change instanceof EntityChange) || |
|
94 | 94 | $change->getAction() !== EntityChange::UPDATE || |
95 | - !( $change->getEntityId() instanceof NumericPropertyId ) |
|
95 | + !($change->getEntityId() instanceof NumericPropertyId) |
|
96 | 96 | ) { |
97 | 97 | return false; |
98 | 98 | } |
99 | 99 | |
100 | 100 | $info = $change->getInfo(); |
101 | 101 | |
102 | - if ( !array_key_exists( 'compactDiff', $info ) ) { |
|
102 | + if (!array_key_exists('compactDiff', $info)) { |
|
103 | 103 | // the non-compact diff ($info['diff']) does not contain statement diffs (T110996), |
104 | 104 | // so we only know that the change *might* affect the constraint statements |
105 | 105 | return true; |
@@ -108,43 +108,43 @@ discard block |
||
108 | 108 | /** @var EntityDiffChangedAspects $aspects */ |
109 | 109 | $aspects = $info['compactDiff']; |
110 | 110 | |
111 | - $propertyConstraintId = $config->get( 'WBQualityConstraintsPropertyConstraintId' ); |
|
112 | - return in_array( $propertyConstraintId, $aspects->getStatementChanges() ); |
|
111 | + $propertyConstraintId = $config->get('WBQualityConstraintsPropertyConstraintId'); |
|
112 | + return in_array($propertyConstraintId, $aspects->getStatementChanges()); |
|
113 | 113 | } |
114 | 114 | |
115 | - public static function onArticlePurge( WikiPage $wikiPage ) { |
|
115 | + public static function onArticlePurge(WikiPage $wikiPage) { |
|
116 | 116 | $entityContentFactory = WikibaseRepo::getEntityContentFactory(); |
117 | - if ( $entityContentFactory->isEntityContentModel( $wikiPage->getContentModel() ) ) { |
|
117 | + if ($entityContentFactory->isEntityContentModel($wikiPage->getContentModel())) { |
|
118 | 118 | $entityIdLookup = WikibaseRepo::getEntityIdLookup(); |
119 | - $entityId = $entityIdLookup->getEntityIdForTitle( $wikiPage->getTitle() ); |
|
120 | - if ( $entityId !== null ) { |
|
119 | + $entityId = $entityIdLookup->getEntityIdForTitle($wikiPage->getTitle()); |
|
120 | + if ($entityId !== null) { |
|
121 | 121 | $resultsCache = ResultsCache::getDefaultInstance(); |
122 | - $resultsCache->delete( $entityId ); |
|
122 | + $resultsCache->delete($entityId); |
|
123 | 123 | } |
124 | 124 | } |
125 | 125 | } |
126 | 126 | |
127 | - public static function onBeforePageDisplay( OutputPage $out, Skin $skin ) { |
|
127 | + public static function onBeforePageDisplay(OutputPage $out, Skin $skin) { |
|
128 | 128 | $lookup = WikibaseRepo::getEntityNamespaceLookup(); |
129 | 129 | $title = $out->getTitle(); |
130 | - if ( $title === null ) { |
|
130 | + if ($title === null) { |
|
131 | 131 | return; |
132 | 132 | } |
133 | 133 | |
134 | - if ( !$lookup->isNamespaceWithEntities( $title->getNamespace() ) ) { |
|
134 | + if (!$lookup->isNamespaceWithEntities($title->getNamespace())) { |
|
135 | 135 | return; |
136 | 136 | } |
137 | - if ( empty( $out->getJsConfigVars()['wbIsEditView'] ) ) { |
|
137 | + if (empty($out->getJsConfigVars()['wbIsEditView'])) { |
|
138 | 138 | return; |
139 | 139 | } |
140 | 140 | |
141 | - $out->addModules( 'wikibase.quality.constraints.suggestions' ); |
|
141 | + $out->addModules('wikibase.quality.constraints.suggestions'); |
|
142 | 142 | |
143 | - if ( !$out->getUser()->isRegistered() ) { |
|
143 | + if (!$out->getUser()->isRegistered()) { |
|
144 | 144 | return; |
145 | 145 | } |
146 | 146 | |
147 | - $out->addModules( 'wikibase.quality.constraints.gadget' ); |
|
147 | + $out->addModules('wikibase.quality.constraints.gadget'); |
|
148 | 148 | } |
149 | 149 | |
150 | 150 | } |
@@ -38,8 +38,8 @@ discard block |
||
38 | 38 | */ |
39 | 39 | private const BATCH_SIZE = 50; |
40 | 40 | |
41 | - public static function newFromGlobalState( Title $title, array $params ) { |
|
42 | - Assert::parameterType( 'string', $params['propertyId'], '$params["propertyId"]' ); |
|
41 | + public static function newFromGlobalState(Title $title, array $params) { |
|
42 | + Assert::parameterType('string', $params['propertyId'], '$params["propertyId"]'); |
|
43 | 43 | $services = MediaWikiServices::getInstance(); |
44 | 44 | return new UpdateConstraintsTableJob( |
45 | 45 | $title, |
@@ -49,8 +49,8 @@ discard block |
||
49 | 49 | $services->getMainConfig(), |
50 | 50 | ConstraintsServices::getConstraintStore(), |
51 | 51 | $services->getDBLoadBalancerFactory(), |
52 | - WikibaseRepo::getStore()->getEntityRevisionLookup( Store::LOOKUP_CACHING_DISABLED ), |
|
53 | - WikibaseRepo::getBaseDataModelSerializerFactory( $services ) |
|
52 | + WikibaseRepo::getStore()->getEntityRevisionLookup(Store::LOOKUP_CACHING_DISABLED), |
|
53 | + WikibaseRepo::getBaseDataModelSerializerFactory($services) |
|
54 | 54 | ->newSnakSerializer(), |
55 | 55 | $services->getJobQueueGroup() |
56 | 56 | ); |
@@ -118,7 +118,7 @@ discard block |
||
118 | 118 | Serializer $snakSerializer, |
119 | 119 | JobQueueGroup $jobQueueGroup |
120 | 120 | ) { |
121 | - parent::__construct( 'constraintsTableUpdate', $title, $params ); |
|
121 | + parent::__construct('constraintsTableUpdate', $title, $params); |
|
122 | 122 | |
123 | 123 | $this->propertyId = $propertyId; |
124 | 124 | $this->revisionId = $revisionId; |
@@ -130,11 +130,11 @@ discard block |
||
130 | 130 | $this->jobQueueGroup = $jobQueueGroup; |
131 | 131 | } |
132 | 132 | |
133 | - public function extractParametersFromQualifiers( SnakList $qualifiers ) { |
|
133 | + public function extractParametersFromQualifiers(SnakList $qualifiers) { |
|
134 | 134 | $parameters = []; |
135 | - foreach ( $qualifiers as $qualifier ) { |
|
135 | + foreach ($qualifiers as $qualifier) { |
|
136 | 136 | $qualifierId = $qualifier->getPropertyId()->getSerialization(); |
137 | - $paramSerialization = $this->snakSerializer->serialize( $qualifier ); |
|
137 | + $paramSerialization = $this->snakSerializer->serialize($qualifier); |
|
138 | 138 | $parameters[$qualifierId][] = $paramSerialization; |
139 | 139 | } |
140 | 140 | return $parameters; |
@@ -151,7 +151,7 @@ discard block |
||
151 | 151 | '@phan-var \Wikibase\DataModel\Entity\EntityIdValue $dataValue'; |
152 | 152 | $entityId = $dataValue->getEntityId(); |
153 | 153 | $constraintTypeQid = $entityId->getSerialization(); |
154 | - $parameters = $this->extractParametersFromQualifiers( $constraintStatement->getQualifiers() ); |
|
154 | + $parameters = $this->extractParametersFromQualifiers($constraintStatement->getQualifiers()); |
|
155 | 155 | return new Constraint( |
156 | 156 | $constraintId, |
157 | 157 | $propertyId, |
@@ -166,25 +166,25 @@ discard block |
||
166 | 166 | NumericPropertyId $propertyConstraintPropertyId |
167 | 167 | ) { |
168 | 168 | $constraintsStatements = $property->getStatements() |
169 | - ->getByPropertyId( $propertyConstraintPropertyId ) |
|
170 | - ->getByRank( [ Statement::RANK_PREFERRED, Statement::RANK_NORMAL ] ); |
|
169 | + ->getByPropertyId($propertyConstraintPropertyId) |
|
170 | + ->getByRank([Statement::RANK_PREFERRED, Statement::RANK_NORMAL]); |
|
171 | 171 | $constraints = []; |
172 | - foreach ( $constraintsStatements->getIterator() as $constraintStatement ) { |
|
172 | + foreach ($constraintsStatements->getIterator() as $constraintStatement) { |
|
173 | 173 | // @phan-suppress-next-line PhanTypeMismatchArgumentSuperType |
174 | - $constraints[] = $this->extractConstraintFromStatement( $property->getId(), $constraintStatement ); |
|
175 | - if ( count( $constraints ) >= self::BATCH_SIZE ) { |
|
176 | - $constraintStore->insertBatch( $constraints ); |
|
174 | + $constraints[] = $this->extractConstraintFromStatement($property->getId(), $constraintStatement); |
|
175 | + if (count($constraints) >= self::BATCH_SIZE) { |
|
176 | + $constraintStore->insertBatch($constraints); |
|
177 | 177 | // interrupt transaction and wait for replication |
178 | - $connection = $this->lbFactory->getMainLB()->getConnection( DB_PRIMARY ); |
|
179 | - $connection->endAtomic( __CLASS__ ); |
|
180 | - if ( !$connection->explicitTrxActive() ) { |
|
178 | + $connection = $this->lbFactory->getMainLB()->getConnection(DB_PRIMARY); |
|
179 | + $connection->endAtomic(__CLASS__); |
|
180 | + if (!$connection->explicitTrxActive()) { |
|
181 | 181 | $this->lbFactory->waitForReplication(); |
182 | 182 | } |
183 | - $connection->startAtomic( __CLASS__ ); |
|
183 | + $connection->startAtomic(__CLASS__); |
|
184 | 184 | $constraints = []; |
185 | 185 | } |
186 | 186 | } |
187 | - $constraintStore->insertBatch( $constraints ); |
|
187 | + $constraintStore->insertBatch($constraints); |
|
188 | 188 | } |
189 | 189 | |
190 | 190 | /** |
@@ -195,24 +195,24 @@ discard block |
||
195 | 195 | public function run() { |
196 | 196 | // TODO in the future: only touch constraints affected by the edit (requires T163465) |
197 | 197 | |
198 | - $propertyId = new NumericPropertyId( $this->propertyId ); |
|
198 | + $propertyId = new NumericPropertyId($this->propertyId); |
|
199 | 199 | $propertyRevision = $this->entityRevisionLookup->getEntityRevision( |
200 | 200 | $propertyId, |
201 | 201 | 0, // latest |
202 | 202 | LookupConstants::LATEST_FROM_REPLICA |
203 | 203 | ); |
204 | 204 | |
205 | - if ( $this->revisionId !== null && $propertyRevision->getRevisionId() < $this->revisionId ) { |
|
206 | - $this->jobQueueGroup->push( $this ); |
|
205 | + if ($this->revisionId !== null && $propertyRevision->getRevisionId() < $this->revisionId) { |
|
206 | + $this->jobQueueGroup->push($this); |
|
207 | 207 | return true; |
208 | 208 | } |
209 | 209 | |
210 | - $connection = $this->lbFactory->getMainLB()->getConnection( DB_PRIMARY ); |
|
210 | + $connection = $this->lbFactory->getMainLB()->getConnection(DB_PRIMARY); |
|
211 | 211 | // start transaction (if not started yet) – using __CLASS__, not __METHOD__, |
212 | 212 | // because importConstraintsForProperty() can interrupt the transaction |
213 | - $connection->startAtomic( __CLASS__ ); |
|
213 | + $connection->startAtomic(__CLASS__); |
|
214 | 214 | |
215 | - $this->constraintStore->deleteForProperty( $propertyId ); |
|
215 | + $this->constraintStore->deleteForProperty($propertyId); |
|
216 | 216 | |
217 | 217 | /** @var Property $property */ |
218 | 218 | $property = $propertyRevision->getEntity(); |
@@ -220,10 +220,10 @@ discard block |
||
220 | 220 | $this->importConstraintsForProperty( |
221 | 221 | $property, |
222 | 222 | $this->constraintStore, |
223 | - new NumericPropertyId( $this->config->get( 'WBQualityConstraintsPropertyConstraintId' ) ) |
|
223 | + new NumericPropertyId($this->config->get('WBQualityConstraintsPropertyConstraintId')) |
|
224 | 224 | ); |
225 | 225 | |
226 | - $connection->endAtomic( __CLASS__ ); |
|
226 | + $connection->endAtomic(__CLASS__); |
|
227 | 227 | |
228 | 228 | return true; |
229 | 229 | } |
@@ -144,10 +144,10 @@ discard block |
||
144 | 144 | callable $defaultResultsPerEntity = null |
145 | 145 | ) { |
146 | 146 | $checkResults = []; |
147 | - $entity = $this->entityLookup->getEntity( $entityId ); |
|
147 | + $entity = $this->entityLookup->getEntity($entityId); |
|
148 | 148 | |
149 | - if ( $entity instanceof StatementListProvidingEntity ) { |
|
150 | - $startTime = microtime( true ); |
|
149 | + if ($entity instanceof StatementListProvidingEntity) { |
|
150 | + $startTime = microtime(true); |
|
151 | 151 | |
152 | 152 | $checkResults = $this->checkEveryStatement( |
153 | 153 | $entity, |
@@ -155,9 +155,9 @@ discard block |
||
155 | 155 | $defaultResultsPerContext |
156 | 156 | ); |
157 | 157 | |
158 | - $endTime = microtime( true ); |
|
158 | + $endTime = microtime(true); |
|
159 | 159 | |
160 | - if ( $constraintIds === null ) { // only log full constraint checks |
|
160 | + if ($constraintIds === null) { // only log full constraint checks |
|
161 | 161 | $this->loggingHelper->logConstraintCheckOnEntity( |
162 | 162 | $entityId, |
163 | 163 | $checkResults, |
@@ -167,11 +167,11 @@ discard block |
||
167 | 167 | } |
168 | 168 | } |
169 | 169 | |
170 | - if ( $defaultResultsPerEntity !== null ) { |
|
171 | - $checkResults = array_merge( $defaultResultsPerEntity( $entityId ), $checkResults ); |
|
170 | + if ($defaultResultsPerEntity !== null) { |
|
171 | + $checkResults = array_merge($defaultResultsPerEntity($entityId), $checkResults); |
|
172 | 172 | } |
173 | 173 | |
174 | - return $this->sortResult( $checkResults ); |
|
174 | + return $this->sortResult($checkResults); |
|
175 | 175 | } |
176 | 176 | |
177 | 177 | /** |
@@ -193,19 +193,19 @@ discard block |
||
193 | 193 | callable $defaultResults = null |
194 | 194 | ) { |
195 | 195 | |
196 | - $parsedGuid = $this->statementGuidParser->parse( $guid ); |
|
196 | + $parsedGuid = $this->statementGuidParser->parse($guid); |
|
197 | 197 | $entityId = $parsedGuid->getEntityId(); |
198 | - $entity = $this->entityLookup->getEntity( $entityId ); |
|
199 | - if ( $entity instanceof StatementListProvidingEntity ) { |
|
200 | - $statement = $entity->getStatements()->getFirstStatementWithGuid( $guid ); |
|
201 | - if ( $statement ) { |
|
198 | + $entity = $this->entityLookup->getEntity($entityId); |
|
199 | + if ($entity instanceof StatementListProvidingEntity) { |
|
200 | + $statement = $entity->getStatements()->getFirstStatementWithGuid($guid); |
|
201 | + if ($statement) { |
|
202 | 202 | $result = $this->checkStatement( |
203 | 203 | $entity, |
204 | 204 | $statement, |
205 | 205 | $constraintIds, |
206 | 206 | $defaultResults |
207 | 207 | ); |
208 | - $output = $this->sortResult( $result ); |
|
208 | + $output = $this->sortResult($result); |
|
209 | 209 | return $output; |
210 | 210 | } |
211 | 211 | } |
@@ -213,8 +213,8 @@ discard block |
||
213 | 213 | return []; |
214 | 214 | } |
215 | 215 | |
216 | - private function getValidContextTypes( Constraint $constraint ) { |
|
217 | - if ( !array_key_exists( $constraint->getConstraintTypeItemId(), $this->checkerMap ) ) { |
|
216 | + private function getValidContextTypes(Constraint $constraint) { |
|
217 | + if (!array_key_exists($constraint->getConstraintTypeItemId(), $this->checkerMap)) { |
|
218 | 218 | return [ |
219 | 219 | Context::TYPE_STATEMENT, |
220 | 220 | Context::TYPE_QUALIFIER, |
@@ -222,25 +222,25 @@ discard block |
||
222 | 222 | ]; |
223 | 223 | } |
224 | 224 | |
225 | - return array_keys( array_filter( |
|
225 | + return array_keys(array_filter( |
|
226 | 226 | $this->checkerMap[$constraint->getConstraintTypeItemId()]->getSupportedContextTypes(), |
227 | - static function ( $resultStatus ) { |
|
227 | + static function($resultStatus) { |
|
228 | 228 | return $resultStatus !== CheckResult::STATUS_NOT_IN_SCOPE; |
229 | 229 | } |
230 | - ) ); |
|
230 | + )); |
|
231 | 231 | } |
232 | 232 | |
233 | - private function getValidEntityTypes( Constraint $constraint ) { |
|
234 | - if ( !array_key_exists( $constraint->getConstraintTypeItemId(), $this->checkerMap ) ) { |
|
235 | - return array_keys( ConstraintChecker::ALL_ENTITY_TYPES_SUPPORTED ); |
|
233 | + private function getValidEntityTypes(Constraint $constraint) { |
|
234 | + if (!array_key_exists($constraint->getConstraintTypeItemId(), $this->checkerMap)) { |
|
235 | + return array_keys(ConstraintChecker::ALL_ENTITY_TYPES_SUPPORTED); |
|
236 | 236 | } |
237 | 237 | |
238 | - return array_keys( array_filter( |
|
238 | + return array_keys(array_filter( |
|
239 | 239 | $this->checkerMap[$constraint->getConstraintTypeItemId()]->getSupportedEntityTypes(), |
240 | - static function ( $resultStatus ) { |
|
240 | + static function($resultStatus) { |
|
241 | 241 | return $resultStatus !== CheckResult::STATUS_NOT_IN_SCOPE; |
242 | 242 | } |
243 | - ) ); |
|
243 | + )); |
|
244 | 244 | } |
245 | 245 | |
246 | 246 | /** |
@@ -251,33 +251,33 @@ discard block |
||
251 | 251 | * |
252 | 252 | * @return ConstraintParameterException[] |
253 | 253 | */ |
254 | - private function checkCommonConstraintParameters( Constraint $constraint ) { |
|
254 | + private function checkCommonConstraintParameters(Constraint $constraint) { |
|
255 | 255 | $constraintParameters = $constraint->getConstraintParameters(); |
256 | 256 | try { |
257 | - $this->constraintParameterParser->checkError( $constraintParameters ); |
|
258 | - } catch ( ConstraintParameterException $e ) { |
|
259 | - return [ $e ]; |
|
257 | + $this->constraintParameterParser->checkError($constraintParameters); |
|
258 | + } catch (ConstraintParameterException $e) { |
|
259 | + return [$e]; |
|
260 | 260 | } |
261 | 261 | |
262 | 262 | $problems = []; |
263 | 263 | try { |
264 | - $this->constraintParameterParser->parseExceptionParameter( $constraintParameters ); |
|
265 | - } catch ( ConstraintParameterException $e ) { |
|
264 | + $this->constraintParameterParser->parseExceptionParameter($constraintParameters); |
|
265 | + } catch (ConstraintParameterException $e) { |
|
266 | 266 | $problems[] = $e; |
267 | 267 | } |
268 | 268 | try { |
269 | - $this->constraintParameterParser->parseConstraintStatusParameter( $constraintParameters ); |
|
270 | - } catch ( ConstraintParameterException $e ) { |
|
269 | + $this->constraintParameterParser->parseConstraintStatusParameter($constraintParameters); |
|
270 | + } catch (ConstraintParameterException $e) { |
|
271 | 271 | $problems[] = $e; |
272 | 272 | } |
273 | 273 | try { |
274 | 274 | $this->constraintParameterParser->parseConstraintScopeParameters( |
275 | 275 | $constraintParameters, |
276 | 276 | $constraint->getConstraintTypeItemId(), |
277 | - $this->getValidContextTypes( $constraint ), |
|
278 | - $this->getValidEntityTypes( $constraint ) |
|
277 | + $this->getValidContextTypes($constraint), |
|
278 | + $this->getValidEntityTypes($constraint) |
|
279 | 279 | ); |
280 | - } catch ( ConstraintParameterException $e ) { |
|
280 | + } catch (ConstraintParameterException $e) { |
|
281 | 281 | $problems[] = $e; |
282 | 282 | } |
283 | 283 | return $problems; |
@@ -290,16 +290,16 @@ discard block |
||
290 | 290 | * @return ConstraintParameterException[][] first level indexed by constraint ID, |
291 | 291 | * second level like checkConstraintParametersOnConstraintId (but without possibility of null) |
292 | 292 | */ |
293 | - public function checkConstraintParametersOnPropertyId( NumericPropertyId $propertyId ) { |
|
294 | - $constraints = $this->constraintLookup->queryConstraintsForProperty( $propertyId ); |
|
293 | + public function checkConstraintParametersOnPropertyId(NumericPropertyId $propertyId) { |
|
294 | + $constraints = $this->constraintLookup->queryConstraintsForProperty($propertyId); |
|
295 | 295 | $result = []; |
296 | 296 | |
297 | - foreach ( $constraints as $constraint ) { |
|
298 | - $problems = $this->checkCommonConstraintParameters( $constraint ); |
|
297 | + foreach ($constraints as $constraint) { |
|
298 | + $problems = $this->checkCommonConstraintParameters($constraint); |
|
299 | 299 | |
300 | - if ( array_key_exists( $constraint->getConstraintTypeItemId(), $this->checkerMap ) ) { |
|
300 | + if (array_key_exists($constraint->getConstraintTypeItemId(), $this->checkerMap)) { |
|
301 | 301 | $checker = $this->checkerMap[$constraint->getConstraintTypeItemId()]; |
302 | - $problems = array_merge( $problems, $checker->checkConstraintParameters( $constraint ) ); |
|
302 | + $problems = array_merge($problems, $checker->checkConstraintParameters($constraint)); |
|
303 | 303 | } |
304 | 304 | |
305 | 305 | $result[$constraint->getConstraintId()] = $problems; |
@@ -316,18 +316,18 @@ discard block |
||
316 | 316 | * @return ConstraintParameterException[]|null list of constraint parameter exceptions |
317 | 317 | * (empty means all parameters okay), or null if constraint is not found |
318 | 318 | */ |
319 | - public function checkConstraintParametersOnConstraintId( $constraintId ) { |
|
320 | - $propertyId = $this->statementGuidParser->parse( $constraintId )->getEntityId(); |
|
319 | + public function checkConstraintParametersOnConstraintId($constraintId) { |
|
320 | + $propertyId = $this->statementGuidParser->parse($constraintId)->getEntityId(); |
|
321 | 321 | '@phan-var NumericPropertyId $propertyId'; |
322 | - $constraints = $this->constraintLookup->queryConstraintsForProperty( $propertyId ); |
|
322 | + $constraints = $this->constraintLookup->queryConstraintsForProperty($propertyId); |
|
323 | 323 | |
324 | - foreach ( $constraints as $constraint ) { |
|
325 | - if ( $constraint->getConstraintId() === $constraintId ) { |
|
326 | - $problems = $this->checkCommonConstraintParameters( $constraint ); |
|
324 | + foreach ($constraints as $constraint) { |
|
325 | + if ($constraint->getConstraintId() === $constraintId) { |
|
326 | + $problems = $this->checkCommonConstraintParameters($constraint); |
|
327 | 327 | |
328 | - if ( array_key_exists( $constraint->getConstraintTypeItemId(), $this->checkerMap ) ) { |
|
328 | + if (array_key_exists($constraint->getConstraintTypeItemId(), $this->checkerMap)) { |
|
329 | 329 | $checker = $this->checkerMap[$constraint->getConstraintTypeItemId()]; |
330 | - $problems = array_merge( $problems, $checker->checkConstraintParameters( $constraint ) ); |
|
330 | + $problems = array_merge($problems, $checker->checkConstraintParameters($constraint)); |
|
331 | 331 | } |
332 | 332 | |
333 | 333 | return $problems; |
@@ -352,14 +352,14 @@ discard block |
||
352 | 352 | $result = []; |
353 | 353 | |
354 | 354 | /** @var Statement $statement */ |
355 | - foreach ( $entity->getStatements() as $statement ) { |
|
356 | - $result = array_merge( $result, |
|
355 | + foreach ($entity->getStatements() as $statement) { |
|
356 | + $result = array_merge($result, |
|
357 | 357 | $this->checkStatement( |
358 | 358 | $entity, |
359 | 359 | $statement, |
360 | 360 | $constraintIds, |
361 | 361 | $defaultResultsPerContext |
362 | - ) ); |
|
362 | + )); |
|
363 | 363 | } |
364 | 364 | |
365 | 365 | return $result; |
@@ -381,32 +381,32 @@ discard block |
||
381 | 381 | ) { |
382 | 382 | $result = []; |
383 | 383 | |
384 | - $result = array_merge( $result, |
|
384 | + $result = array_merge($result, |
|
385 | 385 | $this->checkConstraintsForMainSnak( |
386 | 386 | $entity, |
387 | 387 | $statement, |
388 | 388 | $constraintIds, |
389 | 389 | $defaultResultsPerContext |
390 | - ) ); |
|
390 | + )); |
|
391 | 391 | |
392 | - if ( $this->checkQualifiers ) { |
|
393 | - $result = array_merge( $result, |
|
392 | + if ($this->checkQualifiers) { |
|
393 | + $result = array_merge($result, |
|
394 | 394 | $this->checkConstraintsForQualifiers( |
395 | 395 | $entity, |
396 | 396 | $statement, |
397 | 397 | $constraintIds, |
398 | 398 | $defaultResultsPerContext |
399 | - ) ); |
|
399 | + )); |
|
400 | 400 | } |
401 | 401 | |
402 | - if ( $this->checkReferences ) { |
|
403 | - $result = array_merge( $result, |
|
402 | + if ($this->checkReferences) { |
|
403 | + $result = array_merge($result, |
|
404 | 404 | $this->checkConstraintsForReferences( |
405 | 405 | $entity, |
406 | 406 | $statement, |
407 | 407 | $constraintIds, |
408 | 408 | $defaultResultsPerContext |
409 | - ) ); |
|
409 | + )); |
|
410 | 410 | } |
411 | 411 | |
412 | 412 | return $result; |
@@ -421,17 +421,17 @@ discard block |
||
421 | 421 | * @param string[]|null $constraintIds |
422 | 422 | * @return Constraint[] |
423 | 423 | */ |
424 | - private function getConstraintsToUse( PropertyId $propertyId, array $constraintIds = null ) { |
|
425 | - if ( !( $propertyId instanceof NumericPropertyId ) ) { |
|
424 | + private function getConstraintsToUse(PropertyId $propertyId, array $constraintIds = null) { |
|
425 | + if (!($propertyId instanceof NumericPropertyId)) { |
|
426 | 426 | throw new InvalidArgumentException( |
427 | - 'Non-numeric property ID not supported:' . $propertyId->getSerialization() |
|
427 | + 'Non-numeric property ID not supported:'.$propertyId->getSerialization() |
|
428 | 428 | ); |
429 | 429 | } |
430 | - $constraints = $this->constraintLookup->queryConstraintsForProperty( $propertyId ); |
|
431 | - if ( $constraintIds !== null ) { |
|
430 | + $constraints = $this->constraintLookup->queryConstraintsForProperty($propertyId); |
|
431 | + if ($constraintIds !== null) { |
|
432 | 432 | $constraintsToUse = []; |
433 | - foreach ( $constraints as $constraint ) { |
|
434 | - if ( in_array( $constraint->getConstraintId(), $constraintIds ) ) { |
|
433 | + foreach ($constraints as $constraint) { |
|
434 | + if (in_array($constraint->getConstraintId(), $constraintIds)) { |
|
435 | 435 | $constraintsToUse[] = $constraint; |
436 | 436 | } |
437 | 437 | } |
@@ -455,18 +455,18 @@ discard block |
||
455 | 455 | array $constraintIds = null, |
456 | 456 | callable $defaultResults = null |
457 | 457 | ) { |
458 | - $context = new MainSnakContext( $entity, $statement ); |
|
458 | + $context = new MainSnakContext($entity, $statement); |
|
459 | 459 | $constraints = $this->getConstraintsToUse( |
460 | 460 | $statement->getPropertyId(), |
461 | 461 | $constraintIds |
462 | 462 | ); |
463 | - $result = $defaultResults !== null ? $defaultResults( $context ) : []; |
|
463 | + $result = $defaultResults !== null ? $defaultResults($context) : []; |
|
464 | 464 | |
465 | - foreach ( $constraints as $constraint ) { |
|
465 | + foreach ($constraints as $constraint) { |
|
466 | 466 | $parameters = $constraint->getConstraintParameters(); |
467 | 467 | try { |
468 | - $exceptions = $this->constraintParameterParser->parseExceptionParameter( $parameters ); |
|
469 | - } catch ( ConstraintParameterException $e ) { |
|
468 | + $exceptions = $this->constraintParameterParser->parseExceptionParameter($parameters); |
|
469 | + } catch (ConstraintParameterException $e) { |
|
470 | 470 | $result[] = new CheckResult( |
471 | 471 | $context, |
472 | 472 | $constraint, |
@@ -476,13 +476,13 @@ discard block |
||
476 | 476 | continue; |
477 | 477 | } |
478 | 478 | |
479 | - if ( in_array( $entity->getId(), $exceptions ) ) { |
|
480 | - $message = new ViolationMessage( 'wbqc-violation-message-exception' ); |
|
481 | - $result[] = new CheckResult( $context, $constraint, [], CheckResult::STATUS_EXCEPTION, $message ); |
|
479 | + if (in_array($entity->getId(), $exceptions)) { |
|
480 | + $message = new ViolationMessage('wbqc-violation-message-exception'); |
|
481 | + $result[] = new CheckResult($context, $constraint, [], CheckResult::STATUS_EXCEPTION, $message); |
|
482 | 482 | continue; |
483 | 483 | } |
484 | 484 | |
485 | - $result[] = $this->getCheckResultFor( $context, $constraint ); |
|
485 | + $result[] = $this->getCheckResultFor($context, $constraint); |
|
486 | 486 | } |
487 | 487 | |
488 | 488 | return $result; |
@@ -504,24 +504,24 @@ discard block |
||
504 | 504 | ) { |
505 | 505 | $result = []; |
506 | 506 | |
507 | - if ( in_array( |
|
507 | + if (in_array( |
|
508 | 508 | $statement->getPropertyId()->getSerialization(), |
509 | 509 | $this->propertiesWithViolatingQualifiers |
510 | - ) ) { |
|
510 | + )) { |
|
511 | 511 | return $result; |
512 | 512 | } |
513 | 513 | |
514 | - foreach ( $statement->getQualifiers() as $qualifier ) { |
|
515 | - $qualifierContext = new QualifierContext( $entity, $statement, $qualifier ); |
|
516 | - if ( $defaultResultsPerContext !== null ) { |
|
517 | - $result = array_merge( $result, $defaultResultsPerContext( $qualifierContext ) ); |
|
514 | + foreach ($statement->getQualifiers() as $qualifier) { |
|
515 | + $qualifierContext = new QualifierContext($entity, $statement, $qualifier); |
|
516 | + if ($defaultResultsPerContext !== null) { |
|
517 | + $result = array_merge($result, $defaultResultsPerContext($qualifierContext)); |
|
518 | 518 | } |
519 | 519 | $qualifierConstraints = $this->getConstraintsToUse( |
520 | 520 | $qualifierContext->getSnak()->getPropertyId(), |
521 | 521 | $constraintIds |
522 | 522 | ); |
523 | - foreach ( $qualifierConstraints as $qualifierConstraint ) { |
|
524 | - $result[] = $this->getCheckResultFor( $qualifierContext, $qualifierConstraint ); |
|
523 | + foreach ($qualifierConstraints as $qualifierConstraint) { |
|
524 | + $result[] = $this->getCheckResultFor($qualifierContext, $qualifierConstraint); |
|
525 | 525 | } |
526 | 526 | } |
527 | 527 | |
@@ -545,19 +545,19 @@ discard block |
||
545 | 545 | $result = []; |
546 | 546 | |
547 | 547 | /** @var Reference $reference */ |
548 | - foreach ( $statement->getReferences() as $reference ) { |
|
549 | - foreach ( $reference->getSnaks() as $snak ) { |
|
548 | + foreach ($statement->getReferences() as $reference) { |
|
549 | + foreach ($reference->getSnaks() as $snak) { |
|
550 | 550 | $referenceContext = new ReferenceContext( |
551 | 551 | $entity, $statement, $reference, $snak |
552 | 552 | ); |
553 | - if ( $defaultResultsPerContext !== null ) { |
|
554 | - $result = array_merge( $result, $defaultResultsPerContext( $referenceContext ) ); |
|
553 | + if ($defaultResultsPerContext !== null) { |
|
554 | + $result = array_merge($result, $defaultResultsPerContext($referenceContext)); |
|
555 | 555 | } |
556 | 556 | $referenceConstraints = $this->getConstraintsToUse( |
557 | 557 | $referenceContext->getSnak()->getPropertyId(), |
558 | 558 | $constraintIds |
559 | 559 | ); |
560 | - foreach ( $referenceConstraints as $referenceConstraint ) { |
|
560 | + foreach ($referenceConstraints as $referenceConstraint) { |
|
561 | 561 | $result[] = $this->getCheckResultFor( |
562 | 562 | $referenceContext, |
563 | 563 | $referenceConstraint |
@@ -576,20 +576,20 @@ discard block |
||
576 | 576 | * @throws InvalidArgumentException |
577 | 577 | * @return CheckResult |
578 | 578 | */ |
579 | - private function getCheckResultFor( Context $context, Constraint $constraint ) { |
|
580 | - if ( array_key_exists( $constraint->getConstraintTypeItemId(), $this->checkerMap ) ) { |
|
579 | + private function getCheckResultFor(Context $context, Constraint $constraint) { |
|
580 | + if (array_key_exists($constraint->getConstraintTypeItemId(), $this->checkerMap)) { |
|
581 | 581 | $checker = $this->checkerMap[$constraint->getConstraintTypeItemId()]; |
582 | - $result = $this->handleScope( $checker, $context, $constraint ); |
|
582 | + $result = $this->handleScope($checker, $context, $constraint); |
|
583 | 583 | |
584 | - if ( $result !== null ) { |
|
585 | - $this->addMetadata( $context, $result ); |
|
584 | + if ($result !== null) { |
|
585 | + $this->addMetadata($context, $result); |
|
586 | 586 | return $result; |
587 | 587 | } |
588 | 588 | |
589 | - $startTime = microtime( true ); |
|
589 | + $startTime = microtime(true); |
|
590 | 590 | try { |
591 | - $result = $checker->checkConstraint( $context, $constraint ); |
|
592 | - } catch ( ConstraintParameterException $e ) { |
|
591 | + $result = $checker->checkConstraint($context, $constraint); |
|
592 | + } catch (ConstraintParameterException $e) { |
|
593 | 593 | $result = new CheckResult( |
594 | 594 | $context, |
595 | 595 | $constraint, |
@@ -597,28 +597,28 @@ discard block |
||
597 | 597 | CheckResult::STATUS_BAD_PARAMETERS, |
598 | 598 | $e->getViolationMessage() |
599 | 599 | ); |
600 | - } catch ( SparqlHelperException $e ) { |
|
601 | - $message = new ViolationMessage( 'wbqc-violation-message-sparql-error' ); |
|
602 | - $result = new CheckResult( $context, $constraint, [], CheckResult::STATUS_TODO, $message ); |
|
600 | + } catch (SparqlHelperException $e) { |
|
601 | + $message = new ViolationMessage('wbqc-violation-message-sparql-error'); |
|
602 | + $result = new CheckResult($context, $constraint, [], CheckResult::STATUS_TODO, $message); |
|
603 | 603 | } |
604 | - $endTime = microtime( true ); |
|
604 | + $endTime = microtime(true); |
|
605 | 605 | |
606 | - $this->addMetadata( $context, $result ); |
|
606 | + $this->addMetadata($context, $result); |
|
607 | 607 | |
608 | - $this->downgradeResultStatus( $context, $result ); |
|
608 | + $this->downgradeResultStatus($context, $result); |
|
609 | 609 | |
610 | 610 | $this->loggingHelper->logConstraintCheck( |
611 | 611 | $context, |
612 | 612 | $constraint, |
613 | 613 | $result, |
614 | - get_class( $checker ), |
|
614 | + get_class($checker), |
|
615 | 615 | $endTime - $startTime, |
616 | 616 | __METHOD__ |
617 | 617 | ); |
618 | 618 | |
619 | 619 | return $result; |
620 | 620 | } else { |
621 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_TODO, null ); |
|
621 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_TODO, null); |
|
622 | 622 | } |
623 | 623 | } |
624 | 624 | |
@@ -627,84 +627,84 @@ discard block |
||
627 | 627 | Context $context, |
628 | 628 | Constraint $constraint |
629 | 629 | ): ?CheckResult { |
630 | - $validContextTypes = $this->getValidContextTypes( $constraint ); |
|
631 | - $validEntityTypes = $this->getValidEntityTypes( $constraint ); |
|
630 | + $validContextTypes = $this->getValidContextTypes($constraint); |
|
631 | + $validEntityTypes = $this->getValidEntityTypes($constraint); |
|
632 | 632 | try { |
633 | - [ $checkedContextTypes, $checkedEntityTypes ] = $this->constraintParameterParser->parseConstraintScopeParameters( |
|
633 | + [$checkedContextTypes, $checkedEntityTypes] = $this->constraintParameterParser->parseConstraintScopeParameters( |
|
634 | 634 | $constraint->getConstraintParameters(), |
635 | 635 | $constraint->getConstraintTypeItemId(), |
636 | 636 | $validContextTypes, |
637 | 637 | $validEntityTypes |
638 | 638 | ); |
639 | - } catch ( ConstraintParameterException $e ) { |
|
640 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_BAD_PARAMETERS, $e->getViolationMessage() ); |
|
639 | + } catch (ConstraintParameterException $e) { |
|
640 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_BAD_PARAMETERS, $e->getViolationMessage()); |
|
641 | 641 | } |
642 | 642 | |
643 | - if ( $checkedContextTypes === null ) { |
|
643 | + if ($checkedContextTypes === null) { |
|
644 | 644 | $checkedContextTypes = $checker->getDefaultContextTypes(); |
645 | 645 | } |
646 | 646 | $contextType = $context->getType(); |
647 | - if ( !in_array( $contextType, $checkedContextTypes ) ) { |
|
648 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_NOT_IN_SCOPE, null ); |
|
647 | + if (!in_array($contextType, $checkedContextTypes)) { |
|
648 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_NOT_IN_SCOPE, null); |
|
649 | 649 | } |
650 | - if ( $checker->getSupportedContextTypes()[$contextType] === CheckResult::STATUS_TODO ) { |
|
651 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_TODO, null ); |
|
650 | + if ($checker->getSupportedContextTypes()[$contextType] === CheckResult::STATUS_TODO) { |
|
651 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_TODO, null); |
|
652 | 652 | } |
653 | 653 | |
654 | - if ( $checkedEntityTypes === null ) { |
|
654 | + if ($checkedEntityTypes === null) { |
|
655 | 655 | $checkedEntityTypes = $validEntityTypes; |
656 | 656 | } |
657 | 657 | $entityType = $context->getEntity()->getType(); |
658 | - if ( !in_array( $entityType, $checkedEntityTypes ) ) { |
|
659 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_NOT_IN_SCOPE, null ); |
|
658 | + if (!in_array($entityType, $checkedEntityTypes)) { |
|
659 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_NOT_IN_SCOPE, null); |
|
660 | 660 | } |
661 | - if ( $checker->getSupportedEntityTypes()[$entityType] === CheckResult::STATUS_TODO ) { |
|
662 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_TODO, null ); |
|
661 | + if ($checker->getSupportedEntityTypes()[$entityType] === CheckResult::STATUS_TODO) { |
|
662 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_TODO, null); |
|
663 | 663 | } |
664 | 664 | |
665 | 665 | return null; |
666 | 666 | } |
667 | 667 | |
668 | - private function addMetadata( Context $context, CheckResult $result ) { |
|
669 | - $result->withMetadata( Metadata::merge( [ |
|
668 | + private function addMetadata(Context $context, CheckResult $result) { |
|
669 | + $result->withMetadata(Metadata::merge([ |
|
670 | 670 | $result->getMetadata(), |
671 | - Metadata::ofDependencyMetadata( DependencyMetadata::merge( [ |
|
672 | - DependencyMetadata::ofEntityId( $context->getEntity()->getId() ), |
|
673 | - DependencyMetadata::ofEntityId( $result->getConstraint()->getPropertyId() ), |
|
674 | - ] ) ), |
|
675 | - ] ) ); |
|
671 | + Metadata::ofDependencyMetadata(DependencyMetadata::merge([ |
|
672 | + DependencyMetadata::ofEntityId($context->getEntity()->getId()), |
|
673 | + DependencyMetadata::ofEntityId($result->getConstraint()->getPropertyId()), |
|
674 | + ])), |
|
675 | + ])); |
|
676 | 676 | } |
677 | 677 | |
678 | - private function downgradeResultStatus( Context $context, CheckResult &$result ) { |
|
678 | + private function downgradeResultStatus(Context $context, CheckResult & $result) { |
|
679 | 679 | $constraint = $result->getConstraint(); |
680 | 680 | try { |
681 | 681 | $constraintStatus = $this->constraintParameterParser |
682 | - ->parseConstraintStatusParameter( $constraint->getConstraintParameters() ); |
|
683 | - } catch ( ConstraintParameterException $e ) { |
|
684 | - $result = new CheckResult( $context, $constraint, [], CheckResult::STATUS_BAD_PARAMETERS, $e->getViolationMessage() ); |
|
682 | + ->parseConstraintStatusParameter($constraint->getConstraintParameters()); |
|
683 | + } catch (ConstraintParameterException $e) { |
|
684 | + $result = new CheckResult($context, $constraint, [], CheckResult::STATUS_BAD_PARAMETERS, $e->getViolationMessage()); |
|
685 | 685 | $constraintStatus = null; |
686 | 686 | } |
687 | - if ( $constraintStatus === null ) { |
|
687 | + if ($constraintStatus === null) { |
|
688 | 688 | // downgrade violation to warning |
689 | - if ( $result->getStatus() === CheckResult::STATUS_VIOLATION ) { |
|
690 | - $result->setStatus( CheckResult::STATUS_WARNING ); |
|
689 | + if ($result->getStatus() === CheckResult::STATUS_VIOLATION) { |
|
690 | + $result->setStatus(CheckResult::STATUS_WARNING); |
|
691 | 691 | } |
692 | - } elseif ( $constraintStatus === 'suggestion' ) { |
|
692 | + } elseif ($constraintStatus === 'suggestion') { |
|
693 | 693 | // downgrade violation to suggestion |
694 | - if ( $result->getStatus() === CheckResult::STATUS_VIOLATION ) { |
|
695 | - $result->setStatus( CheckResult::STATUS_SUGGESTION ); |
|
694 | + if ($result->getStatus() === CheckResult::STATUS_VIOLATION) { |
|
695 | + $result->setStatus(CheckResult::STATUS_SUGGESTION); |
|
696 | 696 | } |
697 | - $result->addParameter( 'constraint_status', $constraintStatus ); |
|
697 | + $result->addParameter('constraint_status', $constraintStatus); |
|
698 | 698 | } else { |
699 | - if ( $constraintStatus !== 'mandatory' ) { |
|
699 | + if ($constraintStatus !== 'mandatory') { |
|
700 | 700 | // @codeCoverageIgnoreStart |
701 | 701 | throw new LogicException( |
702 | - "Unknown constraint status '$constraintStatus', " . |
|
702 | + "Unknown constraint status '$constraintStatus', ". |
|
703 | 703 | "only known statuses are 'mandatory' and 'suggestion'" |
704 | 704 | ); |
705 | 705 | // @codeCoverageIgnoreEnd |
706 | 706 | } |
707 | - $result->addParameter( 'constraint_status', $constraintStatus ); |
|
707 | + $result->addParameter('constraint_status', $constraintStatus); |
|
708 | 708 | } |
709 | 709 | } |
710 | 710 | |
@@ -713,12 +713,12 @@ discard block |
||
713 | 713 | * |
714 | 714 | * @return CheckResult[] |
715 | 715 | */ |
716 | - private function sortResult( array $result ) { |
|
717 | - if ( count( $result ) < 2 ) { |
|
716 | + private function sortResult(array $result) { |
|
717 | + if (count($result) < 2) { |
|
718 | 718 | return $result; |
719 | 719 | } |
720 | 720 | |
721 | - $sortFunction = static function ( CheckResult $a, CheckResult $b ) { |
|
721 | + $sortFunction = static function(CheckResult $a, CheckResult $b) { |
|
722 | 722 | $orderNum = 0; |
723 | 723 | $order = [ |
724 | 724 | CheckResult::STATUS_BAD_PARAMETERS => $orderNum++, |
@@ -735,55 +735,55 @@ discard block |
||
735 | 735 | $statusA = $a->getStatus(); |
736 | 736 | $statusB = $b->getStatus(); |
737 | 737 | |
738 | - $orderA = array_key_exists( $statusA, $order ) ? $order[ $statusA ] : $order[ 'other' ]; |
|
739 | - $orderB = array_key_exists( $statusB, $order ) ? $order[ $statusB ] : $order[ 'other' ]; |
|
738 | + $orderA = array_key_exists($statusA, $order) ? $order[$statusA] : $order['other']; |
|
739 | + $orderB = array_key_exists($statusB, $order) ? $order[$statusB] : $order['other']; |
|
740 | 740 | |
741 | - if ( $orderA === $orderB ) { |
|
741 | + if ($orderA === $orderB) { |
|
742 | 742 | $cursorA = $a->getContextCursor(); |
743 | 743 | $cursorB = $b->getContextCursor(); |
744 | 744 | |
745 | - if ( $cursorA instanceof EntityContextCursor ) { |
|
745 | + if ($cursorA instanceof EntityContextCursor) { |
|
746 | 746 | return $cursorB instanceof EntityContextCursor ? 0 : -1; |
747 | 747 | } |
748 | - if ( $cursorB instanceof EntityContextCursor ) { |
|
748 | + if ($cursorB instanceof EntityContextCursor) { |
|
749 | 749 | return $cursorA instanceof EntityContextCursor ? 0 : 1; |
750 | 750 | } |
751 | 751 | |
752 | 752 | $pidA = $cursorA->getSnakPropertyId(); |
753 | 753 | $pidB = $cursorB->getSnakPropertyId(); |
754 | 754 | |
755 | - if ( $pidA === $pidB ) { |
|
755 | + if ($pidA === $pidB) { |
|
756 | 756 | $hashA = $cursorA->getSnakHash(); |
757 | 757 | $hashB = $cursorB->getSnakHash(); |
758 | 758 | |
759 | - if ( $hashA === $hashB ) { |
|
760 | - if ( $a instanceof NullResult ) { |
|
759 | + if ($hashA === $hashB) { |
|
760 | + if ($a instanceof NullResult) { |
|
761 | 761 | return $b instanceof NullResult ? 0 : -1; |
762 | 762 | } |
763 | - if ( $b instanceof NullResult ) { |
|
763 | + if ($b instanceof NullResult) { |
|
764 | 764 | return $a instanceof NullResult ? 0 : 1; |
765 | 765 | } |
766 | 766 | |
767 | 767 | $typeA = $a->getConstraint()->getConstraintTypeItemId(); |
768 | 768 | $typeB = $b->getConstraint()->getConstraintTypeItemId(); |
769 | 769 | |
770 | - if ( $typeA == $typeB ) { |
|
770 | + if ($typeA == $typeB) { |
|
771 | 771 | return 0; |
772 | 772 | } else { |
773 | - return ( $typeA > $typeB ) ? 1 : -1; |
|
773 | + return ($typeA > $typeB) ? 1 : -1; |
|
774 | 774 | } |
775 | 775 | } else { |
776 | - return ( $hashA > $hashB ) ? 1 : -1; |
|
776 | + return ($hashA > $hashB) ? 1 : -1; |
|
777 | 777 | } |
778 | 778 | } else { |
779 | - return ( $pidA > $pidB ) ? 1 : -1; |
|
779 | + return ($pidA > $pidB) ? 1 : -1; |
|
780 | 780 | } |
781 | 781 | } else { |
782 | - return ( $orderA > $orderB ) ? 1 : -1; |
|
782 | + return ($orderA > $orderB) ? 1 : -1; |
|
783 | 783 | } |
784 | 784 | }; |
785 | 785 | |
786 | - uasort( $result, $sortFunction ); |
|
786 | + uasort($result, $sortFunction); |
|
787 | 787 | |
788 | 788 | return $result; |
789 | 789 | } |
@@ -117,11 +117,11 @@ discard block |
||
117 | 117 | CheckResultsRendererFactory $checkResultsRendererFactory, |
118 | 118 | IBufferingStatsdDataFactory $dataFactory |
119 | 119 | ) { |
120 | - parent::__construct( $main, $name ); |
|
120 | + parent::__construct($main, $name); |
|
121 | 121 | $this->entityIdParser = $entityIdParser; |
122 | 122 | $this->statementGuidValidator = $statementGuidValidator; |
123 | - $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); |
|
124 | - $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); |
|
123 | + $this->resultBuilder = $apiHelperFactory->getResultBuilder($this); |
|
124 | + $this->errorReporter = $apiHelperFactory->getErrorReporter($this); |
|
125 | 125 | $this->resultsSource = $resultsSource; |
126 | 126 | $this->checkResultsRendererFactory = $checkResultsRendererFactory; |
127 | 127 | $this->dataFactory = $dataFactory; |
@@ -137,14 +137,14 @@ discard block |
||
137 | 137 | |
138 | 138 | $params = $this->extractRequestParams(); |
139 | 139 | |
140 | - $this->validateParameters( $params ); |
|
141 | - $entityIds = $this->parseEntityIds( $params ); |
|
142 | - $claimIds = $this->parseClaimIds( $params ); |
|
140 | + $this->validateParameters($params); |
|
141 | + $entityIds = $this->parseEntityIds($params); |
|
142 | + $claimIds = $this->parseClaimIds($params); |
|
143 | 143 | $constraintIDs = $params[self::PARAM_CONSTRAINT_ID]; |
144 | 144 | $statuses = $params[self::PARAM_STATUS]; |
145 | 145 | |
146 | 146 | $checkResultsRenderer = $this->checkResultsRendererFactory |
147 | - ->getCheckResultsRenderer( $this->getLanguage() ); |
|
147 | + ->getCheckResultsRenderer($this->getLanguage()); |
|
148 | 148 | |
149 | 149 | $this->getResult()->addValue( |
150 | 150 | null, |
@@ -158,7 +158,7 @@ discard block |
||
158 | 158 | ) |
159 | 159 | )->getArray() |
160 | 160 | ); |
161 | - $this->resultBuilder->markSuccess( 1 ); |
|
161 | + $this->resultBuilder->markSuccess(1); |
|
162 | 162 | } |
163 | 163 | |
164 | 164 | /** |
@@ -166,24 +166,24 @@ discard block |
||
166 | 166 | * |
167 | 167 | * @return EntityId[] |
168 | 168 | */ |
169 | - private function parseEntityIds( array $params ) { |
|
169 | + private function parseEntityIds(array $params) { |
|
170 | 170 | $ids = $params[self::PARAM_ID]; |
171 | 171 | |
172 | - if ( $ids === null ) { |
|
172 | + if ($ids === null) { |
|
173 | 173 | return []; |
174 | - } elseif ( $ids === [] ) { |
|
174 | + } elseif ($ids === []) { |
|
175 | 175 | $this->errorReporter->dieError( |
176 | - 'If ' . self::PARAM_ID . ' is specified, it must be nonempty.', 'no-data' ); |
|
176 | + 'If '.self::PARAM_ID.' is specified, it must be nonempty.', 'no-data' ); |
|
177 | 177 | } |
178 | 178 | |
179 | - return array_map( function ( $id ) { |
|
179 | + return array_map(function($id) { |
|
180 | 180 | try { |
181 | - return $this->entityIdParser->parse( $id ); |
|
182 | - } catch ( EntityIdParsingException $e ) { |
|
181 | + return $this->entityIdParser->parse($id); |
|
182 | + } catch (EntityIdParsingException $e) { |
|
183 | 183 | $this->errorReporter->dieError( |
184 | - "Invalid id: $id", 'invalid-entity-id', 0, [ self::PARAM_ID => $id ] ); |
|
184 | + "Invalid id: $id", 'invalid-entity-id', 0, [self::PARAM_ID => $id] ); |
|
185 | 185 | } |
186 | - }, $ids ); |
|
186 | + }, $ids); |
|
187 | 187 | } |
188 | 188 | |
189 | 189 | /** |
@@ -191,35 +191,35 @@ discard block |
||
191 | 191 | * |
192 | 192 | * @return string[] |
193 | 193 | */ |
194 | - private function parseClaimIds( array $params ) { |
|
194 | + private function parseClaimIds(array $params) { |
|
195 | 195 | $ids = $params[self::PARAM_CLAIM_ID]; |
196 | 196 | |
197 | - if ( $ids === null ) { |
|
197 | + if ($ids === null) { |
|
198 | 198 | return []; |
199 | - } elseif ( $ids === [] ) { |
|
199 | + } elseif ($ids === []) { |
|
200 | 200 | $this->errorReporter->dieError( |
201 | - 'If ' . self::PARAM_CLAIM_ID . ' is specified, it must be nonempty.', 'no-data' ); |
|
201 | + 'If '.self::PARAM_CLAIM_ID.' is specified, it must be nonempty.', 'no-data' ); |
|
202 | 202 | } |
203 | 203 | |
204 | - foreach ( $ids as $id ) { |
|
205 | - if ( !$this->statementGuidValidator->validate( $id ) ) { |
|
204 | + foreach ($ids as $id) { |
|
205 | + if (!$this->statementGuidValidator->validate($id)) { |
|
206 | 206 | $this->errorReporter->dieError( |
207 | - "Invalid claim id: $id", 'invalid-guid', 0, [ self::PARAM_CLAIM_ID => $id ] ); |
|
207 | + "Invalid claim id: $id", 'invalid-guid', 0, [self::PARAM_CLAIM_ID => $id] ); |
|
208 | 208 | } |
209 | 209 | } |
210 | 210 | |
211 | 211 | return $ids; |
212 | 212 | } |
213 | 213 | |
214 | - private function validateParameters( array $params ) { |
|
215 | - if ( $params[self::PARAM_CONSTRAINT_ID] !== null |
|
216 | - && empty( $params[self::PARAM_CONSTRAINT_ID] ) |
|
214 | + private function validateParameters(array $params) { |
|
215 | + if ($params[self::PARAM_CONSTRAINT_ID] !== null |
|
216 | + && empty($params[self::PARAM_CONSTRAINT_ID]) |
|
217 | 217 | ) { |
218 | 218 | $paramConstraintId = self::PARAM_CONSTRAINT_ID; |
219 | 219 | $this->errorReporter->dieError( |
220 | 220 | "If $paramConstraintId is specified, it must be nonempty.", 'no-data' ); |
221 | 221 | } |
222 | - if ( $params[self::PARAM_ID] === null && $params[self::PARAM_CLAIM_ID] === null ) { |
|
222 | + if ($params[self::PARAM_ID] === null && $params[self::PARAM_CLAIM_ID] === null) { |
|
223 | 223 | $paramId = self::PARAM_ID; |
224 | 224 | $paramClaimId = self::PARAM_CLAIM_ID; |
225 | 225 | $this->errorReporter->dieError( |
@@ -260,7 +260,7 @@ discard block |
||
260 | 260 | ], |
261 | 261 | ParamValidator::PARAM_ISMULTI => true, |
262 | 262 | ParamValidator::PARAM_ALL => true, |
263 | - ParamValidator::PARAM_DEFAULT => implode( '|', CachingResultsSource::CACHED_STATUSES ), |
|
263 | + ParamValidator::PARAM_DEFAULT => implode('|', CachingResultsSource::CACHED_STATUSES), |
|
264 | 264 | ApiBase::PARAM_HELP_MSG_PER_VALUE => [], |
265 | 265 | ], |
266 | 266 | ]; |
@@ -29,53 +29,53 @@ discard block |
||
29 | 29 | use WikiMap; |
30 | 30 | |
31 | 31 | return [ |
32 | - ConstraintsServices::EXPIRY_LOCK => static function ( MediaWikiServices $services ) { |
|
33 | - return new ExpiryLock( ObjectCache::getInstance( CACHE_ANYTHING ) ); |
|
32 | + ConstraintsServices::EXPIRY_LOCK => static function(MediaWikiServices $services) { |
|
33 | + return new ExpiryLock(ObjectCache::getInstance(CACHE_ANYTHING)); |
|
34 | 34 | }, |
35 | 35 | |
36 | - ConstraintsServices::LOGGING_HELPER => static function ( MediaWikiServices $services ) { |
|
36 | + ConstraintsServices::LOGGING_HELPER => static function(MediaWikiServices $services) { |
|
37 | 37 | return new LoggingHelper( |
38 | 38 | $services->getStatsdDataFactory(), |
39 | - LoggerFactory::getInstance( 'WikibaseQualityConstraints' ), |
|
39 | + LoggerFactory::getInstance('WikibaseQualityConstraints'), |
|
40 | 40 | $services->getMainConfig() |
41 | 41 | ); |
42 | 42 | }, |
43 | 43 | |
44 | - ConstraintsServices::CONSTRAINT_STORE => static function ( MediaWikiServices $services ) { |
|
45 | - $sourceDefinitions = WikibaseRepo::getEntitySourceDefinitions( $services ); |
|
46 | - $propertySource = $sourceDefinitions->getDatabaseSourceForEntityType( Property::ENTITY_TYPE ); |
|
47 | - if ( $propertySource === null ) { |
|
48 | - throw new RuntimeException( 'Can\'t get a ConstraintStore for properties not stored in a database.' ); |
|
44 | + ConstraintsServices::CONSTRAINT_STORE => static function(MediaWikiServices $services) { |
|
45 | + $sourceDefinitions = WikibaseRepo::getEntitySourceDefinitions($services); |
|
46 | + $propertySource = $sourceDefinitions->getDatabaseSourceForEntityType(Property::ENTITY_TYPE); |
|
47 | + if ($propertySource === null) { |
|
48 | + throw new RuntimeException('Can\'t get a ConstraintStore for properties not stored in a database.'); |
|
49 | 49 | } |
50 | 50 | |
51 | - $localEntitySourceName = WikibaseRepo::getLocalEntitySource( $services )->getSourceName(); |
|
52 | - if ( $propertySource->getSourceName() !== $localEntitySourceName ) { |
|
53 | - throw new RuntimeException( 'Can\'t get a ConstraintStore for a non local entity source.' ); |
|
51 | + $localEntitySourceName = WikibaseRepo::getLocalEntitySource($services)->getSourceName(); |
|
52 | + if ($propertySource->getSourceName() !== $localEntitySourceName) { |
|
53 | + throw new RuntimeException('Can\'t get a ConstraintStore for a non local entity source.'); |
|
54 | 54 | } |
55 | 55 | |
56 | 56 | $dbName = $propertySource->getDatabaseName(); |
57 | 57 | return new ConstraintRepositoryStore( |
58 | - $services->getDBLoadBalancerFactory()->getMainLB( $dbName ), |
|
58 | + $services->getDBLoadBalancerFactory()->getMainLB($dbName), |
|
59 | 59 | $dbName |
60 | 60 | ); |
61 | 61 | }, |
62 | 62 | |
63 | - ConstraintsServices::CONSTRAINT_LOOKUP => static function ( MediaWikiServices $services ) { |
|
64 | - $sourceDefinitions = WikibaseRepo::getEntitySourceDefinitions( $services ); |
|
65 | - $propertySource = $sourceDefinitions->getDatabaseSourceForEntityType( Property::ENTITY_TYPE ); |
|
66 | - if ( $propertySource === null ) { |
|
67 | - throw new RuntimeException( 'Can\'t get a ConstraintStore for properties not stored in a database.' ); |
|
63 | + ConstraintsServices::CONSTRAINT_LOOKUP => static function(MediaWikiServices $services) { |
|
64 | + $sourceDefinitions = WikibaseRepo::getEntitySourceDefinitions($services); |
|
65 | + $propertySource = $sourceDefinitions->getDatabaseSourceForEntityType(Property::ENTITY_TYPE); |
|
66 | + if ($propertySource === null) { |
|
67 | + throw new RuntimeException('Can\'t get a ConstraintStore for properties not stored in a database.'); |
|
68 | 68 | } |
69 | 69 | |
70 | 70 | $dbName = $propertySource->getDatabaseName(); |
71 | 71 | $rawLookup = new ConstraintRepositoryLookup( |
72 | - $services->getDBLoadBalancerFactory()->getMainLB( $dbName ), |
|
72 | + $services->getDBLoadBalancerFactory()->getMainLB($dbName), |
|
73 | 73 | $dbName |
74 | 74 | ); |
75 | - return new CachingConstraintLookup( $rawLookup ); |
|
75 | + return new CachingConstraintLookup($rawLookup); |
|
76 | 76 | }, |
77 | 77 | |
78 | - ConstraintsServices::CHECK_RESULT_SERIALIZER => static function ( MediaWikiServices $services ) { |
|
78 | + ConstraintsServices::CHECK_RESULT_SERIALIZER => static function(MediaWikiServices $services) { |
|
79 | 79 | return new CheckResultSerializer( |
80 | 80 | new ConstraintSerializer( |
81 | 81 | false // constraint parameters are not exposed |
@@ -86,9 +86,9 @@ discard block |
||
86 | 86 | ); |
87 | 87 | }, |
88 | 88 | |
89 | - ConstraintsServices::CHECK_RESULT_DESERIALIZER => static function ( MediaWikiServices $services ) { |
|
90 | - $entityIdParser = WikibaseRepo::getEntityIdParser( $services ); |
|
91 | - $dataValueFactory = WikibaseRepo::getDataValueFactory( $services ); |
|
89 | + ConstraintsServices::CHECK_RESULT_DESERIALIZER => static function(MediaWikiServices $services) { |
|
90 | + $entityIdParser = WikibaseRepo::getEntityIdParser($services); |
|
91 | + $dataValueFactory = WikibaseRepo::getDataValueFactory($services); |
|
92 | 92 | |
93 | 93 | return new CheckResultDeserializer( |
94 | 94 | new ConstraintDeserializer(), |
@@ -101,13 +101,13 @@ discard block |
||
101 | 101 | ); |
102 | 102 | }, |
103 | 103 | |
104 | - ConstraintsServices::VIOLATION_MESSAGE_SERIALIZER => static function ( MediaWikiServices $services ) { |
|
104 | + ConstraintsServices::VIOLATION_MESSAGE_SERIALIZER => static function(MediaWikiServices $services) { |
|
105 | 105 | return new ViolationMessageSerializer(); |
106 | 106 | }, |
107 | 107 | |
108 | - ConstraintsServices::VIOLATION_MESSAGE_DESERIALIZER => static function ( MediaWikiServices $services ) { |
|
109 | - $entityIdParser = WikibaseRepo::getEntityIdParser( $services ); |
|
110 | - $dataValueFactory = WikibaseRepo::getDataValueFactory( $services ); |
|
108 | + ConstraintsServices::VIOLATION_MESSAGE_DESERIALIZER => static function(MediaWikiServices $services) { |
|
109 | + $entityIdParser = WikibaseRepo::getEntityIdParser($services); |
|
110 | + $dataValueFactory = WikibaseRepo::getDataValueFactory($services); |
|
111 | 111 | |
112 | 112 | return new ViolationMessageDeserializer( |
113 | 113 | $entityIdParser, |
@@ -115,37 +115,37 @@ discard block |
||
115 | 115 | ); |
116 | 116 | }, |
117 | 117 | |
118 | - ConstraintsServices::CONSTRAINT_PARAMETER_PARSER => static function ( MediaWikiServices $services ) { |
|
119 | - $deserializerFactory = WikibaseRepo::getBaseDataModelDeserializerFactory( $services ); |
|
120 | - $entitySourceDefinitions = WikibaseRepo::getEntitySourceDefinitions( $services ); |
|
118 | + ConstraintsServices::CONSTRAINT_PARAMETER_PARSER => static function(MediaWikiServices $services) { |
|
119 | + $deserializerFactory = WikibaseRepo::getBaseDataModelDeserializerFactory($services); |
|
120 | + $entitySourceDefinitions = WikibaseRepo::getEntitySourceDefinitions($services); |
|
121 | 121 | |
122 | 122 | return new ConstraintParameterParser( |
123 | 123 | $services->getMainConfig(), |
124 | 124 | $deserializerFactory, |
125 | - $entitySourceDefinitions->getDatabaseSourceForEntityType( 'item' )->getConceptBaseUri() |
|
125 | + $entitySourceDefinitions->getDatabaseSourceForEntityType('item')->getConceptBaseUri() |
|
126 | 126 | ); |
127 | 127 | }, |
128 | 128 | |
129 | - ConstraintsServices::CONNECTION_CHECKER_HELPER => static function ( MediaWikiServices $services ) { |
|
129 | + ConstraintsServices::CONNECTION_CHECKER_HELPER => static function(MediaWikiServices $services) { |
|
130 | 130 | return new ConnectionCheckerHelper(); |
131 | 131 | }, |
132 | 132 | |
133 | - ConstraintsServices::RANGE_CHECKER_HELPER => static function ( MediaWikiServices $services ) { |
|
133 | + ConstraintsServices::RANGE_CHECKER_HELPER => static function(MediaWikiServices $services) { |
|
134 | 134 | return new RangeCheckerHelper( |
135 | 135 | $services->getMainConfig(), |
136 | - WikibaseRepo::getUnitConverter( $services ) |
|
136 | + WikibaseRepo::getUnitConverter($services) |
|
137 | 137 | ); |
138 | 138 | }, |
139 | 139 | |
140 | - ConstraintsServices::SPARQL_HELPER => static function ( MediaWikiServices $services ) { |
|
141 | - $endpoint = $services->getMainConfig()->get( 'WBQualityConstraintsSparqlEndpoint' ); |
|
142 | - if ( $endpoint === '' ) { |
|
140 | + ConstraintsServices::SPARQL_HELPER => static function(MediaWikiServices $services) { |
|
141 | + $endpoint = $services->getMainConfig()->get('WBQualityConstraintsSparqlEndpoint'); |
|
142 | + if ($endpoint === '') { |
|
143 | 143 | return new DummySparqlHelper(); |
144 | 144 | } |
145 | 145 | |
146 | - $rdfVocabulary = WikibaseRepo::getRdfVocabulary( $services ); |
|
147 | - $entityIdParser = WikibaseRepo::getEntityIdParser( $services ); |
|
148 | - $propertyDataTypeLookup = WikibaseRepo::getPropertyDataTypeLookup( $services ); |
|
146 | + $rdfVocabulary = WikibaseRepo::getRdfVocabulary($services); |
|
147 | + $entityIdParser = WikibaseRepo::getEntityIdParser($services); |
|
148 | + $propertyDataTypeLookup = WikibaseRepo::getPropertyDataTypeLookup($services); |
|
149 | 149 | |
150 | 150 | return new SparqlHelper( |
151 | 151 | $services->getMainConfig(), |
@@ -153,126 +153,126 @@ discard block |
||
153 | 153 | $entityIdParser, |
154 | 154 | $propertyDataTypeLookup, |
155 | 155 | $services->getMainWANObjectCache(), |
156 | - ConstraintsServices::getViolationMessageSerializer( $services ), |
|
157 | - ConstraintsServices::getViolationMessageDeserializer( $services ), |
|
156 | + ConstraintsServices::getViolationMessageSerializer($services), |
|
157 | + ConstraintsServices::getViolationMessageDeserializer($services), |
|
158 | 158 | $services->getStatsdDataFactory(), |
159 | - ConstraintsServices::getExpiryLock( $services ), |
|
160 | - ConstraintsServices::getLoggingHelper( $services ), |
|
161 | - WikiMap::getCurrentWikiId() . ' WikibaseQualityConstraints ' . $services->getHttpRequestFactory()->getUserAgent(), |
|
159 | + ConstraintsServices::getExpiryLock($services), |
|
160 | + ConstraintsServices::getLoggingHelper($services), |
|
161 | + WikiMap::getCurrentWikiId().' WikibaseQualityConstraints '.$services->getHttpRequestFactory()->getUserAgent(), |
|
162 | 162 | $services->getHttpRequestFactory() |
163 | 163 | ); |
164 | 164 | }, |
165 | 165 | |
166 | - ConstraintsServices::TYPE_CHECKER_HELPER => static function ( MediaWikiServices $services ) { |
|
166 | + ConstraintsServices::TYPE_CHECKER_HELPER => static function(MediaWikiServices $services) { |
|
167 | 167 | return new TypeCheckerHelper( |
168 | - WikibaseServices::getEntityLookup( $services ), |
|
168 | + WikibaseServices::getEntityLookup($services), |
|
169 | 169 | $services->getMainConfig(), |
170 | - ConstraintsServices::getSparqlHelper( $services ), |
|
170 | + ConstraintsServices::getSparqlHelper($services), |
|
171 | 171 | $services->getStatsdDataFactory() |
172 | 172 | ); |
173 | 173 | }, |
174 | 174 | |
175 | - ConstraintsServices::DELEGATING_CONSTRAINT_CHECKER => static function ( MediaWikiServices $services ) { |
|
176 | - $statementGuidParser = WikibaseRepo::getStatementGuidParser( $services ); |
|
175 | + ConstraintsServices::DELEGATING_CONSTRAINT_CHECKER => static function(MediaWikiServices $services) { |
|
176 | + $statementGuidParser = WikibaseRepo::getStatementGuidParser($services); |
|
177 | 177 | |
178 | 178 | $config = $services->getMainConfig(); |
179 | 179 | $checkerMap = [ |
180 | - $config->get( 'WBQualityConstraintsConflictsWithConstraintId' ) |
|
181 | - => ConstraintCheckerServices::getConflictsWithChecker( $services ), |
|
182 | - $config->get( 'WBQualityConstraintsItemRequiresClaimConstraintId' ) |
|
183 | - => ConstraintCheckerServices::getItemChecker( $services ), |
|
184 | - $config->get( 'WBQualityConstraintsValueRequiresClaimConstraintId' ) |
|
185 | - => ConstraintCheckerServices::getTargetRequiredClaimChecker( $services ), |
|
186 | - $config->get( 'WBQualityConstraintsSymmetricConstraintId' ) |
|
187 | - => ConstraintCheckerServices::getSymmetricChecker( $services ), |
|
188 | - $config->get( 'WBQualityConstraintsInverseConstraintId' ) |
|
189 | - => ConstraintCheckerServices::getInverseChecker( $services ), |
|
190 | - $config->get( 'WBQualityConstraintsUsedAsQualifierConstraintId' ) |
|
191 | - => ConstraintCheckerServices::getQualifierChecker( $services ), |
|
192 | - $config->get( 'WBQualityConstraintsAllowedQualifiersConstraintId' ) |
|
193 | - => ConstraintCheckerServices::getQualifiersChecker( $services ), |
|
194 | - $config->get( 'WBQualityConstraintsMandatoryQualifierConstraintId' ) |
|
195 | - => ConstraintCheckerServices::getMandatoryQualifiersChecker( $services ), |
|
196 | - $config->get( 'WBQualityConstraintsRangeConstraintId' ) |
|
197 | - => ConstraintCheckerServices::getRangeChecker( $services ), |
|
198 | - $config->get( 'WBQualityConstraintsDifferenceWithinRangeConstraintId' ) |
|
199 | - => ConstraintCheckerServices::getDiffWithinRangeChecker( $services ), |
|
200 | - $config->get( 'WBQualityConstraintsTypeConstraintId' ) |
|
201 | - => ConstraintCheckerServices::getTypeChecker( $services ), |
|
202 | - $config->get( 'WBQualityConstraintsValueTypeConstraintId' ) |
|
203 | - => ConstraintCheckerServices::getValueTypeChecker( $services ), |
|
204 | - $config->get( 'WBQualityConstraintsSingleValueConstraintId' ) |
|
205 | - => ConstraintCheckerServices::getSingleValueChecker( $services ), |
|
206 | - $config->get( 'WBQualityConstraintsMultiValueConstraintId' ) |
|
207 | - => ConstraintCheckerServices::getMultiValueChecker( $services ), |
|
208 | - $config->get( 'WBQualityConstraintsDistinctValuesConstraintId' ) |
|
209 | - => ConstraintCheckerServices::getUniqueValueChecker( $services ), |
|
210 | - $config->get( 'WBQualityConstraintsFormatConstraintId' ) |
|
211 | - => ConstraintCheckerServices::getFormatChecker( $services ), |
|
212 | - $config->get( 'WBQualityConstraintsCommonsLinkConstraintId' ) |
|
213 | - => ConstraintCheckerServices::getCommonsLinkChecker( $services ), |
|
214 | - $config->get( 'WBQualityConstraintsOneOfConstraintId' ) |
|
215 | - => ConstraintCheckerServices::getOneOfChecker( $services ), |
|
216 | - $config->get( 'WBQualityConstraintsUsedForValuesOnlyConstraintId' ) |
|
217 | - => ConstraintCheckerServices::getValueOnlyChecker( $services ), |
|
218 | - $config->get( 'WBQualityConstraintsUsedAsReferenceConstraintId' ) |
|
219 | - => ConstraintCheckerServices::getReferenceChecker( $services ), |
|
220 | - $config->get( 'WBQualityConstraintsNoBoundsConstraintId' ) |
|
221 | - => ConstraintCheckerServices::getNoBoundsChecker( $services ), |
|
222 | - $config->get( 'WBQualityConstraintsAllowedUnitsConstraintId' ) |
|
223 | - => ConstraintCheckerServices::getAllowedUnitsChecker( $services ), |
|
224 | - $config->get( 'WBQualityConstraintsSingleBestValueConstraintId' ) |
|
225 | - => ConstraintCheckerServices::getSingleBestValueChecker( $services ), |
|
226 | - $config->get( 'WBQualityConstraintsAllowedEntityTypesConstraintId' ) |
|
227 | - => ConstraintCheckerServices::getEntityTypeChecker( $services ), |
|
228 | - $config->get( 'WBQualityConstraintsNoneOfConstraintId' ) |
|
229 | - => ConstraintCheckerServices::getNoneOfChecker( $services ), |
|
230 | - $config->get( 'WBQualityConstraintsIntegerConstraintId' ) |
|
231 | - => ConstraintCheckerServices::getIntegerChecker( $services ), |
|
232 | - $config->get( 'WBQualityConstraintsCitationNeededConstraintId' ) |
|
233 | - => ConstraintCheckerServices::getCitationNeededChecker( $services ), |
|
234 | - $config->get( 'WBQualityConstraintsPropertyScopeConstraintId' ) |
|
235 | - => ConstraintCheckerServices::getPropertyScopeChecker( $services ), |
|
236 | - $config->get( 'WBQualityConstraintsContemporaryConstraintId' ) |
|
237 | - => ConstraintCheckerServices::getContemporaryChecker( $services ), |
|
238 | - $config->get( 'WBQualityConstraintsLexemeLanguageConstraintId' ) |
|
239 | - => ConstraintCheckerServices::getLexemeLanguageChecker( $services ), |
|
240 | - $config->get( 'WBQualityConstraintsLabelInLanguageConstraintId' ) |
|
241 | - => ConstraintCheckerServices::getLabelInLanguageChecker( $services ), |
|
180 | + $config->get('WBQualityConstraintsConflictsWithConstraintId') |
|
181 | + => ConstraintCheckerServices::getConflictsWithChecker($services), |
|
182 | + $config->get('WBQualityConstraintsItemRequiresClaimConstraintId') |
|
183 | + => ConstraintCheckerServices::getItemChecker($services), |
|
184 | + $config->get('WBQualityConstraintsValueRequiresClaimConstraintId') |
|
185 | + => ConstraintCheckerServices::getTargetRequiredClaimChecker($services), |
|
186 | + $config->get('WBQualityConstraintsSymmetricConstraintId') |
|
187 | + => ConstraintCheckerServices::getSymmetricChecker($services), |
|
188 | + $config->get('WBQualityConstraintsInverseConstraintId') |
|
189 | + => ConstraintCheckerServices::getInverseChecker($services), |
|
190 | + $config->get('WBQualityConstraintsUsedAsQualifierConstraintId') |
|
191 | + => ConstraintCheckerServices::getQualifierChecker($services), |
|
192 | + $config->get('WBQualityConstraintsAllowedQualifiersConstraintId') |
|
193 | + => ConstraintCheckerServices::getQualifiersChecker($services), |
|
194 | + $config->get('WBQualityConstraintsMandatoryQualifierConstraintId') |
|
195 | + => ConstraintCheckerServices::getMandatoryQualifiersChecker($services), |
|
196 | + $config->get('WBQualityConstraintsRangeConstraintId') |
|
197 | + => ConstraintCheckerServices::getRangeChecker($services), |
|
198 | + $config->get('WBQualityConstraintsDifferenceWithinRangeConstraintId') |
|
199 | + => ConstraintCheckerServices::getDiffWithinRangeChecker($services), |
|
200 | + $config->get('WBQualityConstraintsTypeConstraintId') |
|
201 | + => ConstraintCheckerServices::getTypeChecker($services), |
|
202 | + $config->get('WBQualityConstraintsValueTypeConstraintId') |
|
203 | + => ConstraintCheckerServices::getValueTypeChecker($services), |
|
204 | + $config->get('WBQualityConstraintsSingleValueConstraintId') |
|
205 | + => ConstraintCheckerServices::getSingleValueChecker($services), |
|
206 | + $config->get('WBQualityConstraintsMultiValueConstraintId') |
|
207 | + => ConstraintCheckerServices::getMultiValueChecker($services), |
|
208 | + $config->get('WBQualityConstraintsDistinctValuesConstraintId') |
|
209 | + => ConstraintCheckerServices::getUniqueValueChecker($services), |
|
210 | + $config->get('WBQualityConstraintsFormatConstraintId') |
|
211 | + => ConstraintCheckerServices::getFormatChecker($services), |
|
212 | + $config->get('WBQualityConstraintsCommonsLinkConstraintId') |
|
213 | + => ConstraintCheckerServices::getCommonsLinkChecker($services), |
|
214 | + $config->get('WBQualityConstraintsOneOfConstraintId') |
|
215 | + => ConstraintCheckerServices::getOneOfChecker($services), |
|
216 | + $config->get('WBQualityConstraintsUsedForValuesOnlyConstraintId') |
|
217 | + => ConstraintCheckerServices::getValueOnlyChecker($services), |
|
218 | + $config->get('WBQualityConstraintsUsedAsReferenceConstraintId') |
|
219 | + => ConstraintCheckerServices::getReferenceChecker($services), |
|
220 | + $config->get('WBQualityConstraintsNoBoundsConstraintId') |
|
221 | + => ConstraintCheckerServices::getNoBoundsChecker($services), |
|
222 | + $config->get('WBQualityConstraintsAllowedUnitsConstraintId') |
|
223 | + => ConstraintCheckerServices::getAllowedUnitsChecker($services), |
|
224 | + $config->get('WBQualityConstraintsSingleBestValueConstraintId') |
|
225 | + => ConstraintCheckerServices::getSingleBestValueChecker($services), |
|
226 | + $config->get('WBQualityConstraintsAllowedEntityTypesConstraintId') |
|
227 | + => ConstraintCheckerServices::getEntityTypeChecker($services), |
|
228 | + $config->get('WBQualityConstraintsNoneOfConstraintId') |
|
229 | + => ConstraintCheckerServices::getNoneOfChecker($services), |
|
230 | + $config->get('WBQualityConstraintsIntegerConstraintId') |
|
231 | + => ConstraintCheckerServices::getIntegerChecker($services), |
|
232 | + $config->get('WBQualityConstraintsCitationNeededConstraintId') |
|
233 | + => ConstraintCheckerServices::getCitationNeededChecker($services), |
|
234 | + $config->get('WBQualityConstraintsPropertyScopeConstraintId') |
|
235 | + => ConstraintCheckerServices::getPropertyScopeChecker($services), |
|
236 | + $config->get('WBQualityConstraintsContemporaryConstraintId') |
|
237 | + => ConstraintCheckerServices::getContemporaryChecker($services), |
|
238 | + $config->get('WBQualityConstraintsLexemeLanguageConstraintId') |
|
239 | + => ConstraintCheckerServices::getLexemeLanguageChecker($services), |
|
240 | + $config->get('WBQualityConstraintsLabelInLanguageConstraintId') |
|
241 | + => ConstraintCheckerServices::getLabelInLanguageChecker($services), |
|
242 | 242 | ]; |
243 | 243 | |
244 | 244 | return new DelegatingConstraintChecker( |
245 | - WikibaseServices::getEntityLookup( $services ), |
|
245 | + WikibaseServices::getEntityLookup($services), |
|
246 | 246 | $checkerMap, |
247 | - ConstraintsServices::getConstraintLookup( $services ), |
|
248 | - ConstraintsServices::getConstraintParameterParser( $services ), |
|
247 | + ConstraintsServices::getConstraintLookup($services), |
|
248 | + ConstraintsServices::getConstraintParameterParser($services), |
|
249 | 249 | $statementGuidParser, |
250 | - ConstraintsServices::getLoggingHelper( $services ), |
|
251 | - $config->get( 'WBQualityConstraintsCheckQualifiers' ), |
|
252 | - $config->get( 'WBQualityConstraintsCheckReferences' ), |
|
253 | - $config->get( 'WBQualityConstraintsPropertiesWithViolatingQualifiers' ) |
|
250 | + ConstraintsServices::getLoggingHelper($services), |
|
251 | + $config->get('WBQualityConstraintsCheckQualifiers'), |
|
252 | + $config->get('WBQualityConstraintsCheckReferences'), |
|
253 | + $config->get('WBQualityConstraintsPropertiesWithViolatingQualifiers') |
|
254 | 254 | ); |
255 | 255 | }, |
256 | 256 | |
257 | - ConstraintsServices::RESULTS_SOURCE => static function ( MediaWikiServices $services ) { |
|
257 | + ConstraintsServices::RESULTS_SOURCE => static function(MediaWikiServices $services) { |
|
258 | 258 | $config = $services->getMainConfig(); |
259 | 259 | $resultsSource = new CheckingResultsSource( |
260 | - ConstraintsServices::getDelegatingConstraintChecker( $services ) |
|
260 | + ConstraintsServices::getDelegatingConstraintChecker($services) |
|
261 | 261 | ); |
262 | 262 | |
263 | 263 | $cacheCheckConstraintsResults = false; |
264 | 264 | |
265 | - if ( $config->get( 'WBQualityConstraintsCacheCheckConstraintsResults' ) ) { |
|
265 | + if ($config->get('WBQualityConstraintsCacheCheckConstraintsResults')) { |
|
266 | 266 | $cacheCheckConstraintsResults = true; |
267 | 267 | // check that we can use getLocalRepoWikiPageMetaDataAccessor() |
268 | 268 | // TODO we should always be able to cache constraint check results (T244726) |
269 | - $entitySources = WikibaseRepo::getEntitySourceDefinitions( $services )->getSources(); |
|
270 | - $localEntitySourceName = WikibaseRepo::getLocalEntitySource( $services )->getSourceName(); |
|
269 | + $entitySources = WikibaseRepo::getEntitySourceDefinitions($services)->getSources(); |
|
270 | + $localEntitySourceName = WikibaseRepo::getLocalEntitySource($services)->getSourceName(); |
|
271 | 271 | |
272 | - foreach ( $entitySources as $entitySource ) { |
|
273 | - if ( $entitySource->getSourceName() !== $localEntitySourceName ) { |
|
274 | - LoggerFactory::getInstance( 'WikibaseQualityConstraints' )->warning( |
|
275 | - 'Cannot cache constraint check results for non-local source: ' . |
|
272 | + foreach ($entitySources as $entitySource) { |
|
273 | + if ($entitySource->getSourceName() !== $localEntitySourceName) { |
|
274 | + LoggerFactory::getInstance('WikibaseQualityConstraints')->warning( |
|
275 | + 'Cannot cache constraint check results for non-local source: '. |
|
276 | 276 | $entitySource->getSourceName() |
277 | 277 | ); |
278 | 278 | $cacheCheckConstraintsResults = false; |
@@ -281,28 +281,28 @@ discard block |
||
281 | 281 | } |
282 | 282 | } |
283 | 283 | |
284 | - if ( $cacheCheckConstraintsResults ) { |
|
284 | + if ($cacheCheckConstraintsResults) { |
|
285 | 285 | $possiblyStaleConstraintTypes = [ |
286 | - $config->get( 'WBQualityConstraintsCommonsLinkConstraintId' ), |
|
287 | - $config->get( 'WBQualityConstraintsTypeConstraintId' ), |
|
288 | - $config->get( 'WBQualityConstraintsValueTypeConstraintId' ), |
|
289 | - $config->get( 'WBQualityConstraintsDistinctValuesConstraintId' ), |
|
286 | + $config->get('WBQualityConstraintsCommonsLinkConstraintId'), |
|
287 | + $config->get('WBQualityConstraintsTypeConstraintId'), |
|
288 | + $config->get('WBQualityConstraintsValueTypeConstraintId'), |
|
289 | + $config->get('WBQualityConstraintsDistinctValuesConstraintId'), |
|
290 | 290 | ]; |
291 | - $entityIdParser = WikibaseRepo::getEntityIdParser( $services ); |
|
291 | + $entityIdParser = WikibaseRepo::getEntityIdParser($services); |
|
292 | 292 | $wikiPageEntityMetaDataAccessor = WikibaseRepo::getLocalRepoWikiPageMetaDataAccessor( |
293 | 293 | $services ); |
294 | 294 | |
295 | 295 | $resultsSource = new CachingResultsSource( |
296 | 296 | $resultsSource, |
297 | 297 | ResultsCache::getDefaultInstance(), |
298 | - ConstraintsServices::getCheckResultSerializer( $services ), |
|
299 | - ConstraintsServices::getCheckResultDeserializer( $services ), |
|
298 | + ConstraintsServices::getCheckResultSerializer($services), |
|
299 | + ConstraintsServices::getCheckResultDeserializer($services), |
|
300 | 300 | $wikiPageEntityMetaDataAccessor, |
301 | 301 | $entityIdParser, |
302 | - $config->get( 'WBQualityConstraintsCacheCheckConstraintsTTLSeconds' ), |
|
302 | + $config->get('WBQualityConstraintsCacheCheckConstraintsTTLSeconds'), |
|
303 | 303 | $possiblyStaleConstraintTypes, |
304 | - $config->get( 'WBQualityConstraintsCacheCheckConstraintsMaximumRevisionIds' ), |
|
305 | - ConstraintsServices::getLoggingHelper( $services ) |
|
304 | + $config->get('WBQualityConstraintsCacheCheckConstraintsMaximumRevisionIds'), |
|
305 | + ConstraintsServices::getLoggingHelper($services) |
|
306 | 306 | ); |
307 | 307 | } |
308 | 308 |
@@ -25,7 +25,7 @@ discard block |
||
25 | 25 | * then using the main DBLoadBalancer service may be incorrect. |
26 | 26 | * @param string|false $dbName Database name ($domain for ILoadBalancer methods). |
27 | 27 | */ |
28 | - public function __construct( ILoadBalancer $lb, $dbName ) { |
|
28 | + public function __construct(ILoadBalancer $lb, $dbName) { |
|
29 | 29 | $this->lb = $lb; |
30 | 30 | $this->dbName = $dbName; |
31 | 31 | } |
@@ -35,22 +35,22 @@ discard block |
||
35 | 35 | * |
36 | 36 | * @return Constraint[] |
37 | 37 | */ |
38 | - public function queryConstraintsForProperty( NumericPropertyId $propertyId ) { |
|
39 | - $dbr = $this->lb->getConnection( ILoadBalancer::DB_REPLICA, [], $this->dbName ); |
|
38 | + public function queryConstraintsForProperty(NumericPropertyId $propertyId) { |
|
39 | + $dbr = $this->lb->getConnection(ILoadBalancer::DB_REPLICA, [], $this->dbName); |
|
40 | 40 | |
41 | 41 | $results = $dbr->newSelectQueryBuilder() |
42 | - ->select( [ |
|
42 | + ->select([ |
|
43 | 43 | 'constraint_type_qid', |
44 | 44 | 'constraint_parameters', |
45 | 45 | 'constraint_guid', |
46 | 46 | 'pid', |
47 | - ] ) |
|
48 | - ->from( 'wbqc_constraints' ) |
|
49 | - ->where( [ 'pid' => $propertyId->getNumericId() ] ) |
|
50 | - ->caller( __METHOD__ ) |
|
47 | + ]) |
|
48 | + ->from('wbqc_constraints') |
|
49 | + ->where(['pid' => $propertyId->getNumericId()]) |
|
50 | + ->caller(__METHOD__) |
|
51 | 51 | ->fetchResultSet(); |
52 | 52 | |
53 | - return $this->convertToConstraints( $results ); |
|
53 | + return $this->convertToConstraints($results); |
|
54 | 54 | } |
55 | 55 | |
56 | 56 | /** |
@@ -58,26 +58,26 @@ discard block |
||
58 | 58 | * |
59 | 59 | * @return Constraint[] |
60 | 60 | */ |
61 | - private function convertToConstraints( IResultWrapper $results ) { |
|
61 | + private function convertToConstraints(IResultWrapper $results) { |
|
62 | 62 | $constraints = []; |
63 | - $logger = LoggerFactory::getInstance( 'WikibaseQualityConstraints' ); |
|
64 | - foreach ( $results as $result ) { |
|
63 | + $logger = LoggerFactory::getInstance('WikibaseQualityConstraints'); |
|
64 | + foreach ($results as $result) { |
|
65 | 65 | $constraintTypeItemId = $result->constraint_type_qid; |
66 | - $constraintParameters = json_decode( $result->constraint_parameters, true ); |
|
66 | + $constraintParameters = json_decode($result->constraint_parameters, true); |
|
67 | 67 | |
68 | - if ( $constraintParameters === null ) { |
|
68 | + if ($constraintParameters === null) { |
|
69 | 69 | // T171295 |
70 | - $logger->warning( 'Constraint {constraintId} has invalid constraint parameters.', [ |
|
70 | + $logger->warning('Constraint {constraintId} has invalid constraint parameters.', [ |
|
71 | 71 | 'method' => __METHOD__, |
72 | 72 | 'constraintId' => $result->constraint_guid, |
73 | 73 | 'constraintParameters' => $result->constraint_parameters, |
74 | - ] ); |
|
75 | - $constraintParameters = [ '@error' => [ /* unknown */ ] ]; |
|
74 | + ]); |
|
75 | + $constraintParameters = ['@error' => [/* unknown */]]; |
|
76 | 76 | } |
77 | 77 | |
78 | 78 | $constraints[] = new Constraint( |
79 | 79 | $result->constraint_guid, |
80 | - NumericPropertyId::newFromNumber( $result->pid ), |
|
80 | + NumericPropertyId::newFromNumber($result->pid), |
|
81 | 81 | $constraintTypeItemId, |
82 | 82 | $constraintParameters |
83 | 83 | ); |
@@ -126,7 +126,7 @@ discard block |
||
126 | 126 | Config $config, |
127 | 127 | IBufferingStatsdDataFactory $dataFactory |
128 | 128 | ) { |
129 | - parent::__construct( 'ConstraintReport' ); |
|
129 | + parent::__construct('ConstraintReport'); |
|
130 | 130 | |
131 | 131 | $this->entityLookup = $entityLookup; |
132 | 132 | $this->entityTitleLookup = $entityTitleLookup; |
@@ -135,7 +135,7 @@ discard block |
||
135 | 135 | $language = $this->getLanguage(); |
136 | 136 | |
137 | 137 | $formatterOptions = new FormatterOptions(); |
138 | - $formatterOptions->setOption( SnakFormatter::OPT_LANG, $language->getCode() ); |
|
138 | + $formatterOptions->setOption(SnakFormatter::OPT_LANG, $language->getCode()); |
|
139 | 139 | $dataValueFormatter = $valueFormatterFactory->getValueFormatter( |
140 | 140 | SnakFormatter::FORMAT_HTML, |
141 | 141 | $formatterOptions |
@@ -195,7 +195,7 @@ discard block |
||
195 | 195 | * @return string |
196 | 196 | */ |
197 | 197 | public function getDescription() { |
198 | - return $this->msg( 'wbqc-constraintreport' )->text(); |
|
198 | + return $this->msg('wbqc-constraintreport')->text(); |
|
199 | 199 | } |
200 | 200 | |
201 | 201 | /** |
@@ -207,43 +207,43 @@ discard block |
||
207 | 207 | * @throws EntityIdParsingException |
208 | 208 | * @throws UnexpectedValueException |
209 | 209 | */ |
210 | - public function execute( $subPage ) { |
|
210 | + public function execute($subPage) { |
|
211 | 211 | $out = $this->getOutput(); |
212 | 212 | |
213 | - $postRequest = $this->getContext()->getRequest()->getVal( 'entityid' ); |
|
214 | - if ( $postRequest ) { |
|
215 | - $out->redirect( $this->getPageTitle( strtoupper( $postRequest ) )->getLocalURL() ); |
|
213 | + $postRequest = $this->getContext()->getRequest()->getVal('entityid'); |
|
214 | + if ($postRequest) { |
|
215 | + $out->redirect($this->getPageTitle(strtoupper($postRequest))->getLocalURL()); |
|
216 | 216 | return; |
217 | 217 | } |
218 | 218 | |
219 | 219 | $out->enableOOUI(); |
220 | - $out->addModules( $this->getModules() ); |
|
220 | + $out->addModules($this->getModules()); |
|
221 | 221 | |
222 | 222 | $this->setHeaders(); |
223 | 223 | |
224 | - $out->addHTML( $this->getExplanationText() ); |
|
224 | + $out->addHTML($this->getExplanationText()); |
|
225 | 225 | $this->buildEntityIdForm(); |
226 | 226 | |
227 | - if ( !$subPage ) { |
|
227 | + if (!$subPage) { |
|
228 | 228 | return; |
229 | 229 | } |
230 | 230 | |
231 | - if ( !is_string( $subPage ) ) { |
|
232 | - throw new InvalidArgumentException( '$subPage must be string.' ); |
|
231 | + if (!is_string($subPage)) { |
|
232 | + throw new InvalidArgumentException('$subPage must be string.'); |
|
233 | 233 | } |
234 | 234 | |
235 | 235 | try { |
236 | - $entityId = $this->entityIdParser->parse( $subPage ); |
|
237 | - } catch ( EntityIdParsingException $e ) { |
|
236 | + $entityId = $this->entityIdParser->parse($subPage); |
|
237 | + } catch (EntityIdParsingException $e) { |
|
238 | 238 | $out->addHTML( |
239 | - $this->buildNotice( 'wbqc-constraintreport-invalid-entity-id', true ) |
|
239 | + $this->buildNotice('wbqc-constraintreport-invalid-entity-id', true) |
|
240 | 240 | ); |
241 | 241 | return; |
242 | 242 | } |
243 | 243 | |
244 | - if ( !$this->entityLookup->hasEntity( $entityId ) ) { |
|
244 | + if (!$this->entityLookup->hasEntity($entityId)) { |
|
245 | 245 | $out->addHTML( |
246 | - $this->buildNotice( 'wbqc-constraintreport-not-existent-entity', true ) |
|
246 | + $this->buildNotice('wbqc-constraintreport-not-existent-entity', true) |
|
247 | 247 | ); |
248 | 248 | return; |
249 | 249 | } |
@@ -251,18 +251,18 @@ discard block |
||
251 | 251 | $this->dataFactory->increment( |
252 | 252 | 'wikibase.quality.constraints.specials.specialConstraintReport.executeCheck' |
253 | 253 | ); |
254 | - $results = $this->constraintChecker->checkAgainstConstraintsOnEntityId( $entityId ); |
|
254 | + $results = $this->constraintChecker->checkAgainstConstraintsOnEntityId($entityId); |
|
255 | 255 | |
256 | - if ( $results !== [] ) { |
|
256 | + if ($results !== []) { |
|
257 | 257 | $out->addHTML( |
258 | - $this->buildResultHeader( $entityId ) |
|
259 | - . $this->buildSummary( $results ) |
|
260 | - . $this->buildResultTable( $entityId, $results ) |
|
258 | + $this->buildResultHeader($entityId) |
|
259 | + . $this->buildSummary($results) |
|
260 | + . $this->buildResultTable($entityId, $results) |
|
261 | 261 | ); |
262 | 262 | } else { |
263 | 263 | $out->addHTML( |
264 | - $this->buildResultHeader( $entityId ) |
|
265 | - . $this->buildNotice( 'wbqc-constraintreport-empty-result' ) |
|
264 | + $this->buildResultHeader($entityId) |
|
265 | + . $this->buildNotice('wbqc-constraintreport-empty-result') |
|
266 | 266 | ); |
267 | 267 | } |
268 | 268 | } |
@@ -278,15 +278,15 @@ discard block |
||
278 | 278 | 'name' => 'entityid', |
279 | 279 | 'label-message' => 'wbqc-constraintreport-form-entityid-label', |
280 | 280 | 'cssclass' => 'wbqc-constraintreport-form-entity-id', |
281 | - 'placeholder' => $this->msg( 'wbqc-constraintreport-form-entityid-placeholder' )->escaped() |
|
281 | + 'placeholder' => $this->msg('wbqc-constraintreport-form-entityid-placeholder')->escaped() |
|
282 | 282 | ] |
283 | 283 | ]; |
284 | - $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext(), 'wbqc-constraintreport-form' ); |
|
285 | - $htmlForm->setSubmitText( $this->msg( 'wbqc-constraintreport-form-submit-label' )->escaped() ); |
|
286 | - $htmlForm->setSubmitCallback( static function () { |
|
284 | + $htmlForm = HTMLForm::factory('ooui', $formDescriptor, $this->getContext(), 'wbqc-constraintreport-form'); |
|
285 | + $htmlForm->setSubmitText($this->msg('wbqc-constraintreport-form-submit-label')->escaped()); |
|
286 | + $htmlForm->setSubmitCallback(static function() { |
|
287 | 287 | return false; |
288 | 288 | } ); |
289 | - $htmlForm->setMethod( 'post' ); |
|
289 | + $htmlForm->setMethod('post'); |
|
290 | 290 | $htmlForm->show(); |
291 | 291 | } |
292 | 292 | |
@@ -300,16 +300,16 @@ discard block |
||
300 | 300 | * |
301 | 301 | * @return string HTML |
302 | 302 | */ |
303 | - private function buildNotice( $messageKey, $error = false ) { |
|
304 | - if ( !is_string( $messageKey ) ) { |
|
305 | - throw new InvalidArgumentException( '$message must be string.' ); |
|
303 | + private function buildNotice($messageKey, $error = false) { |
|
304 | + if (!is_string($messageKey)) { |
|
305 | + throw new InvalidArgumentException('$message must be string.'); |
|
306 | 306 | } |
307 | - if ( !is_bool( $error ) ) { |
|
308 | - throw new InvalidArgumentException( '$error must be bool.' ); |
|
307 | + if (!is_bool($error)) { |
|
308 | + throw new InvalidArgumentException('$error must be bool.'); |
|
309 | 309 | } |
310 | 310 | |
311 | 311 | $cssClasses = 'wbqc-constraintreport-notice'; |
312 | - if ( $error ) { |
|
312 | + if ($error) { |
|
313 | 313 | $cssClasses .= ' wbqc-constraintreport-notice-error'; |
314 | 314 | } |
315 | 315 | |
@@ -318,7 +318,7 @@ discard block |
||
318 | 318 | [ |
319 | 319 | 'class' => $cssClasses |
320 | 320 | ], |
321 | - $this->msg( $messageKey )->escaped() |
|
321 | + $this->msg($messageKey)->escaped() |
|
322 | 322 | ); |
323 | 323 | } |
324 | 324 | |
@@ -328,16 +328,16 @@ discard block |
||
328 | 328 | private function getExplanationText() { |
329 | 329 | return Html::rawElement( |
330 | 330 | 'div', |
331 | - [ 'class' => 'wbqc-explanation' ], |
|
331 | + ['class' => 'wbqc-explanation'], |
|
332 | 332 | Html::rawElement( |
333 | 333 | 'p', |
334 | 334 | [], |
335 | - $this->msg( 'wbqc-constraintreport-explanation-part-one' )->escaped() |
|
335 | + $this->msg('wbqc-constraintreport-explanation-part-one')->escaped() |
|
336 | 336 | ) |
337 | 337 | . Html::rawElement( |
338 | 338 | 'p', |
339 | 339 | [], |
340 | - $this->msg( 'wbqc-constraintreport-explanation-part-two' )->escaped() |
|
340 | + $this->msg('wbqc-constraintreport-explanation-part-two')->escaped() |
|
341 | 341 | ) |
342 | 342 | ); |
343 | 343 | } |
@@ -349,72 +349,72 @@ discard block |
||
349 | 349 | * @return string HTML |
350 | 350 | * @suppress SecurityCheck-DoubleEscaped |
351 | 351 | */ |
352 | - private function buildResultTable( EntityId $entityId, array $results ) { |
|
352 | + private function buildResultTable(EntityId $entityId, array $results) { |
|
353 | 353 | // Set table headers |
354 | 354 | $table = new HtmlTableBuilder( |
355 | 355 | [ |
356 | 356 | new HtmlTableHeaderBuilder( |
357 | - $this->msg( 'wbqc-constraintreport-result-table-header-status' )->escaped(), |
|
357 | + $this->msg('wbqc-constraintreport-result-table-header-status')->escaped(), |
|
358 | 358 | true |
359 | 359 | ), |
360 | 360 | new HtmlTableHeaderBuilder( |
361 | - $this->msg( 'wbqc-constraintreport-result-table-header-property' )->escaped(), |
|
361 | + $this->msg('wbqc-constraintreport-result-table-header-property')->escaped(), |
|
362 | 362 | true |
363 | 363 | ), |
364 | 364 | new HtmlTableHeaderBuilder( |
365 | - $this->msg( 'wbqc-constraintreport-result-table-header-message' )->escaped(), |
|
365 | + $this->msg('wbqc-constraintreport-result-table-header-message')->escaped(), |
|
366 | 366 | true |
367 | 367 | ), |
368 | 368 | new HtmlTableHeaderBuilder( |
369 | - $this->msg( 'wbqc-constraintreport-result-table-header-constraint' )->escaped(), |
|
369 | + $this->msg('wbqc-constraintreport-result-table-header-constraint')->escaped(), |
|
370 | 370 | true |
371 | 371 | ) |
372 | 372 | ] |
373 | 373 | ); |
374 | 374 | |
375 | - foreach ( $results as $result ) { |
|
376 | - $table = $this->appendToResultTable( $table, $entityId, $result ); |
|
375 | + foreach ($results as $result) { |
|
376 | + $table = $this->appendToResultTable($table, $entityId, $result); |
|
377 | 377 | } |
378 | 378 | |
379 | 379 | return $table->toHtml(); |
380 | 380 | } |
381 | 381 | |
382 | - private function appendToResultTable( HtmlTableBuilder $table, EntityId $entityId, CheckResult $result ) { |
|
382 | + private function appendToResultTable(HtmlTableBuilder $table, EntityId $entityId, CheckResult $result) { |
|
383 | 383 | $message = $result->getMessage(); |
384 | - if ( $message === null ) { |
|
384 | + if ($message === null) { |
|
385 | 385 | // no row for this result |
386 | 386 | return $table; |
387 | 387 | } |
388 | 388 | |
389 | 389 | // Status column |
390 | - $statusColumn = $this->formatStatus( $result->getStatus() ); |
|
390 | + $statusColumn = $this->formatStatus($result->getStatus()); |
|
391 | 391 | |
392 | 392 | // Property column |
393 | - $propertyId = new NumericPropertyId( $result->getContextCursor()->getSnakPropertyId() ); |
|
393 | + $propertyId = new NumericPropertyId($result->getContextCursor()->getSnakPropertyId()); |
|
394 | 394 | $propertyColumn = $this->getClaimLink( |
395 | 395 | $entityId, |
396 | 396 | $propertyId, |
397 | - $this->entityIdLabelFormatter->formatEntityId( $propertyId ) |
|
397 | + $this->entityIdLabelFormatter->formatEntityId($propertyId) |
|
398 | 398 | ); |
399 | 399 | |
400 | 400 | // Message column |
401 | - $messageColumn = $this->violationMessageRenderer->render( $message ); |
|
401 | + $messageColumn = $this->violationMessageRenderer->render($message); |
|
402 | 402 | |
403 | 403 | // Constraint column |
404 | 404 | $constraintTypeItemId = $result->getConstraint()->getConstraintTypeItemId(); |
405 | 405 | try { |
406 | - $constraintTypeLabel = $this->entityIdLabelFormatter->formatEntityId( new ItemId( $constraintTypeItemId ) ); |
|
407 | - } catch ( InvalidArgumentException $e ) { |
|
408 | - $constraintTypeLabel = htmlspecialchars( $constraintTypeItemId ); |
|
406 | + $constraintTypeLabel = $this->entityIdLabelFormatter->formatEntityId(new ItemId($constraintTypeItemId)); |
|
407 | + } catch (InvalidArgumentException $e) { |
|
408 | + $constraintTypeLabel = htmlspecialchars($constraintTypeItemId); |
|
409 | 409 | } |
410 | 410 | $constraintLink = $this->getClaimLink( |
411 | 411 | $propertyId, |
412 | - new NumericPropertyId( $this->config->get( 'WBQualityConstraintsPropertyConstraintId' ) ), |
|
412 | + new NumericPropertyId($this->config->get('WBQualityConstraintsPropertyConstraintId')), |
|
413 | 413 | $constraintTypeLabel |
414 | 414 | ); |
415 | 415 | $constraintColumn = $this->buildExpandableElement( |
416 | 416 | $constraintLink, |
417 | - $this->constraintParameterRenderer->formatParameters( $result->getParameters() ), |
|
417 | + $this->constraintParameterRenderer->formatParameters($result->getParameters()), |
|
418 | 418 | '[...]' |
419 | 419 | ); |
420 | 420 | |
@@ -454,15 +454,15 @@ discard block |
||
454 | 454 | * |
455 | 455 | * @return string HTML |
456 | 456 | */ |
457 | - protected function buildResultHeader( EntityId $entityId ) { |
|
458 | - $entityLink = sprintf( '%s (%s)', |
|
459 | - $this->entityIdLinkFormatter->formatEntityId( $entityId ), |
|
460 | - htmlspecialchars( $entityId->getSerialization() ) ); |
|
457 | + protected function buildResultHeader(EntityId $entityId) { |
|
458 | + $entityLink = sprintf('%s (%s)', |
|
459 | + $this->entityIdLinkFormatter->formatEntityId($entityId), |
|
460 | + htmlspecialchars($entityId->getSerialization())); |
|
461 | 461 | |
462 | 462 | return Html::rawElement( |
463 | 463 | 'h3', |
464 | 464 | [], |
465 | - sprintf( '%s %s', $this->msg( 'wbqc-constraintreport-result-headline' )->escaped(), $entityLink ) |
|
465 | + sprintf('%s %s', $this->msg('wbqc-constraintreport-result-headline')->escaped(), $entityLink) |
|
466 | 466 | ); |
467 | 467 | } |
468 | 468 | |
@@ -473,24 +473,24 @@ discard block |
||
473 | 473 | * |
474 | 474 | * @return string HTML |
475 | 475 | */ |
476 | - protected function buildSummary( array $results ) { |
|
476 | + protected function buildSummary(array $results) { |
|
477 | 477 | $statuses = []; |
478 | - foreach ( $results as $result ) { |
|
479 | - $status = strtolower( $result->getStatus() ); |
|
480 | - $statuses[$status] = isset( $statuses[$status] ) ? $statuses[$status] + 1 : 1; |
|
478 | + foreach ($results as $result) { |
|
479 | + $status = strtolower($result->getStatus()); |
|
480 | + $statuses[$status] = isset($statuses[$status]) ? $statuses[$status] + 1 : 1; |
|
481 | 481 | } |
482 | 482 | |
483 | 483 | $statusElements = []; |
484 | - foreach ( $statuses as $status => $count ) { |
|
485 | - if ( $count > 0 ) { |
|
484 | + foreach ($statuses as $status => $count) { |
|
485 | + if ($count > 0) { |
|
486 | 486 | $statusElements[] = |
487 | - $this->formatStatus( $status ) |
|
487 | + $this->formatStatus($status) |
|
488 | 488 | . ': ' |
489 | 489 | . $count; |
490 | 490 | } |
491 | 491 | } |
492 | 492 | |
493 | - return Html::rawElement( 'p', [], implode( ', ', $statusElements ) ); |
|
493 | + return Html::rawElement('p', [], implode(', ', $statusElements)); |
|
494 | 494 | } |
495 | 495 | |
496 | 496 | /** |
@@ -505,15 +505,15 @@ discard block |
||
505 | 505 | * |
506 | 506 | * @return string HTML |
507 | 507 | */ |
508 | - protected function buildExpandableElement( $content, $expandableContent, $indicator ) { |
|
509 | - if ( !is_string( $content ) ) { |
|
510 | - throw new InvalidArgumentException( '$content has to be string.' ); |
|
508 | + protected function buildExpandableElement($content, $expandableContent, $indicator) { |
|
509 | + if (!is_string($content)) { |
|
510 | + throw new InvalidArgumentException('$content has to be string.'); |
|
511 | 511 | } |
512 | - if ( $expandableContent && ( !is_string( $expandableContent ) ) ) { |
|
513 | - throw new InvalidArgumentException( '$tooltipContent, if provided, has to be string.' ); |
|
512 | + if ($expandableContent && (!is_string($expandableContent))) { |
|
513 | + throw new InvalidArgumentException('$tooltipContent, if provided, has to be string.'); |
|
514 | 514 | } |
515 | 515 | |
516 | - if ( empty( $expandableContent ) ) { |
|
516 | + if (empty($expandableContent)) { |
|
517 | 517 | return $content; |
518 | 518 | } |
519 | 519 | |
@@ -533,7 +533,7 @@ discard block |
||
533 | 533 | $expandableContent |
534 | 534 | ); |
535 | 535 | |
536 | - return sprintf( '%s %s %s', $content, $tooltipIndicator, $wrappedExpandableContent ); |
|
536 | + return sprintf('%s %s %s', $content, $tooltipIndicator, $wrappedExpandableContent); |
|
537 | 537 | } |
538 | 538 | |
539 | 539 | /** |
@@ -545,8 +545,8 @@ discard block |
||
545 | 545 | * |
546 | 546 | * @return string HTML |
547 | 547 | */ |
548 | - private function formatStatus( $status ) { |
|
549 | - $messageName = "wbqc-constraintreport-status-" . strtolower( $status ); |
|
548 | + private function formatStatus($status) { |
|
549 | + $messageName = "wbqc-constraintreport-status-".strtolower($status); |
|
550 | 550 | $statusIcons = [ |
551 | 551 | CheckResult::STATUS_SUGGESTION => [ |
552 | 552 | 'icon' => 'suggestion-constraint-violation', |
@@ -563,25 +563,25 @@ discard block |
||
563 | 563 | ], |
564 | 564 | ]; |
565 | 565 | |
566 | - if ( array_key_exists( $status, $statusIcons ) ) { |
|
567 | - $iconWidget = new IconWidget( $statusIcons[$status] ); |
|
568 | - $iconHtml = $iconWidget->toString() . ' '; |
|
566 | + if (array_key_exists($status, $statusIcons)) { |
|
567 | + $iconWidget = new IconWidget($statusIcons[$status]); |
|
568 | + $iconHtml = $iconWidget->toString().' '; |
|
569 | 569 | } else { |
570 | 570 | $iconHtml = ''; |
571 | 571 | } |
572 | 572 | |
573 | - $labelWidget = new LabelWidget( [ |
|
574 | - 'label' => $this->msg( $messageName )->text(), |
|
575 | - ] ); |
|
573 | + $labelWidget = new LabelWidget([ |
|
574 | + 'label' => $this->msg($messageName)->text(), |
|
575 | + ]); |
|
576 | 576 | $labelHtml = $labelWidget->toString(); |
577 | 577 | |
578 | 578 | $formattedStatus = |
579 | 579 | Html::rawElement( |
580 | 580 | 'span', |
581 | 581 | [ |
582 | - 'class' => 'wbqc-status wbqc-status-' . $status |
|
582 | + 'class' => 'wbqc-status wbqc-status-'.$status |
|
583 | 583 | ], |
584 | - $iconHtml . $labelHtml |
|
584 | + $iconHtml.$labelHtml |
|
585 | 585 | ); |
586 | 586 | |
587 | 587 | return $formattedStatus; |
@@ -596,11 +596,11 @@ discard block |
||
596 | 596 | * |
597 | 597 | * @return string HTML |
598 | 598 | */ |
599 | - private function getClaimLink( EntityId $entityId, NumericPropertyId $propertyId, $text ) { |
|
599 | + private function getClaimLink(EntityId $entityId, NumericPropertyId $propertyId, $text) { |
|
600 | 600 | return Html::rawElement( |
601 | 601 | 'a', |
602 | 602 | [ |
603 | - 'href' => $this->getClaimUrl( $entityId, $propertyId ), |
|
603 | + 'href' => $this->getClaimUrl($entityId, $propertyId), |
|
604 | 604 | 'target' => '_blank' |
605 | 605 | ], |
606 | 606 | $text |
@@ -615,9 +615,9 @@ discard block |
||
615 | 615 | * |
616 | 616 | * @return string |
617 | 617 | */ |
618 | - private function getClaimUrl( EntityId $entityId, NumericPropertyId $propertyId ) { |
|
619 | - $title = $this->entityTitleLookup->getTitleForId( $entityId ); |
|
620 | - $entityUrl = sprintf( '%s#%s', $title->getLocalURL(), $propertyId->getSerialization() ); |
|
618 | + private function getClaimUrl(EntityId $entityId, NumericPropertyId $propertyId) { |
|
619 | + $title = $this->entityTitleLookup->getTitleForId($entityId); |
|
620 | + $entityUrl = sprintf('%s#%s', $title->getLocalURL(), $propertyId->getSerialization()); |
|
621 | 621 | |
622 | 622 | return $entityUrl; |
623 | 623 | } |
@@ -1,6 +1,6 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | |
3 | -declare( strict_types = 1 ); |
|
3 | +declare(strict_types=1); |
|
4 | 4 | |
5 | 5 | namespace WikibaseQuality\ConstraintReport\ConstraintCheck\Context; |
6 | 6 | |
@@ -32,7 +32,7 @@ discard block |
||
32 | 32 | Reference $reference, |
33 | 33 | Snak $snak |
34 | 34 | ) { |
35 | - parent::__construct( $entity, $snak ); |
|
35 | + parent::__construct($entity, $snak); |
|
36 | 36 | $this->statement = $statement; |
37 | 37 | $this->reference = $reference; |
38 | 38 | } |
@@ -41,16 +41,16 @@ discard block |
||
41 | 41 | return self::TYPE_REFERENCE; |
42 | 42 | } |
43 | 43 | |
44 | - public function getSnakGroup( string $groupingMode, array $separators = [] ): array { |
|
44 | + public function getSnakGroup(string $groupingMode, array $separators = []): array { |
|
45 | 45 | $snaks = $this->reference->getSnaks(); |
46 | - return array_values( $snaks->getArrayCopy() ); |
|
46 | + return array_values($snaks->getArrayCopy()); |
|
47 | 47 | } |
48 | 48 | |
49 | 49 | public function getCursor(): ContextCursor { |
50 | 50 | return new ReferenceContextCursor( |
51 | 51 | $this->entity->getId()->getSerialization(), |
52 | 52 | $this->statement->getPropertyId()->getSerialization(), |
53 | - $this->getStatementGuid( $this->statement ), |
|
53 | + $this->getStatementGuid($this->statement), |
|
54 | 54 | $this->snak->getHash(), |
55 | 55 | $this->snak->getPropertyId()->getSerialization(), |
56 | 56 | $this->reference->getHash() |
@@ -1,6 +1,6 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | |
3 | -declare( strict_types = 1 ); |
|
3 | +declare(strict_types=1); |
|
4 | 4 | |
5 | 5 | namespace WikibaseQuality\ConstraintReport\ConstraintCheck\Context; |
6 | 6 | |
@@ -119,7 +119,7 @@ discard block |
||
119 | 119 | * @return Snak[] not a SnakList because for a statement context, |
120 | 120 | * the returned value might contain the same snak several times. |
121 | 121 | */ |
122 | - public function getSnakGroup( string $groupingMode, array $separators = [] ): array; |
|
122 | + public function getSnakGroup(string $groupingMode, array $separators = []): array; |
|
123 | 123 | |
124 | 124 | /** |
125 | 125 | * Get the cursor that can be used to address check results for this context. |